<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](https://cloud.google.com/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](https://cloud.google.com/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](https://cloud.google.com/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](https://cloud.google.com/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](https://cloud.google.com/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](https://cloud.google.com/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;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;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;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;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;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;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;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;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
      &quot;labels&quot;: { # The labels associated with the peer.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
      &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;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;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;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;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
      &quot;labels&quot;: { # The labels associated with the peer.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
      &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;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;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;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;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;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;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;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;host&quot;: &quot;A String&quot;, # The HTTP request `Host` header value.
      &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;method&quot;: &quot;A String&quot;, # The HTTP request method, such as `GET`, `POST`.
      &quot;path&quot;: &quot;A String&quot;, # The HTTP URL path, excluding the query parameters.
      &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;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;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;scheme&quot;: &quot;A String&quot;, # The HTTP URL scheme, such as `http` and `https`.
      &quot;size&quot;: &quot;A String&quot;, # The HTTP request size in bytes. If unknown, it must be -1.
      &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service receives the last byte of the request.
    },
    &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;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: https://kubernetes.io/docs/user-guide/annotations
        &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;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;displayName&quot;: &quot;A String&quot;, # Mutable. The display name set by clients. Must be &lt;= 63 characters.
      &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;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;location&quot;: &quot;A String&quot;, # Immutable. The location of the resource. The location encoding is specific to the service provider, and new encoding may be introduced as the service evolves. For Google Cloud products, the encoding is what is used by Google Cloud APIs, such as `us-east1`, `aws-us-east-1`, and `azure-eastus2`. The semantics of `location` is identical to the `cloud.googleapis.com/location` label used by some Google Cloud APIs.
      &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;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;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;, such as &quot;pubsub.googleapis.com/Topic&quot;.
      &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;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;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;backendLatency&quot;: &quot;A String&quot;, # The amount of time it takes the backend service to fully respond to a request. Measured from when the destination service starts to send the request to the backend until when the destination service receives the complete response from the backend.
      &quot;code&quot;: &quot;A String&quot;, # The HTTP response status code, such as `200` and `404`.
      &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;size&quot;: &quot;A String&quot;, # The HTTP response size in bytes. If unknown, it must be -1.
      &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service sends the last byte of the response.
    },
    &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;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
      &quot;labels&quot;: { # The labels associated with the peer.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
      &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;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;flags&quot;: &quot;A String&quot;, # Optional. Contains a comma-separated list of flags.
  &quot;resources&quot;: [ # Describes the resources and the policies applied to each resource.
    { # Describes a resource referenced in the request.
      &quot;container&quot;: &quot;A String&quot;, # Optional. The identifier of the container of this resource. For Google Cloud APIs, the resource container must be one of the following formats: - `projects/` - `folders/` - `organizations/` For the policy enforcement on the container level (VPCSC and Location Policy check), this field takes precedence on the container extracted from name when presents.
      &quot;location&quot;: &quot;A String&quot;, # Optional. The location of the resource. The value must be a valid zone, region or multiregion. For example: &quot;europe-west4&quot; or &quot;northamerica-northeast1-a&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;.
      &quot;type&quot;: &quot;A String&quot;, # The resource type in the format of &quot;{service}/{kind}&quot;.
    },
  ],
  &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.
}

  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;headers&quot;: { # Returns a set of request contexts generated from the `CheckRequest`.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &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). # Operation is allowed when this field is not set. Any non-&#x27;OK&#x27; 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.
  },
}</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](https://cloud.google.com/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](https://cloud.google.com/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;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;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;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;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;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;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;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;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &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;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;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;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;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &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;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;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;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;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;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;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;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;host&quot;: &quot;A String&quot;, # The HTTP request `Host` header value.
        &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;method&quot;: &quot;A String&quot;, # The HTTP request method, such as `GET`, `POST`.
        &quot;path&quot;: &quot;A String&quot;, # The HTTP URL path, excluding the query parameters.
        &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;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;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;scheme&quot;: &quot;A String&quot;, # The HTTP URL scheme, such as `http` and `https`.
        &quot;size&quot;: &quot;A String&quot;, # The HTTP request size in bytes. If unknown, it must be -1.
        &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service receives the last byte of the request.
      },
      &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;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: https://kubernetes.io/docs/user-guide/annotations
          &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;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;displayName&quot;: &quot;A String&quot;, # Mutable. The display name set by clients. Must be &lt;= 63 characters.
        &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;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;location&quot;: &quot;A String&quot;, # Immutable. The location of the resource. The location encoding is specific to the service provider, and new encoding may be introduced as the service evolves. For Google Cloud products, the encoding is what is used by Google Cloud APIs, such as `us-east1`, `aws-us-east-1`, and `azure-eastus2`. The semantics of `location` is identical to the `cloud.googleapis.com/location` label used by some Google Cloud APIs.
        &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;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;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;, such as &quot;pubsub.googleapis.com/Topic&quot;.
        &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;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;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;backendLatency&quot;: &quot;A String&quot;, # The amount of time it takes the backend service to fully respond to a request. Measured from when the destination service starts to send the request to the backend until when the destination service receives the complete response from the backend.
        &quot;code&quot;: &quot;A String&quot;, # The HTTP response status code, such as `200` and `404`.
        &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;size&quot;: &quot;A String&quot;, # The HTTP response size in bytes. If unknown, it must be -1.
        &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service sends the last byte of the response.
      },
      &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;ip&quot;: &quot;A String&quot;, # The IP address of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &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;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;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.
}

  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>