-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapi.proto
More file actions
240 lines (194 loc) · 6.37 KB
/
api.proto
File metadata and controls
240 lines (194 loc) · 6.37 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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
syntax = "proto3";
package configservice;
import "config.proto";
option go_package = "github.com/codec404/Konfig/pkg/pb";
// API Service - handles config uploads and management
service ConfigAPIService {
// Upload a new configuration
rpc UploadConfig(UploadConfigRequest) returns (UploadConfigResponse);
// Get configuration by ID
rpc GetConfig(GetConfigRequest) returns (GetConfigResponse);
// List configurations for a service
rpc ListConfigs(ListConfigsRequest) returns (ListConfigsResponse);
// Delete a configuration
rpc DeleteConfig(DeleteConfigRequest) returns (DeleteConfigResponse);
// Start a rollout
rpc StartRollout(StartRolloutRequest) returns (StartRolloutResponse);
// Get rollout status
rpc GetRolloutStatus(GetRolloutStatusRequest) returns (GetRolloutStatusResponse);
// Rollback to previous version
rpc Rollback(RollbackRequest) returns (RollbackResponse);
// Promote a canary/percentage rollout to a higher target percentage
rpc PromoteRollout(PromoteRolloutRequest) returns (PromoteRolloutResponse);
// Get audit log entries
rpc GetAuditLog(GetAuditLogRequest) returns (GetAuditLogResponse);
// Get system-wide stats
rpc GetStats(GetStatsRequest) returns (GetStatsResponse);
// List all services that have configs
rpc ListServices(ListServicesRequest) returns (ListServicesResponse);
// List rollouts with optional status filter
rpc ListRollouts(ListRolloutsRequest) returns (ListRolloutsResponse);
// List named configs for a service (one entry per config_name)
rpc ListNamedConfigs(ListNamedConfigsRequest) returns (ListNamedConfigsResponse);
}
// Upload config request — creates a new version of a named config.
// If config_name does not exist yet this creates it at version 1.
// If it already exists a new version is appended (content required, no blanks).
message UploadConfigRequest {
string service_name = 1;
string config_name = 7; // Named config (e.g. "database-config") — required
string content = 2; // Config content — required
string format = 3; // "json", "yaml", "toml"
string created_by = 4; // User/system uploading
string description = 5; // Optional description
bool validate = 6; // Validate before upload
}
message UploadConfigResponse {
string config_id = 1;
int64 version = 2;
bool success = 3;
string message = 4;
repeated string validation_errors = 5;
}
// Get config request
message GetConfigRequest {
string config_id = 1;
}
message GetConfigResponse {
ConfigData config = 1;
bool success = 2;
string message = 3;
}
// List versions of a named config
message ListConfigsRequest {
string service_name = 1;
string config_name = 4; // Required: which named config to list versions for
int32 limit = 2; // Max results
int32 offset = 3; // Pagination offset
}
message ListConfigsResponse {
repeated ConfigMetadata configs = 1;
int32 total_count = 2;
bool success = 3;
}
// Delete config request
message DeleteConfigRequest {
string config_id = 1;
}
message DeleteConfigResponse {
bool success = 1;
string message = 2;
}
// Start rollout request
message StartRolloutRequest {
string config_id = 1;
RolloutStrategy strategy = 2;
int32 target_percentage = 3; // For PERCENTAGE strategy
}
message StartRolloutResponse {
bool success = 1;
string message = 2;
string rollout_id = 3;
}
// Get rollout status request
message GetRolloutStatusRequest {
string config_id = 1;
}
message GetRolloutStatusResponse {
RolloutState rollout_state = 1;
repeated ServiceInstance instances = 2; // Instances affected
bool success = 3;
}
// Rollback request — rolls a named config back to a specific version
message RollbackRequest {
string service_name = 1;
string config_name = 3; // Which named config to roll back
int64 target_version = 2; // Version to rollback to (0 = one before current)
}
message RollbackResponse {
bool success = 1;
string message = 2;
string config_id = 3;
}
// Promote rollout request
message PromoteRolloutRequest {
string config_id = 1;
int32 new_target_percentage = 2; // New target (must be > current target, <= 100)
}
message PromoteRolloutResponse {
bool success = 1;
string message = 2;
RolloutState rollout_state = 3; // Updated state after promotion
}
// Audit log entry
message AuditEntry {
int64 id = 1;
string config_id = 2;
string action = 3;
string performed_by = 4;
string service_name = 5;
string details = 6;
int64 created_at = 7;
}
// GetAuditLog - recent audit trail
message GetAuditLogRequest {
string service_name = 1; // Optional: filter by service
int32 limit = 2; // Default 20
}
message GetAuditLogResponse {
repeated AuditEntry entries = 1;
bool success = 2;
}
// GetStats - system-wide counters
message KonfigStats {
int32 total_configs = 1;
int32 active_rollouts = 2;
int32 total_schemas = 3;
int32 connected_instances = 4;
int32 total_services = 5;
}
message GetStatsRequest {}
message GetStatsResponse {
KonfigStats stats = 1;
bool success = 2;
}
// Service summary entry
message ServiceSummary {
string service_name = 1;
int64 latest_version = 2;
int32 config_count = 3;
string latest_updated_at = 4; // RFC3339 timestamp of latest config
bool has_active_rollout = 5;
}
message ListServicesRequest {}
message ListServicesResponse {
repeated ServiceSummary services = 1;
bool success = 2;
}
// Rollout summary (for listing)
message RolloutSummary {
string config_id = 1;
string service_name = 2;
string strategy = 3;
int32 target_percentage = 4;
int32 current_percentage = 5;
string status = 6;
string started_at = 7;
string completed_at = 8;
}
message ListRolloutsRequest {
string status_filter = 1; // "ACTIVE" = IN_PROGRESS+PENDING, "" = all recent
int32 limit = 2;
}
message ListRolloutsResponse {
repeated RolloutSummary rollouts = 1;
bool success = 2;
}
// List named configs (one per config_name) for a service
message ListNamedConfigsRequest {
string service_name = 1;
}
message ListNamedConfigsResponse {
repeated NamedConfigSummary configs = 1;
bool success = 2;
}