• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2023 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.adservices;
19
20// Recommended setup in go/java-proto-names
21option java_outer_classname = "AdservicesProtoEnums";
22option java_multiple_files = true;
23
24/**
25 * Type of the classifier used for classifying apps.
26 */
27enum ClassifierType {
28  /** Unknown classifier option. */
29  UNKNOWN_CLASSIFIER = 0;
30  /** Only on-device classification. */
31  ON_DEVICE_CLASSIFIER = 1;
32  /** Only Precomputed classification. */
33  PRECOMPUTED_CLASSIFIER = 2;
34  /** Precomputed classification values are preferred over on-device classification values. */
35  PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER = 3;
36}
37
38/**
39 * On Device classifier status.
40 */
41enum OnDeviceClassifierStatus {
42  ON_DEVICE_CLASSIFIER_STATUS_UNSPECIFIED = 0;
43  ON_DEVICE_CLASSIFIER_STATUS_NOT_INVOKED = 1;
44  ON_DEVICE_CLASSIFIER_STATUS_SUCCESS = 2;
45  ON_DEVICE_CLASSIFIER_STATUS_FAILURE = 3;
46}
47
48/**
49 * Precomputed classifier status.
50 */
51enum PrecomputedClassifierStatus {
52  PRECOMPUTED_CLASSIFIER_STATUS_UNSPECIFIED = 0;
53  PRECOMPUTED_CLASSIFIER_STATUS_NOT_INVOKED = 1;
54  PRECOMPUTED_CLASSIFIER_STATUS_SUCCESS = 2;
55  PRECOMPUTED_CLASSIFIER_STATUS_FAILURE = 3;
56}
57
58/**
59 * Attribution types.
60 */
61enum AttributionType {
62  UNKNOWN = 0;
63  APP_APP = 1;
64  APP_WEB = 2;
65  WEB_APP = 3;
66  WEB_WEB = 4;
67}
68
69/**
70 * Adservices API names.
71 */
72enum PpapiName {
73  PPAPI_NAME_UNSPECIFIED = 0;
74  TOPICS = 1;
75  MEASUREMENT = 2;
76  FLEDGE = 3;
77  AD_ID = 4;
78  APP_SET_ID = 5;
79  UX = 6;
80  // Use COMMON enum when the error happens in the common code path.
81  COMMON = 7;
82  // Represents federatedcompute APK in OnDevicePersonalization module.
83  FEDERATED_COMPUTE = 8;
84  // Data service used for migrating consent from Android R
85  ADEXT_DATA_SERVICE = 9;
86  // Represents ondevicepersonalization APK of OnDevicePersonalization module.
87  ODP = 10;
88  // Represents Protected App Signals API.
89  PAS = 11;
90  // Represents GetAdSelectionData API of B&A.
91  GET_AD_SELECTION_DATA = 12;
92  // Represents PersistAdSelectionResult API of B&A.
93  PERSIST_AD_SELECTION_RESULT = 13;
94  // Represents reportImpression API of B&A
95  REPORT_IMPRESSION = 14;
96  // Represents reportInteraction API of B&A
97  // The name reportInteraction maps to AdSelectionServiceImpl#reportInteraction, while the caller
98  // is AdSelectionManager#reportEvent.
99  REPORT_INTERACTION = 15;
100  // Represents joinCustomAudience API of FLEDGE.
101  JOIN_CUSTOM_AUDIENCE = 16;
102  // Represents leaveCustomAudience API of FLEDGE.
103  LEAVE_CUSTOM_AUDIENCE = 17;
104  // Represents fetchAndJoinCustomAudience API of FLEDGE.
105  FETCH_AND_JOIN_CUSTOM_AUDIENCE = 18;
106  // Represents scheduleCustomAudienceUpdate API of FLEDGE.
107  SCHEDULE_CUSTOM_AUDIENCE_UPDATE = 19;
108}
109
110/**
111 * Type of the result code that implies different execution results of Adservices background jobs.
112 */
113enum ExecutionResultCode {
114  /** Unspecified result code. */
115  UNSPECIFIED_CODE = 0;
116
117  /** Successful execution. */
118  SUCCESSFUL = 1;
119
120  /** Failed execution with retrying the job. */
121  FAILED_WITH_RETRY = 2;
122
123  /** Failed execution without retrying the job. */
124  FAILED_WITHOUT_RETRY = 3;
125
126  /** OnJobStop() is invoked with retrying the job. */
127  ONSTOP_CALLED_WITH_RETRY = 4;
128
129  /** OnJobStop() is invoked without retrying the job. */
130  ONSTOP_CALLED_WITHOUT_RETRY = 5;
131
132  /**
133   * The execution is halted by system or device for unknown reason, leaving
134   * a not finished execution.
135   */
136  HALTED_FOR_UNKNOWN_REASON = 6;
137
138  /** Skipped execution due to a job scheduled in ExtServices running on T+. */
139  SKIP_FOR_EXTSERVICES_JOB_ON_TPLUS = 7;
140
141  /** Skipped execution due to kill switch is on. */
142  SKIP_FOR_KILL_SWITCH_ON = 8;
143
144  /** Skipped execution due to user consent is revoked. */
145  SKIP_FOR_USER_CONSENT_REVOKED = 9;
146
147  /** Skipped execution due to job is not configured. */
148  SKIP_FOR_JOB_NOT_CONFIGURED = 10;
149
150  /** Skipped execution due to personalization not enabled. */
151  SKIP_FOR_PERSONALIZATION_NOT_ENABLED = 11;
152}
153
154/** Type of the result code that implies different scheduling results. */
155enum JobSchedulingResultCode {
156  // Default value.
157  SCHEDULING_RESULT_CODE_UNSPECIFIED = 0;
158
159  // Indicates the scheduling is successful.
160  SCHEDULING_RESULT_CODE_SUCCESSFUL = 1;
161
162  // Indicates the scheduling is failed.
163  SCHEDULING_RESULT_CODE_FAILED = 2;
164
165  // Indicates the scheduling is skipped due to same policy.
166  SCHEDULING_RESULT_CODE_SKIPPED = 3;
167}
168
169/** Type of scheduler used for the job scheduling. */
170enum SchedulerType {
171  // Default value.
172  SCHEDULER_TYPE_UNSPECIFIED = 0;
173
174  // Indicates the scheduler is Platform JobScheduler.
175  SCHEDULER_TYPE_JOB_SCHEDULER = 1;
176
177  // Indicates the scheduler is Platform SPE (Scheduling Policy Engine).
178  SCHEDULER_TYPE_SPE = 2;
179}
180
181// Region of the user who interacted with AdServicesSettings UI.
182enum AdServiceSettingRegion {
183  // fallback when getDeviceRegion call failed.
184  REGION_UNSPECIFIED = 0;
185  // European Union user (based on isoCountryInfo).
186  EU = 1;
187  // Non-European Union user (based on isoCountryInfo).
188  ROW = 2;
189}
190
191/* APIs whose access can be overridden by the app developer through the Android manifest. */
192enum AppApiAccessType {
193  API_ACCESS_TYPE_UNSPECIFIED = 0;
194  API_ACCESS_TYPE_TOPICS = 1;
195  API_ACCESS_TYPE_CUSTOM_AUDIENCES = 2;
196  API_ACCESS_TYPE_ATTRIBUTION = 3;
197  API_ACCESS_TYPE_PROTECTED_SIGNALS = 4;
198  API_ACCESS_TYPE_AD_SELECTION = 5;
199}
200
201/* Result of a call to check if an app allows access to a given AdServices API. */
202enum AppApiAccessResult {
203  API_ACCESS_RESULT_UNSPECIFIED = 0;
204  API_ACCESS_RESULT_ALLOWED_BY_DEFAULT_APP_DOES_NOT_HAVE_CONFIG = 1;
205  API_ACCESS_RESULT_ALLOWED_BY_DEFAULT_APP_HAS_CONFIG_WITHOUT_API_SECTION = 2;
206  API_ACCESS_RESULT_ALLOWED_APP_ALLOWS_ALL = 3;
207  API_ACCESS_RESULT_ALLOWED_APP_ALLOWS_SPECIFIC_ID = 4;
208  API_ACCESS_RESULT_DISALLOWED_APP_DOES_NOT_EXIST = 5;
209  API_ACCESS_RESULT_DISALLOWED_APP_CONFIG_PARSING_ERROR = 6;
210  API_ACCESS_RESULT_DISALLOWED_APP_DOES_NOT_HAVE_CONFIG = 7;
211  API_ACCESS_RESULT_DISALLOWED_APP_DOES_HAS_CONFIG_WITHOUT_API_SECTION = 8;
212  API_ACCESS_RESULT_DISALLOWED_BY_APP = 9;
213  API_ACCESS_RESULT_DISALLOWED_GENERIC_ERROR = 10;
214}
215
216// Module for which the job is reported.
217enum ModuleName {
218  UNKNOWN_MODULE_NAME = 0;
219  MODULE_NAME_ADSERVICES = 1;
220  MODULE_NAME_ON_DEVICE_PERSONALIZATION = 2;
221  MODULE_NAME_FEDERATED_COMPUTE = 3;
222}
223
224/**
225 * Enum representing a shell command. We will group enums in blocks of
226 * 100 like this below:
227 * - Common commands: 1-100
228 * - Custom audience commands: 101-200
229 * - Ad Selection commands: 201-300
230 *
231 */
232enum Command {
233  COMMAND_UNSET = 0;
234
235  // Common commands: 1-100
236  COMMAND_ECHO = 1;
237  COMMAND_IS_ALLOWED_ATTRIBUTION_ACCESS = 2;
238  COMMAND_IS_ALLOWED_PROTECTED_SIGNALS_ACCESS = 3;
239  COMMAND_IS_ALLOWED_CUSTOM_AUDIENCE_ACCESS = 4;
240  COMMAND_IS_ALLOWED_AD_SELECTION_ACCESS = 5;
241  COMMAND_IS_ALLOWED_TOPICS_ACCESS = 6;
242  COMMAND_ENABLE_ADSERVICES = 7;
243  COMMAND_RESET_CONSENT_DATA = 8;
244  COMMAND_DEV_SESSION = 9;  // Command to enable or disable adservices developer mode.
245  COMMAND_SET_USER_CHOICES = 10;
246  COMMAND_SET_MODULE_STATES = 11;
247
248  // Custom audience commands: 101-200
249  COMMAND_CUSTOM_AUDIENCE_VIEW = 101;
250  COMMAND_CUSTOM_AUDIENCE_LIST = 102;
251  COMMAND_CUSTOM_AUDIENCE_REFRESH = 103;
252
253  // Ad Selection commands: 201-300
254  COMMAND_AD_SELECTION_CONSENTED_DEBUG_ENABLE = 201;
255  COMMAND_AD_SELECTION_CONSENTED_DEBUG_DISABLE = 202;
256  COMMAND_AD_SELECTION_CONSENTED_DEBUG_VIEW = 203;
257  COMMAND_AD_SELECTION_CONSENTED_DEBUG_HELP = 204;
258  COMMAND_AD_SELECTION_GET_AD_SELECTION_DATA = 205;
259  COMMAND_AD_SELECTION_MOCK_AUCTION = 206;
260  COMMAND_AD_SELECTION_VIEW_AUCTION_RESULT = 207;
261
262  // Protected App Signals commands: 301-400
263  reserved 301;
264  COMMAND_APP_SIGNALS_GENERATE_INPUT_FOR_ENCODING = 302;
265  COMMAND_APP_SIGNALS_TRIGGER_ENCODING = 303;
266
267  // Attribution-reporting commands: 401-500
268  COMMAND_ATTRIBUTION_REPORTING_LIST_SOURCE_REGISTRATIONS = 401;
269  COMMAND_ATTRIBUTION_REPORTING_LIST_TRIGGER_REGISTRATIONS = 402;
270  COMMAND_ATTRIBUTION_REPORTING_LIST_EVENT_REPORTS = 403;
271  COMMAND_ATTRIBUTION_REPORTING_LIST_AGGREGATE_REPORTS = 404;
272  COMMAND_ATTRIBUTION_REPORTING_LIST_DEBUG_REPORTS = 405;
273}
274
275// Result of the shell command
276enum CommandResult {
277  COMMAND_RESULT_UNKNOWN = 0;
278  COMMAND_RESULT_SUCCESS = 1;
279  COMMAND_RESULT_GENERIC_ERROR = 2;
280  COMMAND_RESULT_INVALID_ARGS = 3;
281  COMMAND_RESULT_TIMEOUT_ERROR = 4;
282  COMMAND_RESULT_INVALID_COMMAND = 5;
283  COMMAND_RESULT_NOT_ENABLED = 6;
284  COMMAND_RESULT_DEV_MODE_UNCONFIRMED = 7;
285}
286
287// Cobalt logging event
288enum CobaltLoggingEvent {
289  LOGGING_EVENT_UNSPECIFIED = 0;
290  LOGGING_EVENT_OVER_STRING_BUFFER_MAX = 1;
291  LOGGING_EVENT_OVER_EVENT_VECTOR_BUFFER_MAX = 2;
292  LOGGING_EVENT_OVER_MAX_VALUE = 3;
293}
294
295// Cobalt upload event
296enum CobaltPeriodicJobEvent {
297  UPLOAD_EVENT_UNSPECIFIED = 0;
298  UPLOAD_EVENT_SUCCESS = 1;
299  UPLOAD_EVENT_FAILURE = 2;
300}
301