| { |
| "auth": { |
| "oauth2": { |
| "scopes": { |
| "https://www.googleapis.com/auth/playintegrity": { |
| "description": "Private Service: https://www.googleapis.com/auth/playintegrity" |
| } |
| } |
| } |
| }, |
| "basePath": "", |
| "baseUrl": "https://playintegrity.googleapis.com/", |
| "batchPath": "batch", |
| "canonicalName": "Play Integrity", |
| "description": "The Play Integrity API helps you check that you're interacting with your genuine app on a genuine Android device powered by Google Play services. The Play Integrity API has replaced SafetyNet Attestation and Android Device Verification.", |
| "discoveryVersion": "v1", |
| "documentationLink": "https://developer.android.com/google/play/integrity", |
| "fullyEncodeReservedExpansion": true, |
| "icons": { |
| "x16": "http://www.google.com/images/icons/product/search-16.gif", |
| "x32": "http://www.google.com/images/icons/product/search-32.gif" |
| }, |
| "id": "playintegrity:v1", |
| "kind": "discovery#restDescription", |
| "mtlsRootUrl": "https://playintegrity.mtls.googleapis.com/", |
| "name": "playintegrity", |
| "ownerDomain": "google.com", |
| "ownerName": "Google", |
| "parameters": { |
| "$.xgafv": { |
| "description": "V1 error format.", |
| "enum": [ |
| "1", |
| "2" |
| ], |
| "enumDescriptions": [ |
| "v1 error format", |
| "v2 error format" |
| ], |
| "location": "query", |
| "type": "string" |
| }, |
| "access_token": { |
| "description": "OAuth access token.", |
| "location": "query", |
| "type": "string" |
| }, |
| "alt": { |
| "default": "json", |
| "description": "Data format for response.", |
| "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", |
| "type": "string" |
| }, |
| "callback": { |
| "description": "JSONP", |
| "location": "query", |
| "type": "string" |
| }, |
| "fields": { |
| "description": "Selector specifying which fields to include in a partial response.", |
| "location": "query", |
| "type": "string" |
| }, |
| "key": { |
| "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", |
| "type": "string" |
| }, |
| "oauth_token": { |
| "description": "OAuth 2.0 token for the current user.", |
| "location": "query", |
| "type": "string" |
| }, |
| "prettyPrint": { |
| "default": "true", |
| "description": "Returns response with indentations and line breaks.", |
| "location": "query", |
| "type": "boolean" |
| }, |
| "quotaUser": { |
| "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", |
| "type": "string" |
| }, |
| "uploadType": { |
| "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", |
| "location": "query", |
| "type": "string" |
| }, |
| "upload_protocol": { |
| "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", |
| "location": "query", |
| "type": "string" |
| } |
| }, |
| "protocol": "rest", |
| "resources": { |
| "v1": { |
| "methods": { |
| "decodeIntegrityToken": { |
| "description": "Decodes the integrity token and returns the token payload.", |
| "flatPath": "v1/{v1Id}:decodeIntegrityToken", |
| "httpMethod": "POST", |
| "id": "playintegrity.decodeIntegrityToken", |
| "parameterOrder": [ |
| "packageName" |
| ], |
| "parameters": { |
| "packageName": { |
| "description": " Package name of the app the attached integrity token belongs to.", |
| "location": "path", |
| "pattern": "^[^/]+$", |
| "required": true, |
| "type": "string" |
| } |
| }, |
| "path": "v1/{+packageName}:decodeIntegrityToken", |
| "request": { |
| "$ref": "DecodeIntegrityTokenRequest" |
| }, |
| "response": { |
| "$ref": "DecodeIntegrityTokenResponse" |
| }, |
| "scopes": [ |
| "https://www.googleapis.com/auth/playintegrity" |
| ] |
| } |
| } |
| } |
| }, |
| "revision": "20231106", |
| "rootUrl": "https://playintegrity.googleapis.com/", |
| "schemas": { |
| "AccountActivity": { |
| "description": "(Restricted Access) Contains a signal helping apps differentiating between likely genuine and likely non-genuine user traffic.", |
| "id": "AccountActivity", |
| "properties": { |
| "activityLevel": { |
| "description": "Required. Indicates the activity level of the account.", |
| "enum": [ |
| "ACTIVITY_LEVEL_UNSPECIFIED", |
| "UNEVALUATED", |
| "UNUSUAL", |
| "UNKNOWN", |
| "TYPICAL_BASIC", |
| "TYPICAL_STRONG" |
| ], |
| "enumDescriptions": [ |
| "Activity level has not been set.", |
| "Account activity level is not evaluated.", |
| "Unusual activity for at least one of the user accounts on the device.", |
| "Insufficient activity to verify the user account on the device.", |
| "Typical activity for the user account or accounts on the device.", |
| "Typical for the user account or accounts on the device, with harder to replicate signals." |
| ], |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "AccountDetails": { |
| "description": "Contains the account information such as the licensing status for the user in the scope.", |
| "id": "AccountDetails", |
| "properties": { |
| "accountActivity": { |
| "$ref": "AccountActivity", |
| "description": "(Restricted Access) Details about the account activity for the user in the scope." |
| }, |
| "appLicensingVerdict": { |
| "description": "Required. Details about the licensing status of the user for the app in the scope.", |
| "enum": [ |
| "UNKNOWN", |
| "LICENSED", |
| "UNLICENSED", |
| "UNEVALUATED" |
| ], |
| "enumDescriptions": [ |
| "Play does not have sufficient information to evaluate licensing details", |
| "The app and certificate match the versions distributed by Play.", |
| "The certificate or package name does not match Google Play records.", |
| "Licensing details were not evaluated since a necessary requirement was missed. For example DeviceIntegrity did not meet the minimum bar or the application was not a known Play version." |
| ], |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "AppIntegrity": { |
| "description": "Contains the application integrity information.", |
| "id": "AppIntegrity", |
| "properties": { |
| "appRecognitionVerdict": { |
| "description": "Required. Details about the app recognition verdict", |
| "enum": [ |
| "UNKNOWN", |
| "PLAY_RECOGNIZED", |
| "UNRECOGNIZED_VERSION", |
| "UNEVALUATED" |
| ], |
| "enumDescriptions": [ |
| "Play does not have sufficient information to evaluate app integrity", |
| "The app and certificate match the versions distributed by Play.", |
| "The certificate or package name does not match Google Play records.", |
| "Application integrity was not evaluated since a necessary requirement was missed. For example DeviceIntegrity did not meet the minimum bar." |
| ], |
| "type": "string" |
| }, |
| "certificateSha256Digest": { |
| "description": "The SHA256 hash of the requesting app's signing certificates (base64 web-safe encoded). Set iff app_recognition_verdict != UNEVALUATED.", |
| "items": { |
| "type": "string" |
| }, |
| "type": "array" |
| }, |
| "packageName": { |
| "description": "Package name of the application under attestation. Set iff app_recognition_verdict != UNEVALUATED.", |
| "type": "string" |
| }, |
| "versionCode": { |
| "description": "Version code of the application. Set iff app_recognition_verdict != UNEVALUATED.", |
| "format": "int64", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "DecodeIntegrityTokenRequest": { |
| "description": "Request to decode the integrity token.", |
| "id": "DecodeIntegrityTokenRequest", |
| "properties": { |
| "integrityToken": { |
| "description": "Encoded integrity token.", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "DecodeIntegrityTokenResponse": { |
| "description": "Response containing the decoded integrity payload.", |
| "id": "DecodeIntegrityTokenResponse", |
| "properties": { |
| "tokenPayloadExternal": { |
| "$ref": "TokenPayloadExternal", |
| "description": "Plain token payload generated from the decoded integrity token." |
| } |
| }, |
| "type": "object" |
| }, |
| "DeviceIntegrity": { |
| "description": "Contains the device attestation information.", |
| "id": "DeviceIntegrity", |
| "properties": { |
| "deviceRecognitionVerdict": { |
| "description": "Details about the integrity of the device the app is running on.", |
| "items": { |
| "enum": [ |
| "UNKNOWN", |
| "MEETS_BASIC_INTEGRITY", |
| "MEETS_DEVICE_INTEGRITY", |
| "MEETS_STRONG_INTEGRITY", |
| "MEETS_VIRTUAL_INTEGRITY", |
| "MEETS_WEAK_INTEGRITY" |
| ], |
| "enumDescriptions": [ |
| "Play does not have sufficient information to evaluate device integrity", |
| "App is running on a device that passes basic system integrity checks, but may not meet Android platform compatibility requirements and may not be approved to run Google Play services.", |
| "App is running on GMS Android device with Google Play services.", |
| "App is running on GMS Android device with Google Play services and has a strong guarantee of system integrity such as a hardware-backed keystore.", |
| "App is running on an Android emulator with Google Play services which meets core Android compatibility requirements.", |
| "App is running on a device that passes only weak integrity checks (is a physical device)." |
| ], |
| "type": "string" |
| }, |
| "type": "array" |
| } |
| }, |
| "type": "object" |
| }, |
| "EnvironmentDetails": { |
| "description": "Contains information about the environment Play Integrity API runs in, e.g. Play Protect verdict.", |
| "id": "EnvironmentDetails", |
| "properties": { |
| "playProtectVerdict": { |
| "description": "The evaluation of Play Protect verdict.", |
| "enum": [ |
| "PLAY_PROTECT_VERDICT_UNSPECIFIED", |
| "UNEVALUATED", |
| "NO_ISSUES", |
| "NO_DATA", |
| "MEDIUM_RISK", |
| "HIGH_RISK", |
| "POSSIBLE_RISK" |
| ], |
| "enumDescriptions": [ |
| "Play Protect verdict has not been set.", |
| "Play Protect state was not evaluated. Device may not be trusted.", |
| "Play Protect is on and no issues found.", |
| "Play Protect is on but no scan has been performed yet. The device or Play Store app may have been reset.", |
| "Play Protect is on and warnings found.", |
| "Play Protect is on and high severity issues found.", |
| "Play Protect is turned off. Turn on Play Protect." |
| ], |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "GuidanceDetails": { |
| "deprecated": true, |
| "description": "Deprecated: this field is not used. Contains guidance details about the Integrity API response, providing additional context to the integrity verdicts.", |
| "id": "GuidanceDetails", |
| "properties": { |
| "userRemediationDetails": { |
| "description": "This shows when there is an issue with at least one of the integrity verdicts, which can be remedied by the user and provides additional details.", |
| "items": { |
| "$ref": "UserRemediationDetails" |
| }, |
| "type": "array" |
| } |
| }, |
| "type": "object" |
| }, |
| "RequestDetails": { |
| "description": "Contains the integrity request information.", |
| "id": "RequestDetails", |
| "properties": { |
| "nonce": { |
| "description": "Nonce that was provided in the request (which is base64 web-safe no-wrap).", |
| "type": "string" |
| }, |
| "requestHash": { |
| "description": "Request hash that was provided in the request.", |
| "type": "string" |
| }, |
| "requestPackageName": { |
| "description": "Required. Application package name this attestation was requested for. Note: This field makes no guarantees or promises on the caller integrity. For details on application integrity, check application_integrity.", |
| "type": "string" |
| }, |
| "timestampMillis": { |
| "description": "Required. Timestamp, in milliseconds, of the integrity application request.", |
| "format": "int64", |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| }, |
| "TestingDetails": { |
| "description": "Contains additional information generated for testing responses.", |
| "id": "TestingDetails", |
| "properties": { |
| "isTestingResponse": { |
| "description": "Required. Indicates that the information contained in this payload is a testing response that is statically overridden for a tester.", |
| "type": "boolean" |
| } |
| }, |
| "type": "object" |
| }, |
| "TokenPayloadExternal": { |
| "description": "Contains basic app information and integrity signals like device attestation and licensing details.", |
| "id": "TokenPayloadExternal", |
| "properties": { |
| "accountDetails": { |
| "$ref": "AccountDetails", |
| "description": "Required. Details about the Play Store account." |
| }, |
| "appIntegrity": { |
| "$ref": "AppIntegrity", |
| "description": "Required. Details about the application integrity." |
| }, |
| "deviceIntegrity": { |
| "$ref": "DeviceIntegrity", |
| "description": "Required. Details about the device integrity." |
| }, |
| "environmentDetails": { |
| "$ref": "EnvironmentDetails", |
| "description": "Details of the environment Play Integrity API runs in." |
| }, |
| "guidanceDetails": { |
| "$ref": "GuidanceDetails", |
| "deprecated": true, |
| "description": "Deprecated: this field is not used. Additional guidance related to the integrity API response." |
| }, |
| "requestDetails": { |
| "$ref": "RequestDetails", |
| "description": "Required. Details about the integrity request." |
| }, |
| "testingDetails": { |
| "$ref": "TestingDetails", |
| "description": "Indicates that this payload is generated for testing purposes and contains any additional data that is linked with testing status." |
| } |
| }, |
| "type": "object" |
| }, |
| "UserRemediationDetails": { |
| "deprecated": true, |
| "description": "Deprecated: this field is not used. Contains details of remediation guidance that the user can perform.", |
| "id": "UserRemediationDetails", |
| "properties": { |
| "remediation": { |
| "description": "Description of the user remediation action.", |
| "enum": [ |
| "UNKNOWN_USER_REMEDIATION", |
| "RESTORE_FACTORY_ROM", |
| "LOCK_BOOTLOADER", |
| "GET_UNMODIFIED_APP", |
| "SIGN_INTO_GOOGLE_ACCOUNT", |
| "INSTALL_APP_FROM_PLAY" |
| ], |
| "enumDescriptions": [ |
| "User remediation is unknown.", |
| "The user has installed a custom ROM, and should restore the device to a clean factory ROM.", |
| "The device bootloader has been unlocked, the user should lock the bootloader.", |
| "The app is unrecognized. The user should get an unmodified version of the app.", |
| "The user has not signed into their Google account.", |
| "The user has no license. They should install or purchase the app on the Google Play Store to add it to their library." |
| ], |
| "type": "string" |
| } |
| }, |
| "type": "object" |
| } |
| }, |
| "servicePath": "", |
| "title": "Google Play Integrity API", |
| "version": "v1", |
| "version_module": true |
| } |