// Copyright 2024 Google LLC. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Code generated file. DO NOT EDIT. // Package digitalassetlinks provides access to the Digital Asset Links API. // // For product documentation, see: https://developers.google.com/digital-asset-links/ // // # Library status // // These client libraries are officially supported by Google. However, this // library is considered complete and is in maintenance mode. This means // that we will address critical bugs and security issues but will not add // any new features. // // When possible, we recommend using our newer // [Cloud Client Libraries for Go](https://pkg.go.dev/cloud.google.com/go) // that are still actively being worked and iterated on. // // # Creating a client // // Usage example: // // import "google.golang.org/api/digitalassetlinks/v1" // ... // ctx := context.Background() // digitalassetlinksService, err := digitalassetlinks.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 [google.golang.org/api/option.WithAPIKey]: // // digitalassetlinksService, err := digitalassetlinks.NewService(ctx, option.WithAPIKey("AIza...")) // // To use an OAuth token (e.g., a user token obtained via a three-legged OAuth // flow, use [google.golang.org/api/option.WithTokenSource]: // // config := &oauth2.Config{...} // // ... // token, err := config.Exchange(ctx, ...) // digitalassetlinksService, err := digitalassetlinks.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token))) // // See [google.golang.org/api/option.ClientOption] for details on options. package digitalassetlinks // import "google.golang.org/api/digitalassetlinks/v1" import ( "bytes" "context" "encoding/json" "errors" "fmt" "io" "net/http" "net/url" "strconv" "strings" googleapi "google.golang.org/api/googleapi" internal "google.golang.org/api/internal" gensupport "google.golang.org/api/internal/gensupport" option "google.golang.org/api/option" internaloption "google.golang.org/api/option/internaloption" htransport "google.golang.org/api/transport/http" ) // Always reference these packages, just in case the auto-generated code // below doesn't. var _ = bytes.NewBuffer var _ = strconv.Itoa var _ = fmt.Sprintf var _ = json.NewDecoder var _ = io.Copy var _ = url.Parse var _ = gensupport.MarshalJSON var _ = googleapi.Version var _ = errors.New var _ = strings.Replace var _ = context.Canceled var _ = internaloption.WithDefaultEndpoint var _ = internal.Version const apiId = "digitalassetlinks:v1" const apiName = "digitalassetlinks" const apiVersion = "v1" const basePath = "https://digitalassetlinks.googleapis.com/" const basePathTemplate = "https://digitalassetlinks.UNIVERSE_DOMAIN/" const mtlsBasePath = "https://digitalassetlinks.mtls.googleapis.com/" // NewService creates a new Service. func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) { opts = append(opts, internaloption.WithDefaultEndpoint(basePath)) opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate)) opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath)) opts = append(opts, internaloption.EnableNewAuthLibrary()) client, endpoint, err := htransport.NewClient(ctx, opts...) if err != nil { return nil, err } s, err := New(client) if err != nil { return nil, err } if endpoint != "" { s.BasePath = endpoint } return s, nil } // 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 New(client *http.Client) (*Service, error) { if client == nil { return nil, errors.New("client is nil") } s := &Service{client: client, BasePath: basePath} s.Assetlinks = NewAssetlinksService(s) s.Statements = NewStatementsService(s) return s, nil } type Service struct { client *http.Client BasePath string // API endpoint base URL UserAgent string // optional additional User-Agent fragment Assetlinks *AssetlinksService Statements *StatementsService } func (s *Service) userAgent() string { if s.UserAgent == "" { return googleapi.UserAgent } return googleapi.UserAgent + " " + s.UserAgent } func NewAssetlinksService(s *Service) *AssetlinksService { rs := &AssetlinksService{s: s} return rs } type AssetlinksService struct { s *Service } func NewStatementsService(s *Service) *StatementsService { rs := &StatementsService{s: s} return rs } type StatementsService struct { s *Service } // AndroidAppAsset: Describes an android app asset. type AndroidAppAsset struct { // Certificate: Because there is no global enforcement of package name // uniqueness, we also require a signing certificate, which in combination with // the package name uniquely identifies an app. Some apps' signing keys are // rotated, so they may be signed by different keys over time. We treat these // as distinct assets, since we use (package name, cert) as the unique ID. This // should not normally pose any problems as both versions of the app will make // the same or similar statements. Other assets making statements about the app // will have to be updated when a key is rotated, however. (Note that the // syntaxes for publishing and querying for statements contain syntactic sugar // to easily let you specify apps that are known by multiple certificates.) // REQUIRED Certificate *CertificateInfo `json:"certificate,omitempty"` // PackageName: Android App assets are naturally identified by their Java // package name. For example, the Google Maps app uses the package name // `com.google.android.apps.maps`. REQUIRED PackageName string `json:"packageName,omitempty"` // ForceSendFields is a list of field names (e.g. "Certificate") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Certificate") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *AndroidAppAsset) MarshalJSON() ([]byte, error) { type NoMethod AndroidAppAsset return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // Asset: Uniquely identifies an asset. A digital asset is an identifiable and // addressable online entity that typically provides some service or content. // Examples of assets are websites, Android apps, Twitter feeds, and Plus // Pages. type Asset struct { // AndroidApp: Set if this is an Android App asset. AndroidApp *AndroidAppAsset `json:"androidApp,omitempty"` // Web: Set if this is a web asset. Web *WebAsset `json:"web,omitempty"` // ForceSendFields is a list of field names (e.g. "AndroidApp") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "AndroidApp") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Asset) MarshalJSON() ([]byte, error) { type NoMethod Asset return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // BulkCheckRequest: Message used to check for the existence of multiple // digital asset links within a single RPC. type BulkCheckRequest struct { // AllowGoogleInternalDataSources: Same configuration as in Check request, all // statements checks will use same configurations. AllowGoogleInternalDataSources bool `json:"allowGoogleInternalDataSources,omitempty"` // DefaultRelation: If specified, will be used in any given template statement // that doesn’t specify a relation. DefaultRelation string `json:"defaultRelation,omitempty"` // DefaultSource: If specified, will be used in any given template statement // that doesn’t specify a source. DefaultSource *Asset `json:"defaultSource,omitempty"` // DefaultTarget: If specified, will be used in any given template statement // that doesn’t specify a target. DefaultTarget *Asset `json:"defaultTarget,omitempty"` // SkipCacheLookup: Same configuration as in Check request, all statements // checks will use same configurations. SkipCacheLookup bool `json:"skipCacheLookup,omitempty"` // Statements: List of statements to check. For each statement, you can omit a // field if the corresponding default_* field below was supplied. Minimum 1 // statement; maximum 1,000 statements. Any additional statements will be // ignored. Statements []*StatementTemplate `json:"statements,omitempty"` // ForceSendFields is a list of field names (e.g. // "AllowGoogleInternalDataSources") to unconditionally include in API // requests. By default, fields with empty or default values are omitted from // API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "AllowGoogleInternalDataSources") // to include in API requests with the JSON null value. By default, fields with // empty values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *BulkCheckRequest) MarshalJSON() ([]byte, error) { type NoMethod BulkCheckRequest return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // BulkCheckResponse: Response for BulkCheck call. Results are sent in a list // in the same order in which they were sent. Individual check errors are // described in the appropriate check_results entry. If the entire call fails, // the response will include a bulk_error_code field describing the error. type BulkCheckResponse struct { // BulkErrorCode: Error code for the entire request. Present only if the entire // request failed. Individual check errors will not trigger the presence of // this field. // // Possible values: // "ERROR_CODE_UNSPECIFIED" // "ERROR_CODE_INVALID_QUERY" - Unable to parse query. // "ERROR_CODE_FETCH_ERROR" - Unable to fetch the asset links data. // "ERROR_CODE_FAILED_SSL_VALIDATION" - Invalid HTTPS certificate . // "ERROR_CODE_REDIRECT" - HTTP redirects (e.g, 301) are not allowed. // "ERROR_CODE_TOO_LARGE" - Asset links data exceeds maximum size. // "ERROR_CODE_MALFORMED_HTTP_RESPONSE" - Can't parse HTTP response. // "ERROR_CODE_WRONG_CONTENT_TYPE" - HTTP Content-type should be // application/json. // "ERROR_CODE_MALFORMED_CONTENT" - JSON content is malformed. // "ERROR_CODE_SECURE_ASSET_INCLUDES_INSECURE" - A secure asset includes an // insecure asset (security downgrade). // "ERROR_CODE_FETCH_BUDGET_EXHAUSTED" - Too many includes (maybe a loop). BulkErrorCode string `json:"bulkErrorCode,omitempty"` // CheckResults: List of results for each check request. Results are returned // in the same order in which they were sent in the request. CheckResults []*CheckResponse `json:"checkResults,omitempty"` // ServerResponse contains the HTTP response code and headers from the server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "BulkErrorCode") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "BulkErrorCode") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *BulkCheckResponse) MarshalJSON() ([]byte, error) { type NoMethod BulkCheckResponse return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // CertificateInfo: Describes an X509 certificate. type CertificateInfo struct { // Sha256Fingerprint: The uppercase SHA-265 fingerprint of the certificate. // From the PEM certificate, it can be acquired like this: $ keytool -printcert // -file $CERTFILE | grep SHA256: SHA256: // 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \ // 42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5 or like this: $ openssl x509 -in // $CERTFILE -noout -fingerprint -sha256 SHA256 // Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \ // 16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5 In this example, the // contents of this field would be `14:6D:E9:83:C5:73: // 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: // 44:E5`. If these tools are not available to you, you can convert the PEM // certificate into the DER format, compute the SHA-256 hash of that string and // represent the result as a hexstring (that is, uppercase hexadecimal // representations of each octet, separated by colons). Sha256Fingerprint string `json:"sha256Fingerprint,omitempty"` // ForceSendFields is a list of field names (e.g. "Sha256Fingerprint") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Sha256Fingerprint") to include in // API requests with the JSON null value. By default, fields with empty values // are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *CertificateInfo) MarshalJSON() ([]byte, error) { type NoMethod CertificateInfo return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // CheckResponse: Response message for the CheckAssetLinks call. type CheckResponse struct { // DebugString: Human-readable message containing information intended to help // end users understand, reproduce and debug the result. The message will be in // English and we are currently not planning to offer any translations. Please // note that no guarantees are made about the contents or format of this // string. Any aspect of it may be subject to change without notice. You should // not attempt to programmatically parse this data. For programmatic access, // use the error_code field below. DebugString string `json:"debugString,omitempty"` // ErrorCode: Error codes that describe the result of the Check operation. // // Possible values: // "ERROR_CODE_UNSPECIFIED" // "ERROR_CODE_INVALID_QUERY" - Unable to parse query. // "ERROR_CODE_FETCH_ERROR" - Unable to fetch the asset links data. // "ERROR_CODE_FAILED_SSL_VALIDATION" - Invalid HTTPS certificate . // "ERROR_CODE_REDIRECT" - HTTP redirects (e.g, 301) are not allowed. // "ERROR_CODE_TOO_LARGE" - Asset links data exceeds maximum size. // "ERROR_CODE_MALFORMED_HTTP_RESPONSE" - Can't parse HTTP response. // "ERROR_CODE_WRONG_CONTENT_TYPE" - HTTP Content-type should be // application/json. // "ERROR_CODE_MALFORMED_CONTENT" - JSON content is malformed. // "ERROR_CODE_SECURE_ASSET_INCLUDES_INSECURE" - A secure asset includes an // insecure asset (security downgrade). // "ERROR_CODE_FETCH_BUDGET_EXHAUSTED" - Too many includes (maybe a loop). ErrorCode []string `json:"errorCode,omitempty"` // Linked: Set to true if the assets specified in the request are linked by the // relation specified in the request. Linked bool `json:"linked,omitempty"` // MaxAge: From serving time, how much longer the response should be considered // valid barring further updates. REQUIRED MaxAge string `json:"maxAge,omitempty"` // ServerResponse contains the HTTP response code and headers from the server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "DebugString") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "DebugString") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *CheckResponse) MarshalJSON() ([]byte, error) { type NoMethod CheckResponse return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // ListResponse: Response message for the List call. type ListResponse struct { // DebugString: Human-readable message containing information intended to help // end users understand, reproduce and debug the result. The message will be in // English and we are currently not planning to offer any translations. Please // note that no guarantees are made about the contents or format of this // string. Any aspect of it may be subject to change without notice. You should // not attempt to programmatically parse this data. For programmatic access, // use the error_code field below. DebugString string `json:"debugString,omitempty"` // ErrorCode: Error codes that describe the result of the List operation. // // Possible values: // "ERROR_CODE_UNSPECIFIED" // "ERROR_CODE_INVALID_QUERY" - Unable to parse query. // "ERROR_CODE_FETCH_ERROR" - Unable to fetch the asset links data. // "ERROR_CODE_FAILED_SSL_VALIDATION" - Invalid HTTPS certificate . // "ERROR_CODE_REDIRECT" - HTTP redirects (e.g, 301) are not allowed. // "ERROR_CODE_TOO_LARGE" - Asset links data exceeds maximum size. // "ERROR_CODE_MALFORMED_HTTP_RESPONSE" - Can't parse HTTP response. // "ERROR_CODE_WRONG_CONTENT_TYPE" - HTTP Content-type should be // application/json. // "ERROR_CODE_MALFORMED_CONTENT" - JSON content is malformed. // "ERROR_CODE_SECURE_ASSET_INCLUDES_INSECURE" - A secure asset includes an // insecure asset (security downgrade). // "ERROR_CODE_FETCH_BUDGET_EXHAUSTED" - Too many includes (maybe a loop). ErrorCode []string `json:"errorCode,omitempty"` // MaxAge: From serving time, how much longer the response should be considered // valid barring further updates. REQUIRED MaxAge string `json:"maxAge,omitempty"` // Statements: A list of all the matching statements that have been found. Statements []*Statement `json:"statements,omitempty"` // ServerResponse contains the HTTP response code and headers from the server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "DebugString") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "DebugString") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *ListResponse) MarshalJSON() ([]byte, error) { type NoMethod ListResponse return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // Statement: Describes a reliable statement that has been made about the // relationship between a source asset and a target asset. Statements are // always made by the source asset, either directly or by delegating to a // statement list that is stored elsewhere. For more detailed definitions of // statements and assets, please refer to our API documentation landing page // (/digital-asset-links/v1/getting-started). type Statement struct { // Relation: The relation identifies the use of the statement as intended by // the source asset's owner (that is, the person or entity who issued the // statement). Every complete statement has a relation. We identify relations // with strings of the format `/`, where `` must be one of a set of pre-defined // purpose categories, and `` is a free-form lowercase alphanumeric string that // describes the specific use case of the statement. Refer to our API // documentation (/digital-asset-links/v1/relation-strings) for the current // list of supported relations. Example: // `delegate_permission/common.handle_all_urls` REQUIRED Relation string `json:"relation,omitempty"` // Source: Every statement has a source asset. REQUIRED Source *Asset `json:"source,omitempty"` // Target: Every statement has a target asset. REQUIRED Target *Asset `json:"target,omitempty"` // ForceSendFields is a list of field names (e.g. "Relation") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Relation") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Statement) MarshalJSON() ([]byte, error) { type NoMethod Statement return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // StatementTemplate: A single statement to check in a bulk call using // BulkCheck. See CheckRequest for details about each field. type StatementTemplate struct { // Relation: The relationship being asserted between the source and target. If // omitted, you must specify a BulkCheckRequest.default_relation value to use // here. Relation string `json:"relation,omitempty"` // Source: The source asset that is asserting the statement. If omitted, you // must specify a BulkCheckRequest.default_source value to use here. Source *Asset `json:"source,omitempty"` // Target: The target that the source is declaring the relationship with. If // omitted, you must specify a BulkCheckRequest.default_target to use here. Target *Asset `json:"target,omitempty"` // ForceSendFields is a list of field names (e.g. "Relation") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Relation") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *StatementTemplate) MarshalJSON() ([]byte, error) { type NoMethod StatementTemplate return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } // WebAsset: Describes a web asset. type WebAsset struct { // Site: Web assets are identified by a URL that contains only the scheme, // hostname and port parts. The format is http[s]://[:] Hostnames must be fully // qualified: they must end in a single period ("."). Only the schemes "http" // and "https" are currently allowed. Port numbers are given as a decimal // number, and they must be omitted if the standard port numbers are used: 80 // for http and 443 for https. We call this limited URL the "site". All URLs // that share the same scheme, hostname and port are considered to be a part of // the site and thus belong to the web asset. Example: the asset with the site // `https://www.google.com` contains all these URLs: * // `https://www.google.com/` * `https://www.google.com:443/` * // `https://www.google.com/foo` * `https://www.google.com/foo?bar` * // `https://www.google.com/foo#bar` * `https://user@password:www.google.com/` // But it does not contain these URLs: * `http://www.google.com/` (wrong // scheme) * `https://google.com/` (hostname does not match) * // `https://www.google.com:444/` (port does not match) REQUIRED Site string `json:"site,omitempty"` // ForceSendFields is a list of field names (e.g. "Site") to unconditionally // include in API requests. By default, fields with empty or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Site") to include in API requests // with the JSON null value. By default, fields with empty values are omitted // from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *WebAsset) MarshalJSON() ([]byte, error) { type NoMethod WebAsset return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } type AssetlinksBulkCheckCall struct { s *Service bulkcheckrequest *BulkCheckRequest urlParams_ gensupport.URLParams ctx_ context.Context header_ http.Header } // BulkCheck: Send a bundle of statement checks in a single RPC to minimize // latency and service load. Statements need not be all for the same source // and/or target. We recommend using this method when you need to check more // than one statement in a short period of time. func (r *AssetlinksService) BulkCheck(bulkcheckrequest *BulkCheckRequest) *AssetlinksBulkCheckCall { c := &AssetlinksBulkCheckCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.bulkcheckrequest = bulkcheckrequest return c } // Fields allows partial responses to be retrieved. See // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more // details. func (c *AssetlinksBulkCheckCall) Fields(s ...googleapi.Field) *AssetlinksBulkCheckCall { c.urlParams_.Set("fields", googleapi.CombineFields(s)) return c } // Context sets the context to be used in this call's Do method. func (c *AssetlinksBulkCheckCall) Context(ctx context.Context) *AssetlinksBulkCheckCall { c.ctx_ = ctx return c } // Header returns a http.Header that can be modified by the caller to add // headers to the request. func (c *AssetlinksBulkCheckCall) Header() http.Header { if c.header_ == nil { c.header_ = make(http.Header) } return c.header_ } func (c *AssetlinksBulkCheckCall) doRequest(alt string) (*http.Response, error) { reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_) var body io.Reader = nil body, err := googleapi.WithoutDataWrapper.JSONReader(c.bulkcheckrequest) if err != nil { return nil, err } c.urlParams_.Set("alt", alt) c.urlParams_.Set("prettyPrint", "false") urls := googleapi.ResolveRelative(c.s.BasePath, "v1/assetlinks:bulkCheck") urls += "?" + c.urlParams_.Encode() req, err := http.NewRequest("POST", urls, body) if err != nil { return nil, err } req.Header = reqHeaders return gensupport.SendRequest(c.ctx_, c.s.client, req) } // Do executes the "digitalassetlinks.assetlinks.bulkCheck" call. // Any non-2xx status code is an error. Response headers are in either // *BulkCheckResponse.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 (c *AssetlinksBulkCheckCall) Do(opts ...googleapi.CallOption) (*BulkCheckResponse, error) { gensupport.SetOptions(c.urlParams_, opts...) res, err := c.doRequest("json") if res != nil && res.StatusCode == http.StatusNotModified { if res.Body != nil { res.Body.Close() } return nil, gensupport.WrapError(&googleapi.Error{ Code: res.StatusCode, Header: res.Header, }) } if err != nil { return nil, err } defer googleapi.CloseBody(res) if err := googleapi.CheckResponse(res); err != nil { return nil, gensupport.WrapError(err) } ret := &BulkCheckResponse{ ServerResponse: googleapi.ServerResponse{ Header: res.Header, HTTPStatusCode: res.StatusCode, }, } target := &ret if err := gensupport.DecodeResponse(target, res); err != nil { return nil, err } return ret, nil } type AssetlinksCheckCall struct { s *Service urlParams_ gensupport.URLParams ifNoneMatch_ string ctx_ context.Context header_ http.Header } // Check: Determines whether the specified (directional) relationship exists // between the specified source and target assets. The relation describes the // intent of the link between the two assets as claimed by the source asset. An // example for such relationships is the delegation of privileges or // permissions. This command is most often used by infrastructure systems to // check preconditions for an action. For example, a client may want to know if // it is OK to send a web URL to a particular mobile app instead. The client // can check for the relevant asset link from the website to the mobile app to // decide if the operation should be allowed. A note about security: if you // specify a secure asset as the source, such as an HTTPS website or an Android // app, the API will ensure that any statements used to generate the response // have been made in a secure way by the owner of that asset. Conversely, if // the source asset is an insecure HTTP website (that is, the URL starts with // `http://` instead of `https://`), the API cannot verify its statements // securely, and it is not possible to ensure that the website's statements // have not been altered by a third party. For more information, see the // Digital Asset Links technical design specification // (https://github.com/google/digitalassetlinks/blob/master/well-known/details.md). func (r *AssetlinksService) Check() *AssetlinksCheckCall { c := &AssetlinksCheckCall{s: r.s, urlParams_: make(gensupport.URLParams)} return c } // Relation sets the optional parameter "relation": Query string for the // relation. We identify relations with strings of the format `/`, where “ // must be one of a set of pre-defined purpose categories, and “ is a // free-form lowercase alphanumeric string that describes the specific use case // of the statement. Refer to our API documentation // (/digital-asset-links/v1/relation-strings) for the current list of supported // relations. For a query to match an asset link, both the query's and the // asset link's relation strings must match exactly. Example: A query with // relation `delegate_permission/common.handle_all_urls` matches an asset link // with relation `delegate_permission/common.handle_all_urls`. func (c *AssetlinksCheckCall) Relation(relation string) *AssetlinksCheckCall { c.urlParams_.Set("relation", relation) return c } // SourceAndroidAppCertificateSha256Fingerprint sets the optional parameter // "source.androidApp.certificate.sha256Fingerprint": The uppercase SHA-265 // fingerprint of the certificate. From the PEM certificate, it can be acquired // like this: $ keytool -printcert -file $CERTFILE | grep SHA256: SHA256: // 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \ // 42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5 or like this: $ openssl x509 -in // $CERTFILE -noout -fingerprint -sha256 SHA256 // Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \ // 16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5 In this example, the // contents of this field would be `14:6D:E9:83:C5:73: // 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: // 44:E5`. If these tools are not available to you, you can convert the PEM // certificate into the DER format, compute the SHA-256 hash of that string and // represent the result as a hexstring (that is, uppercase hexadecimal // representations of each octet, separated by colons). func (c *AssetlinksCheckCall) SourceAndroidAppCertificateSha256Fingerprint(sourceAndroidAppCertificateSha256Fingerprint string) *AssetlinksCheckCall { c.urlParams_.Set("source.androidApp.certificate.sha256Fingerprint", sourceAndroidAppCertificateSha256Fingerprint) return c } // SourceAndroidAppPackageName sets the optional parameter // "source.androidApp.packageName": Android App assets are naturally identified // by their Java package name. For example, the Google Maps app uses the // package name `com.google.android.apps.maps`. REQUIRED func (c *AssetlinksCheckCall) SourceAndroidAppPackageName(sourceAndroidAppPackageName string) *AssetlinksCheckCall { c.urlParams_.Set("source.androidApp.packageName", sourceAndroidAppPackageName) return c } // SourceWebSite sets the optional parameter "source.web.site": Web assets are // identified by a URL that contains only the scheme, hostname and port parts. // The format is http[s]://[:] Hostnames must be fully qualified: they must end // in a single period ("."). Only the schemes "http" and "https" are // currently allowed. Port numbers are given as a decimal number, and they must // be omitted if the standard port numbers are used: 80 for http and 443 for // https. We call this limited URL the "site". All URLs that share the same // scheme, hostname and port are considered to be a part of the site and thus // belong to the web asset. Example: the asset with the site // `https://www.google.com` contains all these URLs: * // `https://www.google.com/` * `https://www.google.com:443/` * // `https://www.google.com/foo` * `https://www.google.com/foo?bar` * // `https://www.google.com/foo#bar` * `https://user@password:www.google.com/` // But it does not contain these URLs: * `http://www.google.com/` (wrong // scheme) * `https://google.com/` (hostname does not match) * // `https://www.google.com:444/` (port does not match) REQUIRED func (c *AssetlinksCheckCall) SourceWebSite(sourceWebSite string) *AssetlinksCheckCall { c.urlParams_.Set("source.web.site", sourceWebSite) return c } // TargetAndroidAppCertificateSha256Fingerprint sets the optional parameter // "target.androidApp.certificate.sha256Fingerprint": The uppercase SHA-265 // fingerprint of the certificate. From the PEM certificate, it can be acquired // like this: $ keytool -printcert -file $CERTFILE | grep SHA256: SHA256: // 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \ // 42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5 or like this: $ openssl x509 -in // $CERTFILE -noout -fingerprint -sha256 SHA256 // Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \ // 16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5 In this example, the // contents of this field would be `14:6D:E9:83:C5:73: // 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: // 44:E5`. If these tools are not available to you, you can convert the PEM // certificate into the DER format, compute the SHA-256 hash of that string and // represent the result as a hexstring (that is, uppercase hexadecimal // representations of each octet, separated by colons). func (c *AssetlinksCheckCall) TargetAndroidAppCertificateSha256Fingerprint(targetAndroidAppCertificateSha256Fingerprint string) *AssetlinksCheckCall { c.urlParams_.Set("target.androidApp.certificate.sha256Fingerprint", targetAndroidAppCertificateSha256Fingerprint) return c } // TargetAndroidAppPackageName sets the optional parameter // "target.androidApp.packageName": Android App assets are naturally identified // by their Java package name. For example, the Google Maps app uses the // package name `com.google.android.apps.maps`. REQUIRED func (c *AssetlinksCheckCall) TargetAndroidAppPackageName(targetAndroidAppPackageName string) *AssetlinksCheckCall { c.urlParams_.Set("target.androidApp.packageName", targetAndroidAppPackageName) return c } // TargetWebSite sets the optional parameter "target.web.site": Web assets are // identified by a URL that contains only the scheme, hostname and port parts. // The format is http[s]://[:] Hostnames must be fully qualified: they must end // in a single period ("."). Only the schemes "http" and "https" are // currently allowed. Port numbers are given as a decimal number, and they must // be omitted if the standard port numbers are used: 80 for http and 443 for // https. We call this limited URL the "site". All URLs that share the same // scheme, hostname and port are considered to be a part of the site and thus // belong to the web asset. Example: the asset with the site // `https://www.google.com` contains all these URLs: * // `https://www.google.com/` * `https://www.google.com:443/` * // `https://www.google.com/foo` * `https://www.google.com/foo?bar` * // `https://www.google.com/foo#bar` * `https://user@password:www.google.com/` // But it does not contain these URLs: * `http://www.google.com/` (wrong // scheme) * `https://google.com/` (hostname does not match) * // `https://www.google.com:444/` (port does not match) REQUIRED func (c *AssetlinksCheckCall) TargetWebSite(targetWebSite string) *AssetlinksCheckCall { c.urlParams_.Set("target.web.site", targetWebSite) return c } // Fields allows partial responses to be retrieved. See // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more // details. func (c *AssetlinksCheckCall) Fields(s ...googleapi.Field) *AssetlinksCheckCall { c.urlParams_.Set("fields", googleapi.CombineFields(s)) return c } // IfNoneMatch sets an optional parameter which makes the operation fail if the // object's ETag matches the given value. This is useful for getting updates // only after the object has changed since the last request. func (c *AssetlinksCheckCall) IfNoneMatch(entityTag string) *AssetlinksCheckCall { c.ifNoneMatch_ = entityTag return c } // Context sets the context to be used in this call's Do method. func (c *AssetlinksCheckCall) Context(ctx context.Context) *AssetlinksCheckCall { c.ctx_ = ctx return c } // Header returns a http.Header that can be modified by the caller to add // headers to the request. func (c *AssetlinksCheckCall) Header() http.Header { if c.header_ == nil { c.header_ = make(http.Header) } return c.header_ } func (c *AssetlinksCheckCall) doRequest(alt string) (*http.Response, error) { reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_) if c.ifNoneMatch_ != "" { reqHeaders.Set("If-None-Match", c.ifNoneMatch_) } var body io.Reader = nil c.urlParams_.Set("alt", alt) c.urlParams_.Set("prettyPrint", "false") urls := googleapi.ResolveRelative(c.s.BasePath, "v1/assetlinks:check") urls += "?" + c.urlParams_.Encode() req, err := http.NewRequest("GET", urls, body) if err != nil { return nil, err } req.Header = reqHeaders return gensupport.SendRequest(c.ctx_, c.s.client, req) } // Do executes the "digitalassetlinks.assetlinks.check" call. // Any non-2xx status code is an error. Response headers are in either // *CheckResponse.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 (c *AssetlinksCheckCall) Do(opts ...googleapi.CallOption) (*CheckResponse, error) { gensupport.SetOptions(c.urlParams_, opts...) res, err := c.doRequest("json") if res != nil && res.StatusCode == http.StatusNotModified { if res.Body != nil { res.Body.Close() } return nil, gensupport.WrapError(&googleapi.Error{ Code: res.StatusCode, Header: res.Header, }) } if err != nil { return nil, err } defer googleapi.CloseBody(res) if err := googleapi.CheckResponse(res); err != nil { return nil, gensupport.WrapError(err) } ret := &CheckResponse{ ServerResponse: googleapi.ServerResponse{ Header: res.Header, HTTPStatusCode: res.StatusCode, }, } target := &ret if err := gensupport.DecodeResponse(target, res); err != nil { return nil, err } return ret, nil } type StatementsListCall struct { s *Service urlParams_ gensupport.URLParams ifNoneMatch_ string ctx_ context.Context header_ http.Header } // List: Retrieves a list of all statements from a given source that match the // specified target and statement string. The API guarantees that all // statements with secure source assets, such as HTTPS websites or Android // apps, have been made in a secure way by the owner of those assets, as // described in the Digital Asset Links technical design specification // (https://github.com/google/digitalassetlinks/blob/master/well-known/details.md). // Specifically, you should consider that for insecure websites (that is, where // the URL starts with `http://` instead of `https://`), this guarantee cannot // be made. The `List` command is most useful in cases where the API client // wants to know all the ways in which two assets are related, or enumerate all // the relationships from a particular source asset. Example: a feature that // helps users navigate to related items. When a mobile app is running on a // device, the feature would make it easy to navigate to the corresponding web // site or Google+ profile. func (r *StatementsService) List() *StatementsListCall { c := &StatementsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} return c } // Relation sets the optional parameter "relation": Use only associations that // match the specified relation. See the `Statement` (#Statement) message for a // detailed definition of relation strings. For a query to match a statement, // one of the following must be true: * both the query's and the statement's // relation strings match exactly, or * the query's relation string is empty or // missing. Example: A query with relation // `delegate_permission/common.handle_all_urls` matches an asset link with // relation `delegate_permission/common.handle_all_urls`. func (c *StatementsListCall) Relation(relation string) *StatementsListCall { c.urlParams_.Set("relation", relation) return c } // SourceAndroidAppCertificateSha256Fingerprint sets the optional parameter // "source.androidApp.certificate.sha256Fingerprint": The uppercase SHA-265 // fingerprint of the certificate. From the PEM certificate, it can be acquired // like this: $ keytool -printcert -file $CERTFILE | grep SHA256: SHA256: // 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \ // 42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5 or like this: $ openssl x509 -in // $CERTFILE -noout -fingerprint -sha256 SHA256 // Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \ // 16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5 In this example, the // contents of this field would be `14:6D:E9:83:C5:73: // 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: // 44:E5`. If these tools are not available to you, you can convert the PEM // certificate into the DER format, compute the SHA-256 hash of that string and // represent the result as a hexstring (that is, uppercase hexadecimal // representations of each octet, separated by colons). func (c *StatementsListCall) SourceAndroidAppCertificateSha256Fingerprint(sourceAndroidAppCertificateSha256Fingerprint string) *StatementsListCall { c.urlParams_.Set("source.androidApp.certificate.sha256Fingerprint", sourceAndroidAppCertificateSha256Fingerprint) return c } // SourceAndroidAppPackageName sets the optional parameter // "source.androidApp.packageName": Android App assets are naturally identified // by their Java package name. For example, the Google Maps app uses the // package name `com.google.android.apps.maps`. REQUIRED func (c *StatementsListCall) SourceAndroidAppPackageName(sourceAndroidAppPackageName string) *StatementsListCall { c.urlParams_.Set("source.androidApp.packageName", sourceAndroidAppPackageName) return c } // SourceWebSite sets the optional parameter "source.web.site": Web assets are // identified by a URL that contains only the scheme, hostname and port parts. // The format is http[s]://[:] Hostnames must be fully qualified: they must end // in a single period ("."). Only the schemes "http" and "https" are // currently allowed. Port numbers are given as a decimal number, and they must // be omitted if the standard port numbers are used: 80 for http and 443 for // https. We call this limited URL the "site". All URLs that share the same // scheme, hostname and port are considered to be a part of the site and thus // belong to the web asset. Example: the asset with the site // `https://www.google.com` contains all these URLs: * // `https://www.google.com/` * `https://www.google.com:443/` * // `https://www.google.com/foo` * `https://www.google.com/foo?bar` * // `https://www.google.com/foo#bar` * `https://user@password:www.google.com/` // But it does not contain these URLs: * `http://www.google.com/` (wrong // scheme) * `https://google.com/` (hostname does not match) * // `https://www.google.com:444/` (port does not match) REQUIRED func (c *StatementsListCall) SourceWebSite(sourceWebSite string) *StatementsListCall { c.urlParams_.Set("source.web.site", sourceWebSite) return c } // Fields allows partial responses to be retrieved. See // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more // details. func (c *StatementsListCall) Fields(s ...googleapi.Field) *StatementsListCall { c.urlParams_.Set("fields", googleapi.CombineFields(s)) return c } // IfNoneMatch sets an optional parameter which makes the operation fail if the // object's ETag matches the given value. This is useful for getting updates // only after the object has changed since the last request. func (c *StatementsListCall) IfNoneMatch(entityTag string) *StatementsListCall { c.ifNoneMatch_ = entityTag return c } // Context sets the context to be used in this call's Do method. func (c *StatementsListCall) Context(ctx context.Context) *StatementsListCall { c.ctx_ = ctx return c } // Header returns a http.Header that can be modified by the caller to add // headers to the request. func (c *StatementsListCall) Header() http.Header { if c.header_ == nil { c.header_ = make(http.Header) } return c.header_ } func (c *StatementsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_) if c.ifNoneMatch_ != "" { reqHeaders.Set("If-None-Match", c.ifNoneMatch_) } var body io.Reader = nil c.urlParams_.Set("alt", alt) c.urlParams_.Set("prettyPrint", "false") urls := googleapi.ResolveRelative(c.s.BasePath, "v1/statements:list") urls += "?" + c.urlParams_.Encode() req, err := http.NewRequest("GET", urls, body) if err != nil { return nil, err } req.Header = reqHeaders return gensupport.SendRequest(c.ctx_, c.s.client, req) } // Do executes the "digitalassetlinks.statements.list" call. // Any non-2xx status code is an error. Response headers are in either // *ListResponse.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 (c *StatementsListCall) Do(opts ...googleapi.CallOption) (*ListResponse, error) { gensupport.SetOptions(c.urlParams_, opts...) res, err := c.doRequest("json") if res != nil && res.StatusCode == http.StatusNotModified { if res.Body != nil { res.Body.Close() } return nil, gensupport.WrapError(&googleapi.Error{ Code: res.StatusCode, Header: res.Header, }) } if err != nil { return nil, err } defer googleapi.CloseBody(res) if err := googleapi.CheckResponse(res); err != nil { return nil, gensupport.WrapError(err) } ret := &ListResponse{ ServerResponse: googleapi.ServerResponse{ Header: res.Header, HTTPStatusCode: res.StatusCode, }, } target := &ret if err := gensupport.DecodeResponse(target, res); err != nil { return nil, err } return ret, nil }