<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="servicecontrol_v2.html">Service Control API</a> . <a href="servicecontrol_v2.services.html">services</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#check">check(serviceName, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Private Preview. This feature is only available for approved services. This method provides admission control for services that are integrated with [Service Infrastructure](/service-infrastructure). It checks whether an operation should be allowed based on the service configuration and relevant policies. It must be called before the operation is executed. For more information, see [Admission Control](/service-infrastructure/docs/admission-control). NOTE: The admission control has an expected policy propagation delay of 60s. The caller **must** not depend on the most recent policy changes. NOTE: The admission control has a hard limit of 1 referenced resources per call. If an operation refers to more than 1 resources, the caller must call the Check method multiple times. This method requires the `servicemanagement.services.check` permission on the specified service. For more information, see [Service Control API Access Control](https://cloud.google.com/service-infrastructure/docs/service-control/access-control).</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#report">report(serviceName, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Private Preview. This feature is only available for approved services. This method provides telemetry reporting for services that are integrated with [Service Infrastructure](/service-infrastructure). It reports a list of operations that have occurred on a service. It must be called after the operations have been executed. For more information, see [Telemetry Reporting](/service-infrastructure/docs/telemetry-reporting). NOTE: The telemetry reporting has a hard limit of 1000 operations and 1MB per Report call. It is recommended to have no more than 100 operations per call. This method requires the `servicemanagement.services.report` permission on the specified service. For more information, see [Service Control API Access Control](https://cloud.google.com/service-infrastructure/docs/service-control/access-control).</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="check">check(serviceName, body=None, x__xgafv=None)</code>
  <pre>Private Preview. This feature is only available for approved services. This method provides admission control for services that are integrated with [Service Infrastructure](/service-infrastructure). It checks whether an operation should be allowed based on the service configuration and relevant policies. It must be called before the operation is executed. For more information, see [Admission Control](/service-infrastructure/docs/admission-control). NOTE: The admission control has an expected policy propagation delay of 60s. The caller **must** not depend on the most recent policy changes. NOTE: The admission control has a hard limit of 1 referenced resources per call. If an operation refers to more than 1 resources, the caller must call the Check method multiple times. This method requires the `servicemanagement.services.check` permission on the specified service. For more information, see [Service Control API Access Control](https://cloud.google.com/service-infrastructure/docs/service-control/access-control).

Args:
  serviceName: string, The service name as specified in its service configuration. For example, `&quot;pubsub.googleapis.com&quot;`. See [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service) for the definition of a service name. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for the Check method.
    &quot;serviceConfigId&quot;: &quot;A String&quot;, # Specifies the version of the service configuration that should be used to process the request. Must not be empty. Set this field to &#x27;latest&#x27; to specify using the latest configuration.
    &quot;attributes&quot;: { # This message defines the standard attribute vocabulary for Google APIs. An attribute is a piece of metadata that describes an activity on a network service. For example, the size of an HTTP request, or the status code of an HTTP response. Each attribute has a type and a name, which is logically defined as a proto message field in `AttributeContext`. The field type becomes the attribute type, and the field path becomes the attribute name. For example, the attribute `source.ip` maps to field `AttributeContext.source.ip`. This message definition is guaranteed not to have any wire breaking change. So you can use it directly for passing attributes across different systems. NOTE: Different system may generate different subset of attributes. Please verify the system specification before relying on an attribute generated a system. # Describes attributes about the operation being executed by the service.
      &quot;request&quot;: { # This message defines attributes for an HTTP request. If the actual request is not an HTTP request, the runtime system should try to map the actual request to an equivalent HTTP request. # Represents a network request, such as an HTTP request.
        &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service receives the first byte of the request.
        &quot;method&quot;: &quot;A String&quot;, # The HTTP request method, such as `GET`, `POST`.
        &quot;protocol&quot;: &quot;A String&quot;, # The network protocol used with the request, such as &quot;http/1.1&quot;, &quot;spdy/3&quot;, &quot;h2&quot;, &quot;h2c&quot;, &quot;webrtc&quot;, &quot;tcp&quot;, &quot;udp&quot;, &quot;quic&quot;. See https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for details.
        &quot;id&quot;: &quot;A String&quot;, # The unique ID for a request, which can be propagated to downstream systems. The ID should have low probability of collision within a single day for a specific service.
        &quot;host&quot;: &quot;A String&quot;, # The HTTP request `Host` header value.
        &quot;query&quot;: &quot;A String&quot;, # The HTTP URL query in the format of `name1=value1&amp;name2=value2`, as it appears in the first line of the HTTP request. No decoding is performed.
        &quot;headers&quot;: { # The HTTP request headers. If multiple headers share the same key, they must be merged according to the HTTP spec. All header keys must be lowercased, because HTTP header keys are case-insensitive.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;path&quot;: &quot;A String&quot;, # The HTTP URL path.
        &quot;scheme&quot;: &quot;A String&quot;, # The HTTP URL scheme, such as `http` and `https`.
        &quot;reason&quot;: &quot;A String&quot;, # A special parameter for request reason. It is used by security systems to associate auditing information with a request.
        &quot;size&quot;: &quot;A String&quot;, # The HTTP request size in bytes. If unknown, it must be -1.
        &quot;auth&quot;: { # This message defines request authentication attributes. Terminology is based on the JSON Web Token (JWT) standard, but the terms also correlate to concepts in other standards. # The request authentication. May be absent for unauthenticated requests. Derived from the HTTP request `Authorization` header or equivalent.
          &quot;accessLevels&quot;: [ # A list of access level resource names that allow resources to be accessed by authenticated requester. It is part of Secure GCP processing for the incoming request. An access level string has the format: &quot;//{api_service_name}/accessPolicies/{policy_id}/accessLevels/{short_name}&quot; Example: &quot;//accesscontextmanager.googleapis.com/accessPolicies/MY_POLICY_ID/accessLevels/MY_LEVEL&quot;
            &quot;A String&quot;,
          ],
          &quot;claims&quot;: { # Structured claims presented with the credential. JWTs include `{key: value}` pairs for standard and private claims. The following is a subset of the standard required and optional claims that would typically be presented for a Google-based JWT: {&#x27;iss&#x27;: &#x27;accounts.google.com&#x27;, &#x27;sub&#x27;: &#x27;113289723416554971153&#x27;, &#x27;aud&#x27;: [&#x27;123456789012&#x27;, &#x27;pubsub.googleapis.com&#x27;], &#x27;azp&#x27;: &#x27;123456789012.apps.googleusercontent.com&#x27;, &#x27;email&#x27;: &#x27;jsmith@example.com&#x27;, &#x27;iat&#x27;: 1353601026, &#x27;exp&#x27;: 1353604926} SAML assertions are similarly specified, but with an identity provider dependent structure.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;presenter&quot;: &quot;A String&quot;, # The authorized presenter of the credential. Reflects the optional Authorized Presenter (`azp`) claim within a JWT or the OAuth client id. For example, a Google Cloud Platform client id looks as follows: &quot;123456789012.apps.googleusercontent.com&quot;.
          &quot;audiences&quot;: [ # The intended audience(s) for this authentication information. Reflects the audience (`aud`) claim within a JWT. The audience value(s) depends on the `issuer`, but typically include one or more of the following pieces of information: * The services intended to receive the credential. For example, [&quot;https://pubsub.googleapis.com/&quot;, &quot;https://storage.googleapis.com/&quot;]. * A set of service-based scopes. For example, [&quot;https://www.googleapis.com/auth/cloud-platform&quot;]. * The client id of an app, such as the Firebase project id for JWTs from Firebase Auth. Consult the documentation for the credential issuer to determine the information provided.
            &quot;A String&quot;,
          ],
          &quot;principal&quot;: &quot;A String&quot;, # The authenticated principal. Reflects the issuer (`iss`) and subject (`sub`) claims within a JWT. The issuer and subject should be `/` delimited, with `/` percent-encoded within the subject fragment. For Google accounts, the principal format is: &quot;https://accounts.google.com/{id}&quot;
        },
      },
      &quot;extensions&quot;: [ # Supports extensions for advanced use cases, such as logs and metrics.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;source&quot;: { # This message defines attributes for a node that handles a network request. The node can be either a service or an application that sends, forwards, or receives the request. Service peers should fill in `principal` and `labels` as appropriate. # The source of a network activity, such as starting a TCP connection. In a multi hop network activity, the source represents the sender of the last hop.
        &quot;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR country/region code associated with the above IP address. If the IP address is private, the `region_code` should reflect the physical location where this peer is running.
      },
      &quot;response&quot;: { # This message defines attributes for a typical network response. It generally models semantics of an HTTP response. # Represents a network response, such as an HTTP response.
        &quot;size&quot;: &quot;A String&quot;, # The HTTP response size in bytes. If unknown, it must be -1.
        &quot;code&quot;: &quot;A String&quot;, # The HTTP response status code, such as `200` and `404`.
        &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service generates the first byte of the response.
        &quot;headers&quot;: { # The HTTP response headers. If multiple headers share the same key, they must be merged according to HTTP spec. All header keys must be lowercased, because HTTP header keys are case-insensitive.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;api&quot;: { # This message defines attributes associated with API operations, such as a network API request. The terminology is based on the conventions used by Google APIs, Istio, and OpenAPI. # Represents an API operation that is involved to a network activity.
        &quot;service&quot;: &quot;A String&quot;, # The API service name. It is a logical identifier for a networked API, such as &quot;pubsub.googleapis.com&quot;. The naming syntax depends on the API management system being used for handling the request.
        &quot;protocol&quot;: &quot;A String&quot;, # The API protocol used for sending the request, such as &quot;http&quot;, &quot;https&quot;, &quot;grpc&quot;, or &quot;internal&quot;.
        &quot;version&quot;: &quot;A String&quot;, # The API version associated with the API operation above, such as &quot;v1&quot; or &quot;v1alpha1&quot;.
        &quot;operation&quot;: &quot;A String&quot;, # The API operation name. For gRPC requests, it is the fully qualified API method name, such as &quot;google.pubsub.v1.Publisher.Publish&quot;. For OpenAPI requests, it is the `operationId`, such as &quot;getPet&quot;.
      },
      &quot;resource&quot;: { # This message defines core attributes for a resource. A resource is an addressable (named) entity provided by the destination service. For example, a file stored on a network storage service. # Represents a target resource that is involved with a network activity. If multiple resources are involved with an activity, this must be the primary one.
        &quot;labels&quot;: { # The labels or tags on the resource, such as AWS resource tags and Kubernetes resource labels.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created. This may be either the time creation was initiated or when it was completed.
        &quot;uid&quot;: &quot;A String&quot;, # The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
        &quot;service&quot;: &quot;A String&quot;, # The name of the service that this resource belongs to, such as `pubsub.googleapis.com`. The service may be different from the DNS hostname that actually serves the request.
        &quot;etag&quot;: &quot;A String&quot;, # Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.
        &quot;type&quot;: &quot;A String&quot;, # The type of the resource. The syntax is platform-specific because different platforms define their resources differently. For Google APIs, the type format must be &quot;{service}/{kind}&quot;.
        &quot;displayName&quot;: &quot;A String&quot;, # Mutable. The display name set by clients. Must be &lt;= 63 characters.
        &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was deleted. If the resource is not deleted, this must be empty.
        &quot;annotations&quot;: { # Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # The stable identifier (name) of a resource on the `service`. A resource can be logically identified as &quot;//{resource.service}/{resource.name}&quot;. The differences between a resource name and a URI are: * Resource name is a logical identifier, independent of network protocol and API version. For example, `//pubsub.googleapis.com/projects/123/topics/news-feed`. * URI often includes protocol and version information, so it can be used directly by applications. For example, `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`. See https://cloud.google.com/apis/design/resource_names for details.
      },
      &quot;origin&quot;: { # This message defines attributes for a node that handles a network request. The node can be either a service or an application that sends, forwards, or receives the request. Service peers should fill in `principal` and `labels` as appropriate. # The origin of a network activity. In a multi hop network activity, the origin represents the sender of the first hop. For the first hop, the `source` and the `origin` must have the same content.
        &quot;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR country/region code associated with the above IP address. If the IP address is private, the `region_code` should reflect the physical location where this peer is running.
      },
      &quot;destination&quot;: { # This message defines attributes for a node that handles a network request. The node can be either a service or an application that sends, forwards, or receives the request. Service peers should fill in `principal` and `labels` as appropriate. # The destination of a network activity, such as accepting a TCP connection. In a multi hop network activity, the destination represents the receiver of the last hop.
        &quot;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
        &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR country/region code associated with the above IP address. If the IP address is private, the `region_code` should reflect the physical location where this peer is running.
      },
    },
    &quot;resources&quot;: [ # Describes the resources and the policies applied to each resource.
      { # Describes a resource referenced in the request.
        &quot;type&quot;: &quot;A String&quot;, # The resource type in the format of &quot;{service}/{kind}&quot;.
        &quot;name&quot;: &quot;A String&quot;, # The name of the resource referenced in the request.
        &quot;permission&quot;: &quot;A String&quot;, # The resource permission needed for this request. The format must be &quot;{service}/{plural}.{verb}&quot;.
      },
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for the Check method.
    &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # An &#x27;OK&#x27; status allows the operation. Any other status indicates a denial; [google.rpc.Status.details]() would contain additional details about the denial.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;headers&quot;: { # Returns a set of request contexts generated from the `CheckRequest`.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="report">report(serviceName, body=None, x__xgafv=None)</code>
  <pre>Private Preview. This feature is only available for approved services. This method provides telemetry reporting for services that are integrated with [Service Infrastructure](/service-infrastructure). It reports a list of operations that have occurred on a service. It must be called after the operations have been executed. For more information, see [Telemetry Reporting](/service-infrastructure/docs/telemetry-reporting). NOTE: The telemetry reporting has a hard limit of 1000 operations and 1MB per Report call. It is recommended to have no more than 100 operations per call. This method requires the `servicemanagement.services.report` permission on the specified service. For more information, see [Service Control API Access Control](https://cloud.google.com/service-infrastructure/docs/service-control/access-control).

Args:
  serviceName: string, The service name as specified in its service configuration. For example, `&quot;pubsub.googleapis.com&quot;`. See [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service) for the definition of a service name. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for the Report method.
    &quot;serviceConfigId&quot;: &quot;A String&quot;, # Specifies the version of the service configuration that should be used to process the request. Must not be empty. Set this field to &#x27;latest&#x27; to specify using the latest configuration.
    &quot;operations&quot;: [ # Describes the list of operations to be reported. Each operation is represented as an AttributeContext, and contains all attributes around an API access.
      { # This message defines the standard attribute vocabulary for Google APIs. An attribute is a piece of metadata that describes an activity on a network service. For example, the size of an HTTP request, or the status code of an HTTP response. Each attribute has a type and a name, which is logically defined as a proto message field in `AttributeContext`. The field type becomes the attribute type, and the field path becomes the attribute name. For example, the attribute `source.ip` maps to field `AttributeContext.source.ip`. This message definition is guaranteed not to have any wire breaking change. So you can use it directly for passing attributes across different systems. NOTE: Different system may generate different subset of attributes. Please verify the system specification before relying on an attribute generated a system.
        &quot;request&quot;: { # This message defines attributes for an HTTP request. If the actual request is not an HTTP request, the runtime system should try to map the actual request to an equivalent HTTP request. # Represents a network request, such as an HTTP request.
          &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service receives the first byte of the request.
          &quot;method&quot;: &quot;A String&quot;, # The HTTP request method, such as `GET`, `POST`.
          &quot;protocol&quot;: &quot;A String&quot;, # The network protocol used with the request, such as &quot;http/1.1&quot;, &quot;spdy/3&quot;, &quot;h2&quot;, &quot;h2c&quot;, &quot;webrtc&quot;, &quot;tcp&quot;, &quot;udp&quot;, &quot;quic&quot;. See https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for details.
          &quot;id&quot;: &quot;A String&quot;, # The unique ID for a request, which can be propagated to downstream systems. The ID should have low probability of collision within a single day for a specific service.
          &quot;host&quot;: &quot;A String&quot;, # The HTTP request `Host` header value.
          &quot;query&quot;: &quot;A String&quot;, # The HTTP URL query in the format of `name1=value1&amp;name2=value2`, as it appears in the first line of the HTTP request. No decoding is performed.
          &quot;headers&quot;: { # The HTTP request headers. If multiple headers share the same key, they must be merged according to the HTTP spec. All header keys must be lowercased, because HTTP header keys are case-insensitive.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;path&quot;: &quot;A String&quot;, # The HTTP URL path.
          &quot;scheme&quot;: &quot;A String&quot;, # The HTTP URL scheme, such as `http` and `https`.
          &quot;reason&quot;: &quot;A String&quot;, # A special parameter for request reason. It is used by security systems to associate auditing information with a request.
          &quot;size&quot;: &quot;A String&quot;, # The HTTP request size in bytes. If unknown, it must be -1.
          &quot;auth&quot;: { # This message defines request authentication attributes. Terminology is based on the JSON Web Token (JWT) standard, but the terms also correlate to concepts in other standards. # The request authentication. May be absent for unauthenticated requests. Derived from the HTTP request `Authorization` header or equivalent.
            &quot;accessLevels&quot;: [ # A list of access level resource names that allow resources to be accessed by authenticated requester. It is part of Secure GCP processing for the incoming request. An access level string has the format: &quot;//{api_service_name}/accessPolicies/{policy_id}/accessLevels/{short_name}&quot; Example: &quot;//accesscontextmanager.googleapis.com/accessPolicies/MY_POLICY_ID/accessLevels/MY_LEVEL&quot;
              &quot;A String&quot;,
            ],
            &quot;claims&quot;: { # Structured claims presented with the credential. JWTs include `{key: value}` pairs for standard and private claims. The following is a subset of the standard required and optional claims that would typically be presented for a Google-based JWT: {&#x27;iss&#x27;: &#x27;accounts.google.com&#x27;, &#x27;sub&#x27;: &#x27;113289723416554971153&#x27;, &#x27;aud&#x27;: [&#x27;123456789012&#x27;, &#x27;pubsub.googleapis.com&#x27;], &#x27;azp&#x27;: &#x27;123456789012.apps.googleusercontent.com&#x27;, &#x27;email&#x27;: &#x27;jsmith@example.com&#x27;, &#x27;iat&#x27;: 1353601026, &#x27;exp&#x27;: 1353604926} SAML assertions are similarly specified, but with an identity provider dependent structure.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;presenter&quot;: &quot;A String&quot;, # The authorized presenter of the credential. Reflects the optional Authorized Presenter (`azp`) claim within a JWT or the OAuth client id. For example, a Google Cloud Platform client id looks as follows: &quot;123456789012.apps.googleusercontent.com&quot;.
            &quot;audiences&quot;: [ # The intended audience(s) for this authentication information. Reflects the audience (`aud`) claim within a JWT. The audience value(s) depends on the `issuer`, but typically include one or more of the following pieces of information: * The services intended to receive the credential. For example, [&quot;https://pubsub.googleapis.com/&quot;, &quot;https://storage.googleapis.com/&quot;]. * A set of service-based scopes. For example, [&quot;https://www.googleapis.com/auth/cloud-platform&quot;]. * The client id of an app, such as the Firebase project id for JWTs from Firebase Auth. Consult the documentation for the credential issuer to determine the information provided.
              &quot;A String&quot;,
            ],
            &quot;principal&quot;: &quot;A String&quot;, # The authenticated principal. Reflects the issuer (`iss`) and subject (`sub`) claims within a JWT. The issuer and subject should be `/` delimited, with `/` percent-encoded within the subject fragment. For Google accounts, the principal format is: &quot;https://accounts.google.com/{id}&quot;
          },
        },
        &quot;extensions&quot;: [ # Supports extensions for advanced use cases, such as logs and metrics.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;source&quot;: { # This message defines attributes for a node that handles a network request. The node can be either a service or an application that sends, forwards, or receives the request. Service peers should fill in `principal` and `labels` as appropriate. # The source of a network activity, such as starting a TCP connection. In a multi hop network activity, the source represents the sender of the last hop.
          &quot;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
          &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
          &quot;labels&quot;: { # The labels associated with the peer.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
          &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR country/region code associated with the above IP address. If the IP address is private, the `region_code` should reflect the physical location where this peer is running.
        },
        &quot;response&quot;: { # This message defines attributes for a typical network response. It generally models semantics of an HTTP response. # Represents a network response, such as an HTTP response.
          &quot;size&quot;: &quot;A String&quot;, # The HTTP response size in bytes. If unknown, it must be -1.
          &quot;code&quot;: &quot;A String&quot;, # The HTTP response status code, such as `200` and `404`.
          &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service generates the first byte of the response.
          &quot;headers&quot;: { # The HTTP response headers. If multiple headers share the same key, they must be merged according to HTTP spec. All header keys must be lowercased, because HTTP header keys are case-insensitive.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;api&quot;: { # This message defines attributes associated with API operations, such as a network API request. The terminology is based on the conventions used by Google APIs, Istio, and OpenAPI. # Represents an API operation that is involved to a network activity.
          &quot;service&quot;: &quot;A String&quot;, # The API service name. It is a logical identifier for a networked API, such as &quot;pubsub.googleapis.com&quot;. The naming syntax depends on the API management system being used for handling the request.
          &quot;protocol&quot;: &quot;A String&quot;, # The API protocol used for sending the request, such as &quot;http&quot;, &quot;https&quot;, &quot;grpc&quot;, or &quot;internal&quot;.
          &quot;version&quot;: &quot;A String&quot;, # The API version associated with the API operation above, such as &quot;v1&quot; or &quot;v1alpha1&quot;.
          &quot;operation&quot;: &quot;A String&quot;, # The API operation name. For gRPC requests, it is the fully qualified API method name, such as &quot;google.pubsub.v1.Publisher.Publish&quot;. For OpenAPI requests, it is the `operationId`, such as &quot;getPet&quot;.
        },
        &quot;resource&quot;: { # This message defines core attributes for a resource. A resource is an addressable (named) entity provided by the destination service. For example, a file stored on a network storage service. # Represents a target resource that is involved with a network activity. If multiple resources are involved with an activity, this must be the primary one.
          &quot;labels&quot;: { # The labels or tags on the resource, such as AWS resource tags and Kubernetes resource labels.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created. This may be either the time creation was initiated or when it was completed.
          &quot;uid&quot;: &quot;A String&quot;, # The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
          &quot;service&quot;: &quot;A String&quot;, # The name of the service that this resource belongs to, such as `pubsub.googleapis.com`. The service may be different from the DNS hostname that actually serves the request.
          &quot;etag&quot;: &quot;A String&quot;, # Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.
          &quot;type&quot;: &quot;A String&quot;, # The type of the resource. The syntax is platform-specific because different platforms define their resources differently. For Google APIs, the type format must be &quot;{service}/{kind}&quot;.
          &quot;displayName&quot;: &quot;A String&quot;, # Mutable. The display name set by clients. Must be &lt;= 63 characters.
          &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was deleted. If the resource is not deleted, this must be empty.
          &quot;annotations&quot;: { # Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # The stable identifier (name) of a resource on the `service`. A resource can be logically identified as &quot;//{resource.service}/{resource.name}&quot;. The differences between a resource name and a URI are: * Resource name is a logical identifier, independent of network protocol and API version. For example, `//pubsub.googleapis.com/projects/123/topics/news-feed`. * URI often includes protocol and version information, so it can be used directly by applications. For example, `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`. See https://cloud.google.com/apis/design/resource_names for details.
        },
        &quot;origin&quot;: { # This message defines attributes for a node that handles a network request. The node can be either a service or an application that sends, forwards, or receives the request. Service peers should fill in `principal` and `labels` as appropriate. # The origin of a network activity. In a multi hop network activity, the origin represents the sender of the first hop. For the first hop, the `source` and the `origin` must have the same content.
          &quot;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
          &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
          &quot;labels&quot;: { # The labels associated with the peer.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
          &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR country/region code associated with the above IP address. If the IP address is private, the `region_code` should reflect the physical location where this peer is running.
        },
        &quot;destination&quot;: { # This message defines attributes for a node that handles a network request. The node can be either a service or an application that sends, forwards, or receives the request. Service peers should fill in `principal` and `labels` as appropriate. # The destination of a network activity, such as accepting a TCP connection. In a multi hop network activity, the destination represents the receiver of the last hop.
          &quot;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
          &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
          &quot;labels&quot;: { # The labels associated with the peer.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
          &quot;regionCode&quot;: &quot;A String&quot;, # The CLDR country/region code associated with the above IP address. If the IP address is private, the `region_code` should reflect the physical location where this peer is running.
        },
      },
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for the Report method. If the request contains any invalid data, the server returns an RPC error.
  }</pre>
</div>

</body></html>