forked from feast-dev/feast
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCoreService.proto
More file actions
218 lines (176 loc) · 7.28 KB
/
CoreService.proto
File metadata and controls
218 lines (176 loc) · 7.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
//
// Copyright 2018 The Feast Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
syntax = "proto3";
package feast.core;
option go_package = "github.com/gojek/feast/sdk/go/protos/feast/core";
option java_outer_classname = "CoreServiceProto";
option java_package = "feast.core";
import "feast/core/FeatureSet.proto";
import "feast/core/Store.proto";
service CoreService {
// Retrieve version information about this Feast deployment
rpc GetFeastCoreVersion (GetFeastCoreVersionRequest) returns (GetFeastCoreVersionResponse);
// Returns a specific feature set
rpc GetFeatureSet (GetFeatureSetRequest) returns (GetFeatureSetResponse);
// Retrieve feature set details given a filter.
//
// Returns all feature sets matching that filter. If none are found,
// an empty list will be returned.
// If no filter is provided in the request, the response will contain all the feature
// sets currently stored in the registry.
rpc ListFeatureSets (ListFeatureSetsRequest) returns (ListFeatureSetsResponse);
// Retrieve store details given a filter.
//
// Returns all stores matching that filter. If none are found, an empty list will be returned.
// If no filter is provided in the request, the response will contain all the stores currently
// stored in the registry.
rpc ListStores (ListStoresRequest) returns (ListStoresResponse);
// Create or update and existing feature set.
//
// This function is idempotent - it will not create a new feature set if schema does not change.
// If an existing feature set is updated, core will advance the version number, which will be
// returned in response.
rpc ApplyFeatureSet (ApplyFeatureSetRequest) returns (ApplyFeatureSetResponse);
// Updates core with the configuration of the store.
//
// If the changes are valid, core will return the given store configuration in response, and
// start or update the necessary feature population jobs for the updated store.
rpc UpdateStore (UpdateStoreRequest) returns (UpdateStoreResponse);
// Creates a project. Projects serve as namespaces within which resources like features will be
// created. Both feature set names as well as field names must be unique within a project. Project
// names themselves must be globally unique.
rpc CreateProject (CreateProjectRequest) returns (CreateProjectResponse);
// Archives a project. Archived projects will continue to exist and function, but won't be visible
// through the Core API. Any existing ingestion or serving requests will continue to function,
// but will result in warning messages being logged. It is not possible to unarchive a project
// through the Core API
rpc ArchiveProject (ArchiveProjectRequest) returns (ArchiveProjectResponse);
// Lists all projects active projects.
rpc ListProjects (ListProjectsRequest) returns (ListProjectsResponse);
}
// Request for a single feature set
message GetFeatureSetRequest {
// Name of project the feature set belongs to (required)
string project = 3;
// Name of feature set (required).
string name = 1;
// Version of feature set (optional). If omitted then latest feature set will be returned.
int32 version = 2;
}
// Response containing a single feature set
message GetFeatureSetResponse {
feast.core.FeatureSet feature_set = 1;
}
// Retrieves details for all versions of a specific feature set
message ListFeatureSetsRequest {
Filter filter = 1;
message Filter {
// Name of project that the feature sets belongs to. This can be one of
// - [project_name]
// - *
// If an asterisk is provided, filtering on projects will be disabled. All projects will
// be matched. It is NOT possible to provide an asterisk with a string in order to do
// pattern matching.
string project = 3;
// Name of the desired feature set. Asterisks can be used as wildcards in the name.
// Matching on names is only permitted if a specific project is defined. It is disallowed
// If the project name is set to "*"
// e.g.
// - * can be used to match all feature sets
// - my-feature-set* can be used to match all features prefixed by "my-feature-set"
// - my-feature-set-6 can be used to select a single feature set
string feature_set_name = 1;
// Versions of the given feature sets that will be returned.
// Valid options for version:
// "latest": only the latest version is returned.
// "*": Subscribe to all versions
// [version number]: pin to a specific version. Project and feature set name must be
// explicitly defined if a specific version is pinned.
string feature_set_version = 2;
}
}
message ListFeatureSetsResponse {
repeated feast.core.FeatureSet feature_sets = 1;
}
message ListStoresRequest {
message Filter {
// Name of desired store. Regex is not supported in this query.
string name = 1;
}
Filter filter = 1;
}
message ListStoresResponse {
repeated feast.core.Store store = 1;
}
message ApplyFeatureSetRequest {
// Feature set version and source will be ignored
feast.core.FeatureSet feature_set = 1;
}
message ApplyFeatureSetResponse {
enum Status {
// Latest feature set version is consistent with provided feature set
NO_CHANGE = 0;
// New feature set or feature set version created
CREATED = 1;
// Error occurred while trying to apply changes
ERROR = 2;
}
// Feature set response has been enriched with version and source information
feast.core.FeatureSet feature_set = 1;
Status status = 2;
}
message GetFeastCoreVersionRequest {
}
message GetFeastCoreVersionResponse {
string version = 1;
}
message UpdateStoreRequest {
feast.core.Store store = 1;
}
message UpdateStoreResponse {
enum Status {
// Existing store config matching the given store id is identical to the given store config.
NO_CHANGE = 0;
// New store created or existing config updated.
UPDATED = 1;
}
feast.core.Store store = 1;
Status status = 2;
}
// Request to create a project
message CreateProjectRequest {
// Name of project (required)
string name = 1;
}
// Response for creation of a project
message CreateProjectResponse {
}
// Request for the archival of a project
message ArchiveProjectRequest {
// Name of project to be archived
string name = 1;
}
// Response for archival of a project
message ArchiveProjectResponse {
}
// Request for listing of projects
message ListProjectsRequest {
}
// Response for listing of projects
message ListProjectsResponse {
// List of project names (archived projects are filtered out)
repeated string projects = 1;
}