playintegrity

package
v0.114.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 17, 2023 License: BSD-3-Clause Imports: 16 Imported by: 1

Documentation

Overview

Package playintegrity provides access to the Google Play Integrity API.

For product documentation, see: https://developer.android.com/google/play/integrity

Creating a client

Usage example:

import "google.golang.org/api/playintegrity/v1"
...
ctx := context.Background()
playintegrityService, err := playintegrity.NewService(ctx)

In this example, Google Application Default Credentials are used for authentication.

For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.

Other authentication options

To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:

playintegrityService, err := playintegrity.NewService(ctx, option.WithAPIKey("AIza..."))

To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:

config := &oauth2.Config{...}
// ...
token, err := config.Exchange(ctx, ...)
playintegrityService, err := playintegrity.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))

See https://godoc.org/google.golang.org/api/option/ for details on options.

Index

Constants

View Source
const (
	// Private Service: https://www.googleapis.com/auth/playintegrity
	PlayintegrityScope = "https://www.googleapis.com/auth/playintegrity"
)

OAuth2 scopes used by this API.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountActivity added in v0.100.0

type AccountActivity struct {
	// ActivityLevel: Required. Indicates the activity level of the account.
	//
	// Possible values:
	//   "ACTIVITY_LEVEL_UNSPECIFIED" - Activity level has not been set.
	//   "UNEVALUATED" - Account activity level is not evaluated because one
	// of the prerequisite conditions is not met (e.g., device is not
	// trusted, the user does not have Play app license)
	//   "UNUSUAL" - Google Play store activity is unusual for at least one
	// of the user accounts on the device. Google Play recommends checking
	// that this is a real user.
	//   "UNKNOWN" - Google Play does not have sufficient activity for the
	// user account on the device. The account may be new, or it may lack
	// activity on Google Play.
	//   "TYPICAL_BASIC" - Google Play store activity is typical for the
	// user account or accounts on the device.
	//   "TYPICAL_STRONG" - Google Play store activity is typical for the
	// user account or accounts on the device, with harder to replicate
	// signals.
	ActivityLevel string `json:"activityLevel,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ActivityLevel") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ActivityLevel") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

AccountActivity: Contains a signal helping apps differentiating between likely genuine users and likely non-genuine traffic (such as accounts being used for fraud, accounts used by automated traffic, or accounts used in device farms) based on the presence and volume of Play store activity.

func (*AccountActivity) MarshalJSON added in v0.100.0

func (s *AccountActivity) MarshalJSON() ([]byte, error)

type AccountDetails

type AccountDetails struct {
	// AccountActivity: Details about the account activity for the user in
	// the scope.
	AccountActivity *AccountActivity `json:"accountActivity,omitempty"`

	// AppLicensingVerdict: Required. Details about the licensing status of
	// the user for the app in the scope.
	//
	// Possible values:
	//   "UNKNOWN" - Play does not have sufficient information to evaluate
	// licensing details
	//   "LICENSED" - The app and certificate match the versions distributed
	// by Play.
	//   "UNLICENSED" - The certificate or package name does not match
	// Google Play records.
	//   "UNEVALUATED" - 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.
	AppLicensingVerdict string `json:"appLicensingVerdict,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountActivity") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountActivity") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

AccountDetails: Contains the account information such as the licensing status for the user in the scope.

func (*AccountDetails) MarshalJSON

func (s *AccountDetails) MarshalJSON() ([]byte, error)

type AppIntegrity

type AppIntegrity struct {
	// AppRecognitionVerdict: Required. Details about the app recognition
	// verdict
	//
	// Possible values:
	//   "UNKNOWN" - Play does not have sufficient information to evaluate
	// app integrity
	//   "PLAY_RECOGNIZED" - The app and certificate match the versions
	// distributed by Play.
	//   "UNRECOGNIZED_VERSION" - The certificate or package name does not
	// match Google Play records.
	//   "UNEVALUATED" - Application integrity was not evaluated since a
	// necessary requirement was missed. For example DeviceIntegrity did not
	// meet the minimum bar.
	AppRecognitionVerdict string `json:"appRecognitionVerdict,omitempty"`

	// CertificateSha256Digest: The SHA256 hash of the requesting app's
	// signing certificates (base64 web-safe encoded). Set iff
	// app_recognition_verdict != UNEVALUATED.
	CertificateSha256Digest []string `json:"certificateSha256Digest,omitempty"`

	// PackageName: Package name of the application under attestation. Set
	// iff app_recognition_verdict != UNEVALUATED.
	PackageName string `json:"packageName,omitempty"`

	// VersionCode: Version code of the application. Set iff
	// app_recognition_verdict != UNEVALUATED.
	VersionCode int64 `json:"versionCode,omitempty,string"`

	// ForceSendFields is a list of field names (e.g.
	// "AppRecognitionVerdict") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AppRecognitionVerdict") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

AppIntegrity: Contains the application integrity information.

func (*AppIntegrity) MarshalJSON

func (s *AppIntegrity) MarshalJSON() ([]byte, error)

type DecodeIntegrityTokenRequest

type DecodeIntegrityTokenRequest struct {
	// IntegrityToken: Encoded integrity token.
	IntegrityToken string `json:"integrityToken,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IntegrityToken") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IntegrityToken") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

DecodeIntegrityTokenRequest: Request to decode the integrity token.

func (*DecodeIntegrityTokenRequest) MarshalJSON

func (s *DecodeIntegrityTokenRequest) MarshalJSON() ([]byte, error)

type DecodeIntegrityTokenResponse

type DecodeIntegrityTokenResponse struct {
	// TokenPayloadExternal: Plain token payload generated from the decoded
	// integrity token.
	TokenPayloadExternal *TokenPayloadExternal `json:"tokenPayloadExternal,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g.
	// "TokenPayloadExternal") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. However, any non-pointer, non-interface field appearing in
	// ForceSendFields will be sent to the server regardless of whether the
	// field is empty or not. This may be used to include empty fields in
	// Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "TokenPayloadExternal") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

DecodeIntegrityTokenResponse: Response containing the decoded integrity payload.

func (*DecodeIntegrityTokenResponse) MarshalJSON

func (s *DecodeIntegrityTokenResponse) MarshalJSON() ([]byte, error)

type DeviceIntegrity

type DeviceIntegrity struct {
	// DeviceRecognitionVerdict: Details about the integrity of the device
	// the app is running on
	//
	// Possible values:
	//   "UNKNOWN" - Play does not have sufficient information to evaluate
	// device integrity
	//   "MEETS_BASIC_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.
	//   "MEETS_DEVICE_INTEGRITY" - App is running on GMS Android device
	// with Google Play services.
	//   "MEETS_STRONG_INTEGRITY" - 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.
	//   "MEETS_VIRTUAL_INTEGRITY" - App is running on an Android emulator
	// with Google Play services which meets core Android compatibility
	// requirements.
	DeviceRecognitionVerdict []string `json:"deviceRecognitionVerdict,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "DeviceRecognitionVerdict") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted
	// from API requests. However, any non-pointer, non-interface field
	// appearing in ForceSendFields will be sent to the server regardless of
	// whether the field is empty or not. This may be used to include empty
	// fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DeviceRecognitionVerdict")
	// to include in API requests with the JSON null value. By default,
	// fields with empty values are omitted from API requests. However, any
	// field with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

DeviceIntegrity: Contains the device attestation information.

func (*DeviceIntegrity) MarshalJSON

func (s *DeviceIntegrity) MarshalJSON() ([]byte, error)

type RequestDetails

type RequestDetails struct {
	// Nonce: Nonce that was provided in the request (which is base64
	// web-safe no-wrap).
	Nonce string `json:"nonce,omitempty"`

	// RequestHash: Request hash that was provided in the request.
	RequestHash string `json:"requestHash,omitempty"`

	// RequestPackageName: 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.
	RequestPackageName string `json:"requestPackageName,omitempty"`

	// TimestampMillis: Required. Timestamp, in milliseconds, of the
	// integrity application request.
	TimestampMillis int64 `json:"timestampMillis,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "Nonce") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "Nonce") to include in API
	// requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

RequestDetails: Contains the integrity request information.

func (*RequestDetails) MarshalJSON

func (s *RequestDetails) MarshalJSON() ([]byte, error)

type Service

type Service struct {
	BasePath  string // API endpoint base URL
	UserAgent string // optional additional User-Agent fragment

	V1 *V1Service
	// contains filtered or unexported fields
}

func New deprecated

func New(client *http.Client) (*Service, error)

New creates a new Service. It uses the provided http.Client for requests.

Deprecated: please use NewService instead. To provide a custom HTTP client, use option.WithHTTPClient. If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.

func NewService

func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error)

NewService creates a new Service.

type TestingDetails

type TestingDetails struct {
	// IsTestingResponse: Required. Indicates that the information contained
	// in this payload is a testing response that is statically overridden
	// for a tester.
	IsTestingResponse bool `json:"isTestingResponse,omitempty"`

	// ForceSendFields is a list of field names (e.g. "IsTestingResponse")
	// to unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "IsTestingResponse") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

TestingDetails: Contains additional information generated for testing responses.

func (*TestingDetails) MarshalJSON

func (s *TestingDetails) MarshalJSON() ([]byte, error)

type TokenPayloadExternal

type TokenPayloadExternal struct {
	// AccountDetails: Required. Details about the Play Store account.
	AccountDetails *AccountDetails `json:"accountDetails,omitempty"`

	// AppIntegrity: Required. Details about the application integrity.
	AppIntegrity *AppIntegrity `json:"appIntegrity,omitempty"`

	// DeviceIntegrity: Required. Details about the device integrity.
	DeviceIntegrity *DeviceIntegrity `json:"deviceIntegrity,omitempty"`

	// RequestDetails: Required. Details about the integrity request.
	RequestDetails *RequestDetails `json:"requestDetails,omitempty"`

	// TestingDetails: Indicates that this payload is generated for testing
	// purposes and contains any additional data that is linked with testing
	// status.
	TestingDetails *TestingDetails `json:"testingDetails,omitempty"`

	// ForceSendFields is a list of field names (e.g. "AccountDetails") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "AccountDetails") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

TokenPayloadExternal: Contains basic app information and integrity signals like device attestation and licensing details.

func (*TokenPayloadExternal) MarshalJSON

func (s *TokenPayloadExternal) MarshalJSON() ([]byte, error)

type V1DecodeIntegrityTokenCall

type V1DecodeIntegrityTokenCall struct {
	// contains filtered or unexported fields
}

func (*V1DecodeIntegrityTokenCall) Context

Context sets the context to be used in this call's Do method. Any pending HTTP request will be aborted if the provided context is canceled.

func (*V1DecodeIntegrityTokenCall) Do

Do executes the "playintegrity.decodeIntegrityToken" call. Exactly one of *DecodeIntegrityTokenResponse or error will be non-nil. Any non-2xx status code is an error. Response headers are in either *DecodeIntegrityTokenResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.

func (*V1DecodeIntegrityTokenCall) Fields

Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more information.

func (*V1DecodeIntegrityTokenCall) Header

Header returns an http.Header that can be modified by the caller to add HTTP headers to the request.

type V1Service

type V1Service struct {
	// contains filtered or unexported fields
}

func NewV1Service

func NewV1Service(s *Service) *V1Service

func (*V1Service) DecodeIntegrityToken

func (r *V1Service) DecodeIntegrityToken(packageName string, decodeintegritytokenrequest *DecodeIntegrityTokenRequest) *V1DecodeIntegrityTokenCall

DecodeIntegrityToken: Decodes the integrity token and returns the token payload.

  • packageName: Package name of the app the attached integrity token belongs to.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL