@@ -12,6 +12,276 @@ Feast supports running the Registry Server in three distinct modes:
12
12
| REST + gRPC | ` feast serve_registry --rest-api ` | Enables both interfaces |
13
13
| REST only | ` feast serve_registry --rest-api --no-grpc ` | Used for REST-only clients like the UI |
14
14
15
+ ## REST API Endpoints
16
+
17
+ The REST API provides HTTP/JSON endpoints for accessing all registry metadata. All endpoints are prefixed with ` /api/v1 ` and return JSON responses.
18
+
19
+ ### Authentication
20
+
21
+ The REST API supports Bearer token authentication. Include your token in the Authorization header:
22
+
23
+ ``` bash
24
+ Authorization: Bearer < your-token>
25
+ ```
26
+
27
+ ### Common Query Parameters
28
+
29
+ Most endpoints support these common query parameters:
30
+
31
+ - ` project ` (required for most endpoints): The project name
32
+ - ` allow_cache ` (optional, default: ` true ` ): Whether to allow cached data
33
+ - ` tags ` (optional): Filter results by tags in key=value format
34
+
35
+ ### Entities
36
+
37
+ #### List Entities
38
+ - ** Endpoint** : ` GET /api/v1/entities `
39
+ - ** Description** : Retrieve all entities in a project
40
+ - ** Parameters** :
41
+ - ` project ` (required): Project name
42
+ - ** Example** :
43
+ ``` bash
44
+ curl -H " Authorization: Bearer <token>" \
45
+ " http://localhost:6572/api/v1/entities?project=my_project"
46
+ ```
47
+
48
+ #### Get Entity
49
+ - ** Endpoint** : ` GET /api/v1/entities/{name} `
50
+ - ** Description** : Retrieve a specific entity by name
51
+ - ** Parameters** :
52
+ - ` name ` (path): Entity name
53
+ - ` project ` (required): Project name
54
+ - ` allow_cache ` (optional): Whether to allow cached data
55
+ - ** Example** :
56
+ ``` bash
57
+ curl -H " Authorization: Bearer <token>" \
58
+ " http://localhost:6572/api/v1/entities/user_id?project=my_project"
59
+ ```
60
+
61
+ ### Data Sources
62
+
63
+ #### List Data Sources
64
+ - ** Endpoint** : ` GET /api/v1/data_sources `
65
+ - ** Description** : Retrieve all data sources in a project
66
+ - ** Parameters** :
67
+ - ` project ` (required): Project name
68
+ - ` allow_cache ` (optional): Whether to allow cached data
69
+ - ` tags ` (optional): Filter by tags
70
+ - ** Example** :
71
+ ``` bash
72
+ curl -H " Authorization: Bearer <token>" \
73
+ " http://localhost:6572/api/v1/data_sources?project=my_project"
74
+ ```
75
+
76
+ #### Get Data Source
77
+ - ** Endpoint** : ` GET /api/v1/data_sources/{name} `
78
+ - ** Description** : Retrieve a specific data source by name
79
+ - ** Parameters** :
80
+ - ` name ` (path): Data source name
81
+ - ` project ` (required): Project name
82
+ - ` allow_cache ` (optional): Whether to allow cached data
83
+ - ** Example** :
84
+ ``` bash
85
+ curl -H " Authorization: Bearer <token>" \
86
+ " http://localhost:6572/api/v1/data_sources/user_data?project=my_project"
87
+ ```
88
+
89
+ ### Feature Views
90
+
91
+ #### List Feature Views
92
+ - ** Endpoint** : ` GET /api/v1/feature_views `
93
+ - ** Description** : Retrieve all feature views in a project
94
+ - ** Parameters** :
95
+ - ` project ` (required): Project name
96
+ - ` allow_cache ` (optional): Whether to allow cached data
97
+ - ` tags ` (optional): Filter by tags
98
+ - ** Example** :
99
+ ``` bash
100
+ curl -H " Authorization: Bearer <token>" \
101
+ " http://localhost:6572/api/v1/feature_views?project=my_project"
102
+ ```
103
+
104
+ #### Get Feature View
105
+ - ** Endpoint** : ` GET /api/v1/feature_views/{name} `
106
+ - ** Description** : Retrieve a specific feature view by name
107
+ - ** Parameters** :
108
+ - ` name ` (path): Feature view name
109
+ - ` project ` (required): Project name
110
+ - ` allow_cache ` (optional): Whether to allow cached data
111
+ - ** Example** :
112
+ ``` bash
113
+ curl -H " Authorization: Bearer <token>" \
114
+ " http://localhost:6572/api/v1/feature_views/user_features?project=my_project"
115
+ ```
116
+
117
+ ### Feature Services
118
+
119
+ #### List Feature Services
120
+ - ** Endpoint** : ` GET /api/v1/feature_services `
121
+ - ** Description** : Retrieve all feature services in a project
122
+ - ** Parameters** :
123
+ - ` project ` (required): Project name
124
+ - ` allow_cache ` (optional): Whether to allow cached data
125
+ - ` tags ` (optional): Filter by tags
126
+ - ** Example** :
127
+ ``` bash
128
+ curl -H " Authorization: Bearer <token>" \
129
+ " http://localhost:6572/api/v1/feature_services?project=my_project"
130
+ ```
131
+
132
+ #### Get Feature Service
133
+ - ** Endpoint** : ` GET /api/v1/feature_services/{name} `
134
+ - ** Description** : Retrieve a specific feature service by name
135
+ - ** Parameters** :
136
+ - ` name ` (path): Feature service name
137
+ - ` project ` (required): Project name
138
+ - ` allow_cache ` (optional): Whether to allow cached data
139
+ - ** Example** :
140
+ ``` bash
141
+ curl -H " Authorization: Bearer <token>" \
142
+ " http://localhost:6572/api/v1/feature_services/recommendation_service?project=my_project"
143
+ ```
144
+
145
+ ### Lineage and Relationships
146
+
147
+ #### Get Registry Lineage
148
+ - ** Endpoint** : ` GET /api/v1/lineage/registry `
149
+ - ** Description** : Retrieve complete registry lineage with relationships and indirect relationships
150
+ - ** Parameters** :
151
+ - ` project ` (required): Project name
152
+ - ` allow_cache ` (optional): Whether to allow cached data
153
+ - ` filter_object_type ` (optional): Filter by object type (` dataSource ` , ` entity ` , ` featureView ` , ` featureService ` )
154
+ - ` filter_object_name ` (optional): Filter by object name
155
+ - ** Example** :
156
+ ``` bash
157
+ curl -H " Authorization: Bearer <token>" \
158
+ " http://localhost:6572/api/v1/lineage/registry?project=my_project"
159
+ ```
160
+
161
+ #### Get Object Relationships
162
+ - ** Endpoint** : ` GET /api/v1/lineage/objects/{object_type}/{object_name} `
163
+ - ** Description** : Retrieve relationships for a specific object
164
+ - ** Parameters** :
165
+ - ` object_type ` (path): Type of object (` dataSource ` , ` entity ` , ` featureView ` , ` featureService ` )
166
+ - ` object_name ` (path): Name of the object
167
+ - ` project ` (required): Project name
168
+ - ` include_indirect ` (optional): Whether to include indirect relationships
169
+ - ` allow_cache ` (optional): Whether to allow cached data
170
+ - ** Example** :
171
+ ``` bash
172
+ curl -H " Authorization: Bearer <token>" \
173
+ " http://localhost:6572/api/v1/lineage/objects/featureView/user_features?project=my_project&include_indirect=true"
174
+ ```
175
+
176
+ #### Get Complete Registry Data
177
+ - ** Endpoint** : ` GET /api/v1/lineage/complete `
178
+ - ** Description** : Retrieve complete registry data including all objects and relationships (optimized for UI consumption)
179
+ - ** Parameters** :
180
+ - ` project ` (required): Project name
181
+ - ` allow_cache ` (optional): Whether to allow cached data
182
+ - ** Example** :
183
+ ``` bash
184
+ curl -H " Authorization: Bearer <token>" \
185
+ " http://localhost:6572/api/v1/lineage/complete?project=my_project"
186
+ ```
187
+
188
+ ### Permissions
189
+
190
+ #### List Permissions
191
+ - ** Endpoint** : ` GET /api/v1/permissions `
192
+ - ** Description** : Retrieve all permissions in a project
193
+ - ** Parameters** :
194
+ - ` project ` (required): Project name
195
+ - ` allow_cache ` (optional): Whether to allow cached data
196
+ - ** Example** :
197
+ ``` bash
198
+ curl -H " Authorization: Bearer <token>" \
199
+ " http://localhost:6572/api/v1/permissions?project=my_project"
200
+ ```
201
+
202
+ #### Get Permission
203
+ - ** Endpoint** : ` GET /api/v1/permissions/{name} `
204
+ - ** Description** : Retrieve a specific permission by name
205
+ - ** Parameters** :
206
+ - ` name ` (path): Permission name
207
+ - ` project ` (required): Project name
208
+ - ` allow_cache ` (optional): Whether to allow cached data
209
+ - ** Example** :
210
+ ``` bash
211
+ curl -H " Authorization: Bearer <token>" \
212
+ " http://localhost:6572/api/v1/permissions/read_features?project=my_project"
213
+ ```
214
+
215
+ ### Projects
216
+
217
+ #### List Projects
218
+ - ** Endpoint** : ` GET /api/v1/projects `
219
+ - ** Description** : Retrieve all projects
220
+ - ** Parameters** :
221
+ - ` allow_cache ` (optional): Whether to allow cached data
222
+ - ** Example** :
223
+ ``` bash
224
+ curl -H " Authorization: Bearer <token>" \
225
+ " http://localhost:6572/api/v1/projects"
226
+ ```
227
+
228
+ #### Get Project
229
+ - ** Endpoint** : ` GET /api/v1/projects/{name} `
230
+ - ** Description** : Retrieve a specific project by name
231
+ - ** Parameters** :
232
+ - ` name ` (path): Project name
233
+ - ` allow_cache ` (optional): Whether to allow cached data
234
+ - ** Example** :
235
+ ``` bash
236
+ curl -H " Authorization: Bearer <token>" \
237
+ " http://localhost:6572/api/v1/projects/my_project"
238
+ ```
239
+
240
+ ### Saved Datasets
241
+
242
+ #### List Saved Datasets
243
+ - ** Endpoint** : ` GET /api/v1/saved_datasets `
244
+ - ** Description** : Retrieve all saved datasets in a project
245
+ - ** Parameters** :
246
+ - ` project ` (required): Project name
247
+ - ` allow_cache ` (optional): Whether to allow cached data
248
+ - ` tags ` (optional): Filter by tags
249
+ - ** Example** :
250
+ ``` bash
251
+ curl -H " Authorization: Bearer <token>" \
252
+ " http://localhost:6572/api/v1/saved_datasets?project=my_project"
253
+ ```
254
+
255
+ #### Get Saved Dataset
256
+ - ** Endpoint** : ` GET /api/v1/saved_datasets/{name} `
257
+ - ** Description** : Retrieve a specific saved dataset by name
258
+ - ** Parameters** :
259
+ - ` name ` (path): Saved dataset name
260
+ - ` project ` (required): Project name
261
+ - ` allow_cache ` (optional): Whether to allow cached data
262
+ - ** Example** :
263
+ ``` bash
264
+ curl -H " Authorization: Bearer <token>" \
265
+ " http://localhost:6572/api/v1/saved_datasets/training_data?project=my_project"
266
+ ```
267
+
268
+ ### Response Formats
269
+
270
+ All endpoints return JSON responses with the following general structure:
271
+
272
+ - ** Success (200)** : Returns the requested data
273
+ - ** Bad Request (400)** : Invalid parameters or request format
274
+ - ** Unauthorized (401)** : Missing or invalid authentication token
275
+ - ** Not Found (404)** : Requested resource does not exist
276
+ - ** Internal Server Error (500)** : Server-side error
277
+
278
+ ### Interactive API Documentation
279
+
280
+ When the REST API server is running, you can access interactive documentation at:
281
+
282
+ - ** Swagger UI** : ` http://localhost:6572/ ` (root path)
283
+ - ** ReDoc** : ` http://localhost:6572/docs `
284
+ - ** OpenAPI Schema** : ` http://localhost:6572/openapi.json `
15
285
16
286
## How to configure the server
17
287
0 commit comments