@@ -12,6 +12,276 @@ Feast supports running the Registry Server in three distinct modes:
1212| REST + gRPC | ` feast serve_registry --rest-api ` | Enables both interfaces |
1313| REST only | ` feast serve_registry --rest-api --no-grpc ` | Used for REST-only clients like the UI |
1414
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 `
15285
16286## How to configure the server
17287
0 commit comments