<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;.
      &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;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;.
        &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>