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