<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;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](/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;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>