<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;resources&quot;: [ # Describes the resources and the policies applied to each resource.
      { # Describes a resource referenced in the request.
        &quot;type&quot;: &quot;A String&quot;, # The resource type in the format of &quot;{service}/{kind}&quot;.
        &quot;permission&quot;: &quot;A String&quot;, # The resource permission needed for this request. The format must be &quot;{service}/{plural}.{verb}&quot;.
        &quot;name&quot;: &quot;A String&quot;, # The name of the resource referenced in the request.
      },
    ],
    &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;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;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;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;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;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;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;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;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;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;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;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;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;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;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;path&quot;: &quot;A String&quot;, # The HTTP URL path.
        &quot;scheme&quot;: &quot;A String&quot;, # The HTTP URL scheme, such as `http` and `https`.
        &quot;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;method&quot;: &quot;A String&quot;, # The HTTP request method, such as `GET`, `POST`.
        &quot;host&quot;: &quot;A String&quot;, # The HTTP request `Host` header value.
        &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 first 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;displayName&quot;: &quot;A String&quot;, # Mutable. The display name set by clients. Must be &lt;= 63 characters.
        &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;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;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;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;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;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;annotations&quot;: { # Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # The stable identifier (name) of a resource on the `service`. A resource can be logically identified as &quot;//{resource.service}/{resource.name}&quot;. The differences between a resource name and a URI are: * Resource name is a logical identifier, independent of network protocol and API version. For example, `//pubsub.googleapis.com/projects/123/topics/news-feed`. * URI often includes protocol and version information, so it can be used directly by applications. For example, `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`. See https://cloud.google.com/apis/design/resource_names for details.
        &quot;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;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;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;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
        &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
        &quot;labels&quot;: { # The labels associated with the peer.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;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;api&quot;: { # This message defines attributes associated with API operations, such as a network API request. The terminology is based on the conventions used by Google APIs, Istio, and OpenAPI. # Represents an API operation that is involved to a network activity.
        &quot;service&quot;: &quot;A String&quot;, # The API service name. It is a logical identifier for a networked API, such as &quot;pubsub.googleapis.com&quot;. The naming syntax depends on the API management system being used for handling the request.
        &quot;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;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;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;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;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;code&quot;: &quot;A String&quot;, # The HTTP response status code, such as `200` and `404`.
        &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service generates the first byte of the response.
        &quot;size&quot;: &quot;A String&quot;, # The HTTP response size in bytes. If unknown, it must be -1.
      },
    },
    &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). # An &#x27;OK&#x27; status allows the operation. Any other status indicates a denial; [google.rpc.Status.details]() would contain additional details about the denial.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
  }</pre>
</div>

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

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

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

{ # Request message for the Report method.
    &quot;serviceConfigId&quot;: &quot;A String&quot;, # Specifies the version of the service configuration that should be used to process the request. Must not be empty. Set this field to &#x27;latest&#x27; to specify using the latest configuration.
    &quot;operations&quot;: [ # Describes the list of operations to be reported. Each operation is represented as an AttributeContext, and contains all attributes around an API access.
      { # This message defines the standard attribute vocabulary for Google APIs. An attribute is a piece of metadata that describes an activity on a network service. For example, the size of an HTTP request, or the status code of an HTTP response. Each attribute has a type and a name, which is logically defined as a proto message field in `AttributeContext`. The field type becomes the attribute type, and the field path becomes the attribute name. For example, the attribute `source.ip` maps to field `AttributeContext.source.ip`. This message definition is guaranteed not to have any wire breaking change. So you can use it directly for passing attributes across different systems. NOTE: Different system may generate different subset of attributes. Please verify the system specification before relying on an attribute generated a system.
        &quot;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;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
          &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
          &quot;labels&quot;: { # The labels associated with the peer.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;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;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;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
          &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
          &quot;labels&quot;: { # The labels associated with the peer.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;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;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;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;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;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;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;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;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;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;path&quot;: &quot;A String&quot;, # The HTTP URL path.
          &quot;scheme&quot;: &quot;A String&quot;, # The HTTP URL scheme, such as `http` and `https`.
          &quot;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;method&quot;: &quot;A String&quot;, # The HTTP request method, such as `GET`, `POST`.
          &quot;host&quot;: &quot;A String&quot;, # The HTTP request `Host` header value.
          &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 first 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;displayName&quot;: &quot;A String&quot;, # Mutable. The display name set by clients. Must be &lt;= 63 characters.
          &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;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;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;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;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;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;annotations&quot;: { # Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # The stable identifier (name) of a resource on the `service`. A resource can be logically identified as &quot;//{resource.service}/{resource.name}&quot;. The differences between a resource name and a URI are: * Resource name is a logical identifier, independent of network protocol and API version. For example, `//pubsub.googleapis.com/projects/123/topics/news-feed`. * URI often includes protocol and version information, so it can be used directly by applications. For example, `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`. See https://cloud.google.com/apis/design/resource_names for details.
          &quot;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;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;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;principal&quot;: &quot;A String&quot;, # The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the idenity associated with a load balancer that forwared the request.
          &quot;port&quot;: &quot;A String&quot;, # The network port of the peer.
          &quot;labels&quot;: { # The labels associated with the peer.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;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;api&quot;: { # This message defines attributes associated with API operations, such as a network API request. The terminology is based on the conventions used by Google APIs, Istio, and OpenAPI. # Represents an API operation that is involved to a network activity.
          &quot;service&quot;: &quot;A String&quot;, # The API service name. It is a logical identifier for a networked API, such as &quot;pubsub.googleapis.com&quot;. The naming syntax depends on the API management system being used for handling the request.
          &quot;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;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;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;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;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;code&quot;: &quot;A String&quot;, # The HTTP response status code, such as `200` and `404`.
          &quot;time&quot;: &quot;A String&quot;, # The timestamp when the `destination` service generates the first byte of the response.
          &quot;size&quot;: &quot;A String&quot;, # The HTTP response size in bytes. If unknown, it must be -1.
        },
      },
    ],
  }

  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>