{ "kind": "discovery#restDescription", "description": "Lets Android application developers access their Google Play accounts. At a high level, the expected workflow is to \"insert\" an Edit, make changes as necessary, and then \"commit\" it. ", "ownerName": "Google", "basePath": "", "discoveryVersion": "v1", "resources": { "users": { "methods": { "create": { "id": "androidpublisher.users.create", "path": "androidpublisher/v3/{+parent}/users", "flatPath": "androidpublisher/v3/developers/{developersId}/users", "httpMethod": "POST", "parameters": { "parent": { "description": "Required. The developer account to add the user to. Format: developers/{developer}", "pattern": "^developers/[^/]+$", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "parent" ], "request": { "$ref": "User" }, "response": { "$ref": "User" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Grant access for a user to the given developer account." }, "list": { "id": "androidpublisher.users.list", "path": "androidpublisher/v3/{+parent}/users", "flatPath": "androidpublisher/v3/developers/{developersId}/users", "httpMethod": "GET", "parameters": { "parent": { "description": "Required. The developer account to fetch users from. Format: developers/{developer}", "pattern": "^developers/[^/]+$", "location": "path", "required": true, "type": "string" }, "pageSize": { "description": "The maximum number of results to return. This must be set to -1 to disable pagination.", "location": "query", "type": "integer", "format": "int32" }, "pageToken": { "description": "A token received from a previous call to this method, in order to retrieve further results.", "location": "query", "type": "string" } }, "parameterOrder": [ "parent" ], "response": { "$ref": "ListUsersResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all users with access to a developer account." }, "patch": { "id": "androidpublisher.users.patch", "path": "androidpublisher/v3/{+name}", "flatPath": "androidpublisher/v3/developers/{developersId}/users/{usersId}", "httpMethod": "PATCH", "parameters": { "name": { "description": "Required. Resource name for this user, following the pattern \"developers/{developer}/users/{email}\".", "pattern": "^developers/[^/]+/users/[^/]+$", "location": "path", "required": true, "type": "string" }, "updateMask": { "description": "Optional. The list of fields to be updated.", "location": "query", "type": "string", "format": "google-fieldmask" } }, "parameterOrder": [ "name" ], "request": { "$ref": "User" }, "response": { "$ref": "User" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates access for the user to the developer account." }, "delete": { "id": "androidpublisher.users.delete", "path": "androidpublisher/v3/{+name}", "flatPath": "androidpublisher/v3/developers/{developersId}/users/{usersId}", "httpMethod": "DELETE", "parameters": { "name": { "description": "Required. The name of the user to delete. Format: developers/{developer}/users/{email}", "pattern": "^developers/[^/]+/users/[^/]+$", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "name" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Removes all access for the user to the given developer account." } } }, "grants": { "methods": { "create": { "id": "androidpublisher.grants.create", "path": "androidpublisher/v3/{+parent}/grants", "flatPath": "androidpublisher/v3/developers/{developersId}/users/{usersId}/grants", "httpMethod": "POST", "parameters": { "parent": { "description": "Required. The user which needs permission. Format: developers/{developer}/users/{user}", "pattern": "^developers/[^/]+/users/[^/]+$", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "parent" ], "request": { "$ref": "Grant" }, "response": { "$ref": "Grant" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Grant access for a user to the given package." }, "patch": { "id": "androidpublisher.grants.patch", "path": "androidpublisher/v3/{+name}", "flatPath": "androidpublisher/v3/developers/{developersId}/users/{usersId}/grants/{grantsId}", "httpMethod": "PATCH", "parameters": { "name": { "description": "Required. Resource name for this grant, following the pattern \"developers/{developer}/users/{email}/grants/{package_name}\". If this grant is for a draft app, the app ID will be used in this resource name instead of the package name.", "pattern": "^developers/[^/]+/users/[^/]+/grants/[^/]+$", "location": "path", "required": true, "type": "string" }, "updateMask": { "description": "Optional. The list of fields to be updated.", "location": "query", "type": "string", "format": "google-fieldmask" } }, "parameterOrder": [ "name" ], "request": { "$ref": "Grant" }, "response": { "$ref": "Grant" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates access for the user to the given package." }, "delete": { "id": "androidpublisher.grants.delete", "path": "androidpublisher/v3/{+name}", "flatPath": "androidpublisher/v3/developers/{developersId}/users/{usersId}/grants/{grantsId}", "httpMethod": "DELETE", "parameters": { "name": { "description": "Required. The name of the grant to delete. Format: developers/{developer}/users/{email}/grants/{package_name}", "pattern": "^developers/[^/]+/users/[^/]+/grants/[^/]+$", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "name" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Removes all access for the user to the given package or developer account." } } }, "apprecovery": { "methods": { "create": { "id": "androidpublisher.apprecovery.create", "path": "androidpublisher/v3/applications/{packageName}/appRecoveries", "flatPath": "androidpublisher/v3/applications/{packageName}/appRecoveries", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. Package name of the app on which recovery action is performed.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "CreateDraftAppRecoveryRequest" }, "response": { "$ref": "AppRecoveryAction" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Create an app recovery action with recovery status as DRAFT. Note that this action does not execute the recovery action." }, "deploy": { "id": "androidpublisher.apprecovery.deploy", "path": "androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:deploy", "flatPath": "androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:deploy", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. Package name of the app for which recovery action is deployed.", "location": "path", "required": true, "type": "string" }, "appRecoveryId": { "description": "Required. ID corresponding to the app recovery action to deploy.", "location": "path", "required": true, "type": "string", "format": "int64" } }, "parameterOrder": [ "packageName", "appRecoveryId" ], "request": { "$ref": "DeployAppRecoveryRequest" }, "response": { "$ref": "DeployAppRecoveryResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deploy an already created app recovery action with recovery status DRAFT. Note that this action activates the recovery action for all targeted users and changes its status to ACTIVE." }, "appRecoveries": { "id": "androidpublisher.apprecovery.appRecoveries", "path": "androidpublisher/v3/applications/{packageName}/appRecoveries", "flatPath": "androidpublisher/v3/applications/{packageName}/appRecoveries", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. Package name of the app for which list of recovery actions is requested.", "location": "path", "required": true, "type": "string" }, "versionCode": { "description": "Required. Version code targeted by the list of recovery actions.", "location": "query", "type": "string", "format": "int64" } }, "parameterOrder": [ "packageName" ], "response": { "$ref": "ListAppRecoveriesResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "List all app recovery action resources associated with a particular package name and app version." }, "addTargeting": { "id": "androidpublisher.apprecovery.addTargeting", "path": "androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:addTargeting", "flatPath": "androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:addTargeting", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. Package name of the app for which recovery action is to be updated.", "location": "path", "required": true, "type": "string" }, "appRecoveryId": { "description": "Required. ID corresponding to the app recovery action.", "location": "path", "required": true, "type": "string", "format": "int64" } }, "parameterOrder": [ "packageName", "appRecoveryId" ], "request": { "$ref": "AddTargetingRequest" }, "response": { "$ref": "AddTargetingResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Incrementally update targeting for a recovery action. Note that only the criteria selected during the creation of recovery action can be expanded." }, "cancel": { "id": "androidpublisher.apprecovery.cancel", "path": "androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:cancel", "flatPath": "androidpublisher/v3/applications/{packageName}/appRecoveries/{appRecoveryId}:cancel", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. Package name of the app for which recovery action cancellation is requested.", "location": "path", "required": true, "type": "string" }, "appRecoveryId": { "description": "Required. ID corresponding to the app recovery action.", "location": "path", "required": true, "type": "string", "format": "int64" } }, "parameterOrder": [ "packageName", "appRecoveryId" ], "request": { "$ref": "CancelAppRecoveryRequest" }, "response": { "$ref": "CancelAppRecoveryResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Cancel an already executing app recovery action. Note that this action changes status of the recovery action to CANCELED." } } }, "edits": { "methods": { "insert": { "id": "androidpublisher.edits.insert", "path": "androidpublisher/v3/applications/{packageName}/edits", "flatPath": "androidpublisher/v3/applications/{packageName}/edits", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "AppEdit" }, "response": { "$ref": "AppEdit" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates a new edit for an app." }, "get": { "id": "androidpublisher.edits.get", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "response": { "$ref": "AppEdit" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets an app edit." }, "delete": { "id": "androidpublisher.edits.delete", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes an app edit." }, "commit": { "id": "androidpublisher.edits.commit", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}:commit", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}:commit", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "changesNotSentForReview": { "description": "Indicates that the changes in this edit will not be reviewed until they are explicitly sent for review from the Google Play Console UI. These changes will be added to any other changes that are not yet sent for review.", "location": "query", "type": "boolean" } }, "parameterOrder": [ "packageName", "editId" ], "response": { "$ref": "AppEdit" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Commits an app edit." }, "validate": { "id": "androidpublisher.edits.validate", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}:validate", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}:validate", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "response": { "$ref": "AppEdit" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Validates an app edit." } }, "resources": { "apks": { "methods": { "upload": { "id": "androidpublisher.edits.apks.upload", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "supportsMediaUpload": true, "mediaUpload": { "accept": [ "application/octet-stream", "application/vnd.android.package-archive" ], "maxSize": "10737418240", "protocols": { "resumable": { "multipart": true, "path": "/resumable/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks" }, "simple": { "multipart": true, "path": "/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks" } } }, "response": { "$ref": "Apk" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Uploads an APK and adds to the current edit." }, "list": { "id": "androidpublisher.edits.apks.list", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "response": { "$ref": "ApksListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all current APKs of the app and edit." }, "addexternallyhosted": { "id": "androidpublisher.edits.apks.addexternallyhosted", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/externallyHosted", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/externallyHosted", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "request": { "$ref": "ApksAddExternallyHostedRequest" }, "response": { "$ref": "ApksAddExternallyHostedResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates a new APK without uploading the APK itself to Google Play, instead hosting the APK at a specified URL. This function is only available to organizations using Managed Play whose application is configured to restrict distribution to the organizations." } } }, "bundles": { "methods": { "list": { "id": "androidpublisher.edits.bundles.list", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "response": { "$ref": "BundlesListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all current Android App Bundles of the app and edit." }, "upload": { "id": "androidpublisher.edits.bundles.upload", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "ackBundleInstallationWarning": { "description": "Must be set to true if the app bundle installation may trigger a warning on user devices (for example, if installation size may be over a threshold, typically 100 MB).", "location": "query", "type": "boolean" }, "deviceTierConfigId": { "description": "Device tier config (DTC) to be used for generating deliverables (APKs). Contains id of the DTC or \"LATEST\" for last uploaded DTC.", "location": "query", "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "supportsMediaUpload": true, "mediaUpload": { "accept": [ "application/octet-stream" ], "maxSize": "10737418240", "protocols": { "resumable": { "multipart": true, "path": "/resumable/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles" }, "simple": { "multipart": true, "path": "/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/bundles" } } }, "response": { "$ref": "Bundle" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Uploads a new Android App Bundle to this edit. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See [Timeouts and Errors](https://developers.google.com/api-client-library/java/google-api-java-client/errors) for an example in java." } } }, "countryavailability": { "methods": { "get": { "id": "androidpublisher.edits.countryavailability.get", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/countryAvailability/{track}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/countryAvailability/{track}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "track": { "description": "The track to read from.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "track" ], "response": { "$ref": "TrackCountryAvailability" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets country availability." } } }, "deobfuscationfiles": { "methods": { "upload": { "id": "androidpublisher.edits.deobfuscationfiles.upload", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/deobfuscationFiles/{deobfuscationFileType}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/deobfuscationFiles/{deobfuscationFileType}", "httpMethod": "POST", "parameters": { "packageName": { "description": "Unique identifier for the Android app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Unique identifier for this edit.", "location": "path", "required": true, "type": "string" }, "apkVersionCode": { "description": "The version code of the APK whose Deobfuscation File is being uploaded.", "location": "path", "required": true, "type": "integer", "format": "int32" }, "deobfuscationFileType": { "description": "The type of the deobfuscation file.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified deobfuscation file type.", "Proguard deobfuscation file type.", "Native debugging symbols file type." ], "enum": [ "deobfuscationFileTypeUnspecified", "proguard", "nativeCode" ] } }, "parameterOrder": [ "packageName", "editId", "apkVersionCode", "deobfuscationFileType" ], "supportsMediaUpload": true, "mediaUpload": { "accept": [ "application/octet-stream" ], "maxSize": "1677721600", "protocols": { "resumable": { "multipart": true, "path": "/resumable/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/deobfuscationFiles/{deobfuscationFileType}" }, "simple": { "multipart": true, "path": "/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/deobfuscationFiles/{deobfuscationFileType}" } } }, "response": { "$ref": "DeobfuscationFilesUploadResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Uploads a new deobfuscation file and attaches to the specified APK." } } }, "details": { "methods": { "get": { "id": "androidpublisher.edits.details.get", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/details", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/details", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "response": { "$ref": "AppDetails" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets details of an app." }, "update": { "id": "androidpublisher.edits.details.update", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/details", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/details", "httpMethod": "PUT", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "request": { "$ref": "AppDetails" }, "response": { "$ref": "AppDetails" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates details of an app." }, "patch": { "id": "androidpublisher.edits.details.patch", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/details", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/details", "httpMethod": "PATCH", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "request": { "$ref": "AppDetails" }, "response": { "$ref": "AppDetails" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Patches details of an app." } } }, "expansionfiles": { "methods": { "get": { "id": "androidpublisher.edits.expansionfiles.get", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "apkVersionCode": { "description": "The version code of the APK whose expansion file configuration is being read or modified.", "location": "path", "required": true, "type": "integer", "format": "int32" }, "expansionFileType": { "description": "The file type of the file configuration which is being read or modified.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified expansion file type.", "Main expansion file.", "Patch expansion file." ], "enum": [ "expansionFileTypeUnspecified", "main", "patch" ] } }, "parameterOrder": [ "packageName", "editId", "apkVersionCode", "expansionFileType" ], "response": { "$ref": "ExpansionFile" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Fetches the expansion file configuration for the specified APK." }, "update": { "id": "androidpublisher.edits.expansionfiles.update", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}", "httpMethod": "PUT", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "apkVersionCode": { "description": "The version code of the APK whose expansion file configuration is being read or modified.", "location": "path", "required": true, "type": "integer", "format": "int32" }, "expansionFileType": { "description": "The file type of the file configuration which is being read or modified.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified expansion file type.", "Main expansion file.", "Patch expansion file." ], "enum": [ "expansionFileTypeUnspecified", "main", "patch" ] } }, "parameterOrder": [ "packageName", "editId", "apkVersionCode", "expansionFileType" ], "request": { "$ref": "ExpansionFile" }, "response": { "$ref": "ExpansionFile" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates the APK's expansion file configuration to reference another APK's expansion file. To add a new expansion file use the Upload method." }, "patch": { "id": "androidpublisher.edits.expansionfiles.patch", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}", "httpMethod": "PATCH", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "apkVersionCode": { "description": "The version code of the APK whose expansion file configuration is being read or modified.", "location": "path", "required": true, "type": "integer", "format": "int32" }, "expansionFileType": { "description": "The file type of the expansion file configuration which is being updated.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified expansion file type.", "Main expansion file.", "Patch expansion file." ], "enum": [ "expansionFileTypeUnspecified", "main", "patch" ] } }, "parameterOrder": [ "packageName", "editId", "apkVersionCode", "expansionFileType" ], "request": { "$ref": "ExpansionFile" }, "response": { "$ref": "ExpansionFile" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Patches the APK's expansion file configuration to reference another APK's expansion file. To add a new expansion file use the Upload method." }, "upload": { "id": "androidpublisher.edits.expansionfiles.upload", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "apkVersionCode": { "description": "The version code of the APK whose expansion file configuration is being read or modified.", "location": "path", "required": true, "type": "integer", "format": "int32" }, "expansionFileType": { "description": "The file type of the expansion file configuration which is being updated.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified expansion file type.", "Main expansion file.", "Patch expansion file." ], "enum": [ "expansionFileTypeUnspecified", "main", "patch" ] } }, "parameterOrder": [ "packageName", "editId", "apkVersionCode", "expansionFileType" ], "supportsMediaUpload": true, "mediaUpload": { "accept": [ "application/octet-stream" ], "maxSize": "2147483648", "protocols": { "resumable": { "multipart": true, "path": "/resumable/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}" }, "simple": { "multipart": true, "path": "/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}" } } }, "response": { "$ref": "ExpansionFilesUploadResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Uploads a new expansion file and attaches to the specified APK." } } }, "images": { "methods": { "list": { "id": "androidpublisher.edits.images.list", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). There must be a store listing for the specified language.", "location": "path", "required": true, "type": "string" }, "imageType": { "description": "Type of the Image. Providing an image type that refers to no images will return an empty response.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified type. Do not use.", "Phone screenshot.", "Seven inch screenshot.", "Ten inch screenshot.", "TV screenshot.", "Wear screenshot.", "Icon.", "Feature graphic.", "TV banner." ], "enum": [ "appImageTypeUnspecified", "phoneScreenshots", "sevenInchScreenshots", "tenInchScreenshots", "tvScreenshots", "wearScreenshots", "icon", "featureGraphic", "tvBanner" ] } }, "parameterOrder": [ "packageName", "editId", "language", "imageType" ], "response": { "$ref": "ImagesListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all images. The response may be empty." }, "delete": { "id": "androidpublisher.edits.images.delete", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}/{imageId}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}/{imageId}", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).", "location": "path", "required": true, "type": "string" }, "imageType": { "description": "Type of the Image.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified type. Do not use.", "Phone screenshot.", "Seven inch screenshot.", "Ten inch screenshot.", "TV screenshot.", "Wear screenshot.", "Icon.", "Feature graphic.", "TV banner." ], "enum": [ "appImageTypeUnspecified", "phoneScreenshots", "sevenInchScreenshots", "tenInchScreenshots", "tvScreenshots", "wearScreenshots", "icon", "featureGraphic", "tvBanner" ] }, "imageId": { "description": "Unique identifier an image within the set of images attached to this edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "language", "imageType", "imageId" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes the image (specified by id) from the edit." }, "deleteall": { "id": "androidpublisher.edits.images.deleteall", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). Providing a language that is not supported by the App is a no-op.", "location": "path", "required": true, "type": "string" }, "imageType": { "description": "Type of the Image. Providing an image type that refers to no images is a no-op.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified type. Do not use.", "Phone screenshot.", "Seven inch screenshot.", "Ten inch screenshot.", "TV screenshot.", "Wear screenshot.", "Icon.", "Feature graphic.", "TV banner." ], "enum": [ "appImageTypeUnspecified", "phoneScreenshots", "sevenInchScreenshots", "tenInchScreenshots", "tvScreenshots", "wearScreenshots", "icon", "featureGraphic", "tvBanner" ] } }, "parameterOrder": [ "packageName", "editId", "language", "imageType" ], "response": { "$ref": "ImagesDeleteAllResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes all images for the specified language and image type. Returns an empty response if no images are found." }, "upload": { "id": "androidpublisher.edits.images.upload", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German). Providing a language that is not supported by the App is a no-op.", "location": "path", "required": true, "type": "string" }, "imageType": { "description": "Type of the Image.", "location": "path", "required": true, "type": "string", "enumDescriptions": [ "Unspecified type. Do not use.", "Phone screenshot.", "Seven inch screenshot.", "Ten inch screenshot.", "TV screenshot.", "Wear screenshot.", "Icon.", "Feature graphic.", "TV banner." ], "enum": [ "appImageTypeUnspecified", "phoneScreenshots", "sevenInchScreenshots", "tenInchScreenshots", "tvScreenshots", "wearScreenshots", "icon", "featureGraphic", "tvBanner" ] } }, "parameterOrder": [ "packageName", "editId", "language", "imageType" ], "supportsMediaUpload": true, "mediaUpload": { "accept": [ "image/*" ], "maxSize": "15728640", "protocols": { "resumable": { "multipart": true, "path": "/resumable/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}" }, "simple": { "multipart": true, "path": "/upload/androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}/{imageType}" } } }, "response": { "$ref": "ImagesUploadResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Uploads an image of the specified language and image type, and adds to the edit." } } }, "listings": { "methods": { "update": { "id": "androidpublisher.edits.listings.update", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}", "httpMethod": "PUT", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "language" ], "request": { "$ref": "Listing" }, "response": { "$ref": "Listing" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates or updates a localized store listing." }, "patch": { "id": "androidpublisher.edits.listings.patch", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}", "httpMethod": "PATCH", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "language" ], "request": { "$ref": "Listing" }, "response": { "$ref": "Listing" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Patches a localized store listing." }, "get": { "id": "androidpublisher.edits.listings.get", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "language" ], "response": { "$ref": "Listing" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets a localized store listing." }, "list": { "id": "androidpublisher.edits.listings.list", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "response": { "$ref": "ListingsListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all localized store listings." }, "delete": { "id": "androidpublisher.edits.listings.delete", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings/{language}", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "language" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes a localized store listing." }, "deleteall": { "id": "androidpublisher.edits.listings.deleteall", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/listings", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes all store listings." } } }, "testers": { "methods": { "get": { "id": "androidpublisher.edits.testers.get", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "track": { "description": "The track to read from.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "track" ], "response": { "$ref": "Testers" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets testers. Note: Testers resource does not support email lists." }, "update": { "id": "androidpublisher.edits.testers.update", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}", "httpMethod": "PUT", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "track": { "description": "The track to update.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "track" ], "request": { "$ref": "Testers" }, "response": { "$ref": "Testers" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates testers. Note: Testers resource does not support email lists." }, "patch": { "id": "androidpublisher.edits.testers.patch", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/testers/{track}", "httpMethod": "PATCH", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "track": { "description": "The track to update.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "track" ], "request": { "$ref": "Testers" }, "response": { "$ref": "Testers" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Patches testers. Note: Testers resource does not support email lists." } } }, "tracks": { "methods": { "get": { "id": "androidpublisher.edits.tracks.get", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "track": { "description": "Identifier of the track. [More on track name](https://developers.google.com/android-publisher/tracks#ff-track-name)", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "track" ], "response": { "$ref": "Track" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets a track." }, "list": { "id": "androidpublisher.edits.tracks.list", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "response": { "$ref": "TracksListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all tracks." }, "update": { "id": "androidpublisher.edits.tracks.update", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}", "httpMethod": "PUT", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "track": { "description": "Identifier of the track. [More on track name](https://developers.google.com/android-publisher/tracks#ff-track-name)", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "track" ], "request": { "$ref": "Track" }, "response": { "$ref": "Track" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates a track." }, "patch": { "id": "androidpublisher.edits.tracks.patch", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks/{track}", "httpMethod": "PATCH", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Identifier of the edit.", "location": "path", "required": true, "type": "string" }, "track": { "description": "Identifier of the track. [More on track name](https://developers.google.com/android-publisher/tracks#ff-track-name)", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId", "track" ], "request": { "$ref": "Track" }, "response": { "$ref": "Track" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Patches a track." }, "create": { "id": "androidpublisher.edits.tracks.create", "path": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks", "flatPath": "androidpublisher/v3/applications/{packageName}/edits/{editId}/tracks", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. Package name of the app.", "location": "path", "required": true, "type": "string" }, "editId": { "description": "Required. Identifier of the edit.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "editId" ], "request": { "$ref": "TrackConfig" }, "response": { "$ref": "Track" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates a new track." } } } } }, "externaltransactions": { "methods": { "createexternaltransaction": { "id": "androidpublisher.externaltransactions.createexternaltransaction", "path": "androidpublisher/v3/{+parent}/externalTransactions", "flatPath": "androidpublisher/v3/applications/{applicationsId}/externalTransactions", "httpMethod": "POST", "parameters": { "parent": { "description": "Required. The parent resource where this external transaction will be created. Format: applications/{package_name}", "pattern": "^applications/[^/]+$", "location": "path", "required": true, "type": "string" }, "externalTransactionId": { "description": "Required. The id to use for the external transaction. Must be unique across all other transactions for the app. This value should be 1-63 characters and valid characters are /a-zA-Z0-9_-/. Do not use this field to store any Personally Identifiable Information (PII) such as emails. Attempting to store PII in this field may result in requests being blocked.", "location": "query", "type": "string" } }, "parameterOrder": [ "parent" ], "request": { "$ref": "ExternalTransaction" }, "response": { "$ref": "ExternalTransaction" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates a new external transaction." }, "refundexternaltransaction": { "id": "androidpublisher.externaltransactions.refundexternaltransaction", "path": "androidpublisher/v3/{+name}:refund", "flatPath": "androidpublisher/v3/applications/{applicationsId}/externalTransactions/{externalTransactionsId}:refund", "httpMethod": "POST", "parameters": { "name": { "description": "Required. The name of the external transaction that will be refunded. Format: applications/{package_name}/externalTransactions/{external_transaction}", "pattern": "^applications/[^/]+/externalTransactions/[^/]+$", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "name" ], "request": { "$ref": "RefundExternalTransactionRequest" }, "response": { "$ref": "ExternalTransaction" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Refunds or partially refunds an existing external transaction." }, "getexternaltransaction": { "id": "androidpublisher.externaltransactions.getexternaltransaction", "path": "androidpublisher/v3/{+name}", "flatPath": "androidpublisher/v3/applications/{applicationsId}/externalTransactions/{externalTransactionsId}", "httpMethod": "GET", "parameters": { "name": { "description": "Required. The name of the external transaction to retrieve. Format: applications/{package_name}/externalTransactions/{external_transaction}", "pattern": "^applications/[^/]+/externalTransactions/[^/]+$", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "name" ], "response": { "$ref": "ExternalTransaction" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets an existing external transaction." } } }, "generatedapks": { "methods": { "list": { "id": "androidpublisher.generatedapks.list", "path": "androidpublisher/v3/applications/{packageName}/generatedApks/{versionCode}", "flatPath": "androidpublisher/v3/applications/{packageName}/generatedApks/{versionCode}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "versionCode": { "description": "Version code of the app bundle.", "location": "path", "required": true, "type": "integer", "format": "int32" } }, "parameterOrder": [ "packageName", "versionCode" ], "response": { "$ref": "GeneratedApksListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Returns download metadata for all APKs that were generated from a given app bundle." }, "download": { "id": "androidpublisher.generatedapks.download", "path": "androidpublisher/v3/applications/{packageName}/generatedApks/{versionCode}/downloads/{downloadId}:download", "flatPath": "androidpublisher/v3/applications/{packageName}/generatedApks/{versionCode}/downloads/{downloadId}:download", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "versionCode": { "description": "Version code of the app bundle.", "location": "path", "required": true, "type": "integer", "format": "int32" }, "downloadId": { "description": "Download ID, which uniquely identifies the APK to download. Can be obtained from the response of `generatedapks.list` method.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "versionCode", "downloadId" ], "supportsMediaDownload": true, "useMediaDownloadService": true, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Downloads a single signed APK generated from an app bundle." } } }, "inappproducts": { "methods": { "get": { "id": "androidpublisher.inappproducts.get", "path": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "sku": { "description": "Unique identifier for the in-app product.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "sku" ], "response": { "$ref": "InAppProduct" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets an in-app product, which can be a managed product or a subscription. This method should no longer be used to retrieve subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." }, "batchGet": { "id": "androidpublisher.inappproducts.batchGet", "path": "androidpublisher/v3/applications/{packageName}/inappproducts:batchGet", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts:batchGet", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "sku": { "description": "Unique identifier for the in-app products.", "location": "query", "repeated": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "response": { "$ref": "InappproductsBatchGetResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Reads multiple in-app products, which can be managed products or subscriptions. This method should not be used to retrieve subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." }, "list": { "id": "androidpublisher.inappproducts.list", "path": "androidpublisher/v3/applications/{packageName}/inappproducts", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "token": { "description": "Pagination token. If empty, list starts at the first product.", "location": "query", "type": "string" }, "startIndex": { "description": "Deprecated and ignored. Set the `token` parameter to retrieve the next page.", "location": "query", "deprecated": true, "type": "integer", "format": "uint32" }, "maxResults": { "description": "Deprecated and ignored. The page size is determined by the server.", "location": "query", "deprecated": true, "type": "integer", "format": "uint32" } }, "parameterOrder": [ "packageName" ], "response": { "$ref": "InappproductsListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all in-app products - both managed products and subscriptions. If an app has a large number of in-app products, the response may be paginated. In this case the response field `tokenPagination.nextPageToken` will be set and the caller should provide its value as a `token` request parameter to retrieve the next page. This method should no longer be used to retrieve subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." }, "insert": { "id": "androidpublisher.inappproducts.insert", "path": "androidpublisher/v3/applications/{packageName}/inappproducts", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "autoConvertMissingPrices": { "description": "If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.", "location": "query", "type": "boolean" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "InAppProduct" }, "response": { "$ref": "InAppProduct" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates an in-app product (a managed product or a subscription). This method should no longer be used to create subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." }, "update": { "id": "androidpublisher.inappproducts.update", "path": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}", "httpMethod": "PUT", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "sku": { "description": "Unique identifier for the in-app product.", "location": "path", "required": true, "type": "string" }, "autoConvertMissingPrices": { "description": "If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.", "location": "query", "type": "boolean" }, "allowMissing": { "description": "If set to true, and the in-app product with the given package_name and sku doesn't exist, the in-app product will be created.", "location": "query", "type": "boolean" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "location": "query", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } }, "parameterOrder": [ "packageName", "sku" ], "request": { "$ref": "InAppProduct" }, "response": { "$ref": "InAppProduct" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates an in-app product (a managed product or a subscription). This method should no longer be used to update subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." }, "batchUpdate": { "id": "androidpublisher.inappproducts.batchUpdate", "path": "androidpublisher/v3/applications/{packageName}/inappproducts:batchUpdate", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts:batchUpdate", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "InappproductsBatchUpdateRequest" }, "response": { "$ref": "InappproductsBatchUpdateResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates or inserts one or more in-app products (managed products or subscriptions). Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput. This method should no longer be used to update subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." }, "patch": { "id": "androidpublisher.inappproducts.patch", "path": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}", "httpMethod": "PATCH", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "sku": { "description": "Unique identifier for the in-app product.", "location": "path", "required": true, "type": "string" }, "autoConvertMissingPrices": { "description": "If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.", "location": "query", "type": "boolean" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "location": "query", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } }, "parameterOrder": [ "packageName", "sku" ], "request": { "$ref": "InAppProduct" }, "response": { "$ref": "InAppProduct" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Patches an in-app product (a managed product or a subscription). This method should no longer be used to update subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." }, "delete": { "id": "androidpublisher.inappproducts.delete", "path": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts/{sku}", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "sku": { "description": "Unique identifier for the in-app product.", "location": "path", "required": true, "type": "string" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "location": "query", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } }, "parameterOrder": [ "packageName", "sku" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes an in-app product (a managed product or a subscription). This method should no longer be used to delete subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." }, "batchDelete": { "id": "androidpublisher.inappproducts.batchDelete", "path": "androidpublisher/v3/applications/{packageName}/inappproducts:batchDelete", "flatPath": "androidpublisher/v3/applications/{packageName}/inappproducts:batchDelete", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "InappproductsBatchDeleteRequest" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes in-app products (managed products or subscriptions). Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput. This method should not be used to delete subscriptions. See [this article](https://android-developers.googleblog.com/2023/06/changes-to-google-play-developer-api-june-2023.html) for more information." } } }, "internalappsharingartifacts": { "methods": { "uploadapk": { "id": "androidpublisher.internalappsharingartifacts.uploadapk", "path": "androidpublisher/v3/applications/internalappsharing/{packageName}/artifacts/apk", "flatPath": "androidpublisher/v3/applications/internalappsharing/{packageName}/artifacts/apk", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "supportsMediaUpload": true, "mediaUpload": { "accept": [ "application/octet-stream", "application/vnd.android.package-archive" ], "maxSize": "1073741824", "protocols": { "resumable": { "multipart": true, "path": "/resumable/upload/androidpublisher/v3/applications/internalappsharing/{packageName}/artifacts/apk" }, "simple": { "multipart": true, "path": "/upload/androidpublisher/v3/applications/internalappsharing/{packageName}/artifacts/apk" } } }, "response": { "$ref": "InternalAppSharingArtifact" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Uploads an APK to internal app sharing. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See [Timeouts and Errors](https://developers.google.com/api-client-library/java/google-api-java-client/errors) for an example in java." }, "uploadbundle": { "id": "androidpublisher.internalappsharingartifacts.uploadbundle", "path": "androidpublisher/v3/applications/internalappsharing/{packageName}/artifacts/bundle", "flatPath": "androidpublisher/v3/applications/internalappsharing/{packageName}/artifacts/bundle", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "supportsMediaUpload": true, "mediaUpload": { "accept": [ "application/octet-stream" ], "maxSize": "10737418240", "protocols": { "resumable": { "multipart": true, "path": "/resumable/upload/androidpublisher/v3/applications/internalappsharing/{packageName}/artifacts/bundle" }, "simple": { "multipart": true, "path": "/upload/androidpublisher/v3/applications/internalappsharing/{packageName}/artifacts/bundle" } } }, "response": { "$ref": "InternalAppSharingArtifact" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Uploads an app bundle to internal app sharing. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See [Timeouts and Errors](https://developers.google.com/api-client-library/java/google-api-java-client/errors) for an example in java." } } }, "orders": { "methods": { "refund": { "id": "androidpublisher.orders.refund", "path": "androidpublisher/v3/applications/{packageName}/orders/{orderId}:refund", "flatPath": "androidpublisher/v3/applications/{packageName}/orders/{orderId}:refund", "httpMethod": "POST", "parameters": { "packageName": { "description": "The package name of the application for which this subscription or in-app item was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "orderId": { "description": "The order ID provided to the user when the subscription or in-app order was purchased.", "location": "path", "required": true, "type": "string" }, "revoke": { "description": "Whether to revoke the purchased item. If set to true, access to the subscription or in-app item will be terminated immediately. If the item is a recurring subscription, all future payments will also be terminated. Consumed in-app items need to be handled by developer's app. (optional).", "location": "query", "type": "boolean" } }, "parameterOrder": [ "packageName", "orderId" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Refunds a user's subscription or in-app purchase order. Orders older than 3 years cannot be refunded." } } }, "applications": { "methods": { "dataSafety": { "id": "androidpublisher.applications.dataSafety", "path": "androidpublisher/v3/applications/{packageName}/dataSafety", "flatPath": "androidpublisher/v3/applications/{packageName}/dataSafety", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. Package name of the app.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "SafetyLabelsUpdateRequest" }, "response": { "$ref": "SafetyLabelsUpdateResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Writes the Safety Labels declaration of an app." } }, "resources": { "deviceTierConfigs": { "methods": { "create": { "id": "androidpublisher.applications.deviceTierConfigs.create", "path": "androidpublisher/v3/applications/{packageName}/deviceTierConfigs", "flatPath": "androidpublisher/v3/applications/{packageName}/deviceTierConfigs", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "allowUnknownDevices": { "description": "Whether the service should accept device IDs that are unknown to Play's device catalog.", "location": "query", "type": "boolean" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "DeviceTierConfig" }, "response": { "$ref": "DeviceTierConfig" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates a new device tier config for an app." }, "get": { "id": "androidpublisher.applications.deviceTierConfigs.get", "path": "androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}", "flatPath": "androidpublisher/v3/applications/{packageName}/deviceTierConfigs/{deviceTierConfigId}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "deviceTierConfigId": { "description": "Required. Id of an existing device tier config.", "location": "path", "required": true, "type": "string", "format": "int64" } }, "parameterOrder": [ "packageName", "deviceTierConfigId" ], "response": { "$ref": "DeviceTierConfig" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Returns a particular device tier config." }, "list": { "id": "androidpublisher.applications.deviceTierConfigs.list", "path": "androidpublisher/v3/applications/{packageName}/deviceTierConfigs", "flatPath": "androidpublisher/v3/applications/{packageName}/deviceTierConfigs", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "pageSize": { "description": "The maximum number of device tier configs to return. The service may return fewer than this value. If unspecified, at most 10 device tier configs will be returned. The maximum value for this field is 100; values above 100 will be coerced to 100. Device tier configs will be ordered by descending creation time.", "location": "query", "type": "integer", "format": "int32" }, "pageToken": { "description": "A page token, received from a previous `ListDeviceTierConfigs` call. Provide this to retrieve the subsequent page.", "location": "query", "type": "string" } }, "parameterOrder": [ "packageName" ], "response": { "$ref": "ListDeviceTierConfigsResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Returns created device tier configs, ordered by descending creation time." } } } } }, "monetization": { "methods": { "convertRegionPrices": { "id": "androidpublisher.monetization.convertRegionPrices", "path": "androidpublisher/v3/applications/{packageName}/pricing:convertRegionPrices", "flatPath": "androidpublisher/v3/applications/{packageName}/pricing:convertRegionPrices", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The app package name.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "ConvertRegionPricesRequest" }, "response": { "$ref": "ConvertRegionPricesResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Calculates the region prices, using today's exchange rate and country-specific pricing patterns, based on the price in the request for a set of regions." } }, "resources": { "subscriptions": { "methods": { "get": { "id": "androidpublisher.monetization.subscriptions.get", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the subscription to get.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The unique product ID of the subscription to get.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId" ], "response": { "$ref": "Subscription" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Reads a single subscription." }, "batchGet": { "id": "androidpublisher.monetization.subscriptions.batchGet", "path": "androidpublisher/v3/applications/{packageName}/subscriptions:batchGet", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions:batchGet", "httpMethod": "GET", "parameters": { "packageName": { "description": "Required. The parent app (package name) for which the subscriptions should be retrieved. Must be equal to the package_name field on all the requests.", "location": "path", "required": true, "type": "string" }, "productIds": { "description": "Required. A list of up to 100 subscription product IDs to retrieve. All the IDs must be different.", "location": "query", "repeated": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "response": { "$ref": "BatchGetSubscriptionsResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Reads one or more subscriptions." }, "list": { "id": "androidpublisher.monetization.subscriptions.list", "path": "androidpublisher/v3/applications/{packageName}/subscriptions", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions", "httpMethod": "GET", "parameters": { "packageName": { "description": "Required. The parent app (package name) for which the subscriptions should be read.", "location": "path", "required": true, "type": "string" }, "pageSize": { "description": "The maximum number of subscriptions to return. The service may return fewer than this value. If unspecified, at most 50 subscriptions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.", "location": "query", "type": "integer", "format": "int32" }, "pageToken": { "description": "A page token, received from a previous `ListSubscriptions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSubscriptions` must match the call that provided the page token.", "location": "query", "type": "string" }, "showArchived": { "description": "Deprecated: subscription archiving is not supported.", "location": "query", "deprecated": true, "type": "boolean" } }, "parameterOrder": [ "packageName" ], "response": { "$ref": "ListSubscriptionsResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all subscriptions under a given app." }, "create": { "id": "androidpublisher.monetization.subscriptions.create", "path": "androidpublisher/v3/applications/{packageName}/subscriptions", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) for which the subscription should be created. Must be equal to the package_name field on the Subscription resource.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The ID to use for the subscription. For the requirements on this format, see the documentation of the product_id field on the Subscription resource.", "location": "query", "type": "string" }, "regionsVersion.version": { "description": "Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in [this article](https://support.google.com/googleplay/android-developer/answer/10532353). Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region's version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022/02.", "location": "query", "type": "string" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "Subscription" }, "response": { "$ref": "Subscription" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates a new subscription. Newly added base plans will remain in draft state until activated." }, "patch": { "id": "androidpublisher.monetization.subscriptions.patch", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}", "httpMethod": "PATCH", "parameters": { "packageName": { "description": "Immutable. Package name of the parent app.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Immutable. Unique product ID of the product. Unique within the parent app. Product IDs must be composed of lower-case letters (a-z), numbers (0-9), underscores (_) and dots (.). It must start with a lower-case letter or number, and be between 1 and 40 (inclusive) characters in length.", "location": "path", "required": true, "type": "string" }, "updateMask": { "description": "Required. The list of fields to be updated.", "location": "query", "type": "string", "format": "google-fieldmask" }, "regionsVersion.version": { "description": "Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in [this article](https://support.google.com/googleplay/android-developer/answer/10532353). Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region's version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022/02.", "location": "query", "type": "string" }, "allowMissing": { "description": "Optional. If set to true, and the subscription with the given package_name and product_id doesn't exist, the subscription will be created. If a new subscription is created, update_mask is ignored.", "location": "query", "type": "boolean" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "location": "query", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } }, "parameterOrder": [ "packageName", "productId" ], "request": { "$ref": "Subscription" }, "response": { "$ref": "Subscription" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates an existing subscription." }, "batchUpdate": { "id": "androidpublisher.monetization.subscriptions.batchUpdate", "path": "androidpublisher/v3/applications/{packageName}/subscriptions:batchUpdate", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions:batchUpdate", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) for which the subscriptions should be updated. Must be equal to the package_name field on all the Subscription resources.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName" ], "request": { "$ref": "BatchUpdateSubscriptionsRequest" }, "response": { "$ref": "BatchUpdateSubscriptionsResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates a batch of subscriptions. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput." }, "delete": { "id": "androidpublisher.monetization.subscriptions.delete", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the app of the subscription to delete.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The unique product ID of the subscription to delete.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes a subscription. A subscription can only be deleted if it has never had a base plan published." }, "archive": { "id": "androidpublisher.monetization.subscriptions.archive", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}:archive", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}:archive", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the app of the subscription to delete.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The unique product ID of the subscription to delete.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId" ], "request": { "$ref": "ArchiveSubscriptionRequest" }, "response": { "$ref": "Subscription" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "deprecated": true, "description": "Deprecated: subscription archiving is not supported." } }, "resources": { "basePlans": { "methods": { "delete": { "id": "androidpublisher.monetization.subscriptions.basePlans.delete", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the base plan to delete.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the base plan to delete.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The unique offer ID of the base plan to delete.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes a base plan. Can only be done for draft base plans. This action is irreversible." }, "activate": { "id": "androidpublisher.monetization.subscriptions.basePlans.activate", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}:activate", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}:activate", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the base plan to activate.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the base plan to activate.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The unique base plan ID of the base plan to activate.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "request": { "$ref": "ActivateBasePlanRequest" }, "response": { "$ref": "Subscription" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Activates a base plan. Once activated, base plans will be available to new subscribers." }, "deactivate": { "id": "androidpublisher.monetization.subscriptions.basePlans.deactivate", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}:deactivate", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}:deactivate", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the base plan to deactivate.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the base plan to deactivate.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The unique base plan ID of the base plan to deactivate.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "request": { "$ref": "DeactivateBasePlanRequest" }, "response": { "$ref": "Subscription" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deactivates a base plan. Once deactivated, the base plan will become unavailable to new subscribers, but existing subscribers will maintain their subscription" }, "batchUpdateStates": { "id": "androidpublisher.monetization.subscriptions.basePlans.batchUpdateStates", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans:batchUpdateStates", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans:batchUpdateStates", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the updated base plans.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The product ID of the parent subscription, if all updated base plans belong to the same subscription. If this batch update spans multiple subscriptions, set this field to \"-\". Must be set.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId" ], "request": { "$ref": "BatchUpdateBasePlanStatesRequest" }, "response": { "$ref": "BatchUpdateBasePlanStatesResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Activates or deactivates base plans across one or multiple subscriptions. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput." }, "migratePrices": { "id": "androidpublisher.monetization.subscriptions.basePlans.migratePrices", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}:migratePrices", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}:migratePrices", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. Package name of the parent app. Must be equal to the package_name field on the Subscription resource.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The ID of the subscription to update. Must be equal to the product_id field on the Subscription resource.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The unique base plan ID of the base plan to update prices on.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "request": { "$ref": "MigrateBasePlanPricesRequest" }, "response": { "$ref": "MigrateBasePlanPricesResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Migrates subscribers who are receiving an historical subscription price to the currently-offered price for the specified region. Requests will cause price change notifications to be sent to users who are currently receiving an historical price older than the supplied timestamp. Subscribers who do not agree to the new price will have their subscription ended at the next renewal." }, "batchMigratePrices": { "id": "androidpublisher.monetization.subscriptions.basePlans.batchMigratePrices", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans:batchMigratePrices", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans:batchMigratePrices", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) for which the subscriptions should be created or updated. Must be equal to the package_name field on all the Subscription resources.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this batch update spans multiple subscriptions, set this field to \"-\". Must be set.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId" ], "request": { "$ref": "BatchMigrateBasePlanPricesRequest" }, "response": { "$ref": "BatchMigrateBasePlanPricesResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Batch variant of the MigrateBasePlanPrices endpoint. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput." } }, "resources": { "offers": { "methods": { "get": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.get", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the offer to get.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the offer to get.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) of the offer to get.", "location": "path", "required": true, "type": "string" }, "offerId": { "description": "Required. The unique offer ID of the offer to get.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId", "offerId" ], "response": { "$ref": "SubscriptionOffer" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Reads a single offer" }, "batchGet": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.batchGet", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers:batchGet", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers:batchGet", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) for which the subscriptions should be created or updated. Must be equal to the package_name field on all the requests.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) for which the offers should be read. May be specified as '-' to read offers from multiple base plans.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "request": { "$ref": "BatchGetSubscriptionOffersRequest" }, "response": { "$ref": "BatchGetSubscriptionOffersResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Reads one or more subscription offers." }, "list": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.list", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers", "httpMethod": "GET", "parameters": { "packageName": { "description": "Required. The parent app (package name) for which the subscriptions should be read.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) for which the offers should be read. May be specified as '-' to read all offers under an app.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) for which the offers should be read. May be specified as '-' to read all offers under a subscription or an app. Must be specified as '-' if product_id is specified as '-'.", "location": "path", "required": true, "type": "string" }, "pageSize": { "description": "The maximum number of subscriptions to return. The service may return fewer than this value. If unspecified, at most 50 subscriptions will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.", "location": "query", "type": "integer", "format": "int32" }, "pageToken": { "description": "A page token, received from a previous `ListSubscriptionsOffers` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSubscriptionOffers` must match the call that provided the page token.", "location": "query", "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "response": { "$ref": "ListSubscriptionOffersResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all offers under a given subscription." }, "create": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.create", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) for which the offer should be created. Must be equal to the package_name field on the Subscription resource.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) for which the offer should be created. Must be equal to the product_id field on the SubscriptionOffer resource.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) for which the offer should be created. Must be equal to the base_plan_id field on the SubscriptionOffer resource.", "location": "path", "required": true, "type": "string" }, "offerId": { "description": "Required. The ID to use for the offer. For the requirements on this format, see the documentation of the offer_id field on the SubscriptionOffer resource.", "location": "query", "type": "string" }, "regionsVersion.version": { "description": "Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in [this article](https://support.google.com/googleplay/android-developer/answer/10532353). Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region's version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022/02.", "location": "query", "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "request": { "$ref": "SubscriptionOffer" }, "response": { "$ref": "SubscriptionOffer" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates a new subscription offer. Only auto-renewing base plans can have subscription offers. The offer state will be DRAFT until it is activated." }, "patch": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.patch", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}", "httpMethod": "PATCH", "parameters": { "packageName": { "description": "Required. Immutable. The package name of the app the parent subscription belongs to.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. Immutable. The ID of the parent subscription this offer belongs to.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. Immutable. The ID of the base plan to which this offer is an extension.", "location": "path", "required": true, "type": "string" }, "offerId": { "description": "Required. Immutable. Unique ID of this subscription offer. Must be unique within the base plan.", "location": "path", "required": true, "type": "string" }, "updateMask": { "description": "Required. The list of fields to be updated.", "location": "query", "type": "string", "format": "google-fieldmask" }, "regionsVersion.version": { "description": "Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in [this article](https://support.google.com/googleplay/android-developer/answer/10532353). Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region's version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022/02.", "location": "query", "type": "string" }, "allowMissing": { "description": "Optional. If set to true, and the subscription offer with the given package_name, product_id, base_plan_id and offer_id doesn't exist, an offer will be created. If a new offer is created, update_mask is ignored.", "location": "query", "type": "boolean" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "location": "query", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } }, "parameterOrder": [ "packageName", "productId", "basePlanId", "offerId" ], "request": { "$ref": "SubscriptionOffer" }, "response": { "$ref": "SubscriptionOffer" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates an existing subscription offer." }, "batchUpdate": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdate", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers:batchUpdate", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers:batchUpdate", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the updated subscription offers. Must be equal to the package_name field on all the updated SubscriptionOffer resources.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) for which the offers should be updated. May be specified as '-' to update offers from multiple base plans.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "request": { "$ref": "BatchUpdateSubscriptionOffersRequest" }, "response": { "$ref": "BatchUpdateSubscriptionOffersResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates a batch of subscription offers. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput." }, "activate": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.activate", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}:activate", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}:activate", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the offer to activate.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the offer to activate.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) of the offer to activate.", "location": "path", "required": true, "type": "string" }, "offerId": { "description": "Required. The unique offer ID of the offer to activate.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId", "offerId" ], "request": { "$ref": "ActivateSubscriptionOfferRequest" }, "response": { "$ref": "SubscriptionOffer" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Activates a subscription offer. Once activated, subscription offers will be available to new subscribers." }, "deactivate": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.deactivate", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}:deactivate", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}:deactivate", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the offer to deactivate.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the offer to deactivate.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) of the offer to deactivate.", "location": "path", "required": true, "type": "string" }, "offerId": { "description": "Required. The unique offer ID of the offer to deactivate.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId", "offerId" ], "request": { "$ref": "DeactivateSubscriptionOfferRequest" }, "response": { "$ref": "SubscriptionOffer" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deactivates a subscription offer. Once deactivated, existing subscribers will maintain their subscription, but the offer will become unavailable to new subscribers." }, "batchUpdateStates": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdateStates", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers:batchUpdateStates", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers:batchUpdateStates", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the updated subscription offers. Must be equal to the package_name field on all the updated SubscriptionOffer resources.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The product ID of the parent subscription, if all updated offers belong to the same subscription. If this request spans multiple subscriptions, set this field to \"-\". Must be set.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) for which the offers should be updated. May be specified as '-' to update offers from multiple base plans.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId" ], "request": { "$ref": "BatchUpdateSubscriptionOfferStatesRequest" }, "response": { "$ref": "BatchUpdateSubscriptionOfferStatesResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Updates a batch of subscription offer states. Set the latencyTolerance field on nested requests to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT to achieve maximum update throughput." }, "delete": { "id": "androidpublisher.monetization.subscriptions.basePlans.offers.delete", "path": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}", "flatPath": "androidpublisher/v3/applications/{packageName}/subscriptions/{productId}/basePlans/{basePlanId}/offers/{offerId}", "httpMethod": "DELETE", "parameters": { "packageName": { "description": "Required. The parent app (package name) of the offer to delete.", "location": "path", "required": true, "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the offer to delete.", "location": "path", "required": true, "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) of the offer to delete.", "location": "path", "required": true, "type": "string" }, "offerId": { "description": "Required. The unique offer ID of the offer to delete.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "basePlanId", "offerId" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Deletes a subscription offer. Can only be done for draft offers. This action is irreversible." } } } } } } } } }, "purchases": { "resources": { "products": { "methods": { "get": { "id": "androidpublisher.purchases.products.get", "path": "androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}", "httpMethod": "GET", "parameters": { "packageName": { "description": "The package name of the application the inapp product was sold in (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "productId": { "description": "The inapp product SKU (for example, 'com.some.thing.inapp1').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the inapp product was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "token" ], "response": { "$ref": "ProductPurchase" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Checks the purchase and consumption status of an inapp item." }, "acknowledge": { "id": "androidpublisher.purchases.products.acknowledge", "path": "androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}:acknowledge", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}:acknowledge", "httpMethod": "POST", "parameters": { "packageName": { "description": "The package name of the application the inapp product was sold in (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "productId": { "description": "The inapp product SKU (for example, 'com.some.thing.inapp1').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the inapp product was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "token" ], "request": { "$ref": "ProductPurchasesAcknowledgeRequest" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Acknowledges a purchase of an inapp item." }, "consume": { "id": "androidpublisher.purchases.products.consume", "path": "androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}:consume", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}:consume", "httpMethod": "POST", "parameters": { "packageName": { "description": "The package name of the application the inapp product was sold in (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "productId": { "description": "The inapp product SKU (for example, 'com.some.thing.inapp1').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the inapp product was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "productId", "token" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Consumes a purchase for an inapp item." } } }, "subscriptions": { "methods": { "get": { "id": "androidpublisher.purchases.subscriptions.get", "path": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}", "httpMethod": "GET", "parameters": { "packageName": { "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "subscriptionId": { "description": "The purchased subscription ID (for example, 'monthly001').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the subscription was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "subscriptionId", "token" ], "response": { "$ref": "SubscriptionPurchase" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Checks whether a user's subscription purchase is valid and returns its expiry time." }, "cancel": { "id": "androidpublisher.purchases.subscriptions.cancel", "path": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel", "httpMethod": "POST", "parameters": { "packageName": { "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "subscriptionId": { "description": "The purchased subscription ID (for example, 'monthly001').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the subscription was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "subscriptionId", "token" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Cancels a user's subscription purchase. The subscription remains valid until its expiration time." }, "defer": { "id": "androidpublisher.purchases.subscriptions.defer", "path": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:defer", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:defer", "httpMethod": "POST", "parameters": { "packageName": { "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "subscriptionId": { "description": "The purchased subscription ID (for example, 'monthly001').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the subscription was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "subscriptionId", "token" ], "request": { "$ref": "SubscriptionPurchasesDeferRequest" }, "response": { "$ref": "SubscriptionPurchasesDeferResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Defers a user's subscription purchase until a specified future expiration time." }, "refund": { "id": "androidpublisher.purchases.subscriptions.refund", "path": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:refund", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:refund", "httpMethod": "POST", "parameters": { "packageName": { "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "subscriptionId": { "description": "\"The purchased subscription ID (for example, 'monthly001').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the subscription was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "subscriptionId", "token" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur." }, "revoke": { "id": "androidpublisher.purchases.subscriptions.revoke", "path": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:revoke", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:revoke", "httpMethod": "POST", "parameters": { "packageName": { "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "subscriptionId": { "description": "The purchased subscription ID (for example, 'monthly001').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the subscription was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "subscriptionId", "token" ], "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring." }, "acknowledge": { "id": "androidpublisher.purchases.subscriptions.acknowledge", "path": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:acknowledge", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:acknowledge", "httpMethod": "POST", "parameters": { "packageName": { "description": "The package name of the application for which this subscription was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "subscriptionId": { "description": "The purchased subscription ID (for example, 'monthly001').", "location": "path", "required": true, "type": "string" }, "token": { "description": "The token provided to the user's device when the subscription was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "subscriptionId", "token" ], "request": { "$ref": "SubscriptionPurchasesAcknowledgeRequest" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Acknowledges a subscription purchase." } } }, "subscriptionsv2": { "methods": { "get": { "id": "androidpublisher.purchases.subscriptionsv2.get", "path": "androidpublisher/v3/applications/{packageName}/purchases/subscriptionsv2/tokens/{token}", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/subscriptionsv2/tokens/{token}", "httpMethod": "GET", "parameters": { "packageName": { "description": "The package of the application for which this subscription was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "token": { "description": "Required. The token provided to the user's device when the subscription was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "token" ], "response": { "$ref": "SubscriptionPurchaseV2" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Get metadata about a subscription" }, "revoke": { "id": "androidpublisher.purchases.subscriptionsv2.revoke", "path": "androidpublisher/v3/applications/{packageName}/purchases/subscriptionsv2/tokens/{token}:revoke", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/subscriptionsv2/tokens/{token}:revoke", "httpMethod": "POST", "parameters": { "packageName": { "description": "Required. The package of the application for which this subscription was purchased (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "token": { "description": "Required. The token provided to the user's device when the subscription was purchased.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "token" ], "request": { "$ref": "RevokeSubscriptionPurchaseRequest" }, "response": { "$ref": "RevokeSubscriptionPurchaseResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Revoke a subscription purchase for the user." } } }, "voidedpurchases": { "methods": { "list": { "id": "androidpublisher.purchases.voidedpurchases.list", "path": "androidpublisher/v3/applications/{packageName}/purchases/voidedpurchases", "flatPath": "androidpublisher/v3/applications/{packageName}/purchases/voidedpurchases", "httpMethod": "GET", "parameters": { "packageName": { "description": "The package name of the application for which voided purchases need to be returned (for example, 'com.some.thing').", "location": "path", "required": true, "type": "string" }, "maxResults": { "description": "Defines how many results the list operation should return. The default number depends on the resource collection.", "location": "query", "type": "integer", "format": "uint32" }, "startIndex": { "description": "Defines the index of the first element to return. This can only be used if indexed paging is enabled.", "location": "query", "type": "integer", "format": "uint32" }, "token": { "description": "Defines the token of the page to return, usually taken from TokenPagination. This can only be used if token paging is enabled.", "location": "query", "type": "string" }, "startTime": { "description": "The time, in milliseconds since the Epoch, of the oldest voided purchase that you want to see in the response. The value of this parameter cannot be older than 30 days and is ignored if a pagination token is set. Default value is current time minus 30 days. Note: This filter is applied on the time at which the record is seen as voided by our systems and not the actual voided time returned in the response.", "location": "query", "type": "string", "format": "int64" }, "endTime": { "description": "The time, in milliseconds since the Epoch, of the newest voided purchase that you want to see in the response. The value of this parameter cannot be greater than the current time and is ignored if a pagination token is set. Default value is current time. Note: This filter is applied on the time at which the record is seen as voided by our systems and not the actual voided time returned in the response.", "location": "query", "type": "string", "format": "int64" }, "type": { "description": "The type of voided purchases that you want to see in the response. Possible values are: 0. Only voided in-app product purchases will be returned in the response. This is the default value. 1. Both voided in-app purchases and voided subscription purchases will be returned in the response. Note: Before requesting to receive voided subscription purchases, you must switch to use orderId in the response which uniquely identifies one-time purchases and subscriptions. Otherwise, you will receive multiple subscription orders with the same PurchaseToken, because subscription renewal orders share the same PurchaseToken.", "location": "query", "type": "integer", "format": "int32" }, "includeQuantityBasedPartialRefund": { "description": "Optional. Whether to include voided purchases of quantity-based partial refunds, which are applicable only to multi-quantity purchases. If true, additional voided purchases may be returned with voidedQuantity that indicates the refund quantity of a quantity-based partial refund. The default value is false.", "location": "query", "type": "boolean" } }, "parameterOrder": [ "packageName" ], "response": { "$ref": "VoidedPurchasesListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists the purchases that were canceled, refunded or charged-back." } } } } }, "reviews": { "methods": { "get": { "id": "androidpublisher.reviews.get", "path": "androidpublisher/v3/applications/{packageName}/reviews/{reviewId}", "flatPath": "androidpublisher/v3/applications/{packageName}/reviews/{reviewId}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "reviewId": { "description": "Unique identifier for a review.", "location": "path", "required": true, "type": "string" }, "translationLanguage": { "description": "Language localization code.", "location": "query", "type": "string" } }, "parameterOrder": [ "packageName", "reviewId" ], "response": { "$ref": "Review" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Gets a single review." }, "list": { "id": "androidpublisher.reviews.list", "path": "androidpublisher/v3/applications/{packageName}/reviews", "flatPath": "androidpublisher/v3/applications/{packageName}/reviews", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "token": { "description": "Pagination token. If empty, list starts at the first review.", "location": "query", "type": "string" }, "startIndex": { "description": "The index of the first element to return.", "location": "query", "type": "integer", "format": "uint32" }, "maxResults": { "description": "How many results the list operation should return.", "location": "query", "type": "integer", "format": "uint32" }, "translationLanguage": { "description": "Language localization code.", "location": "query", "type": "string" } }, "parameterOrder": [ "packageName" ], "response": { "$ref": "ReviewsListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Lists all reviews." }, "reply": { "id": "androidpublisher.reviews.reply", "path": "androidpublisher/v3/applications/{packageName}/reviews/{reviewId}:reply", "flatPath": "androidpublisher/v3/applications/{packageName}/reviews/{reviewId}:reply", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "reviewId": { "description": "Unique identifier for a review.", "location": "path", "required": true, "type": "string" } }, "parameterOrder": [ "packageName", "reviewId" ], "request": { "$ref": "ReviewsReplyRequest" }, "response": { "$ref": "ReviewsReplyResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Replies to a single review, or updates an existing reply." } } }, "systemapks": { "resources": { "variants": { "methods": { "create": { "id": "androidpublisher.systemapks.variants.create", "path": "androidpublisher/v3/applications/{packageName}/systemApks/{versionCode}/variants", "flatPath": "androidpublisher/v3/applications/{packageName}/systemApks/{versionCode}/variants", "httpMethod": "POST", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "versionCode": { "description": "The version code of the App Bundle.", "location": "path", "required": true, "type": "string", "format": "int64" } }, "parameterOrder": [ "packageName", "versionCode" ], "request": { "$ref": "Variant" }, "response": { "$ref": "Variant" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Creates an APK which is suitable for inclusion in a system image from an already uploaded Android App Bundle." }, "list": { "id": "androidpublisher.systemapks.variants.list", "path": "androidpublisher/v3/applications/{packageName}/systemApks/{versionCode}/variants", "flatPath": "androidpublisher/v3/applications/{packageName}/systemApks/{versionCode}/variants", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "versionCode": { "description": "The version code of the App Bundle.", "location": "path", "required": true, "type": "string", "format": "int64" } }, "parameterOrder": [ "packageName", "versionCode" ], "response": { "$ref": "SystemApksListResponse" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Returns the list of previously created system APK variants." }, "get": { "id": "androidpublisher.systemapks.variants.get", "path": "androidpublisher/v3/applications/{packageName}/systemApks/{versionCode}/variants/{variantId}", "flatPath": "androidpublisher/v3/applications/{packageName}/systemApks/{versionCode}/variants/{variantId}", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "versionCode": { "description": "The version code of the App Bundle.", "location": "path", "required": true, "type": "string", "format": "int64" }, "variantId": { "description": "The ID of a previously created system APK variant.", "location": "path", "required": true, "type": "integer", "format": "uint32" } }, "parameterOrder": [ "packageName", "versionCode", "variantId" ], "response": { "$ref": "Variant" }, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Returns a previously created system APK variant." }, "download": { "id": "androidpublisher.systemapks.variants.download", "path": "androidpublisher/v3/applications/{packageName}/systemApks/{versionCode}/variants/{variantId}:download", "flatPath": "androidpublisher/v3/applications/{packageName}/systemApks/{versionCode}/variants/{variantId}:download", "httpMethod": "GET", "parameters": { "packageName": { "description": "Package name of the app.", "location": "path", "required": true, "type": "string" }, "versionCode": { "description": "The version code of the App Bundle.", "location": "path", "required": true, "type": "string", "format": "int64" }, "variantId": { "description": "The ID of a previously created system APK variant.", "location": "path", "required": true, "type": "integer", "format": "uint32" } }, "parameterOrder": [ "packageName", "versionCode", "variantId" ], "supportsMediaDownload": true, "useMediaDownloadService": true, "scopes": [ "https://www.googleapis.com/auth/androidpublisher" ], "description": "Downloads a previously created system APK which is suitable for inclusion in a system image." } } } } } }, "id": "androidpublisher:v3", "servicePath": "", "mtlsRootUrl": "https://androidpublisher.mtls.googleapis.com/", "icons": { "x16": "http://www.google.com/images/icons/product/search-16.gif", "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "rootUrl": "https://androidpublisher.googleapis.com/", "auth": { "oauth2": { "scopes": { "https://www.googleapis.com/auth/androidpublisher": { "description": "View and manage your Google Play Developer account" } } } }, "batchPath": "batch", "canonicalName": "Android Publisher", "revision": "20240418", "documentationLink": "https://developers.google.com/android-publisher", "protocol": "rest", "name": "androidpublisher", "baseUrl": "https://androidpublisher.googleapis.com/", "schemas": { "User": { "id": "User", "description": "A user resource.", "type": "object", "properties": { "name": { "description": "Required. Resource name for this user, following the pattern \"developers/{developer}/users/{email}\".", "type": "string" }, "email": { "description": "Immutable. The user's email address.", "type": "string" }, "accessState": { "description": "Output only. The state of the user's access to the Play Console.", "readOnly": true, "type": "string", "enumDescriptions": [ "Unknown or unspecified access state.", "User is invited but has not yet accepted the invitation.", "Invitation has expired.", "User has accepted an invitation and has access to the Play Console.", "Account access has expired." ], "enum": [ "ACCESS_STATE_UNSPECIFIED", "INVITED", "INVITATION_EXPIRED", "ACCESS_GRANTED", "ACCESS_EXPIRED" ] }, "expirationTime": { "description": "The time at which the user's access expires, if set. When setting this value, it must always be in the future.", "type": "string", "format": "google-datetime" }, "partial": { "description": "Output only. Whether there are more permissions for the user that are not represented here. This can happen if the caller does not have permission to manage all apps in the account. This is also `true` if this user is the account owner. If this field is `true`, it should be taken as a signal that this user cannot be fully managed via the API. That is, the API caller is not be able to manage all of the permissions this user holds, either because it doesn't know about them or because the user is the account owner.", "readOnly": true, "type": "boolean" }, "developerAccountPermissions": { "description": "Permissions for the user which apply across the developer account.", "type": "array", "items": { "type": "string", "enumDescriptions": [ "Unknown or unspecified permission.", "View app information and download bulk reports (read-only). Deprecated: Check CAN_VIEW_NON_FINANCIAL_DATA_GLOBAL.", "View financial data, orders, and cancellation survey responses.", "Admin (all permissions).", "Edit Play Games Services projects.", "Publish Play Games Services projects.", "Reply to reviews.", "Release to production, exclude devices, and use app signing by Google Play.", "Release to testing tracks.", "Manage testing tracks and edit tester lists.", "Manage store presence.", "Create, edit, and delete draft apps.", "Create and publish private apps to your organization.", "Choose whether apps are public, or only available to your organization.", "Manage orders and subscriptions.", "Manage policy related pages on all apps for the developer.", "View app information and download bulk reports (read-only).", "View app quality information for all apps for the developer.", "Manage the deep links setup for all apps for the developer." ], "enumDeprecated": [ false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false ], "enum": [ "DEVELOPER_LEVEL_PERMISSION_UNSPECIFIED", "CAN_SEE_ALL_APPS", "CAN_VIEW_FINANCIAL_DATA_GLOBAL", "CAN_MANAGE_PERMISSIONS_GLOBAL", "CAN_EDIT_GAMES_GLOBAL", "CAN_PUBLISH_GAMES_GLOBAL", "CAN_REPLY_TO_REVIEWS_GLOBAL", "CAN_MANAGE_PUBLIC_APKS_GLOBAL", "CAN_MANAGE_TRACK_APKS_GLOBAL", "CAN_MANAGE_TRACK_USERS_GLOBAL", "CAN_MANAGE_PUBLIC_LISTING_GLOBAL", "CAN_MANAGE_DRAFT_APPS_GLOBAL", "CAN_CREATE_MANAGED_PLAY_APPS_GLOBAL", "CAN_CHANGE_MANAGED_PLAY_SETTING_GLOBAL", "CAN_MANAGE_ORDERS_GLOBAL", "CAN_MANAGE_APP_CONTENT_GLOBAL", "CAN_VIEW_NON_FINANCIAL_DATA_GLOBAL", "CAN_VIEW_APP_QUALITY_GLOBAL", "CAN_MANAGE_DEEPLINKS_GLOBAL" ] } }, "grants": { "description": "Output only. Per-app permissions for the user.", "readOnly": true, "type": "array", "items": { "$ref": "Grant" } } } }, "Grant": { "id": "Grant", "description": "An access grant resource.", "type": "object", "properties": { "name": { "description": "Required. Resource name for this grant, following the pattern \"developers/{developer}/users/{email}/grants/{package_name}\". If this grant is for a draft app, the app ID will be used in this resource name instead of the package name.", "type": "string" }, "packageName": { "description": "Immutable. The package name of the app. This will be empty for draft apps.", "type": "string" }, "appLevelPermissions": { "description": "The permissions granted to the user for this app.", "type": "array", "items": { "type": "string", "enumDescriptions": [ "Unknown or unspecified permission.", "View app information (read-only). Deprecated: Try defining a more granular capability. Otherwise, check AppLevelPermission.CAN_VIEW_NON_FINANCIAL_DATA.", "View financial data.", "Admin (all permissions).", "Reply to reviews.", "Release to production, exclude devices, and use app signing by Google Play.", "Release to testing tracks.", "Manage testing tracks and edit tester lists.", "Manage store presence.", "Edit and delete draft apps.", "Manage orders and subscriptions.", "Manage policy related pages.", "View app information (read-only).", "View app quality data such as Vitals, Crashes etc.", "Manage the deep links setup of an app." ], "enumDeprecated": [ false, true, false, false, false, false, false, false, false, false, false, false, false, false, false ], "enum": [ "APP_LEVEL_PERMISSION_UNSPECIFIED", "CAN_ACCESS_APP", "CAN_VIEW_FINANCIAL_DATA", "CAN_MANAGE_PERMISSIONS", "CAN_REPLY_TO_REVIEWS", "CAN_MANAGE_PUBLIC_APKS", "CAN_MANAGE_TRACK_APKS", "CAN_MANAGE_TRACK_USERS", "CAN_MANAGE_PUBLIC_LISTING", "CAN_MANAGE_DRAFT_APPS", "CAN_MANAGE_ORDERS", "CAN_MANAGE_APP_CONTENT", "CAN_VIEW_NON_FINANCIAL_DATA", "CAN_VIEW_APP_QUALITY", "CAN_MANAGE_DEEPLINKS" ] } } } }, "ListUsersResponse": { "id": "ListUsersResponse", "description": "A response containing one or more users with access to an account.", "type": "object", "properties": { "users": { "description": "The resulting users.", "type": "array", "items": { "$ref": "User" } }, "nextPageToken": { "description": "A token to pass to subsequent calls in order to retrieve subsequent results. This will not be set if there are no more results to return.", "type": "string" } } }, "Apk": { "id": "Apk", "description": "Information about an APK. The resource for ApksService.", "type": "object", "properties": { "versionCode": { "description": "The version code of the APK, as specified in the manifest file.", "type": "integer", "format": "int32" }, "binary": { "description": "Information about the binary payload of this APK.", "$ref": "ApkBinary" } } }, "ApkBinary": { "id": "ApkBinary", "description": "Represents the binary payload of an APK.", "type": "object", "properties": { "sha1": { "description": "A sha1 hash of the APK payload, encoded as a hex string and matching the output of the sha1sum command.", "type": "string" }, "sha256": { "description": "A sha256 hash of the APK payload, encoded as a hex string and matching the output of the sha256sum command.", "type": "string" } } }, "ApksListResponse": { "id": "ApksListResponse", "description": "Response listing all APKs.", "type": "object", "properties": { "kind": { "description": "The kind of this response (\"androidpublisher#apksListResponse\").", "type": "string" }, "apks": { "description": "All APKs.", "type": "array", "items": { "$ref": "Apk" } } } }, "ApksAddExternallyHostedRequest": { "id": "ApksAddExternallyHostedRequest", "description": "Request to create a new externally hosted APK.", "type": "object", "properties": { "externallyHostedApk": { "description": "The definition of the externally-hosted APK and where it is located.", "$ref": "ExternallyHostedApk" } } }, "ExternallyHostedApk": { "id": "ExternallyHostedApk", "description": "Defines an APK available for this application that is hosted externally and not uploaded to Google Play. This function is only available to organizations using Managed Play whose application is configured to restrict distribution to the organizations.", "type": "object", "properties": { "packageName": { "description": "The package name.", "type": "string" }, "applicationLabel": { "description": "The application label.", "type": "string" }, "versionCode": { "description": "The version code of this APK.", "type": "integer", "format": "int32" }, "versionName": { "description": "The version name of this APK.", "type": "string" }, "fileSize": { "description": "The file size in bytes of this APK.", "type": "string", "format": "int64" }, "fileSha1Base64": { "description": "The sha1 checksum of this APK, represented as a base64 encoded byte array.", "type": "string" }, "fileSha256Base64": { "description": "The sha256 checksum of this APK, represented as a base64 encoded byte array.", "type": "string" }, "iconBase64": { "description": "The icon image from the APK, as a base64 encoded byte array.", "type": "string" }, "minimumSdk": { "description": "The minimum SDK targeted by this APK.", "type": "integer", "format": "int32" }, "certificateBase64s": { "description": "A certificate (or array of certificates if a certificate-chain is used) used to sign this APK, represented as a base64 encoded byte array.", "type": "array", "items": { "type": "string" } }, "externallyHostedUrl": { "description": "The URL at which the APK is hosted. This must be an https URL.", "type": "string" }, "maximumSdk": { "description": "The maximum SDK supported by this APK (optional).", "type": "integer", "format": "int32" }, "nativeCodes": { "description": "The native code environments supported by this APK (optional).", "type": "array", "items": { "type": "string" } }, "usesFeatures": { "description": "The features required by this APK (optional).", "type": "array", "items": { "type": "string" } }, "usesPermissions": { "description": "The permissions requested by this APK.", "type": "array", "items": { "$ref": "UsesPermission" } } } }, "UsesPermission": { "id": "UsesPermission", "description": "A permission used by this APK.", "type": "object", "properties": { "name": { "description": "The name of the permission requested.", "type": "string" }, "maxSdkVersion": { "description": "Optionally, the maximum SDK version for which the permission is required.", "type": "integer", "format": "int32" } } }, "ApksAddExternallyHostedResponse": { "id": "ApksAddExternallyHostedResponse", "description": "Response for creating a new externally hosted APK.", "type": "object", "properties": { "externallyHostedApk": { "description": "The definition of the externally-hosted APK and where it is located.", "$ref": "ExternallyHostedApk" } } }, "CreateDraftAppRecoveryRequest": { "id": "CreateDraftAppRecoveryRequest", "description": "Request message for CreateDraftAppRecovery.", "type": "object", "properties": { "targeting": { "description": "Specifies targeting criteria for the recovery action such as regions, android sdk versions, app versions etc.", "$ref": "Targeting" }, "remoteInAppUpdate": { "description": "Action type is remote in-app update. As a consequence of this action, a downloadable recovery module is also created for testing purposes.", "$ref": "RemoteInAppUpdate" } } }, "Targeting": { "id": "Targeting", "description": "Targeting details for a recovery action such as regions, android sdk levels, app versions etc.", "type": "object", "properties": { "regions": { "description": "Targeting is based on the user account region.", "$ref": "Regions" }, "androidSdks": { "description": "Targeting is based on android api levels of devices.", "$ref": "AndroidSdks" }, "allUsers": { "description": "All users are targeted.", "$ref": "AllUsers" }, "versionList": { "description": "Target version codes as a list.", "$ref": "AppVersionList" }, "versionRange": { "description": "Target version codes as a range.", "$ref": "AppVersionRange" } } }, "Regions": { "id": "Regions", "description": "Region targeting data for app recovery action targeting.", "type": "object", "properties": { "regionCode": { "description": "Regions targeted by the recovery action. Region codes are ISO 3166 Alpha-2 country codes. For example, US stands for United States of America. See https://www.iso.org/iso-3166-country-codes.html for the complete list of country codes.", "type": "array", "items": { "type": "string" } } } }, "AndroidSdks": { "id": "AndroidSdks", "description": "Android api level targeting data for app recovery action targeting.", "type": "object", "properties": { "sdkLevels": { "description": "Android api levels of devices targeted by recovery action. See https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels for different api levels in android.", "type": "array", "items": { "type": "string", "format": "int64" } } } }, "AllUsers": { "id": "AllUsers", "description": "Object representation to describe all set of users.", "type": "object", "properties": { "isAllUsersRequested": { "description": "Required. Set to true if all set of users are needed.", "type": "boolean" } } }, "AppVersionList": { "id": "AppVersionList", "description": "Data format for a list of app versions.", "type": "object", "properties": { "versionCodes": { "description": "List of app version codes.", "type": "array", "items": { "type": "string", "format": "int64" } } } }, "AppVersionRange": { "id": "AppVersionRange", "description": "Data format for a continuous range of app versions.", "type": "object", "properties": { "versionCodeStart": { "description": "Lowest app version in the range, inclusive.", "type": "string", "format": "int64" }, "versionCodeEnd": { "description": "Highest app version in the range, inclusive.", "type": "string", "format": "int64" } } }, "RemoteInAppUpdate": { "id": "RemoteInAppUpdate", "description": "Object representation for Remote in-app update action type.", "type": "object", "properties": { "isRemoteInAppUpdateRequested": { "description": "Required. Set to true if Remote In-App Update action type is needed.", "type": "boolean" } } }, "AppRecoveryAction": { "id": "AppRecoveryAction", "description": "Information about an app recovery action.", "type": "object", "properties": { "appRecoveryId": { "description": "ID corresponding to the app recovery action.", "type": "string", "format": "int64" }, "status": { "description": "The status of the recovery action.", "type": "string", "enumDescriptions": [ "RecoveryStatus is unspecified.", "The app recovery action has not been canceled since it has been created.", "The recovery action has been canceled. The action cannot be resumed.", "The recovery action is in the draft state and has not yet been deployed to users.", "The recovery action is generating recovery apks.", "The app recovery action generation has failed." ], "enum": [ "RECOVERY_STATUS_UNSPECIFIED", "RECOVERY_STATUS_ACTIVE", "RECOVERY_STATUS_CANCELED", "RECOVERY_STATUS_DRAFT", "RECOVERY_STATUS_GENERATION_IN_PROGRESS", "RECOVERY_STATUS_GENERATION_FAILED" ] }, "targeting": { "description": "Specifies targeting criteria for the recovery action such as regions, android sdk versions, app versions etc.", "$ref": "Targeting" }, "createTime": { "description": "Timestamp of when the app recovery action is created by the developer. It is always set after creation of the recovery action.", "type": "string", "format": "google-datetime" }, "deployTime": { "description": "Timestamp of when the app recovery action is deployed to the users. Only set if the recovery action has been deployed.", "type": "string", "format": "google-datetime" }, "cancelTime": { "description": "Timestamp of when the app recovery action is canceled by the developer. Only set if the recovery action has been canceled.", "type": "string", "format": "google-datetime" }, "lastUpdateTime": { "description": "Timestamp of when the developer last updated recovery action. In case the action is cancelled, it corresponds to cancellation time. It is always set after creation of the recovery action.", "type": "string", "format": "google-datetime" }, "remoteInAppUpdateData": { "description": "Data about the remote in-app update action such as such as recovered user base, recoverable user base etc. Set only if the recovery action type is Remote In-App Update.", "$ref": "RemoteInAppUpdateData" } } }, "RemoteInAppUpdateData": { "id": "RemoteInAppUpdateData", "description": "Data related to Remote In-App Update action such as recovered user count, affected user count etc.", "type": "object", "properties": { "remoteAppUpdateDataPerBundle": { "description": "Data related to the recovery action at bundle level.", "type": "array", "items": { "$ref": "RemoteInAppUpdateDataPerBundle" } } } }, "RemoteInAppUpdateDataPerBundle": { "id": "RemoteInAppUpdateDataPerBundle", "description": "Data related to the recovery action at bundle level.", "type": "object", "properties": { "versionCode": { "description": "Version Code corresponding to the target bundle.", "type": "string", "format": "int64" }, "recoveredDeviceCount": { "description": "Total number of devices which have been rescued.", "type": "string", "format": "int64" }, "totalDeviceCount": { "description": "Total number of devices affected by this recovery action associated with bundle of the app.", "type": "string", "format": "int64" } } }, "DeployAppRecoveryRequest": { "id": "DeployAppRecoveryRequest", "description": "Request message for DeployAppRecovery.", "type": "object", "properties": {} }, "DeployAppRecoveryResponse": { "id": "DeployAppRecoveryResponse", "description": "Response message for DeployAppRecovery.", "type": "object", "properties": {} }, "ListAppRecoveriesResponse": { "id": "ListAppRecoveriesResponse", "description": "Response message for ListAppRecoveries. -- api-linter: core::0158::response-next-page-token-field=disabled", "type": "object", "properties": { "recoveryActions": { "description": "List of recovery actions associated with the requested package name.", "type": "array", "items": { "$ref": "AppRecoveryAction" } } } }, "AddTargetingRequest": { "id": "AddTargetingRequest", "description": "Request message for AddTargeting.", "type": "object", "properties": { "targetingUpdate": { "description": "Specifies targeting updates such as regions, android sdk versions etc.", "$ref": "TargetingUpdate" } } }, "TargetingUpdate": { "id": "TargetingUpdate", "description": "Update type for targeting. Note it is always a subset Targeting.", "type": "object", "properties": { "regions": { "description": "Additional regions are targeted by the recovery action.", "$ref": "Regions" }, "androidSdks": { "description": "Additional android sdk levels are targeted by the recovery action.", "$ref": "AndroidSdks" }, "allUsers": { "description": "All users are targeted.", "$ref": "AllUsers" } } }, "AddTargetingResponse": { "id": "AddTargetingResponse", "description": "Response message for AddTargeting.", "type": "object", "properties": {} }, "CancelAppRecoveryRequest": { "id": "CancelAppRecoveryRequest", "description": "Request message for CancelAppRecovery.", "type": "object", "properties": {} }, "CancelAppRecoveryResponse": { "id": "CancelAppRecoveryResponse", "description": "Response message for CancelAppRecovery.", "type": "object", "properties": {} }, "BundlesListResponse": { "id": "BundlesListResponse", "description": "Response listing all app bundles.", "type": "object", "properties": { "kind": { "description": "The kind of this response (\"androidpublisher#bundlesListResponse\").", "type": "string" }, "bundles": { "description": "All app bundles.", "type": "array", "items": { "$ref": "Bundle" } } } }, "Bundle": { "id": "Bundle", "description": "Information about an app bundle. The resource for BundlesService.", "type": "object", "properties": { "versionCode": { "description": "The version code of the Android App Bundle, as specified in the Android App Bundle's base module APK manifest file.", "type": "integer", "format": "int32" }, "sha1": { "description": "A sha1 hash of the upload payload, encoded as a hex string and matching the output of the sha1sum command.", "type": "string" }, "sha256": { "description": "A sha256 hash of the upload payload, encoded as a hex string and matching the output of the sha256sum command.", "type": "string" } } }, "TrackCountryAvailability": { "id": "TrackCountryAvailability", "description": "Resource for per-track country availability information.", "type": "object", "properties": { "syncWithProduction": { "description": "Whether this track's availability is synced with the default production track. See https://support.google.com/googleplay/android-developer/answer/7550024 for more information on syncing country availability with production. Note that if this is true, the returned \"countries\" and \"rest_of_world\" fields will reflect the values for the default production track.", "type": "boolean" }, "countries": { "description": "A list of one or more countries where artifacts in this track are available. This list includes all countries that are targeted by the track, even if only specific carriers are targeted in that country.", "type": "array", "items": { "$ref": "TrackTargetedCountry" } }, "restOfWorld": { "description": "Whether artifacts in this track are available to \"rest of the world\" countries.", "type": "boolean" } } }, "TrackTargetedCountry": { "id": "TrackTargetedCountry", "description": "Representation of a single country where the contents of a track are available.", "type": "object", "properties": { "countryCode": { "description": "The country to target, as a two-letter CLDR code.", "type": "string" } } }, "DeobfuscationFilesUploadResponse": { "id": "DeobfuscationFilesUploadResponse", "description": "Responses for the upload.", "type": "object", "properties": { "deobfuscationFile": { "description": "The uploaded Deobfuscation File configuration.", "$ref": "DeobfuscationFile" } } }, "DeobfuscationFile": { "id": "DeobfuscationFile", "description": "Represents a deobfuscation file.", "type": "object", "properties": { "symbolType": { "description": "The type of the deobfuscation file.", "type": "string", "enumDescriptions": [ "Unspecified deobfuscation file type.", "Proguard deobfuscation file type.", "Native debugging symbols file type." ], "enum": [ "deobfuscationFileTypeUnspecified", "proguard", "nativeCode" ] } } }, "AppDetails": { "id": "AppDetails", "description": "The app details. The resource for DetailsService.", "type": "object", "properties": { "defaultLanguage": { "description": "Default language code, in BCP 47 format (eg \"en-US\").", "type": "string" }, "contactWebsite": { "description": "The user-visible website for this app.", "type": "string" }, "contactEmail": { "description": "The user-visible support email for this app.", "type": "string" }, "contactPhone": { "description": "The user-visible support telephone number for this app.", "type": "string" } } }, "DeviceTierConfig": { "id": "DeviceTierConfig", "description": "Configuration describing device targeting criteria for the content of an app.", "type": "object", "properties": { "deviceTierConfigId": { "description": "Output only. The device tier config ID.", "readOnly": true, "type": "string", "format": "int64" }, "deviceGroups": { "description": "Definition of device groups for the app.", "type": "array", "items": { "$ref": "DeviceGroup" } }, "deviceTierSet": { "description": "Definition of the set of device tiers for the app.", "$ref": "DeviceTierSet" }, "userCountrySets": { "description": "Definition of user country sets for the app.", "type": "array", "items": { "$ref": "UserCountrySet" } } } }, "DeviceGroup": { "id": "DeviceGroup", "description": "A group of devices. A group is defined by a set of device selectors. A device belongs to the group if it matches any selector (logical OR).", "type": "object", "properties": { "name": { "description": "The name of the group.", "type": "string" }, "deviceSelectors": { "description": "Device selectors for this group. A device matching any of the selectors is included in this group.", "type": "array", "items": { "$ref": "DeviceSelector" } } } }, "DeviceSelector": { "id": "DeviceSelector", "description": "Selector for a device group. A selector consists of a set of conditions on the device that should all match (logical AND) to determine a device group eligibility. For instance, if a selector specifies RAM conditions, device model inclusion and device model exclusion, a device is considered to match if: device matches RAM conditions AND device matches one of the included device models AND device doesn't match excluded device models", "type": "object", "properties": { "deviceRam": { "description": "Conditions on the device's RAM.", "$ref": "DeviceRam" }, "includedDeviceIds": { "description": "Device models included by this selector.", "type": "array", "items": { "$ref": "DeviceId" } }, "excludedDeviceIds": { "description": "Device models excluded by this selector, even if they match all other conditions.", "type": "array", "items": { "$ref": "DeviceId" } }, "requiredSystemFeatures": { "description": "A device needs to have all these system features to be included by the selector.", "type": "array", "items": { "$ref": "SystemFeature" } }, "forbiddenSystemFeatures": { "description": "A device that has any of these system features is excluded by this selector, even if it matches all other conditions.", "type": "array", "items": { "$ref": "SystemFeature" } } } }, "DeviceRam": { "id": "DeviceRam", "description": "Conditions about a device's RAM capabilities.", "type": "object", "properties": { "minBytes": { "description": "Minimum RAM in bytes (bound included).", "type": "string", "format": "int64" }, "maxBytes": { "description": "Maximum RAM in bytes (bound excluded).", "type": "string", "format": "int64" } } }, "DeviceId": { "id": "DeviceId", "description": "Identifier of a device.", "type": "object", "properties": { "buildBrand": { "description": "Value of Build.BRAND.", "type": "string" }, "buildDevice": { "description": "Value of Build.DEVICE.", "type": "string" } } }, "SystemFeature": { "id": "SystemFeature", "description": "Representation of a system feature.", "type": "object", "properties": { "name": { "description": "The name of the feature.", "type": "string" } } }, "DeviceTierSet": { "id": "DeviceTierSet", "description": "A set of device tiers. A tier set determines what variation of app content gets served to a specific device, for device-targeted content. You should assign a priority level to each tier, which determines the ordering by which they are evaluated by Play. See the documentation of DeviceTier.level for more details.", "type": "object", "properties": { "deviceTiers": { "description": "Device tiers belonging to the set.", "type": "array", "items": { "$ref": "DeviceTier" } } } }, "DeviceTier": { "id": "DeviceTier", "description": "A single device tier. Devices matching any of the device groups in device_group_names are considered to match the tier.", "type": "object", "properties": { "deviceGroupNames": { "description": "Groups of devices included in this tier. These groups must be defined explicitly under device_groups in this configuration.", "type": "array", "items": { "type": "string" } }, "level": { "description": "The priority level of the tier. Tiers are evaluated in descending order of level: the highest level tier has the highest priority. The highest tier matching a given device is selected for that device. You should use a contiguous range of levels for your tiers in a tier set; tier levels in a tier set must be unique. For instance, if your tier set has 4 tiers (including the global fallback), you should define tiers 1, 2 and 3 in this configuration. Note: tier 0 is implicitly defined as a global fallback and selected for devices that don't match any of the tiers explicitly defined here. You mustn't define level 0 explicitly in this configuration.", "type": "integer", "format": "int32" } } }, "UserCountrySet": { "id": "UserCountrySet", "description": "A set of user countries. A country set determines what variation of app content gets served to a specific location.", "type": "object", "properties": { "name": { "description": "Country set name.", "type": "string" }, "countryCodes": { "description": "List of country codes representing countries. A Country code is represented in ISO 3166 alpha-2 format. For Example:- \"IT\" for Italy, \"GE\" for Georgia.", "type": "array", "items": { "type": "string" } } } }, "ListDeviceTierConfigsResponse": { "id": "ListDeviceTierConfigsResponse", "description": "Response listing existing device tier configs.", "type": "object", "properties": { "deviceTierConfigs": { "description": "Device tier configs created by the developer.", "type": "array", "items": { "$ref": "DeviceTierConfig" } }, "nextPageToken": { "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", "type": "string" } } }, "AppEdit": { "id": "AppEdit", "description": "An app edit. The resource for EditsService.", "type": "object", "properties": { "id": { "description": "Output only. Identifier of the edit. Can be used in subsequent API calls.", "readOnly": true, "type": "string" }, "expiryTimeSeconds": { "description": "Output only. The time (as seconds since Epoch) at which the edit will expire and will be no longer valid for use.", "readOnly": true, "type": "string" } } }, "ExpansionFile": { "id": "ExpansionFile", "description": "An expansion file. The resource for ExpansionFilesService.", "type": "object", "properties": { "referencesVersion": { "description": "If set, this APK's expansion file references another APK's expansion file. The file_size field will not be set.", "type": "integer", "format": "int32" }, "fileSize": { "description": "If set, this field indicates that this APK has an expansion file uploaded to it: this APK does not reference another APK's expansion file. The field's value is the size of the uploaded expansion file in bytes.", "type": "string", "format": "int64" } } }, "ExpansionFilesUploadResponse": { "id": "ExpansionFilesUploadResponse", "description": "Response for uploading an expansion file.", "type": "object", "properties": { "expansionFile": { "description": "The uploaded expansion file configuration.", "$ref": "ExpansionFile" } } }, "ExternalTransaction": { "id": "ExternalTransaction", "description": "The details of an external transaction.", "type": "object", "properties": { "packageName": { "description": "Output only. The resource name of the external transaction. The package name of the application the inapp products were sold (for example, 'com.some.app').", "readOnly": true, "type": "string" }, "externalTransactionId": { "description": "Output only. The id of this transaction. All transaction ids under the same package name must be unique. Set when creating the external transaction.", "readOnly": true, "type": "string" }, "originalPreTaxAmount": { "description": "Required. The original transaction amount before taxes. This represents the pre-tax amount originally notified to Google before any refunds were applied.", "$ref": "Price" }, "originalTaxAmount": { "description": "Required. The original tax amount. This represents the tax amount originally notified to Google before any refunds were applied.", "$ref": "Price" }, "currentPreTaxAmount": { "description": "Output only. The current transaction amount before tax. This represents the current pre-tax amount including any refunds that may have been applied to this transaction.", "readOnly": true, "$ref": "Price" }, "currentTaxAmount": { "description": "Output only. The current tax amount. This represents the current tax amount including any refunds that may have been applied to this transaction.", "readOnly": true, "$ref": "Price" }, "testPurchase": { "description": "Output only. If set, this transaction was a test purchase. Google will not charge for a test transaction.", "readOnly": true, "$ref": "ExternalTransactionTestPurchase" }, "oneTimeTransaction": { "description": "This is a one-time transaction and not part of a subscription.", "$ref": "OneTimeExternalTransaction" }, "recurringTransaction": { "description": "This transaction is part of a recurring series of transactions.", "$ref": "RecurringExternalTransaction" }, "transactionTime": { "description": "Required. The time when the transaction was completed.", "type": "string", "format": "google-datetime" }, "createTime": { "description": "Output only. The time when this transaction was created. This is the time when Google was notified of the transaction.", "readOnly": true, "type": "string", "format": "google-datetime" }, "transactionState": { "description": "Output only. The current state of the transaction.", "readOnly": true, "type": "string", "enumDescriptions": [ "Unspecified transaction state. Not used.", "The transaction has been successfully reported to Google.", "The transaction has been fully refunded." ], "enum": [ "TRANSACTION_STATE_UNSPECIFIED", "TRANSACTION_REPORTED", "TRANSACTION_CANCELED" ] }, "userTaxAddress": { "description": "Required. User address for tax computation.", "$ref": "ExternalTransactionAddress" } } }, "Price": { "id": "Price", "description": "Definition of a price, i.e. currency and units.", "type": "object", "properties": { "priceMicros": { "description": "Price in 1/million of the currency base unit, represented as a string.", "type": "string" }, "currency": { "description": "3 letter Currency code, as defined by ISO 4217. See java/com/google/common/money/CurrencyCode.java", "type": "string" } } }, "ExternalTransactionTestPurchase": { "id": "ExternalTransactionTestPurchase", "description": "Represents a transaction performed using a test account. These transactions will not be charged by Google.", "type": "object", "properties": {} }, "OneTimeExternalTransaction": { "id": "OneTimeExternalTransaction", "description": "Represents a one-time transaction.", "type": "object", "properties": { "externalTransactionToken": { "description": "Input only. Provided during the call to Create. Retrieved from the client when the alternative billing flow is launched.", "type": "string" } } }, "RecurringExternalTransaction": { "id": "RecurringExternalTransaction", "description": "Represents a transaction that is part of a recurring series of payments. This can be a subscription or a one-time product with multiple payments (such as preorder).", "type": "object", "properties": { "initialExternalTransactionId": { "description": "The external transaction id of the first transaction of this recurring series of transactions. For example, for a subscription this would be the transaction id of the first payment. Required when creating recurring external transactions.", "type": "string" }, "externalTransactionToken": { "description": "Input only. Provided during the call to Create. Retrieved from the client when the alternative billing flow is launched. Required only for the initial purchase.", "type": "string" }, "migratedTransactionProgram": { "description": "Input only. Provided during the call to Create. Must only be used when migrating a subscription from manual monthly reporting to automated reporting.", "type": "string", "enumDescriptions": [ "Unspecified transaction program. Not used.", "User choice billing, where a user may choose between Google Play Billing developer-managed billing.", "Alternative billing only, where users may only use developer-manager billing." ], "enum": [ "EXTERNAL_TRANSACTION_PROGRAM_UNSPECIFIED", "USER_CHOICE_BILLING", "ALTERNATIVE_BILLING_ONLY" ] }, "externalSubscription": { "description": "Details of an external subscription.", "$ref": "ExternalSubscription" }, "otherRecurringProduct": { "description": "Details of a recurring external transaction product which doesn't belong to any other specific category.", "$ref": "OtherRecurringProduct" } } }, "ExternalSubscription": { "id": "ExternalSubscription", "description": "Details of an external subscription.", "type": "object", "properties": { "subscriptionType": { "description": "Required. The type of the external subscription.", "type": "string", "enumDescriptions": [ "Unspecified, do not use.", "This is a recurring subscription where the user is charged every billing cycle.", "This is a prepaid subscription where the user pays up front." ], "enum": [ "SUBSCRIPTION_TYPE_UNSPECIFIED", "RECURRING", "PREPAID" ] } } }, "OtherRecurringProduct": { "id": "OtherRecurringProduct", "description": "Details of a recurring external transaction product which doesn't belong to any other more specific category.", "type": "object", "properties": {} }, "ExternalTransactionAddress": { "id": "ExternalTransactionAddress", "description": "User's address for the external transaction.", "type": "object", "properties": { "regionCode": { "description": "Required. Two letter region code based on ISO-3166-1 Alpha-2 (UN region codes).", "type": "string" }, "administrativeArea": { "description": "Optional. Top-level administrative subdivision of the country/region. Only required for transactions in India. Valid values are \"ANDAMAN AND NICOBAR ISLANDS\", \"ANDHRA PRADESH\", \"ARUNACHAL PRADESH\", \"ASSAM\", \"BIHAR\", \"CHANDIGARH\", \"CHHATTISGARH\", \"DADRA AND NAGAR HAVELI\", \"DADRA AND NAGAR HAVELI AND DAMAN AND DIU\", \"DAMAN AND DIU\", \"DELHI\", \"GOA\", \"GUJARAT\", \"HARYANA\", \"HIMACHAL PRADESH\", \"JAMMU AND KASHMIR\", \"JHARKHAND\", \"KARNATAKA\", \"KERALA\", \"LADAKH\", \"LAKSHADWEEP\", \"MADHYA PRADESH\", \"MAHARASHTRA\", \"MANIPUR\", \"MEGHALAYA\", \"MIZORAM\", \"NAGALAND\", \"ODISHA\", \"PUDUCHERRY\", \"PUNJAB\", \"RAJASTHAN\", \"SIKKIM\", \"TAMIL NADU\", \"TELANGANA\", \"TRIPURA\", \"UTTAR PRADESH\", \"UTTARAKHAND\", and \"WEST BENGAL\".", "type": "string" } } }, "RefundExternalTransactionRequest": { "id": "RefundExternalTransactionRequest", "description": "A request to refund an existing external transaction.", "type": "object", "properties": { "partialRefund": { "description": "A partial refund.", "$ref": "PartialRefund" }, "fullRefund": { "description": "A full-amount refund.", "$ref": "FullRefund" }, "refundTime": { "description": "Required. The time that the transaction was refunded.", "type": "string", "format": "google-datetime" } } }, "PartialRefund": { "id": "PartialRefund", "description": "A partial refund of a transaction.", "type": "object", "properties": { "refundId": { "description": "Required. A unique id distinguishing this partial refund. If the refund is successful, subsequent refunds with the same id will fail. Must be unique across refunds for one individual transaction.", "type": "string" }, "refundPreTaxAmount": { "description": "Required. The pre-tax amount of the partial refund. Should be less than the remaining pre-tax amount of the transaction.", "$ref": "Price" } } }, "FullRefund": { "id": "FullRefund", "description": "A full refund of the remaining amount of a transaction.", "type": "object", "properties": {} }, "GeneratedApksListResponse": { "id": "GeneratedApksListResponse", "description": "Response to list generated APKs.", "type": "object", "properties": { "generatedApks": { "description": "All generated APKs, grouped by the APK signing key.", "type": "array", "items": { "$ref": "GeneratedApksPerSigningKey" } } } }, "GeneratedApksPerSigningKey": { "id": "GeneratedApksPerSigningKey", "description": "Download metadata for split, standalone and universal APKs, as well as asset pack slices, signed with a given key.", "type": "object", "properties": { "certificateSha256Hash": { "description": "SHA256 hash of the APK signing public key certificate.", "type": "string" }, "generatedSplitApks": { "description": "List of generated split APKs, signed with a key corresponding to certificate_sha256_hash.", "type": "array", "items": { "$ref": "GeneratedSplitApk" } }, "generatedAssetPackSlices": { "description": "List of asset pack slices which will be served for this app bundle, signed with a key corresponding to certificate_sha256_hash.", "type": "array", "items": { "$ref": "GeneratedAssetPackSlice" } }, "generatedStandaloneApks": { "description": "List of generated standalone APKs, signed with a key corresponding to certificate_sha256_hash.", "type": "array", "items": { "$ref": "GeneratedStandaloneApk" } }, "generatedUniversalApk": { "description": "Generated universal APK, signed with a key corresponding to certificate_sha256_hash. This field is not set if no universal APK was generated for this signing key.", "$ref": "GeneratedUniversalApk" }, "generatedRecoveryModules": { "description": "Generated recovery apks for recovery actions signed with a key corresponding to certificate_sha256_hash. This includes all generated recovery APKs, also those in draft or cancelled state. This field is not set if no recovery actions were created for this signing key.", "type": "array", "items": { "$ref": "GeneratedRecoveryApk" } }, "targetingInfo": { "description": "Contains targeting information about the generated apks.", "$ref": "TargetingInfo" } } }, "GeneratedSplitApk": { "id": "GeneratedSplitApk", "description": "Download metadata for a split APK.", "type": "object", "properties": { "downloadId": { "description": "Download ID, which uniquely identifies the APK to download. Should be supplied to `generatedapks.download` method.", "type": "string" }, "variantId": { "description": "ID of the generated variant.", "type": "integer", "format": "int32" }, "moduleName": { "description": "Name of the module that this APK belongs to.", "type": "string" }, "splitId": { "description": "Split ID. Empty for the main split of the base module.", "type": "string" } } }, "GeneratedAssetPackSlice": { "id": "GeneratedAssetPackSlice", "description": "Download metadata for an asset pack slice.", "type": "object", "properties": { "downloadId": { "description": "Download ID, which uniquely identifies the APK to download. Should be supplied to `generatedapks.download` method.", "type": "string" }, "moduleName": { "description": "Name of the module that this asset slice belongs to.", "type": "string" }, "sliceId": { "description": "Asset slice ID.", "type": "string" }, "version": { "description": "Asset module version.", "type": "string", "format": "int64" } } }, "GeneratedStandaloneApk": { "id": "GeneratedStandaloneApk", "description": "Download metadata for a standalone APK.", "type": "object", "properties": { "downloadId": { "description": "Download ID, which uniquely identifies the APK to download. Should be supplied to `generatedapks.download` method.", "type": "string" }, "variantId": { "description": "ID of the generated variant.", "type": "integer", "format": "int32" } } }, "GeneratedUniversalApk": { "id": "GeneratedUniversalApk", "description": "Download metadata for a universal APK.", "type": "object", "properties": { "downloadId": { "description": "Download ID, which uniquely identifies the APK to download. Should be supplied to `generatedapks.download` method.", "type": "string" } } }, "GeneratedRecoveryApk": { "id": "GeneratedRecoveryApk", "description": "Download metadata for an app recovery module.", "type": "object", "properties": { "downloadId": { "description": "Download ID, which uniquely identifies the APK to download. Should be supplied to `generatedapks.download` method.", "type": "string" }, "recoveryId": { "description": "ID of the recovery action.", "type": "string", "format": "int64" }, "recoveryStatus": { "description": "The status of the recovery action corresponding to the recovery apk.", "type": "string", "enumDescriptions": [ "RecoveryStatus is unspecified.", "The app recovery action has not been canceled since it has been created.", "The recovery action has been canceled. The action cannot be resumed.", "The recovery action is in the draft state and has not yet been deployed to users.", "The recovery action is generating recovery apks.", "The app recovery action generation has failed." ], "enum": [ "RECOVERY_STATUS_UNSPECIFIED", "RECOVERY_STATUS_ACTIVE", "RECOVERY_STATUS_CANCELED", "RECOVERY_STATUS_DRAFT", "RECOVERY_STATUS_GENERATION_IN_PROGRESS", "RECOVERY_STATUS_GENERATION_FAILED" ] }, "moduleName": { "description": "Name of the module which recovery apk belongs to.", "type": "string" } } }, "TargetingInfo": { "id": "TargetingInfo", "description": "Targeting information about the generated apks.", "type": "object", "properties": { "packageName": { "description": "The package name of this app.", "type": "string" }, "variant": { "description": "List of the created variants.", "type": "array", "items": { "$ref": "SplitApkVariant" } }, "assetSliceSet": { "description": "List of created asset slices.", "type": "array", "items": { "$ref": "AssetSliceSet" } } } }, "SplitApkVariant": { "id": "SplitApkVariant", "description": "Variant is a group of APKs that covers a part of the device configuration space. APKs from multiple variants are never combined on one device.", "type": "object", "properties": { "targeting": { "description": "Variant-level targeting.", "$ref": "VariantTargeting" }, "apkSet": { "description": "Set of APKs, one set per module.", "type": "array", "items": { "$ref": "ApkSet" } }, "variantNumber": { "description": "Number of the variant, starting at 0 (unless overridden). A device will receive APKs from the first variant that matches the device configuration, with higher variant numbers having priority over lower variant numbers.", "type": "integer", "format": "int32" } } }, "VariantTargeting": { "id": "VariantTargeting", "description": "Targeting on the level of variants.", "type": "object", "properties": { "sdkVersionTargeting": { "description": "The sdk version that the variant targets", "$ref": "SdkVersionTargeting" }, "abiTargeting": { "description": "The abi that the variant targets", "$ref": "AbiTargeting" }, "screenDensityTargeting": { "description": "The screen densities that this variant supports", "$ref": "ScreenDensityTargeting" }, "multiAbiTargeting": { "description": "Multi-api-level targeting", "$ref": "MultiAbiTargeting" }, "textureCompressionFormatTargeting": { "description": "Texture-compression-format-level targeting", "$ref": "TextureCompressionFormatTargeting" } } }, "SdkVersionTargeting": { "id": "SdkVersionTargeting", "description": "Targeting based on sdk version.", "type": "object", "properties": { "value": { "description": "Value of an sdk version.", "type": "array", "items": { "$ref": "SdkVersion" } }, "alternatives": { "description": "Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.", "type": "array", "items": { "$ref": "SdkVersion" } } } }, "SdkVersion": { "id": "SdkVersion", "description": "Represents an sdk version.", "type": "object", "properties": { "min": { "description": "Inclusive minimum value of an sdk version.", "type": "integer", "format": "int32" } } }, "AbiTargeting": { "id": "AbiTargeting", "description": "Targeting based on Abi.", "type": "object", "properties": { "value": { "description": "Value of an abi.", "type": "array", "items": { "$ref": "Abi" } }, "alternatives": { "description": "Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.", "type": "array", "items": { "$ref": "Abi" } } } }, "Abi": { "id": "Abi", "description": "Represents an Abi.", "type": "object", "properties": { "alias": { "description": "Alias for an abi.", "type": "string", "enumDescriptions": [ "Unspecified abi.", "ARMEABI abi.", "ARMEABI_V7A abi.", "ARM64_V8A abi.", "X86 abi.", "X86_64 abi.", "RISCV64 abi." ], "enum": [ "UNSPECIFIED_CPU_ARCHITECTURE", "ARMEABI", "ARMEABI_V7A", "ARM64_V8A", "X86", "X86_64", "RISCV64" ] } } }, "ScreenDensityTargeting": { "id": "ScreenDensityTargeting", "description": "Targeting based on screen density.", "type": "object", "properties": { "value": { "description": "Value of a screen density.", "type": "array", "items": { "$ref": "ScreenDensity" } }, "alternatives": { "description": "Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.", "type": "array", "items": { "$ref": "ScreenDensity" } } } }, "ScreenDensity": { "id": "ScreenDensity", "description": "Represents a screen density.", "type": "object", "properties": { "densityAlias": { "description": "Alias for a screen density.", "type": "string", "enumDescriptions": [ "Unspecified screen density.", "NODPI screen density.", "LDPI screen density.", "MDPI screen density.", "TVDPI screen density.", "HDPI screen density.", "XHDPI screen density.", "XXHDPI screen density.", "XXXHDPI screen density." ], "enum": [ "DENSITY_UNSPECIFIED", "NODPI", "LDPI", "MDPI", "TVDPI", "HDPI", "XHDPI", "XXHDPI", "XXXHDPI" ] }, "densityDpi": { "description": "Value for density dpi.", "type": "integer", "format": "int32" } } }, "MultiAbiTargeting": { "id": "MultiAbiTargeting", "description": "Targeting based on multiple abis.", "type": "object", "properties": { "value": { "description": "Value of a multi abi.", "type": "array", "items": { "$ref": "MultiAbi" } }, "alternatives": { "description": "Targeting of other sibling directories that were in the Bundle. For main splits this is targeting of other main splits.", "type": "array", "items": { "$ref": "MultiAbi" } } } }, "MultiAbi": { "id": "MultiAbi", "description": "Represents a list of apis.", "type": "object", "properties": { "abi": { "description": "A list of targeted ABIs, as represented by the Android Platform", "type": "array", "items": { "$ref": "Abi" } } } }, "TextureCompressionFormatTargeting": { "id": "TextureCompressionFormatTargeting", "description": "Targeting by a texture compression format.", "type": "object", "properties": { "value": { "description": "The list of targeted TCFs. Should not be empty.", "type": "array", "items": { "$ref": "TextureCompressionFormat" } }, "alternatives": { "description": "List of alternative TCFs (TCFs targeted by the sibling splits).", "type": "array", "items": { "$ref": "TextureCompressionFormat" } } } }, "TextureCompressionFormat": { "id": "TextureCompressionFormat", "description": "Represents texture compression format.", "type": "object", "properties": { "alias": { "description": "Alias for texture compression format.", "type": "string", "enumDescriptions": [ "Unspecified format.", "ETC1_RGB8 format.", "PALETTED format.", "THREE_DC format.", "ATC format.", "LATC format.", "DXT1 format.", "S3TC format.", "PVRTC format.", "ASTC format.", "ETC2 format." ], "enum": [ "UNSPECIFIED_TEXTURE_COMPRESSION_FORMAT", "ETC1_RGB8", "PALETTED", "THREE_DC", "ATC", "LATC", "DXT1", "S3TC", "PVRTC", "ASTC", "ETC2" ] } } }, "ApkSet": { "id": "ApkSet", "description": "A set of apks representing a module.", "type": "object", "properties": { "moduleMetadata": { "description": "Metadata about the module represented by this ApkSet", "$ref": "ModuleMetadata" }, "apkDescription": { "description": "Description of the generated apks.", "type": "array", "items": { "$ref": "ApkDescription" } } } }, "ModuleMetadata": { "id": "ModuleMetadata", "description": "Metadata of a module.", "type": "object", "properties": { "name": { "description": "Module name.", "type": "string" }, "moduleType": { "description": "Indicates the type of this feature module.", "type": "string", "enumDescriptions": [ "Unknown feature module.", "Regular feature module." ], "enum": [ "UNKNOWN_MODULE_TYPE", "FEATURE_MODULE" ] }, "deliveryType": { "description": "Indicates the delivery type (e.g. on-demand) of the module.", "type": "string", "enumDescriptions": [ "Unspecified delivery type.", "This module will always be downloaded as part of the initial install of the app.", "This module is requested on-demand, which means it will not be part of the initial install, and will only be sent when requested by the client.", "This module will be downloaded immediately after initial install finishes. The app can be opened before these modules are downloaded." ], "enum": [ "UNKNOWN_DELIVERY_TYPE", "INSTALL_TIME", "ON_DEMAND", "FAST_FOLLOW" ] }, "dependencies": { "description": "Names of the modules that this module directly depends on. Each module implicitly depends on the base module.", "type": "array", "items": { "type": "string" } }, "targeting": { "description": "The targeting that makes a conditional module installed. Relevant only for Split APKs.", "$ref": "ModuleTargeting" } } }, "ModuleTargeting": { "id": "ModuleTargeting", "description": "Targeting on the module level.", "type": "object", "properties": { "sdkVersionTargeting": { "description": "The sdk version that the variant targets", "$ref": "SdkVersionTargeting" }, "deviceFeatureTargeting": { "description": "Targeting for device features.", "type": "array", "items": { "$ref": "DeviceFeatureTargeting" } }, "userCountriesTargeting": { "description": "Countries-level targeting", "$ref": "UserCountriesTargeting" } } }, "DeviceFeatureTargeting": { "id": "DeviceFeatureTargeting", "description": "Targeting for a device feature.", "type": "object", "properties": { "requiredFeature": { "description": "Feature of the device.", "$ref": "DeviceFeature" } } }, "DeviceFeature": { "id": "DeviceFeature", "description": "Represents a device feature.", "type": "object", "properties": { "featureName": { "description": "Name of the feature.", "type": "string" }, "featureVersion": { "description": "The feature version specified by android:glEsVersion or android:version in in the AndroidManifest.", "type": "integer", "format": "int32" } } }, "UserCountriesTargeting": { "id": "UserCountriesTargeting", "description": "Describes an inclusive/exclusive list of country codes that module targets.", "type": "object", "properties": { "countryCodes": { "description": "List of country codes in the two-letter CLDR territory format.", "type": "array", "items": { "type": "string" } }, "exclude": { "description": "Indicates if the list above is exclusive.", "type": "boolean" } } }, "ApkDescription": { "id": "ApkDescription", "description": "Description of the created apks.", "type": "object", "properties": { "targeting": { "description": "Apk-level targeting.", "$ref": "ApkTargeting" }, "path": { "description": "Path of the Apk, will be in the following format: .apk where DownloadId is the ID used to download the apk using GeneratedApks.Download API.", "type": "string" }, "splitApkMetadata": { "description": "Set only for Split APKs.", "$ref": "SplitApkMetadata" }, "standaloneApkMetadata": { "description": "Set only for standalone APKs.", "$ref": "StandaloneApkMetadata" }, "instantApkMetadata": { "description": "Set only for Instant split APKs.", "$ref": "SplitApkMetadata" }, "assetSliceMetadata": { "description": "Set only for asset slices.", "$ref": "SplitApkMetadata" } } }, "ApkTargeting": { "id": "ApkTargeting", "description": "Represents a set of apk-level targetings.", "type": "object", "properties": { "abiTargeting": { "description": "The abi that the apk targets", "$ref": "AbiTargeting" }, "languageTargeting": { "description": "The language that the apk targets", "$ref": "LanguageTargeting" }, "screenDensityTargeting": { "description": "The screen density that this apk supports.", "$ref": "ScreenDensityTargeting" }, "sdkVersionTargeting": { "description": "The sdk version that the apk targets", "$ref": "SdkVersionTargeting" }, "textureCompressionFormatTargeting": { "description": "Texture-compression-format-level targeting", "$ref": "TextureCompressionFormatTargeting" }, "multiAbiTargeting": { "description": "Multi-api-level targeting.", "$ref": "MultiAbiTargeting" } } }, "LanguageTargeting": { "id": "LanguageTargeting", "description": "Targeting based on language.", "type": "object", "properties": { "value": { "description": "ISO-639: 2 or 3 letter language code.", "type": "array", "items": { "type": "string" } }, "alternatives": { "description": "Alternative languages.", "type": "array", "items": { "type": "string" } } } }, "SplitApkMetadata": { "id": "SplitApkMetadata", "description": "Holds data specific to Split APKs.", "type": "object", "properties": { "splitId": { "description": "Id of the split.", "type": "string" }, "isMasterSplit": { "description": "Indicates whether this APK is the main split of the module.", "type": "boolean" } } }, "StandaloneApkMetadata": { "id": "StandaloneApkMetadata", "description": "Holds data specific to Standalone APKs.", "type": "object", "properties": { "fusedModuleName": { "description": "Names of the modules fused in this standalone APK.", "type": "array", "items": { "type": "string" } } } }, "AssetSliceSet": { "id": "AssetSliceSet", "description": "Set of asset slices belonging to a single asset module.", "type": "object", "properties": { "assetModuleMetadata": { "description": "Module level metadata.", "$ref": "AssetModuleMetadata" }, "apkDescription": { "description": "Asset slices.", "type": "array", "items": { "$ref": "ApkDescription" } } } }, "AssetModuleMetadata": { "id": "AssetModuleMetadata", "description": "Metadata of an asset module.", "type": "object", "properties": { "name": { "description": "Module name.", "type": "string" }, "deliveryType": { "description": "Indicates the delivery type for persistent install.", "type": "string", "enumDescriptions": [ "Unspecified delivery type.", "This module will always be downloaded as part of the initial install of the app.", "This module is requested on-demand, which means it will not be part of the initial install, and will only be sent when requested by the client.", "This module will be downloaded immediately after initial install finishes. The app can be opened before these modules are downloaded." ], "enum": [ "UNKNOWN_DELIVERY_TYPE", "INSTALL_TIME", "ON_DEMAND", "FAST_FOLLOW" ] } } }, "ImagesListResponse": { "id": "ImagesListResponse", "description": "Response listing all images.", "type": "object", "properties": { "images": { "description": "All listed Images.", "type": "array", "items": { "$ref": "Image" } } } }, "Image": { "id": "Image", "description": "An uploaded image. The resource for ImagesService.", "type": "object", "properties": { "id": { "description": "A unique id representing this image.", "type": "string" }, "url": { "description": "A URL that will serve a preview of the image.", "type": "string" }, "sha1": { "description": "A sha1 hash of the image.", "type": "string" }, "sha256": { "description": "A sha256 hash of the image.", "type": "string" } } }, "ImagesDeleteAllResponse": { "id": "ImagesDeleteAllResponse", "description": "Response for deleting all images.", "type": "object", "properties": { "deleted": { "description": "The deleted images.", "type": "array", "items": { "$ref": "Image" } } } }, "ImagesUploadResponse": { "id": "ImagesUploadResponse", "description": "Response for uploading an image.", "type": "object", "properties": { "image": { "description": "The uploaded image.", "$ref": "Image" } } }, "InAppProduct": { "id": "InAppProduct", "description": "An in-app product. The resource for InappproductsService.", "type": "object", "properties": { "packageName": { "description": "Package name of the parent app.", "type": "string" }, "sku": { "description": "Stock-keeping-unit (SKU) of the product, unique within an app.", "type": "string" }, "status": { "description": "The status of the product, e.g. whether it's active.", "type": "string", "enumDescriptions": [ "Unspecified status.", "The product is published and active in the store.", "The product is not published and therefore inactive in the store." ], "enum": [ "statusUnspecified", "active", "inactive" ] }, "purchaseType": { "description": "The type of the product, e.g. a recurring subscription.", "type": "string", "enumDescriptions": [ "Unspecified purchase type.", "The default product type - one time purchase.", "In-app product with a recurring period." ], "enum": [ "purchaseTypeUnspecified", "managedUser", "subscription" ] }, "defaultPrice": { "description": "Default price. Cannot be zero, as in-app products are never free. Always in the developer's Checkout merchant currency.", "$ref": "Price" }, "prices": { "description": "Prices per buyer region. None of these can be zero, as in-app products are never free. Map key is region code, as defined by ISO 3166-2.", "type": "object", "additionalProperties": { "$ref": "Price" } }, "listings": { "description": "List of localized title and description data. Map key is the language of the localized data, as defined by BCP-47, e.g. \"en-US\".", "type": "object", "additionalProperties": { "$ref": "InAppProductListing" } }, "defaultLanguage": { "description": "Default language of the localized data, as defined by BCP-47. e.g. \"en-US\".", "type": "string" }, "subscriptionPeriod": { "description": "Subscription period, specified in ISO 8601 format. Acceptable values are P1W (one week), P1M (one month), P3M (three months), P6M (six months), and P1Y (one year).", "type": "string" }, "trialPeriod": { "description": "Trial period, specified in ISO 8601 format. Acceptable values are anything between P7D (seven days) and P999D (999 days).", "type": "string" }, "gracePeriod": { "description": "Grace period of the subscription, specified in ISO 8601 format. Allows developers to give their subscribers a grace period when the payment for the new recurrence period is declined. Acceptable values are P0D (zero days), P3D (three days), P7D (seven days), P14D (14 days), and P30D (30 days).", "type": "string" }, "subscriptionTaxesAndComplianceSettings": { "description": "Details about taxes and legal compliance. Only applicable to subscription products.", "$ref": "SubscriptionTaxAndComplianceSettings" }, "managedProductTaxesAndComplianceSettings": { "description": "Details about taxes and legal compliance. Only applicable to managed products.", "$ref": "ManagedProductTaxAndComplianceSettings" } } }, "InAppProductListing": { "id": "InAppProductListing", "description": "Store listing of a single in-app product.", "type": "object", "properties": { "title": { "description": "Title for the store listing.", "type": "string" }, "description": { "description": "Description for the store listing.", "type": "string" }, "benefits": { "description": "Localized entitlement benefits for a subscription.", "type": "array", "items": { "type": "string" } } } }, "SubscriptionTaxAndComplianceSettings": { "id": "SubscriptionTaxAndComplianceSettings", "description": "Details about taxation, Google Play policy and legal compliance for subscription products.", "type": "object", "properties": { "eeaWithdrawalRightType": { "description": "Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the [Help Center article](https://support.google.com/googleplay/android-developer/answer/10463498) for more information.", "type": "string", "enumDescriptions": [ "", "", "" ], "enum": [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ] }, "taxRateInfoByRegionCode": { "description": "A mapping from region code to tax rate details. The keys are region codes as defined by Unicode's \"CLDR\".", "type": "object", "additionalProperties": { "$ref": "RegionalTaxRateInfo" } }, "isTokenizedDigitalAsset": { "description": "Whether this subscription is declared as a product representing a tokenized digital asset.", "type": "boolean" } } }, "RegionalTaxRateInfo": { "id": "RegionalTaxRateInfo", "description": "Specified details about taxation in a given geographical region.", "type": "object", "properties": { "taxTier": { "description": "Tax tier to specify reduced tax rate. Developers who sell digital news, magazines, newspapers, books, or audiobooks in various regions may be eligible for reduced tax rates. [Learn more](https://support.google.com/googleplay/android-developer/answer/10463498).", "type": "string", "enumDescriptions": [ "", "", "", "", "", "" ], "enum": [ "TAX_TIER_UNSPECIFIED", "TAX_TIER_BOOKS_1", "TAX_TIER_NEWS_1", "TAX_TIER_NEWS_2", "TAX_TIER_MUSIC_OR_AUDIO_1", "TAX_TIER_LIVE_OR_BROADCAST_1" ] }, "eligibleForStreamingServiceTaxRate": { "description": "You must tell us if your app contains streaming products to correctly charge US state and local sales tax. Field only supported in the United States.", "type": "boolean" }, "streamingTaxType": { "description": "To collect communications or amusement taxes in the United States, choose the appropriate tax category. [Learn more](https://support.google.com/googleplay/android-developer/answer/10463498#streaming_tax).", "type": "string", "enumDescriptions": [ "No telecommunications tax collected.", "US-specific telecommunications tax tier for video streaming, on demand, rentals / subscriptions / pay-per-view.", "US-specific telecommunications tax tier for video streaming of pre-recorded content like movies, tv shows.", "US-specific telecommunications tax tier for video streaming of multi-channel programming.", "US-specific telecommunications tax tier for audio streaming, rental / subscription.", "US-specific telecommunications tax tier for audio streaming, sale / permanent download.", "US-specific telecommunications tax tier for multi channel audio streaming like radio." ], "enum": [ "STREAMING_TAX_TYPE_UNSPECIFIED", "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL", "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES", "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL", "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL", "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES", "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL" ] } } }, "ManagedProductTaxAndComplianceSettings": { "id": "ManagedProductTaxAndComplianceSettings", "description": "Details about taxation and legal compliance for managed products.", "type": "object", "properties": { "eeaWithdrawalRightType": { "description": "Digital content or service classification for products distributed to users in the European Economic Area (EEA). The withdrawal regime under EEA consumer laws depends on this classification. Refer to the [Help Center article](https://support.google.com/googleplay/android-developer/answer/10463498) for more information.", "type": "string", "enumDescriptions": [ "", "", "" ], "enum": [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ] }, "taxRateInfoByRegionCode": { "description": "A mapping from region code to tax rate details. The keys are region codes as defined by Unicode's \"CLDR\".", "type": "object", "additionalProperties": { "$ref": "RegionalTaxRateInfo" } }, "isTokenizedDigitalAsset": { "description": "Whether this in-app product is declared as a product representing a tokenized digital asset.", "type": "boolean" } } }, "InappproductsBatchGetResponse": { "id": "InappproductsBatchGetResponse", "description": "Response message for BatchGetSubscriptions endpoint.", "type": "object", "properties": { "inappproduct": { "description": "The list of requested in-app products, in the same order as the request.", "type": "array", "items": { "$ref": "InAppProduct" } } } }, "InappproductsListResponse": { "id": "InappproductsListResponse", "description": "Response listing all in-app products.", "type": "object", "properties": { "kind": { "description": "The kind of this response (\"androidpublisher#inappproductsListResponse\").", "type": "string" }, "inappproduct": { "description": "All in-app products.", "type": "array", "items": { "$ref": "InAppProduct" } }, "tokenPagination": { "description": "Pagination token, to handle a number of products that is over one page.", "$ref": "TokenPagination" }, "pageInfo": { "description": "Deprecated and unset.", "deprecated": true, "$ref": "PageInfo" } } }, "TokenPagination": { "id": "TokenPagination", "description": "Pagination information returned by a List operation when token pagination is enabled. List operations that supports paging return only one \"page\" of results. This protocol buffer message describes the page that has been returned. When using token pagination, clients should use the next/previous token to get another page of the result. The presence or absence of next/previous token indicates whether a next/previous page is available and provides a mean of accessing this page. ListRequest.page_token should be set to either next_page_token or previous_page_token to access another page.", "type": "object", "properties": { "nextPageToken": { "description": "Tokens to pass to the standard list field 'page_token'. Whenever available, tokens are preferred over manipulating start_index.", "type": "string" }, "previousPageToken": { "type": "string" } } }, "PageInfo": { "id": "PageInfo", "description": "Information about the current page. List operations that supports paging return only one \"page\" of results. This protocol buffer message describes the page that has been returned.", "type": "object", "properties": { "totalResults": { "description": "Total number of results available on the backend ! The total number of results in the result set.", "type": "integer", "format": "int32" }, "resultPerPage": { "description": "Maximum number of results returned in one page. ! The number of results included in the API response.", "type": "integer", "format": "int32" }, "startIndex": { "description": "Index of the first result returned in the current page.", "type": "integer", "format": "int32" } } }, "InappproductsBatchUpdateRequest": { "id": "InappproductsBatchUpdateRequest", "description": "Request to update or insert one or more in-app products.", "type": "object", "properties": { "requests": { "description": "Required. Individual update requests. At least one request is required. Can contain up to 100 requests. All requests must correspond to different in-app products.", "type": "array", "items": { "$ref": "InappproductsUpdateRequest" } } } }, "InappproductsUpdateRequest": { "id": "InappproductsUpdateRequest", "description": "Request to update an in-app product.", "type": "object", "properties": { "packageName": { "description": "Package name of the app.", "type": "string" }, "sku": { "description": "Unique identifier for the in-app product.", "type": "string" }, "autoConvertMissingPrices": { "description": "If true the prices for all regions targeted by the parent app that don't have a price specified for this in-app product will be auto converted to the target currency based on the default price. Defaults to false.", "type": "boolean" }, "inappproduct": { "description": "The new in-app product.", "$ref": "InAppProduct" }, "allowMissing": { "description": "If set to true, and the in-app product with the given package_name and sku doesn't exist, the in-app product will be created.", "type": "boolean" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "InappproductsBatchUpdateResponse": { "id": "InappproductsBatchUpdateResponse", "description": "Response for a batch in-app product update.", "type": "object", "properties": { "inappproducts": { "description": "The updated or inserted in-app products.", "type": "array", "items": { "$ref": "InAppProduct" } } } }, "InappproductsBatchDeleteRequest": { "id": "InappproductsBatchDeleteRequest", "description": "Request to delete multiple in-app products.", "type": "object", "properties": { "requests": { "description": "Individual delete requests. At least one request is required. Can contain up to 100 requests. All requests must correspond to different in-app products.", "type": "array", "items": { "$ref": "InappproductsDeleteRequest" } } } }, "InappproductsDeleteRequest": { "id": "InappproductsDeleteRequest", "description": "Request to delete an in-app product.", "type": "object", "properties": { "packageName": { "description": "Package name of the app.", "type": "string" }, "sku": { "description": "Unique identifier for the in-app product.", "type": "string" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "InternalAppSharingArtifact": { "id": "InternalAppSharingArtifact", "description": "An artifact resource which gets created when uploading an APK or Android App Bundle through internal app sharing.", "type": "object", "properties": { "downloadUrl": { "description": "The download URL generated for the uploaded artifact. Users that are authorized to download can follow the link to the Play Store app to install it.", "type": "string" }, "certificateFingerprint": { "description": "The sha256 fingerprint of the certificate used to sign the generated artifact.", "type": "string" }, "sha256": { "description": "The sha256 hash of the artifact represented as a lowercase hexadecimal number, matching the output of the sha256sum command.", "type": "string" } } }, "Listing": { "id": "Listing", "description": "A localized store listing. The resource for ListingsService.", "type": "object", "properties": { "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).", "type": "string" }, "title": { "description": "Localized title of the app.", "type": "string" }, "fullDescription": { "description": "Full description of the app.", "type": "string" }, "shortDescription": { "description": "Short description of the app.", "type": "string" }, "video": { "description": "URL of a promotional YouTube video for the app.", "type": "string" } } }, "ListingsListResponse": { "id": "ListingsListResponse", "description": "Response listing all localized listings.", "type": "object", "properties": { "kind": { "description": "The kind of this response (\"androidpublisher#listingsListResponse\").", "type": "string" }, "listings": { "description": "All localized listings.", "type": "array", "items": { "$ref": "Listing" } } } }, "SafetyLabelsUpdateRequest": { "id": "SafetyLabelsUpdateRequest", "description": "Request to update Safety Labels of an app.", "type": "object", "properties": { "safetyLabels": { "description": "Required. Contents of the CSV file containing Data Safety responses. For the format of this file, see the Help Center documentation at https://support.google.com/googleplay/android-developer/answer/10787469?#zippy=%2Cunderstand-the-csv-format To download an up to date template, follow the steps at https://support.google.com/googleplay/android-developer/answer/10787469?#zippy=%2Cexport-to-a-csv-file", "type": "string" } } }, "SafetyLabelsUpdateResponse": { "id": "SafetyLabelsUpdateResponse", "description": "Response for SafetyLabelsUpdate rpc.", "type": "object", "properties": {} }, "ConvertRegionPricesRequest": { "id": "ConvertRegionPricesRequest", "description": "Request message for ConvertRegionPrices.", "type": "object", "properties": { "price": { "description": "The intital price to convert other regions from. Tax exclusive.", "$ref": "Money" } } }, "Money": { "id": "Money", "description": "Represents an amount of money with its currency type.", "type": "object", "properties": { "currencyCode": { "description": "The three-letter currency code defined in ISO 4217.", "type": "string" }, "units": { "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.", "type": "string", "format": "int64" }, "nanos": { "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.", "type": "integer", "format": "int32" } } }, "ConvertRegionPricesResponse": { "id": "ConvertRegionPricesResponse", "description": "Response message for ConvertRegionPrices.", "type": "object", "properties": { "convertedRegionPrices": { "description": "Map from region code to converted region price.", "type": "object", "additionalProperties": { "$ref": "ConvertedRegionPrice" } }, "convertedOtherRegionsPrice": { "description": "Converted other regions prices in USD and EUR, to use for countries where Play doesn't support a country's local currency.", "$ref": "ConvertedOtherRegionsPrice" } } }, "ConvertedRegionPrice": { "id": "ConvertedRegionPrice", "description": "A converted region price.", "type": "object", "properties": { "regionCode": { "description": "The region code of the region.", "type": "string" }, "price": { "description": "The converted price tax inclusive.", "$ref": "Money" }, "taxAmount": { "description": "The tax amount of the converted price.", "$ref": "Money" } } }, "ConvertedOtherRegionsPrice": { "id": "ConvertedOtherRegionsPrice", "description": "Converted other regions prices.", "type": "object", "properties": { "usdPrice": { "description": "Price in USD to use for the \"Other regions\" location exclusive of taxes.", "$ref": "Money" }, "eurPrice": { "description": "Price in EUR to use for the \"Other regions\" location exclusive of taxes.", "$ref": "Money" } } }, "ProductPurchase": { "id": "ProductPurchase", "description": "A ProductPurchase resource indicates the status of a user's inapp product purchase.", "type": "object", "properties": { "kind": { "description": "This kind represents an inappPurchase object in the androidpublisher service.", "type": "string" }, "purchaseTimeMillis": { "description": "The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).", "type": "string", "format": "int64" }, "purchaseState": { "description": "The purchase state of the order. Possible values are: 0. Purchased 1. Canceled 2. Pending", "type": "integer", "format": "int32" }, "consumptionState": { "description": "The consumption state of the inapp product. Possible values are: 0. Yet to be consumed 1. Consumed", "type": "integer", "format": "int32" }, "developerPayload": { "description": "A developer-specified string that contains supplemental information about an order.", "type": "string" }, "orderId": { "description": "The order id associated with the purchase of the inapp product.", "type": "string" }, "purchaseType": { "description": "The type of purchase of the inapp product. This field is only set if this purchase was not made using the standard in-app billing flow. Possible values are: 0. Test (i.e. purchased from a license testing account) 1. Promo (i.e. purchased using a promo code). Does not include Play Points purchases. 2. Rewarded (i.e. from watching a video ad instead of paying)", "type": "integer", "format": "int32" }, "acknowledgementState": { "description": "The acknowledgement state of the inapp product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged", "type": "integer", "format": "int32" }, "purchaseToken": { "description": "The purchase token generated to identify this purchase. May not be present.", "type": "string" }, "productId": { "description": "The inapp product SKU. May not be present.", "type": "string" }, "quantity": { "description": "The quantity associated with the purchase of the inapp product. If not present, the quantity is 1.", "type": "integer", "format": "int32" }, "obfuscatedExternalAccountId": { "description": "An obfuscated version of the id that is uniquely associated with the user's account in your app. Only present if specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.", "type": "string" }, "obfuscatedExternalProfileId": { "description": "An obfuscated version of the id that is uniquely associated with the user's profile in your app. Only present if specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.", "type": "string" }, "regionCode": { "description": "ISO 3166-1 alpha-2 billing region code of the user at the time the product was granted.", "type": "string" }, "refundableQuantity": { "description": "The quantity eligible for refund, i.e. quantity that hasn't been refunded. The value reflects quantity-based partial refunds and full refunds.", "type": "integer", "format": "int32" } } }, "ProductPurchasesAcknowledgeRequest": { "id": "ProductPurchasesAcknowledgeRequest", "description": "Request for the product.purchases.acknowledge API.", "type": "object", "properties": { "developerPayload": { "description": "Payload to attach to the purchase.", "type": "string" } } }, "Review": { "id": "Review", "description": "An Android app review.", "type": "object", "properties": { "reviewId": { "description": "Unique identifier for this review.", "type": "string" }, "authorName": { "description": "The name of the user who wrote the review.", "type": "string" }, "comments": { "description": "A repeated field containing comments for the review.", "type": "array", "items": { "$ref": "Comment" } } } }, "Comment": { "id": "Comment", "description": "An entry of conversation between user and developer.", "type": "object", "properties": { "userComment": { "description": "A comment from a user.", "$ref": "UserComment" }, "developerComment": { "description": "A comment from a developer.", "$ref": "DeveloperComment" } } }, "UserComment": { "id": "UserComment", "description": "User entry from conversation between user and developer.", "type": "object", "properties": { "text": { "description": "The content of the comment, i.e. review body. In some cases users have been able to write a review with separate title and body; in those cases the title and body are concatenated and separated by a tab character.", "type": "string" }, "lastModified": { "description": "The last time at which this comment was updated.", "$ref": "Timestamp" }, "starRating": { "description": "The star rating associated with the review, from 1 to 5.", "type": "integer", "format": "int32" }, "reviewerLanguage": { "description": "Language code for the reviewer. This is taken from the device settings so is not guaranteed to match the language the review is written in. May be absent.", "type": "string" }, "device": { "description": "Codename for the reviewer's device, e.g. klte, flounder. May be absent.", "type": "string" }, "androidOsVersion": { "description": "Integer Android SDK version of the user's device at the time the review was written, e.g. 23 is Marshmallow. May be absent.", "type": "integer", "format": "int32" }, "appVersionCode": { "description": "Integer version code of the app as installed at the time the review was written. May be absent.", "type": "integer", "format": "int32" }, "appVersionName": { "description": "String version name of the app as installed at the time the review was written. May be absent.", "type": "string" }, "thumbsUpCount": { "description": "Number of users who have given this review a thumbs up.", "type": "integer", "format": "int32" }, "thumbsDownCount": { "description": "Number of users who have given this review a thumbs down.", "type": "integer", "format": "int32" }, "deviceMetadata": { "description": "Information about the characteristics of the user's device.", "$ref": "DeviceMetadata" }, "originalText": { "description": "Untranslated text of the review, where the review was translated. If the review was not translated this is left blank.", "type": "string" } } }, "Timestamp": { "id": "Timestamp", "description": "A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970.", "type": "object", "properties": { "seconds": { "description": "Represents seconds of UTC time since Unix epoch.", "type": "string", "format": "int64" }, "nanos": { "description": "Non-negative fractions of a second at nanosecond resolution. Must be from 0 to 999,999,999 inclusive.", "type": "integer", "format": "int32" } } }, "DeviceMetadata": { "id": "DeviceMetadata", "description": "Characteristics of the user's device.", "type": "object", "properties": { "productName": { "description": "Device model name (e.g. Droid)", "type": "string" }, "manufacturer": { "description": "Device manufacturer (e.g. Motorola)", "type": "string" }, "deviceClass": { "description": "Device class (e.g. tablet)", "type": "string" }, "screenWidthPx": { "description": "Screen width in pixels", "type": "integer", "format": "int32" }, "screenHeightPx": { "description": "Screen height in pixels", "type": "integer", "format": "int32" }, "nativePlatform": { "description": "Comma separated list of native platforms (e.g. \"arm\", \"arm7\")", "type": "string" }, "screenDensityDpi": { "description": "Screen density in DPI", "type": "integer", "format": "int32" }, "glEsVersion": { "description": "OpenGL version", "type": "integer", "format": "int32" }, "cpuModel": { "description": "Device CPU model, e.g. \"MSM8974\"", "type": "string" }, "cpuMake": { "description": "Device CPU make, e.g. \"Qualcomm\"", "type": "string" }, "ramMb": { "description": "Device RAM in Megabytes, e.g. \"2048\"", "type": "integer", "format": "int32" } } }, "DeveloperComment": { "id": "DeveloperComment", "description": "Developer entry from conversation between user and developer.", "type": "object", "properties": { "text": { "description": "The content of the comment, i.e. reply body.", "type": "string" }, "lastModified": { "description": "The last time at which this comment was updated.", "$ref": "Timestamp" } } }, "ReviewsListResponse": { "id": "ReviewsListResponse", "description": "Response listing reviews.", "type": "object", "properties": { "reviews": { "description": "List of reviews.", "type": "array", "items": { "$ref": "Review" } }, "tokenPagination": { "description": "Pagination token, to handle a number of products that is over one page.", "$ref": "TokenPagination" }, "pageInfo": { "description": "Information about the current page.", "$ref": "PageInfo" } } }, "ReviewsReplyRequest": { "id": "ReviewsReplyRequest", "description": "Request to reply to review or update existing reply.", "type": "object", "properties": { "replyText": { "description": "The text to set as the reply. Replies of more than approximately 350 characters will be rejected. HTML tags will be stripped.", "type": "string" } } }, "ReviewsReplyResponse": { "id": "ReviewsReplyResponse", "description": "Response on status of replying to a review.", "type": "object", "properties": { "result": { "description": "The result of replying/updating a reply to review.", "$ref": "ReviewReplyResult" } } }, "ReviewReplyResult": { "id": "ReviewReplyResult", "description": "The result of replying/updating a reply to review.", "type": "object", "properties": { "replyText": { "description": "The reply text that was applied.", "type": "string" }, "lastEdited": { "description": "The time at which the reply took effect.", "$ref": "Timestamp" } } }, "SubscriptionPurchase": { "id": "SubscriptionPurchase", "description": "A SubscriptionPurchase resource indicates the status of a user's subscription purchase.", "type": "object", "properties": { "kind": { "description": "This kind represents a subscriptionPurchase object in the androidpublisher service.", "type": "string" }, "startTimeMillis": { "description": "Time at which the subscription was granted, in milliseconds since the Epoch.", "type": "string", "format": "int64" }, "expiryTimeMillis": { "description": "Time at which the subscription will expire, in milliseconds since the Epoch.", "type": "string", "format": "int64" }, "autoResumeTimeMillis": { "description": "Time at which the subscription will be automatically resumed, in milliseconds since the Epoch. Only present if the user has requested to pause the subscription.", "type": "string", "format": "int64" }, "autoRenewing": { "description": "Whether the subscription will automatically be renewed when it reaches its current expiry time.", "type": "boolean" }, "priceCurrencyCode": { "description": "ISO 4217 currency code for the subscription price. For example, if the price is specified in British pounds sterling, price_currency_code is \"GBP\".", "type": "string" }, "priceAmountMicros": { "description": "Price of the subscription, For tax exclusive countries, the price doesn't include tax. For tax inclusive countries, the price includes tax. Price is expressed in micro-units, where 1,000,000 micro-units represents one unit of the currency. For example, if the subscription price is €1.99, price_amount_micros is 1990000.", "type": "string", "format": "int64" }, "introductoryPriceInfo": { "description": "Introductory price information of the subscription. This is only present when the subscription was purchased with an introductory price. This field does not indicate the subscription is currently in introductory price period.", "$ref": "IntroductoryPriceInfo" }, "countryCode": { "description": "ISO 3166-1 alpha-2 billing country/region code of the user at the time the subscription was granted.", "type": "string" }, "developerPayload": { "description": "A developer-specified string that contains supplemental information about an order.", "type": "string" }, "paymentState": { "description": "The payment state of the subscription. Possible values are: 0. Payment pending 1. Payment received 2. Free trial 3. Pending deferred upgrade/downgrade Not present for canceled, expired subscriptions.", "type": "integer", "format": "int32" }, "cancelReason": { "description": "The reason why a subscription was canceled or is not auto-renewing. Possible values are: 0. User canceled the subscription 1. Subscription was canceled by the system, for example because of a billing problem 2. Subscription was replaced with a new subscription 3. Subscription was canceled by the developer", "type": "integer", "format": "int32" }, "userCancellationTimeMillis": { "description": "The time at which the subscription was canceled by the user, in milliseconds since the epoch. Only present if cancelReason is 0.", "type": "string", "format": "int64" }, "cancelSurveyResult": { "description": "Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).", "$ref": "SubscriptionCancelSurveyResult" }, "orderId": { "description": "The order id of the latest recurring order associated with the purchase of the subscription. If the subscription was canceled because payment was declined, this will be the order id from the payment declined order.", "type": "string" }, "linkedPurchaseToken": { "description": "The purchase token of the originating purchase if this subscription is one of the following: 0. Re-signup of a canceled but non-lapsed subscription 1. Upgrade/downgrade from a previous subscription For example, suppose a user originally signs up and you receive purchase token X, then the user cancels and goes through the resignup flow (before their subscription lapses) and you receive purchase token Y, and finally the user upgrades their subscription and you receive purchase token Z. If you call this API with purchase token Z, this field will be set to Y. If you call this API with purchase token Y, this field will be set to X. If you call this API with purchase token X, this field will not be set.", "type": "string" }, "purchaseType": { "description": "The type of purchase of the subscription. This field is only set if this purchase was not made using the standard in-app billing flow. Possible values are: 0. Test (i.e. purchased from a license testing account) 1. Promo (i.e. purchased using a promo code)", "type": "integer", "format": "int32" }, "priceChange": { "description": "The latest price change information available. This is present only when there is an upcoming price change for the subscription yet to be applied. Once the subscription renews with the new price or the subscription is canceled, no price change information will be returned.", "$ref": "SubscriptionPriceChange" }, "profileName": { "description": "The profile name of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.", "type": "string" }, "emailAddress": { "description": "The email address of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.", "type": "string" }, "givenName": { "description": "The given name of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.", "type": "string" }, "familyName": { "description": "The family name of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.", "type": "string" }, "profileId": { "description": "The Google profile id of the user when the subscription was purchased. Only present for purchases made with 'Subscribe with Google'.", "type": "string" }, "acknowledgementState": { "description": "The acknowledgement state of the subscription product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged", "type": "integer", "format": "int32" }, "externalAccountId": { "description": "User account identifier in the third-party service. Only present if account linking happened as part of the subscription purchase flow.", "type": "string" }, "promotionType": { "description": "The type of promotion applied on this purchase. This field is only set if a promotion is applied when the subscription was purchased. Possible values are: 0. One time code 1. Vanity code", "type": "integer", "format": "int32" }, "promotionCode": { "description": "The promotion code applied on this purchase. This field is only set if a vanity code promotion is applied when the subscription was purchased.", "type": "string" }, "obfuscatedExternalAccountId": { "description": "An obfuscated version of the id that is uniquely associated with the user's account in your app. Present for the following purchases: * If account linking happened as part of the subscription purchase flow. * It was specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.", "type": "string" }, "obfuscatedExternalProfileId": { "description": "An obfuscated version of the id that is uniquely associated with the user's profile in your app. Only present if specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.", "type": "string" } } }, "IntroductoryPriceInfo": { "id": "IntroductoryPriceInfo", "description": "Contains the introductory price information for a subscription.", "type": "object", "properties": { "introductoryPriceCurrencyCode": { "description": "ISO 4217 currency code for the introductory subscription price. For example, if the price is specified in British pounds sterling, price_currency_code is \"GBP\".", "type": "string" }, "introductoryPriceAmountMicros": { "description": "Introductory price of the subscription, not including tax. The currency is the same as price_currency_code. Price is expressed in micro-units, where 1,000,000 micro-units represents one unit of the currency. For example, if the subscription price is €1.99, price_amount_micros is 1990000.", "type": "string", "format": "int64" }, "introductoryPricePeriod": { "description": "Introductory price period, specified in ISO 8601 format. Common values are (but not limited to) \"P1W\" (one week), \"P1M\" (one month), \"P3M\" (three months), \"P6M\" (six months), and \"P1Y\" (one year).", "type": "string" }, "introductoryPriceCycles": { "description": "The number of billing period to offer introductory pricing.", "type": "integer", "format": "int32" } } }, "SubscriptionCancelSurveyResult": { "id": "SubscriptionCancelSurveyResult", "description": "Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).", "type": "object", "properties": { "cancelSurveyReason": { "description": "The cancellation reason the user chose in the survey. Possible values are: 0. Other 1. I don't use this service enough 2. Technical issues 3. Cost-related reasons 4. I found a better app", "type": "integer", "format": "int32" }, "userInputCancelReason": { "description": "The customized input cancel reason from the user. Only present when cancelReason is 0.", "type": "string" } } }, "SubscriptionPriceChange": { "id": "SubscriptionPriceChange", "description": "Contains the price change information for a subscription that can be used to control the user journey for the price change in the app. This can be in the form of seeking confirmation from the user or tailoring the experience for a successful conversion.", "type": "object", "properties": { "newPrice": { "description": "The new price the subscription will renew with if the price change is accepted by the user.", "$ref": "Price" }, "state": { "description": "The current state of the price change. Possible values are: 0. Outstanding: State for a pending price change waiting for the user to agree. In this state, you can optionally seek confirmation from the user using the In-App API. 1. Accepted: State for an accepted price change that the subscription will renew with unless it's canceled. The price change takes effect on a future date when the subscription renews. Note that the change might not occur when the subscription is renewed next.", "type": "integer", "format": "int32" } } }, "SubscriptionPurchasesDeferRequest": { "id": "SubscriptionPurchasesDeferRequest", "description": "Request for the purchases.subscriptions.defer API.", "type": "object", "properties": { "deferralInfo": { "description": "The information about the new desired expiry time for the subscription.", "$ref": "SubscriptionDeferralInfo" } } }, "SubscriptionDeferralInfo": { "id": "SubscriptionDeferralInfo", "description": "A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry time.", "type": "object", "properties": { "expectedExpiryTimeMillis": { "description": "The expected expiry time for the subscription. If the current expiry time for the subscription is not the value specified here, the deferral will not occur.", "type": "string", "format": "int64" }, "desiredExpiryTimeMillis": { "description": "The desired next expiry time to assign to the subscription, in milliseconds since the Epoch. The given time must be later/greater than the current expiry time for the subscription.", "type": "string", "format": "int64" } } }, "SubscriptionPurchasesDeferResponse": { "id": "SubscriptionPurchasesDeferResponse", "description": "Response for the purchases.subscriptions.defer API.", "type": "object", "properties": { "newExpiryTimeMillis": { "description": "The new expiry time for the subscription in milliseconds since the Epoch.", "type": "string", "format": "int64" } } }, "SubscriptionPurchasesAcknowledgeRequest": { "id": "SubscriptionPurchasesAcknowledgeRequest", "description": "Request for the purchases.subscriptions.acknowledge API.", "type": "object", "properties": { "developerPayload": { "description": "Payload to attach to the purchase.", "type": "string" } } }, "SubscriptionPurchaseV2": { "id": "SubscriptionPurchaseV2", "description": "Indicates the status of a user's subscription purchase.", "type": "object", "properties": { "kind": { "description": "This kind represents a SubscriptionPurchaseV2 object in the androidpublisher service.", "type": "string" }, "startTime": { "description": "Time at which the subscription was granted. Not set for pending subscriptions (subscription was created but awaiting payment during signup).", "type": "string", "format": "google-datetime" }, "regionCode": { "description": "ISO 3166-1 alpha-2 billing country/region code of the user at the time the subscription was granted.", "type": "string" }, "subscriptionState": { "description": "The current state of the subscription.", "type": "string", "enumDescriptions": [ "Unspecified subscription state.", "Subscription was created but awaiting payment during signup. In this state, all items are awaiting payment.", "Subscription is active. - (1) If the subscription is an auto renewing plan, at least one item is auto_renew_enabled and not expired. - (2) If the subscription is a prepaid plan, at least one item is not expired.", "Subscription is paused. The state is only available when the subscription is an auto renewing plan. In this state, all items are in paused state.", "Subscription is in grace period. The state is only available when the subscription is an auto renewing plan. In this state, all items are in grace period.", "Subscription is on hold (suspended). The state is only available when the subscription is an auto renewing plan. In this state, all items are on hold.", "Subscription is canceled but not expired yet. The state is only available when the subscription is an auto renewing plan. All items have auto_renew_enabled set to false.", "Subscription is expired. All items have expiry_time in the past." ], "enum": [ "SUBSCRIPTION_STATE_UNSPECIFIED", "SUBSCRIPTION_STATE_PENDING", "SUBSCRIPTION_STATE_ACTIVE", "SUBSCRIPTION_STATE_PAUSED", "SUBSCRIPTION_STATE_IN_GRACE_PERIOD", "SUBSCRIPTION_STATE_ON_HOLD", "SUBSCRIPTION_STATE_CANCELED", "SUBSCRIPTION_STATE_EXPIRED" ] }, "latestOrderId": { "description": "The order id of the latest order associated with the purchase of the subscription. For autoRenewing subscription, this is the order id of signup order if it is not renewed yet, or the last recurring order id (success, pending, or declined order). For prepaid subscription, this is the order id associated with the queried purchase token.", "type": "string" }, "linkedPurchaseToken": { "description": "The purchase token of the old subscription if this subscription is one of the following: * Re-signup of a canceled but non-lapsed subscription * Upgrade/downgrade from a previous subscription. * Convert from prepaid to auto renewing subscription. * Convert from an auto renewing subscription to prepaid. * Topup a prepaid subscription.", "type": "string" }, "pausedStateContext": { "description": "Additional context around paused subscriptions. Only present if the subscription currently has subscription_state SUBSCRIPTION_STATE_PAUSED.", "$ref": "PausedStateContext" }, "canceledStateContext": { "description": "Additional context around canceled subscriptions. Only present if the subscription currently has subscription_state SUBSCRIPTION_STATE_CANCELED.", "$ref": "CanceledStateContext" }, "testPurchase": { "description": "Only present if this subscription purchase is a test purchase.", "$ref": "TestPurchase" }, "acknowledgementState": { "description": "The acknowledgement state of the subscription.", "type": "string", "enumDescriptions": [ "Unspecified acknowledgement state.", "The subscription is not acknowledged yet.", "The subscription is acknowledged." ], "enum": [ "ACKNOWLEDGEMENT_STATE_UNSPECIFIED", "ACKNOWLEDGEMENT_STATE_PENDING", "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED" ] }, "externalAccountIdentifiers": { "description": "User account identifier in the third-party service.", "$ref": "ExternalAccountIdentifiers" }, "subscribeWithGoogleInfo": { "description": "User profile associated with purchases made with 'Subscribe with Google'.", "$ref": "SubscribeWithGoogleInfo" }, "lineItems": { "description": "Item-level info for a subscription purchase. The items in the same purchase should be either all with AutoRenewingPlan or all with PrepaidPlan.", "type": "array", "items": { "$ref": "SubscriptionPurchaseLineItem" } } } }, "PausedStateContext": { "id": "PausedStateContext", "description": "Information specific to a subscription in paused state.", "type": "object", "properties": { "autoResumeTime": { "description": "Time at which the subscription will be automatically resumed.", "type": "string", "format": "google-datetime" } } }, "CanceledStateContext": { "id": "CanceledStateContext", "description": "Information specific to a subscription in canceled state.", "type": "object", "properties": { "userInitiatedCancellation": { "description": "Subscription was canceled by user.", "$ref": "UserInitiatedCancellation" }, "systemInitiatedCancellation": { "description": "Subscription was canceled by the system, for example because of a billing problem.", "$ref": "SystemInitiatedCancellation" }, "developerInitiatedCancellation": { "description": "Subscription was canceled by the developer.", "$ref": "DeveloperInitiatedCancellation" }, "replacementCancellation": { "description": "Subscription was replaced by a new subscription.", "$ref": "ReplacementCancellation" } } }, "UserInitiatedCancellation": { "id": "UserInitiatedCancellation", "description": "Information specific to cancellations initiated by users.", "type": "object", "properties": { "cancelSurveyResult": { "description": "Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).", "$ref": "CancelSurveyResult" }, "cancelTime": { "description": "The time at which the subscription was canceled by the user. The user might still have access to the subscription after this time. Use line_items.expiry_time to determine if a user still has access.", "type": "string", "format": "google-datetime" } } }, "CancelSurveyResult": { "id": "CancelSurveyResult", "description": "Result of the cancel survey when the subscription was canceled by the user.", "type": "object", "properties": { "reason": { "description": "The reason the user selected in the cancel survey.", "type": "string", "enumDescriptions": [ "Unspecified cancel survey reason.", "Not enough usage of the subscription.", "Technical issues while using the app.", "Cost related issues.", "The user found a better app.", "Other reasons." ], "enum": [ "CANCEL_SURVEY_REASON_UNSPECIFIED", "CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGE", "CANCEL_SURVEY_REASON_TECHNICAL_ISSUES", "CANCEL_SURVEY_REASON_COST_RELATED", "CANCEL_SURVEY_REASON_FOUND_BETTER_APP", "CANCEL_SURVEY_REASON_OTHERS" ] }, "reasonUserInput": { "description": "Only set for CANCEL_SURVEY_REASON_OTHERS. This is the user's freeform response to the survey.", "type": "string" } } }, "SystemInitiatedCancellation": { "id": "SystemInitiatedCancellation", "description": "Information specific to cancellations initiated by Google system.", "type": "object", "properties": {} }, "DeveloperInitiatedCancellation": { "id": "DeveloperInitiatedCancellation", "description": "Information specific to cancellations initiated by developers.", "type": "object", "properties": {} }, "ReplacementCancellation": { "id": "ReplacementCancellation", "description": "Information specific to cancellations caused by subscription replacement.", "type": "object", "properties": {} }, "TestPurchase": { "id": "TestPurchase", "description": "Whether this subscription purchase is a test purchase.", "type": "object", "properties": {} }, "ExternalAccountIdentifiers": { "id": "ExternalAccountIdentifiers", "description": "User account identifier in the third-party service.", "type": "object", "properties": { "externalAccountId": { "description": "User account identifier in the third-party service. Only present if account linking happened as part of the subscription purchase flow.", "type": "string" }, "obfuscatedExternalAccountId": { "description": "An obfuscated version of the id that is uniquely associated with the user's account in your app. Present for the following purchases: * If account linking happened as part of the subscription purchase flow. * It was specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.", "type": "string" }, "obfuscatedExternalProfileId": { "description": "An obfuscated version of the id that is uniquely associated with the user's profile in your app. Only present if specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.", "type": "string" } } }, "SubscribeWithGoogleInfo": { "id": "SubscribeWithGoogleInfo", "description": "Information associated with purchases made with 'Subscribe with Google'.", "type": "object", "properties": { "profileId": { "description": "The Google profile id of the user when the subscription was purchased.", "type": "string" }, "profileName": { "description": "The profile name of the user when the subscription was purchased.", "type": "string" }, "emailAddress": { "description": "The email address of the user when the subscription was purchased.", "type": "string" }, "givenName": { "description": "The given name of the user when the subscription was purchased.", "type": "string" }, "familyName": { "description": "The family name of the user when the subscription was purchased.", "type": "string" } } }, "SubscriptionPurchaseLineItem": { "id": "SubscriptionPurchaseLineItem", "description": "Item-level info for a subscription purchase.", "type": "object", "properties": { "productId": { "description": "The purchased product ID (for example, 'monthly001').", "type": "string" }, "expiryTime": { "description": "Time at which the subscription expired or will expire unless the access is extended (ex. renews).", "type": "string", "format": "google-datetime" }, "autoRenewingPlan": { "description": "The item is auto renewing.", "$ref": "AutoRenewingPlan" }, "prepaidPlan": { "description": "The item is prepaid.", "$ref": "PrepaidPlan" }, "offerDetails": { "description": "The offer details for this item.", "$ref": "OfferDetails" }, "deferredItemReplacement": { "description": "Information for deferred item replacement.", "$ref": "DeferredItemReplacement" } } }, "AutoRenewingPlan": { "id": "AutoRenewingPlan", "description": "Information related to an auto renewing plan.", "type": "object", "properties": { "autoRenewEnabled": { "description": "If the subscription is currently set to auto-renew, e.g. the user has not canceled the subscription", "type": "boolean" }, "priceChangeDetails": { "description": "The information of the last price change for the item since subscription signup.", "$ref": "SubscriptionItemPriceChangeDetails" } } }, "SubscriptionItemPriceChangeDetails": { "id": "SubscriptionItemPriceChangeDetails", "description": "Price change related information of a subscription item.", "type": "object", "properties": { "newPrice": { "description": "New recurring price for the subscription item.", "$ref": "Money" }, "priceChangeMode": { "description": "Price change mode specifies how the subscription item price is changing.", "type": "string", "enumDescriptions": [ "Price change mode unspecified. This value should never be set.", "If the subscription price is decreasing.", "If the subscription price is increasing and the user needs to accept it.", "If the subscription price is increasing with opt out mode." ], "enum": [ "PRICE_CHANGE_MODE_UNSPECIFIED", "PRICE_DECREASE", "PRICE_INCREASE", "OPT_OUT_PRICE_INCREASE" ] }, "priceChangeState": { "description": "State the price change is currently in.", "type": "string", "enumDescriptions": [ "Price change state unspecified. This value should not be used.", "Waiting for the user to agree for the price change.", "The price change is confirmed to happen for the user.", "The price change is applied, i.e. the user has started being charged the new price." ], "enum": [ "PRICE_CHANGE_STATE_UNSPECIFIED", "OUTSTANDING", "CONFIRMED", "APPLIED" ] }, "expectedNewPriceChargeTime": { "description": "The renewal time at which the price change will become effective for the user. This is subject to change(to a future time) due to cases where the renewal time shifts like pause. This field is only populated if the price change has not taken effect.", "type": "string", "format": "google-datetime" } } }, "PrepaidPlan": { "id": "PrepaidPlan", "description": "Information related to a prepaid plan.", "type": "object", "properties": { "allowExtendAfterTime": { "description": "If present, this is the time after which top up purchases are allowed for the prepaid plan. Will not be present for expired prepaid plans.", "type": "string", "format": "google-datetime" } } }, "OfferDetails": { "id": "OfferDetails", "description": "Offer details information related to a purchase line item.", "type": "object", "properties": { "basePlanId": { "description": "The base plan ID. Present for all base plan and offers.", "type": "string" }, "offerId": { "description": "The offer ID. Only present for discounted offers.", "type": "string" }, "offerTags": { "description": "The latest offer tags associated with the offer. It includes tags inherited from the base plan.", "type": "array", "items": { "type": "string" } } } }, "DeferredItemReplacement": { "id": "DeferredItemReplacement", "description": "Information related to deferred item replacement.", "type": "object", "properties": { "productId": { "description": "The product_id going to replace the existing product_id.", "type": "string" } } }, "RevokeSubscriptionPurchaseRequest": { "id": "RevokeSubscriptionPurchaseRequest", "description": "Request for the purchases.subscriptionsv2.revoke API.", "type": "object", "properties": { "revocationContext": { "description": "Required. Additional details around the subscription revocation.", "$ref": "RevocationContext" } } }, "RevocationContext": { "id": "RevocationContext", "description": "Revocation context of the purchases.subscriptionsv2.revoke API.", "type": "object", "properties": { "proratedRefund": { "description": "Optional. Used when users should be refunded a prorated amount they paid for their subscription based on the amount of time remaining in a subscription.", "$ref": "RevocationContextProratedRefund" } } }, "RevocationContextProratedRefund": { "id": "RevocationContextProratedRefund", "description": "Used to determine if the refund type in the RevocationContext is a prorated refund.", "type": "object", "properties": {} }, "RevokeSubscriptionPurchaseResponse": { "id": "RevokeSubscriptionPurchaseResponse", "description": "Response for the purchases.subscriptionsv2.revoke API.", "type": "object", "properties": {} }, "Subscription": { "id": "Subscription", "description": "A single subscription for an app.", "type": "object", "properties": { "packageName": { "description": "Immutable. Package name of the parent app.", "type": "string" }, "productId": { "description": "Immutable. Unique product ID of the product. Unique within the parent app. Product IDs must be composed of lower-case letters (a-z), numbers (0-9), underscores (_) and dots (.). It must start with a lower-case letter or number, and be between 1 and 40 (inclusive) characters in length.", "type": "string" }, "basePlans": { "description": "The set of base plans for this subscription. Represents the prices and duration of the subscription if no other offers apply.", "type": "array", "items": { "$ref": "BasePlan" } }, "listings": { "description": "Required. List of localized listings for this subscription. Must contain at least an entry for the default language of the parent app.", "type": "array", "items": { "$ref": "SubscriptionListing" } }, "archived": { "description": "Output only. Deprecated: subscription archiving is not supported.", "readOnly": true, "deprecated": true, "type": "boolean" }, "taxAndComplianceSettings": { "description": "Details about taxes and legal compliance.", "$ref": "SubscriptionTaxAndComplianceSettings" } } }, "BasePlan": { "id": "BasePlan", "description": "A single base plan for a subscription.", "type": "object", "properties": { "basePlanId": { "description": "Required. Immutable. The unique identifier of this base plan. Must be unique within the subscription, and conform with RFC-1034. That is, this ID can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 63 characters.", "type": "string" }, "state": { "description": "Output only. The state of the base plan, i.e. whether it's active. Draft and inactive base plans can be activated or deleted. Active base plans can be made inactive. Inactive base plans can be canceled. This field cannot be changed by updating the resource. Use the dedicated endpoints instead.", "readOnly": true, "type": "string", "enumDescriptions": [ "Unspecified state.", "The base plan is currently in a draft state, and hasn't been activated. It can be safely deleted at this point.", "The base plan is active and available for new subscribers.", "The base plan is inactive and only available for existing subscribers." ], "enum": [ "STATE_UNSPECIFIED", "DRAFT", "ACTIVE", "INACTIVE" ] }, "autoRenewingBasePlanType": { "description": "Set when the base plan automatically renews at a regular interval.", "$ref": "AutoRenewingBasePlanType" }, "prepaidBasePlanType": { "description": "Set when the base plan does not automatically renew at the end of the billing period.", "$ref": "PrepaidBasePlanType" }, "regionalConfigs": { "description": "Region-specific information for this base plan.", "type": "array", "items": { "$ref": "RegionalBasePlanConfig" } }, "offerTags": { "description": "List of up to 20 custom tags specified for this base plan, and returned to the app through the billing library. Subscription offers for this base plan will also receive these offer tags in the billing library.", "type": "array", "items": { "$ref": "OfferTag" } }, "otherRegionsConfig": { "description": "Pricing information for any new locations Play may launch in the future. If omitted, the BasePlan will not be automatically available any new locations Play may launch in the future.", "$ref": "OtherRegionsBasePlanConfig" } } }, "AutoRenewingBasePlanType": { "id": "AutoRenewingBasePlanType", "description": "Represents a base plan that automatically renews at the end of its subscription period.", "type": "object", "properties": { "billingPeriodDuration": { "description": "Required. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center.", "type": "string" }, "gracePeriodDuration": { "description": "Grace period of the subscription, specified in ISO 8601 format. Acceptable values are P0D (zero days), P3D (3 days), P7D (7 days), P14D (14 days), and P30D (30 days). If not specified, a default value will be used based on the recurring period duration.", "type": "string" }, "accountHoldDuration": { "description": "Optional. Account hold period of the subscription, specified in ISO 8601 format. Acceptable values must be in DAYS and in the range P0D (zero days) to P30D (30 days). If not specified, the default value is P30D (30 days).", "type": "string" }, "resubscribeState": { "description": "Whether users should be able to resubscribe to this base plan in Google Play surfaces. Defaults to RESUBSCRIBE_STATE_ACTIVE if not specified.", "type": "string", "enumDescriptions": [ "Unspecified state.", "Resubscribe is active.", "Resubscribe is inactive." ], "enum": [ "RESUBSCRIBE_STATE_UNSPECIFIED", "RESUBSCRIBE_STATE_ACTIVE", "RESUBSCRIBE_STATE_INACTIVE" ] }, "prorationMode": { "description": "The proration mode for the base plan determines what happens when a user switches to this plan from another base plan. If unspecified, defaults to CHARGE_ON_NEXT_BILLING_DATE.", "type": "string", "enumDescriptions": [ "Unspecified mode.", "Users will be charged for their new base plan at the end of their current billing period.", "Users will be charged for their new base plan immediately and in full. Any remaining period of their existing subscription will be used to extend the duration of the new billing plan." ], "enum": [ "SUBSCRIPTION_PRORATION_MODE_UNSPECIFIED", "SUBSCRIPTION_PRORATION_MODE_CHARGE_ON_NEXT_BILLING_DATE", "SUBSCRIPTION_PRORATION_MODE_CHARGE_FULL_PRICE_IMMEDIATELY" ] }, "legacyCompatible": { "description": "Whether the renewing base plan is backward compatible. The backward compatible base plan is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one renewing base plan can be marked as legacy compatible for a given subscription.", "type": "boolean" }, "legacyCompatibleSubscriptionOfferId": { "description": "Subscription offer id which is legacy compatible. The backward compatible subscription offer is returned by the Google Play Billing Library deprecated method querySkuDetailsAsync(). Only one subscription offer can be marked as legacy compatible for a given renewing base plan. To have no Subscription offer as legacy compatible set this field as empty string.", "type": "string" } } }, "PrepaidBasePlanType": { "id": "PrepaidBasePlanType", "description": "Represents a base plan that does not automatically renew at the end of the base plan, and must be manually renewed by the user.", "type": "object", "properties": { "billingPeriodDuration": { "description": "Required. Subscription period, specified in ISO 8601 format. For a list of acceptable billing periods, refer to the help center.", "type": "string" }, "timeExtension": { "description": "Whether users should be able to extend this prepaid base plan in Google Play surfaces. Defaults to TIME_EXTENSION_ACTIVE if not specified.", "type": "string", "enumDescriptions": [ "Unspecified state.", "Time extension is active. Users are allowed to top-up or extend their prepaid plan.", "Time extension is inactive. Users cannot top-up or extend their prepaid plan." ], "enum": [ "TIME_EXTENSION_UNSPECIFIED", "TIME_EXTENSION_ACTIVE", "TIME_EXTENSION_INACTIVE" ] } } }, "RegionalBasePlanConfig": { "id": "RegionalBasePlanConfig", "description": "Configuration for a base plan specific to a region.", "type": "object", "properties": { "regionCode": { "description": "Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. \"US\".", "type": "string" }, "newSubscriberAvailability": { "description": "Whether the base plan in the specified region is available for new subscribers. Existing subscribers will not have their subscription canceled if this value is set to false. If not specified, this will default to false.", "type": "boolean" }, "price": { "description": "The price of the base plan in the specified region. Must be set if the base plan is available to new subscribers. Must be set in the currency that is linked to the specified region.", "$ref": "Money" } } }, "OfferTag": { "id": "OfferTag", "description": "Represents a custom tag specified for base plans and subscription offers.", "type": "object", "properties": { "tag": { "description": "Must conform with RFC-1034. That is, this string can only contain lower-case letters (a-z), numbers (0-9), and hyphens (-), and be at most 20 characters.", "type": "string" } } }, "OtherRegionsBasePlanConfig": { "id": "OtherRegionsBasePlanConfig", "description": "Pricing information for any new locations Play may launch in.", "type": "object", "properties": { "usdPrice": { "description": "Required. Price in USD to use for any new locations Play may launch in.", "$ref": "Money" }, "eurPrice": { "description": "Required. Price in EUR to use for any new locations Play may launch in.", "$ref": "Money" }, "newSubscriberAvailability": { "description": "Whether the base plan is available for new subscribers in any new locations Play may launch in. If not specified, this will default to false.", "type": "boolean" } } }, "SubscriptionListing": { "id": "SubscriptionListing", "description": "The consumer-visible metadata of a subscription.", "type": "object", "properties": { "languageCode": { "description": "Required. The language of this listing, as defined by BCP-47, e.g. \"en-US\".", "type": "string" }, "title": { "description": "Required. The title of this subscription in the language of this listing. Plain text.", "type": "string" }, "benefits": { "description": "A list of benefits shown to the user on platforms such as the Play Store and in restoration flows in the language of this listing. Plain text. Ordered list of at most four benefits.", "type": "array", "items": { "type": "string" } }, "description": { "description": "The description of this subscription in the language of this listing. Maximum length - 80 characters. Plain text.", "type": "string" } } }, "BatchGetSubscriptionsResponse": { "id": "BatchGetSubscriptionsResponse", "description": "Response message for BatchGetSubscriptions endpoint.", "type": "object", "properties": { "subscriptions": { "description": "The list of requested subscriptions, in the same order as the request.", "type": "array", "items": { "$ref": "Subscription" } } } }, "ListSubscriptionsResponse": { "id": "ListSubscriptionsResponse", "description": "Response message for ListSubscriptions.", "type": "object", "properties": { "subscriptions": { "description": "The subscriptions from the specified app.", "type": "array", "items": { "$ref": "Subscription" } }, "nextPageToken": { "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", "type": "string" } } }, "BatchUpdateSubscriptionsRequest": { "id": "BatchUpdateSubscriptionsRequest", "description": "Request message for BatchUpdateSubscription.", "type": "object", "properties": { "requests": { "description": "Required. A list of update requests of up to 100 elements. All requests must update different subscriptions.", "type": "array", "items": { "$ref": "UpdateSubscriptionRequest" } } } }, "UpdateSubscriptionRequest": { "id": "UpdateSubscriptionRequest", "description": "Request message for UpdateSubscription.", "type": "object", "properties": { "subscription": { "description": "Required. The subscription to update.", "$ref": "Subscription" }, "updateMask": { "description": "Required. The list of fields to be updated.", "type": "string", "format": "google-fieldmask" }, "regionsVersion": { "description": "Required. The version of the available regions being used for the subscription.", "$ref": "RegionsVersion" }, "allowMissing": { "description": "Optional. If set to true, and the subscription with the given package_name and product_id doesn't exist, the subscription will be created. If a new subscription is created, update_mask is ignored.", "type": "boolean" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "RegionsVersion": { "id": "RegionsVersion", "description": "The version of the available regions being used for the specified resource.", "type": "object", "properties": { "version": { "description": "Required. A string representing the version of available regions being used for the specified resource. Regional prices for the resource have to be specified according to the information published in [this article](https://support.google.com/googleplay/android-developer/answer/10532353). Each time the supported locations substantially change, the version will be incremented. Using this field will ensure that creating and updating the resource with an older region's version and set of regional prices and currencies will succeed even though a new version is available. The latest version is 2022/02.", "type": "string" } } }, "BatchUpdateSubscriptionsResponse": { "id": "BatchUpdateSubscriptionsResponse", "description": "Response message for BatchUpdateSubscription.", "type": "object", "properties": { "subscriptions": { "description": "The updated subscriptions list.", "type": "array", "items": { "$ref": "Subscription" } } } }, "ArchiveSubscriptionRequest": { "id": "ArchiveSubscriptionRequest", "deprecated": true, "description": "Deprecated: subscription archiving is not supported.", "type": "object", "properties": {} }, "ActivateBasePlanRequest": { "id": "ActivateBasePlanRequest", "description": "Request message for ActivateBasePlan.", "type": "object", "properties": { "packageName": { "description": "Required. The parent app (package name) of the base plan to activate.", "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the base plan to activate.", "type": "string" }, "basePlanId": { "description": "Required. The unique base plan ID of the base plan to activate.", "type": "string" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "DeactivateBasePlanRequest": { "id": "DeactivateBasePlanRequest", "description": "Request message for DeactivateBasePlan.", "type": "object", "properties": { "packageName": { "description": "Required. The parent app (package name) of the base plan to deactivate.", "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the base plan to deactivate.", "type": "string" }, "basePlanId": { "description": "Required. The unique base plan ID of the base plan to deactivate.", "type": "string" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "BatchUpdateBasePlanStatesRequest": { "id": "BatchUpdateBasePlanStatesRequest", "description": "Request message for BatchUpdateBasePlanStates.", "type": "object", "properties": { "requests": { "description": "Required. The update request list of up to 100 elements. All requests must update different base plans.", "type": "array", "items": { "$ref": "UpdateBasePlanStateRequest" } } } }, "UpdateBasePlanStateRequest": { "id": "UpdateBasePlanStateRequest", "description": "Request message to update the state of a subscription base plan.", "type": "object", "properties": { "activateBasePlanRequest": { "description": "Activates a base plan. Once activated, base plans will be available to new subscribers.", "$ref": "ActivateBasePlanRequest" }, "deactivateBasePlanRequest": { "description": "Deactivates a base plan. Once deactivated, the base plan will become unavailable to new subscribers, but existing subscribers will maintain their subscription", "$ref": "DeactivateBasePlanRequest" } } }, "BatchUpdateBasePlanStatesResponse": { "id": "BatchUpdateBasePlanStatesResponse", "description": "Response message for BatchUpdateBasePlanStates.", "type": "object", "properties": { "subscriptions": { "description": "The list of updated subscriptions. This list will match the requests one to one, in the same order.", "type": "array", "items": { "$ref": "Subscription" } } } }, "MigrateBasePlanPricesRequest": { "id": "MigrateBasePlanPricesRequest", "description": "Request message for MigrateBasePlanPrices.", "type": "object", "properties": { "packageName": { "description": "Required. Package name of the parent app. Must be equal to the package_name field on the Subscription resource.", "type": "string" }, "productId": { "description": "Required. The ID of the subscription to update. Must be equal to the product_id field on the Subscription resource.", "type": "string" }, "basePlanId": { "description": "Required. The unique base plan ID of the base plan to update prices on.", "type": "string" }, "regionalPriceMigrations": { "description": "Required. The regional prices to update.", "type": "array", "items": { "$ref": "RegionalPriceMigrationConfig" } }, "regionsVersion": { "description": "Required. The version of the available regions being used for the regional_price_migrations.", "$ref": "RegionsVersion" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "RegionalPriceMigrationConfig": { "id": "RegionalPriceMigrationConfig", "description": "Configuration for a price migration.", "type": "object", "properties": { "regionCode": { "description": "Required. Region code this configuration applies to, as defined by ISO 3166-2, e.g. \"US\".", "type": "string" }, "oldestAllowedPriceVersionTime": { "description": "Required. The cutoff time for historical prices that subscribers can remain paying. Subscribers on prices which were available at this cutoff time or later will stay on their existing price. Subscribers on older prices will be migrated to the currently-offered price. The migrated subscribers will receive a notification that they will be paying a different price. Subscribers who do not agree to the new price will have their subscription ended at the next renewal.", "type": "string", "format": "google-datetime" }, "priceIncreaseType": { "description": "Optional. The behavior the caller wants users to see when there is a price increase during migration. If left unset, the behavior defaults to PRICE_INCREASE_TYPE_OPT_IN. Note that the first opt-out price increase migration for each app must be initiated in Play Console.", "type": "string", "enumDescriptions": [ "Unspecified state.", "Price increase will be presented to users on an opt-in basis.", "Price increase will be presented to users on an opt-out basis." ], "enum": [ "PRICE_INCREASE_TYPE_UNSPECIFIED", "PRICE_INCREASE_TYPE_OPT_IN", "PRICE_INCREASE_TYPE_OPT_OUT" ] } } }, "MigrateBasePlanPricesResponse": { "id": "MigrateBasePlanPricesResponse", "description": "Response message for MigrateBasePlanPrices.", "type": "object", "properties": {} }, "BatchMigrateBasePlanPricesRequest": { "id": "BatchMigrateBasePlanPricesRequest", "description": "Request message for BatchMigrateBasePlanPrices.", "type": "object", "properties": { "requests": { "description": "Required. Up to 100 price migration requests. All requests must update different base plans.", "type": "array", "items": { "$ref": "MigrateBasePlanPricesRequest" } } } }, "BatchMigrateBasePlanPricesResponse": { "id": "BatchMigrateBasePlanPricesResponse", "description": "Response message for BatchMigrateBasePlanPrices.", "type": "object", "properties": { "responses": { "description": "Contains one response per requested price migration, in the same order as the request.", "type": "array", "items": { "$ref": "MigrateBasePlanPricesResponse" } } } }, "SubscriptionOffer": { "id": "SubscriptionOffer", "description": "A single, temporary offer", "type": "object", "properties": { "packageName": { "description": "Required. Immutable. The package name of the app the parent subscription belongs to.", "type": "string" }, "productId": { "description": "Required. Immutable. The ID of the parent subscription this offer belongs to.", "type": "string" }, "basePlanId": { "description": "Required. Immutable. The ID of the base plan to which this offer is an extension.", "type": "string" }, "offerId": { "description": "Required. Immutable. Unique ID of this subscription offer. Must be unique within the base plan.", "type": "string" }, "state": { "description": "Output only. The current state of this offer. Can be changed using Activate and Deactivate actions. NB: the base plan state supersedes this state, so an active offer may not be available if the base plan is not active.", "readOnly": true, "type": "string", "enumDescriptions": [ "Default value, should never be used.", "The subscription offer is not and has never been available to users.", "The subscription offer is available to new and existing users.", "The subscription offer is not available to new users. Existing users retain access." ], "enum": [ "STATE_UNSPECIFIED", "DRAFT", "ACTIVE", "INACTIVE" ] }, "phases": { "description": "Required. The phases of this subscription offer. Must contain at least one entry, and may contain at most five. Users will always receive all these phases in the specified order. Phases may not be added, removed, or reordered after initial creation.", "type": "array", "items": { "$ref": "SubscriptionOfferPhase" } }, "targeting": { "description": "The requirements that users need to fulfil to be eligible for this offer. Represents the requirements that Play will evaluate to decide whether an offer should be returned. Developers may further filter these offers themselves.", "$ref": "SubscriptionOfferTargeting" }, "regionalConfigs": { "description": "Required. The region-specific configuration of this offer. Must contain at least one entry.", "type": "array", "items": { "$ref": "RegionalSubscriptionOfferConfig" } }, "otherRegionsConfig": { "description": "The configuration for any new locations Play may launch in the future.", "$ref": "OtherRegionsSubscriptionOfferConfig" }, "offerTags": { "description": "List of up to 20 custom tags specified for this offer, and returned to the app through the billing library.", "type": "array", "items": { "$ref": "OfferTag" } } } }, "SubscriptionOfferPhase": { "id": "SubscriptionOfferPhase", "description": "A single phase of a subscription offer.", "type": "object", "properties": { "recurrenceCount": { "description": "Required. The number of times this phase repeats. If this offer phase is not free, each recurrence charges the user the price of this offer phase.", "type": "integer", "format": "int32" }, "duration": { "description": "Required. The duration of a single recurrence of this phase. Specified in ISO 8601 format.", "type": "string" }, "regionalConfigs": { "description": "Required. The region-specific configuration of this offer phase. This list must contain exactly one entry for each region for which the subscription offer has a regional config.", "type": "array", "items": { "$ref": "RegionalSubscriptionOfferPhaseConfig" } }, "otherRegionsConfig": { "description": "Pricing information for any new locations Play may launch in.", "$ref": "OtherRegionsSubscriptionOfferPhaseConfig" } } }, "RegionalSubscriptionOfferPhaseConfig": { "id": "RegionalSubscriptionOfferPhaseConfig", "description": "Configuration for a single phase of a subscription offer in a single region.", "type": "object", "properties": { "regionCode": { "description": "Required. Immutable. The region to which this config applies.", "type": "string" }, "price": { "description": "The absolute price the user pays for this offer phase. The price must not be smaller than the minimum price allowed for this region.", "$ref": "Money" }, "relativeDiscount": { "description": "The fraction of the base plan price prorated over the phase duration that the user pays for this offer phase. For example, if the base plan price for this region is $12 for a period of 1 year, then a 50% discount for a phase of a duration of 3 months would correspond to a price of $1.50. The discount must be specified as a fraction strictly larger than 0 and strictly smaller than 1. The resulting price will be rounded to the nearest billable unit (e.g. cents for USD). The relative discount is considered invalid if the discounted price ends up being smaller than the minimum price allowed in this region.", "type": "number", "format": "double" }, "absoluteDiscount": { "description": "The absolute amount of money subtracted from the base plan price prorated over the phase duration that the user pays for this offer phase. For example, if the base plan price for this region is $12 for a period of 1 year, then a $1 absolute discount for a phase of a duration of 3 months would correspond to a price of $2. The resulting price may not be smaller than the minimum price allowed for this region.", "$ref": "Money" }, "free": { "description": "Set to specify this offer is free to obtain.", "$ref": "RegionalSubscriptionOfferPhaseFreePriceOverride" } } }, "RegionalSubscriptionOfferPhaseFreePriceOverride": { "id": "RegionalSubscriptionOfferPhaseFreePriceOverride", "description": "Represents the free price override configuration for a single phase of a subscription offer", "type": "object", "properties": {} }, "OtherRegionsSubscriptionOfferPhaseConfig": { "id": "OtherRegionsSubscriptionOfferPhaseConfig", "description": "Configuration for any new locations Play may launch in for a single offer phase.", "type": "object", "properties": { "otherRegionsPrices": { "description": "The absolute price the user pays for this offer phase. The price must not be smaller than the minimum price allowed for any new locations Play may launch in.", "$ref": "OtherRegionsSubscriptionOfferPhasePrices" }, "relativeDiscount": { "description": "The fraction of the base plan price prorated over the phase duration that the user pays for this offer phase. For example, if the base plan price for this region is $12 for a period of 1 year, then a 50% discount for a phase of a duration of 3 months would correspond to a price of $1.50. The discount must be specified as a fraction strictly larger than 0 and strictly smaller than 1. The resulting price will be rounded to the nearest billable unit (e.g. cents for USD). The relative discount is considered invalid if the discounted price ends up being smaller than the minimum price allowed in any new locations Play may launch in.", "type": "number", "format": "double" }, "absoluteDiscounts": { "description": "The absolute amount of money subtracted from the base plan price prorated over the phase duration that the user pays for this offer phase. For example, if the base plan price for this region is $12 for a period of 1 year, then a $1 absolute discount for a phase of a duration of 3 months would correspond to a price of $2. The resulting price may not be smaller than the minimum price allowed for any new locations Play may launch in.", "$ref": "OtherRegionsSubscriptionOfferPhasePrices" }, "free": { "description": "Set to specify this offer is free to obtain.", "$ref": "OtherRegionsSubscriptionOfferPhaseFreePriceOverride" } } }, "OtherRegionsSubscriptionOfferPhasePrices": { "id": "OtherRegionsSubscriptionOfferPhasePrices", "description": "Pricing information for any new locations Play may launch in.", "type": "object", "properties": { "usdPrice": { "description": "Required. Price in USD to use for any new locations Play may launch in.", "$ref": "Money" }, "eurPrice": { "description": "Required. Price in EUR to use for any new locations Play may launch in.", "$ref": "Money" } } }, "OtherRegionsSubscriptionOfferPhaseFreePriceOverride": { "id": "OtherRegionsSubscriptionOfferPhaseFreePriceOverride", "description": "Represents the free price override configuration for any new locations Play may launch for a single offer phase.", "type": "object", "properties": {} }, "SubscriptionOfferTargeting": { "id": "SubscriptionOfferTargeting", "description": "Defines the rule a user needs to satisfy to receive this offer.", "type": "object", "properties": { "acquisitionRule": { "description": "Offer targeting rule for new user acquisition.", "$ref": "AcquisitionTargetingRule" }, "upgradeRule": { "description": "Offer targeting rule for upgrading users' existing plans.", "$ref": "UpgradeTargetingRule" } } }, "AcquisitionTargetingRule": { "id": "AcquisitionTargetingRule", "description": "Represents a targeting rule of the form: User never had {scope} before.", "type": "object", "properties": { "scope": { "description": "Required. The scope of subscriptions this rule considers. Only allows \"this subscription\" and \"any subscription in app\".", "$ref": "TargetingRuleScope" } } }, "TargetingRuleScope": { "id": "TargetingRuleScope", "description": "Defines the scope of subscriptions which a targeting rule can match to target offers to users based on past or current entitlement.", "type": "object", "properties": { "thisSubscription": { "description": "The scope of the current targeting rule is the subscription in which this offer is defined.", "$ref": "TargetingRuleScopeThisSubscription" }, "anySubscriptionInApp": { "description": "The scope of the current targeting rule is any subscription in the parent app.", "$ref": "TargetingRuleScopeAnySubscriptionInApp" }, "specificSubscriptionInApp": { "description": "The scope of the current targeting rule is the subscription with the specified subscription ID. Must be a subscription within the same parent app.", "type": "string" } } }, "TargetingRuleScopeThisSubscription": { "id": "TargetingRuleScopeThisSubscription", "description": "Represents the targeting rule scope corresponding to the subscriptions in which this offer is defined.", "type": "object", "properties": {} }, "TargetingRuleScopeAnySubscriptionInApp": { "id": "TargetingRuleScopeAnySubscriptionInApp", "description": "Represents the targeting rule scope corresponding to any subscription in the parent app.", "type": "object", "properties": {} }, "UpgradeTargetingRule": { "id": "UpgradeTargetingRule", "description": "Represents a targeting rule of the form: User currently has {scope} [with billing period {billing_period}].", "type": "object", "properties": { "oncePerUser": { "description": "Limit this offer to only once per user. If set to true, a user can never be eligible for this offer again if they ever subscribed to this offer.", "type": "boolean" }, "scope": { "description": "Required. The scope of subscriptions this rule considers. Only allows \"this subscription\" and \"specific subscription in app\".", "$ref": "TargetingRuleScope" }, "billingPeriodDuration": { "description": "The specific billing period duration, specified in ISO 8601 format, that a user must be currently subscribed to to be eligible for this rule. If not specified, users subscribed to any billing period are matched.", "type": "string" } } }, "RegionalSubscriptionOfferConfig": { "id": "RegionalSubscriptionOfferConfig", "description": "Configuration for a subscription offer in a single region.", "type": "object", "properties": { "regionCode": { "description": "Required. Immutable. Region code this configuration applies to, as defined by ISO 3166-2, e.g. \"US\".", "type": "string" }, "newSubscriberAvailability": { "description": "Whether the subscription offer in the specified region is available for new subscribers. Existing subscribers will not have their subscription cancelled if this value is set to false. If not specified, this will default to false.", "type": "boolean" } } }, "OtherRegionsSubscriptionOfferConfig": { "id": "OtherRegionsSubscriptionOfferConfig", "description": "Configuration for any new locations Play may launch in specified on a subscription offer.", "type": "object", "properties": { "otherRegionsNewSubscriberAvailability": { "description": "Whether the subscription offer in any new locations Play may launch in the future. If not specified, this will default to false.", "type": "boolean" } } }, "BatchGetSubscriptionOffersRequest": { "id": "BatchGetSubscriptionOffersRequest", "description": "Request message for BatchGetSubscriptionOffers endpoint.", "type": "object", "properties": { "requests": { "description": "Required. A list of update requests of up to 100 elements. All requests must update different subscriptions.", "type": "array", "items": { "$ref": "GetSubscriptionOfferRequest" } } } }, "GetSubscriptionOfferRequest": { "id": "GetSubscriptionOfferRequest", "description": "Request message for GetSubscriptionOffer.", "type": "object", "properties": { "packageName": { "description": "Required. The parent app (package name) of the offer to get.", "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the offer to get.", "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) of the offer to get.", "type": "string" }, "offerId": { "description": "Required. The unique offer ID of the offer to get.", "type": "string" } } }, "BatchGetSubscriptionOffersResponse": { "id": "BatchGetSubscriptionOffersResponse", "description": "Response message for BatchGetSubscriptionOffers endpoint.", "type": "object", "properties": { "subscriptionOffers": { "type": "array", "items": { "$ref": "SubscriptionOffer" } } } }, "ListSubscriptionOffersResponse": { "id": "ListSubscriptionOffersResponse", "description": "Response message for ListSubscriptionOffers.", "type": "object", "properties": { "subscriptionOffers": { "description": "The subscription offers from the specified subscription.", "type": "array", "items": { "$ref": "SubscriptionOffer" } }, "nextPageToken": { "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", "type": "string" } } }, "BatchUpdateSubscriptionOffersRequest": { "id": "BatchUpdateSubscriptionOffersRequest", "description": "Request message for BatchUpdateSubscriptionOffers.", "type": "object", "properties": { "requests": { "description": "Required. A list of update requests of up to 100 elements. All requests must update different subscription offers.", "type": "array", "items": { "$ref": "UpdateSubscriptionOfferRequest" } } } }, "UpdateSubscriptionOfferRequest": { "id": "UpdateSubscriptionOfferRequest", "description": "Request message for UpdateSubscriptionOffer.", "type": "object", "properties": { "subscriptionOffer": { "description": "Required. The subscription offer to update.", "$ref": "SubscriptionOffer" }, "updateMask": { "description": "Required. The list of fields to be updated.", "type": "string", "format": "google-fieldmask" }, "regionsVersion": { "description": "Required. The version of the available regions being used for the subscription_offer.", "$ref": "RegionsVersion" }, "allowMissing": { "description": "Optional. If set to true, and the subscription offer with the given package_name, product_id, base_plan_id and offer_id doesn't exist, an offer will be created. If a new offer is created, update_mask is ignored.", "type": "boolean" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "BatchUpdateSubscriptionOffersResponse": { "id": "BatchUpdateSubscriptionOffersResponse", "description": "Response message for BatchUpdateSubscriptionOffers.", "type": "object", "properties": { "subscriptionOffers": { "description": "The updated subscription offers list.", "type": "array", "items": { "$ref": "SubscriptionOffer" } } } }, "ActivateSubscriptionOfferRequest": { "id": "ActivateSubscriptionOfferRequest", "description": "Request message for ActivateSubscriptionOffer.", "type": "object", "properties": { "packageName": { "description": "Required. The parent app (package name) of the offer to activate.", "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the offer to activate.", "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) of the offer to activate.", "type": "string" }, "offerId": { "description": "Required. The unique offer ID of the offer to activate.", "type": "string" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "DeactivateSubscriptionOfferRequest": { "id": "DeactivateSubscriptionOfferRequest", "description": "Request message for DeactivateSubscriptionOffer.", "type": "object", "properties": { "packageName": { "description": "Required. The parent app (package name) of the offer to deactivate.", "type": "string" }, "productId": { "description": "Required. The parent subscription (ID) of the offer to deactivate.", "type": "string" }, "basePlanId": { "description": "Required. The parent base plan (ID) of the offer to deactivate.", "type": "string" }, "offerId": { "description": "Required. The unique offer ID of the offer to deactivate.", "type": "string" }, "latencyTolerance": { "description": "Optional. The latency tolerance for the propagation of this product update. Defaults to latency-sensitive.", "type": "string", "enumDescriptions": [ "Defaults to PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE.", "The update will propagate to clients within several minutes on average and up to a few hours in rare cases. Throughput is limited to 7,200 updates per app per hour.", "The update will propagate to clients within 24 hours. Supports high throughput of up to 720,000 updates per app per hour using batch modification methods." ], "enum": [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ] } } }, "BatchUpdateSubscriptionOfferStatesRequest": { "id": "BatchUpdateSubscriptionOfferStatesRequest", "description": "Request message for BatchUpdateSubscriptionOfferStates.", "type": "object", "properties": { "requests": { "description": "Required. The update request list of up to 100 elements. All requests must update different offers.", "type": "array", "items": { "$ref": "UpdateSubscriptionOfferStateRequest" } } } }, "UpdateSubscriptionOfferStateRequest": { "id": "UpdateSubscriptionOfferStateRequest", "description": "Request message to update the state of a subscription offer.", "type": "object", "properties": { "activateSubscriptionOfferRequest": { "description": "Activates an offer. Once activated, the offer will be available to new subscribers.", "$ref": "ActivateSubscriptionOfferRequest" }, "deactivateSubscriptionOfferRequest": { "description": "Deactivates an offer. Once deactivated, the offer will become unavailable to new subscribers, but existing subscribers will maintain their subscription", "$ref": "DeactivateSubscriptionOfferRequest" } } }, "BatchUpdateSubscriptionOfferStatesResponse": { "id": "BatchUpdateSubscriptionOfferStatesResponse", "description": "Response message for BatchUpdateSubscriptionOfferStates.", "type": "object", "properties": { "subscriptionOffers": { "description": "The updated subscription offers list.", "type": "array", "items": { "$ref": "SubscriptionOffer" } } } }, "Variant": { "id": "Variant", "description": "APK that is suitable for inclusion in a system image. The resource of SystemApksService.", "type": "object", "properties": { "variantId": { "description": "Output only. The ID of a previously created system APK variant.", "readOnly": true, "type": "integer", "format": "uint32" }, "deviceSpec": { "description": "The device spec used to generate the APK.", "$ref": "DeviceSpec" }, "options": { "description": "Optional. Options applied to the generated APK.", "$ref": "SystemApkOptions" } } }, "DeviceSpec": { "id": "DeviceSpec", "description": "The device spec used to generate a system APK.", "type": "object", "properties": { "supportedAbis": { "description": "Supported ABI architectures in the order of preference. The values should be the string as reported by the platform, e.g. \"armeabi-v7a\", \"x86_64\".", "type": "array", "items": { "type": "string" } }, "supportedLocales": { "description": "All installed locales represented as BCP-47 strings, e.g. \"en-US\".", "type": "array", "items": { "type": "string" } }, "screenDensity": { "description": "Screen dpi.", "type": "integer", "format": "uint32" } } }, "SystemApkOptions": { "id": "SystemApkOptions", "description": "Options for system APKs.", "type": "object", "properties": { "uncompressedNativeLibraries": { "description": "Whether system APK was generated with uncompressed native libraries.", "type": "boolean" }, "uncompressedDexFiles": { "description": "Whether system APK was generated with uncompressed dex files.", "type": "boolean" }, "rotated": { "description": "Whether to use the rotated key for signing the system APK.", "type": "boolean" } } }, "SystemApksListResponse": { "id": "SystemApksListResponse", "description": "Response to list previously created system APK variants.", "type": "object", "properties": { "variants": { "description": "All system APK variants created.", "type": "array", "items": { "$ref": "Variant" } } } }, "Testers": { "id": "Testers", "description": "The testers of an app. The resource for TestersService. Note: while it is possible in the Play Console UI to add testers via email lists, email lists are not supported by this resource.", "type": "object", "properties": { "googleGroups": { "description": "All testing Google Groups, as email addresses.", "type": "array", "items": { "type": "string" } } } }, "Track": { "id": "Track", "description": "A track configuration. The resource for TracksService.", "type": "object", "properties": { "track": { "description": "Identifier of the track. Form factor tracks have a special prefix as an identifier, for example `wear:production`, `automotive:production`. [More on track name](https://developers.google.com/android-publisher/tracks#ff-track-name)", "type": "string" }, "releases": { "description": "In a read request, represents all active releases in the track. In an update request, represents desired changes.", "type": "array", "items": { "$ref": "TrackRelease" } } } }, "TrackRelease": { "id": "TrackRelease", "description": "A release within a track.", "type": "object", "properties": { "name": { "description": "The release name. Not required to be unique. If not set, the name is generated from the APK's version_name. If the release contains multiple APKs, the name is generated from the date.", "type": "string" }, "versionCodes": { "description": "Version codes of all APKs in the release. Must include version codes to retain from previous releases.", "type": "array", "items": { "type": "string", "format": "int64" } }, "releaseNotes": { "description": "A description of what is new in this release.", "type": "array", "items": { "$ref": "LocalizedText" } }, "status": { "description": "The status of the release.", "type": "string", "enumDescriptions": [ "Unspecified status.", "The release's APKs are not being served to users.", "The release's APKs are being served to a fraction of users, determined by 'user_fraction'.", "The release's APKs will no longer be served to users. Users who already have these APKs are unaffected.", "The release will have no further changes. Its APKs are being served to all users, unless they are eligible to APKs of a more recent release." ], "enum": [ "statusUnspecified", "draft", "inProgress", "halted", "completed" ] }, "userFraction": { "description": "Fraction of users who are eligible for a staged release. 0 \u003c fraction \u003c 1. Can only be set when status is \"inProgress\" or \"halted\".", "type": "number", "format": "double" }, "countryTargeting": { "description": "Restricts a release to a specific set of countries.", "$ref": "CountryTargeting" }, "inAppUpdatePriority": { "description": "In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority. Defaults to 0. in_app_update_priority can not be updated once the release is rolled out. See https://developer.android.com/guide/playcore/in-app-updates.", "type": "integer", "format": "int32" } } }, "LocalizedText": { "id": "LocalizedText", "description": "Localized text in given language.", "type": "object", "properties": { "language": { "description": "Language localization code (a BCP-47 language tag; for example, \"de-AT\" for Austrian German).", "type": "string" }, "text": { "description": "The text in the given language.", "type": "string" } } }, "CountryTargeting": { "id": "CountryTargeting", "description": "Country targeting specification.", "type": "object", "properties": { "countries": { "description": "Countries to target, specified as two letter [CLDR codes](https://unicode.org/cldr/charts/latest/supplemental/territory_containment_un_m_49.html).", "type": "array", "items": { "type": "string" } }, "includeRestOfWorld": { "description": "Include \"rest of world\" as well as explicitly targeted countries.", "type": "boolean" } } }, "TracksListResponse": { "id": "TracksListResponse", "description": "Response listing all tracks.", "type": "object", "properties": { "kind": { "description": "The kind of this response (\"androidpublisher#tracksListResponse\").", "type": "string" }, "tracks": { "description": "All tracks (including tracks with no releases).", "type": "array", "items": { "$ref": "Track" } } } }, "TrackConfig": { "id": "TrackConfig", "description": "Configurations of the new track.", "type": "object", "properties": { "track": { "description": "Required. Identifier of the new track. For default tracks, this field consists of the track alias only. Form factor tracks have a special prefix as an identifier, for example `wear:production`, `automotive:production`. This prefix must match the value of the `form_factor` field, if it is not a default track. [More on track name](https://developers.google.com/android-publisher/tracks#ff-track-name)", "type": "string" }, "type": { "description": "Required. Type of the new track. Currently, the only supported value is closedTesting.", "type": "string", "enumDescriptions": [ "Fallback value, do not use.", "Closed testing track." ], "enum": [ "TRACK_TYPE_UNSPECIFIED", "CLOSED_TESTING" ] }, "formFactor": { "description": "Required. Form factor of the new track. Defaults to the default track.", "type": "string", "enumDescriptions": [ "Fallback value, do not use.", "Default track.", "Wear form factor track.", "Automotive form factor track." ], "enum": [ "FORM_FACTOR_UNSPECIFIED", "DEFAULT", "WEAR", "AUTOMOTIVE" ] } } }, "VoidedPurchasesListResponse": { "id": "VoidedPurchasesListResponse", "description": "Response for the voidedpurchases.list API.", "type": "object", "properties": { "pageInfo": { "description": "General pagination information.", "$ref": "PageInfo" }, "tokenPagination": { "description": "Pagination information for token pagination.", "$ref": "TokenPagination" }, "voidedPurchases": { "type": "array", "items": { "$ref": "VoidedPurchase" } } } }, "VoidedPurchase": { "id": "VoidedPurchase", "description": "A VoidedPurchase resource indicates a purchase that was either canceled/refunded/charged-back.", "type": "object", "properties": { "kind": { "description": "This kind represents a voided purchase object in the androidpublisher service.", "type": "string" }, "purchaseToken": { "description": "The token which uniquely identifies a one-time purchase or subscription. To uniquely identify subscription renewals use order_id (available starting from version 3 of the API).", "type": "string" }, "purchaseTimeMillis": { "description": "The time at which the purchase was made, in milliseconds since the epoch (Jan 1, 1970).", "type": "string", "format": "int64" }, "voidedTimeMillis": { "description": "The time at which the purchase was canceled/refunded/charged-back, in milliseconds since the epoch (Jan 1, 1970).", "type": "string", "format": "int64" }, "orderId": { "description": "The order id which uniquely identifies a one-time purchase, subscription purchase, or subscription renewal.", "type": "string" }, "voidedSource": { "description": "The initiator of voided purchase, possible values are: 0. User 1. Developer 2. Google", "type": "integer", "format": "int32" }, "voidedReason": { "description": "The reason why the purchase was voided, possible values are: 0. Other 1. Remorse 2. Not_received 3. Defective 4. Accidental_purchase 5. Fraud 6. Friendly_fraud 7. Chargeback", "type": "integer", "format": "int32" }, "voidedQuantity": { "description": "The voided quantity as the result of a quantity-based partial refund. Voided purchases of quantity-based partial refunds may only be returned when includeQuantityBasedPartialRefund is set to true.", "type": "integer", "format": "int32" } } } }, "title": "Google Play Android Developer API", "version": "v3", "parameters": { "access_token": { "type": "string", "description": "OAuth access token.", "location": "query" }, "alt": { "type": "string", "description": "Data format for response.", "default": "json", "enum": [ "json", "media", "proto" ], "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], "location": "query" }, "callback": { "type": "string", "description": "JSONP", "location": "query" }, "fields": { "type": "string", "description": "Selector specifying which fields to include in a partial response.", "location": "query" }, "key": { "type": "string", "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "location": "query" }, "oauth_token": { "type": "string", "description": "OAuth 2.0 token for the current user.", "location": "query" }, "prettyPrint": { "type": "boolean", "description": "Returns response with indentations and line breaks.", "default": "true", "location": "query" }, "quotaUser": { "type": "string", "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "location": "query" }, "upload_protocol": { "type": "string", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "location": "query" }, "uploadType": { "type": "string", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "location": "query" }, "$.xgafv": { "type": "string", "description": "V1 error format.", "enum": [ "1", "2" ], "enumDescriptions": [ "v1 error format", "v2 error format" ], "location": "query" } }, "ownerDomain": "google.com" }