1/*
2 * Copyright (C) 2024 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17syntax = "proto2";
18package android.aconfigd;
19option optimize_for = LITE_RUNTIME;
20
21message PersistStorageRecord {
22  optional uint32 version = 1;
23  optional string container = 2;
24  optional string package_map = 3;
25  optional string flag_map = 4;
26  optional string flag_val = 5;
27  optional string digest = 6;
28  optional string flag_info = 7;
29}
30
31message PersistStorageRecords {
32  repeated PersistStorageRecord records = 1;
33}
34
35message FlagOverride {
36  optional string package_name = 1;
37  optional string flag_name = 2;
38  optional string flag_value = 3;
39}
40
41message LocalFlagOverrides {
42  repeated FlagOverride overrides = 1;
43}
44
45// incoming request to aconfigd
46message StorageRequestMessage {
47  // new storage notification
48  message NewStorageMessage {
49    optional string container = 1;
50    optional string package_map = 2;
51    optional string flag_map = 3;
52    optional string flag_value = 4;
53    optional string flag_info = 5;
54  }
55
56  enum FlagOverrideType {
57    LOCAL_IMMEDIATE = 1;
58    LOCAL_ON_REBOOT = 2;
59    SERVER_ON_REBOOT = 3;
60  }
61
62  // request persistent flag value override
63  message FlagOverrideMessage {
64    optional string package_name = 1;
65    optional string flag_name = 2;
66    optional string flag_value = 3;
67    optional FlagOverrideType override_type = 4;
68  }
69
70  // request to stage ota flags
71  message OTAFlagStagingMessage {
72    optional string build_id = 1;
73    repeated FlagOverride overrides = 2;
74  }
75
76  enum RemoveOverrideType {
77    REMOVE_LOCAL_IMMEDIATE = 1;
78    REMOVE_LOCAL_ON_REBOOT = 2;
79  }
80
81  // request to remove local flag override
82  message RemoveLocalOverrideMessage {
83    optional bool remove_all = 1;
84    optional string package_name = 2;
85    optional string flag_name = 3;
86    optional RemoveOverrideType remove_override_type = 4;
87  }
88
89  // query persistent flag value and info
90  message FlagQueryMessage {
91    optional string package_name = 1;
92    optional string flag_name = 2;
93  }
94
95  // reset all storage
96  message ResetStorageMessage {
97    oneof msg {
98      bool all = 1;
99      string container = 2;
100    }
101  }
102
103  // list storage
104  message ListStorageMessage {
105    oneof msg {
106      bool all = 1;
107      string container = 2;
108      string package_name = 3;
109    }
110  }
111
112  oneof msg {
113    NewStorageMessage new_storage_message = 1;
114    FlagOverrideMessage flag_override_message = 2;
115    OTAFlagStagingMessage ota_staging_message = 3;
116    FlagQueryMessage flag_query_message = 4;
117    RemoveLocalOverrideMessage remove_local_override_message = 5;
118    ResetStorageMessage reset_storage_message = 6;
119    ListStorageMessage list_storage_message = 7;
120  };
121}
122
123message StorageRequestMessages {
124  repeated StorageRequestMessage msgs = 1;
125}
126
127// aconfigd return to client
128message StorageReturnMessage {
129  message NewStorageReturnMessage {
130    optional bool storage_updated = 1;
131  }
132
133  message FlagOverrideReturnMessage {}
134
135  message OTAFlagStagingReturnMessage {}
136
137  message FlagQueryReturnMessage {
138    optional string package_name = 1;
139    optional string flag_name = 2;
140    optional string server_flag_value = 3;
141    optional string local_flag_value = 4;
142    optional string boot_flag_value = 5;
143    optional string default_flag_value = 6;
144    optional bool has_server_override = 7;
145    optional bool is_readwrite = 8;
146    optional bool has_local_override = 9;
147    optional bool has_boot_local_override = 10;
148    optional string container = 11;
149  }
150
151  message RemoveLocalOverrideReturnMessage {}
152
153  message ResetStorageReturnMessage {}
154
155  message ListStorageReturnMessage {
156    repeated FlagQueryReturnMessage flags = 1;
157  }
158
159  oneof msg {
160    NewStorageReturnMessage new_storage_message = 1;
161    FlagOverrideReturnMessage flag_override_message = 2;
162    OTAFlagStagingReturnMessage ota_staging_message = 3;
163    FlagQueryReturnMessage flag_query_message = 4;
164    RemoveLocalOverrideReturnMessage remove_local_override_message = 5;
165    ResetStorageReturnMessage reset_storage_message = 6;
166    ListStorageReturnMessage list_storage_message = 7;
167    string error_message = 8;
168  };
169}
170
171message StorageReturnMessages {
172  repeated StorageReturnMessage msgs = 1;
173}
174