-
Notifications
You must be signed in to change notification settings - Fork 1
/
registry.proto
124 lines (104 loc) · 3.32 KB
/
registry.proto
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
syntax = "proto3";
// Where Projects/Users get hitched to apps
package registry;
option go_package = "github.com/cubex/proto-go/registry";
enum Status {
INSTALLED = 0;
ACTIVE = 1;
DISABLED = 2;
}
enum Permission {
DENY = 0;
ALLOW = 1;
}
enum Visibility {
HIDE = 0;
SHOW = 1;
AVAILABLE = 2; // Hidden by default, but can be enabled by users
}
enum TrustMode {
NONE = 0; // Specifically allow actions etc
FULL = 1; // Allow everything, but specifically remove actions etc
}
message Relationship {
string project_id = 1;
string user_id = 2;
string global_app_id = 3;
}
message InstallRequest {
Relationship relationship = 1;
TrustMode trust_mode = 2; // Need a prenup?
repeated AppPermission permissions = 3;
}
message TrustModeRequest {
Relationship relationship = 1;
TrustMode trust_mode = 2;
}
message PermissionsRequest {
Relationship relationship = 1;
repeated AppPermission permissions = 2;
}
message ConfigureRequest {
Relationship relationship = 1;
repeated Configuration items = 2;
}
message Configuration {
string id = 1;
string value = 2;
}
message AppPermission {
string id = 1;
Permission permission = 2;
}
message AppItem {
string id = 1;
Visibility visibility = 2;
}
message AppItemRequest {
Relationship relationship = 1;
repeated AppItem items = 2;
}
message RelationshipRequest {
Relationship relationship = 1;
bool with_data = 2;
}
message RelationshipData {
Relationship relationship = 1;
TrustMode trust_mode = 2;
repeated AppPermission permissions = 3;
repeated Configuration configuration = 4;
repeated AppItem navigation = 5;
repeated AppItem quick_actions = 6;
repeated AppItem search_actions = 7;
repeated AppItem queues = 8;
repeated AppItem notifications = 9;
repeated AppItem panel_integrations = 10;
repeated AppItem menu_integrations = 11;
repeated AppItem action_integrations = 12;
Status status = 13;
}
message RelationshipsResponse {
repeated RelationshipData relationships = 1;
}
message RegistryActionResponse {
bool success = 1;
string message = 2;
}
service Registry {
rpc Install (InstallRequest) returns (RegistryActionResponse);
rpc Uninstall (Relationship) returns (RegistryActionResponse);
rpc Activate (Relationship) returns (RegistryActionResponse);
rpc Deactivate (Relationship) returns (RegistryActionResponse);
rpc Configure (ConfigureRequest) returns (RegistryActionResponse);
rpc SetPermissions (PermissionsRequest) returns (RegistryActionResponse);
rpc SetTrustMode (TrustModeRequest) returns (RegistryActionResponse);
rpc SetNavigation (AppItemRequest) returns (RegistryActionResponse);
rpc SetQuickActions (AppItemRequest) returns (RegistryActionResponse);
rpc SetSearchActions (AppItemRequest) returns (RegistryActionResponse);
rpc SetQueues (AppItemRequest) returns (RegistryActionResponse);
rpc SetNotifications (AppItemRequest) returns (RegistryActionResponse);
rpc SetPanelIntegrations (AppItemRequest) returns (RegistryActionResponse);
rpc SetMenuIntegrations (AppItemRequest) returns (RegistryActionResponse);
rpc SetActionIntegrations (AppItemRequest) returns (RegistryActionResponse);
rpc GetRelationships (RelationshipRequest) returns (RelationshipsResponse);
}