| { |
| "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": "20240424", |
| "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" |
| }, |
| "AppAccessRiskVerdict": { |
| "description": "Contains signals about others apps on the device which could be used to access or control the requesting app.", |
| "id": "AppAccessRiskVerdict", |
| "properties": { |
| "otherApps": { |
| "description": "App access risk verdict related to apps that are not installed by Google Play, and are not preloaded on the system image by the device manufacturer.", |
| "enum": [ |
| "UNKNOWN", |
| "UNEVALUATED", |
| "NOT_INSTALLED", |
| "INSTALLED", |
| "CAPTURING", |
| "CONTROLLING" |
| ], |
| "enumDescriptions": [ |
| "Risk type is unknown.", |
| "App access risk was not evaluated because a requirement was missed, such as the device not being trusted enough.", |
| "No apps under this field are installed on the device. This is only valid for the other apps field.", |
| "One or more apps under this field are installed on the device.", |
| "Apps under this field are running that could be used to read or capture inputs and outputs of the requesting app, such as screen recording apps.", |
| "Apps under this field are running that could be used to control the device and inputs and outputs of the requesting app, such as remote controlling apps." |
| ], |
| "type": "string" |
| }, |
| "playOrSystemApps": { |
| "description": "App access risk verdict related to apps that are not installed by the Google Play Store, and are not preloaded on the system image by the device manufacturer.", |
| "enum": [ |
| "UNKNOWN", |
| "UNEVALUATED", |
| "NOT_INSTALLED", |
| "INSTALLED", |
| "CAPTURING", |
| "CONTROLLING" |
| ], |
| "enumDescriptions": [ |
| "Risk type is unknown.", |
| "App access risk was not evaluated because a requirement was missed, such as the device not being trusted enough.", |
| "No apps under this field are installed on the device. This is only valid for the other apps field.", |
| "One or more apps under this field are installed on the device.", |
| "Apps under this field are running that could be used to read or capture inputs and outputs of the requesting app, such as screen recording apps.", |
| "Apps under this field are running that could be used to control the device and inputs and outputs of the requesting app, such as remote controlling apps." |
| ], |
| "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. Next tag: 4", |
| "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" |
| ], |
| "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." |
| ], |
| "type": "string" |
| }, |
| "type": "array" |
| }, |
| "recentDeviceActivity": { |
| "$ref": "RecentDeviceActivity", |
| "description": "Details about the device activity of the device the app is running on." |
| } |
| }, |
| "type": "object" |
| }, |
| "EnvironmentDetails": { |
| "description": "Contains information about the environment Play Integrity API runs in, e.g. Play Protect verdict.", |
| "id": "EnvironmentDetails", |
| "properties": { |
| "appAccessRiskVerdict": { |
| "$ref": "AppAccessRiskVerdict", |
| "description": "The evaluation of the App Access Risk verdicts." |
| }, |
| "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" |
| }, |
| "RecentDeviceActivity": { |
| "description": "Recent device activity can help developers identify devices that have exhibited hyperactive attestation activity, which could be a sign of an attack or token farming.", |
| "id": "RecentDeviceActivity", |
| "properties": { |
| "deviceActivityLevel": { |
| "description": "Required. Indicates the activity level of the device.", |
| "enum": [ |
| "DEVICE_ACTIVITY_LEVEL_UNSPECIFIED", |
| "UNEVALUATED", |
| "LEVEL_1", |
| "LEVEL_2", |
| "LEVEL_3", |
| "LEVEL_4" |
| ], |
| "enumDescriptions": [ |
| "Device activity level has not been set.", |
| "Device activity level has not been evaluated.", |
| "Indicates the amount of used tokens. See the documentation for details.", |
| "Indicates the amount of used tokens. See the documentation for details.", |
| "Indicates the amount of used tokens. See the documentation for details.", |
| "Indicates the amount of used tokens. See the documentation for details." |
| ], |
| "type": "string" |
| } |
| }, |
| "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." |
| }, |
| "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" |
| } |
| }, |
| "servicePath": "", |
| "title": "Google Play Integrity API", |
| "version": "v1", |
| "version_module": true |
| } |