---
title: "POST /v2/services/{serviceName}:check"
method: POST
path: "/v2/services/{serviceName}:check"
tags: ["services"]
---

# POST /v2/services/{serviceName}:check

`POST /v2/services/{serviceName}:check`

This method provides admission control for services that are integrated with [Service Infrastructure](https://cloud.google.com/service-infrastructure). It checks whether an operation should be allowed based on the service configuration and relevant policies. It must be called before the operation is executed. For more information, see [Admission Control](https://cloud.google.com/service-infrastructure/docs/admission-control). NOTE: The admission control has an expected policy propagation delay of 60s. The caller **must** not depend on the most recent policy changes. NOTE: The admission control has a hard limit of 1 referenced resources per call. If an operation refers to more than 1 resources, the caller must call the Check method multiple times. This method requires the `servicemanagement.services.check` permission on the specified service. For more information, see [Service Control API Access Control](https://cloud.google.com/service-infrastructure/docs/service-control/access-control).

## Path parameters

- `serviceName` string, required

## Request body

- CheckRequest — Request message for the Check method.
  - `serviceConfigId` string — Specifies the version of the service configuration that should be used to process the request. Must not be empty. Set this field to 'latest' to specify using the latest configuration.
  - `attributes` AttributeContext — 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.
    - `origin` Peer — 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.
      - `ip` string — The IP address of the peer.
      - `port` string, int64 — The network port of the peer.
      - `labels` object — The labels associated with the peer.
      - `principal` string — The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the identity associated with a load balancer that forwarded the request.
      - `regionCode` string — 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.
    - `source` Peer — 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.
      - `ip` string — The IP address of the peer.
      - `port` string, int64 — The network port of the peer.
      - `labels` object — The labels associated with the peer.
      - `principal` string — The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the identity associated with a load balancer that forwarded the request.
      - `regionCode` string — 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.
    - `destination` Peer — 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.
      - `ip` string — The IP address of the peer.
      - `port` string, int64 — The network port of the peer.
      - `labels` object — The labels associated with the peer.
      - `principal` string — The identity of this peer. Similar to `Request.auth.principal`, but relative to the peer instead of the request. For example, the identity associated with a load balancer that forwarded the request.
      - `regionCode` string — 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.
    - `request` Request — 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.
      - `id` string — 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.
      - `method` string — The HTTP request method, such as `GET`, `POST`.
      - `headers` object — 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.
      - `path` string — The HTTP URL path, excluding the query parameters.
      - `host` string — The HTTP request `Host` header value.
      - `scheme` string — The HTTP URL scheme, such as `http` and `https`.
      - `query` string — The HTTP URL query in the format of `name1=value1&name2=value2`, as it appears in the first line of the HTTP request. No decoding is performed.
      - `time` string, google-datetime — The timestamp when the `destination` service receives the last byte of the request.
      - `size` string, int64 — The HTTP request size in bytes. If unknown, it must be -1.
      - `protocol` string — The network protocol used with the request, such as "http/1.1", "spdy/3", "h2", "h2c", "webrtc", "tcp", "udp", "quic". See https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for details.
      - `reason` string — A special parameter for request reason. It is used by security systems to associate auditing information with a request.
      - `auth` Auth — 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.
        - `principal` string — 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: "https://accounts.google.com/{id}"
        - `audiences` string[] — 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, ["https://pubsub.googleapis.com/", "https://storage.googleapis.com/"]. * A set of service-based scopes. For example, ["https://www.googleapis.com/auth/cloud-platform"]. * 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.
        - `presenter` string — 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: "123456789012.apps.googleusercontent.com".
        - `claims` object — 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: {'iss': 'accounts.google.com', 'sub': '113289723416554971153', 'aud': ['123456789012', 'pubsub.googleapis.com'], 'azp': '123456789012.apps.googleusercontent.com', 'email': 'jsmith@example.com', 'iat': 1353601026, 'exp': 1353604926} SAML assertions are similarly specified, but with an identity provider dependent structure.
        - `accessLevels` string[] — 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: "//{api_service_name}/accessPolicies/{policy_id}/accessLevels/{short_name}" Example: "//accesscontextmanager.googleapis.com/accessPolicies/MY_POLICY_ID/accessLevels/MY_LEVEL"
        - `credentialId` string — Identifies the client credential id used for authentication. credential_id is in the format of AUTH_METHOD:IDENTIFIER, e.g. "serviceaccount:XXXXX, apikey:XXXXX" where the format of the IDENTIFIER can vary for different AUTH_METHODs.
        - `oauth` Oauth — This message defines attributes associated with OAuth credentials.
          - `clientId` string — The optional OAuth client ID. This is the unique public identifier issued by an authorization server to a registered client application. Empty string is equivalent to no oauth client id. WARNING: This is for MCP tools/call and tools/list authorization and not for general use.
      - `origin` string — The values from Origin header from the HTTP request, such as "https://console.cloud.google.com". Modern browsers can only have one origin. Special browsers and/or HTTP clients may require multiple origins.
    - `response` Response — This message defines attributes for a typical network response. It generally models semantics of an HTTP response.
      - `code` string, int64 — The HTTP response status code, such as `200` and `404`.
      - `size` string, int64 — The HTTP response size in bytes. If unknown, it must be -1.
      - `headers` object — 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.
      - `time` string, google-datetime — The timestamp when the `destination` service sends the last byte of the response.
      - `backendLatency` string, google-duration — 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.
    - `resource` Resource — 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.
      - `service` string — 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.
      - `name` string — The stable identifier (name) of a resource on the `service`. A resource can be logically identified as "//{resource.service}/{resource.name}". 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.
      - `type` string — 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 "{service}/{kind}", such as "pubsub.googleapis.com/Topic".
      - `labels` object — The labels or tags on the resource, such as AWS resource tags and Kubernetes resource labels.
      - `uid` string — 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.
      - `annotations` object — 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/concepts/overview/working-with-objects/annotations/
      - `displayName` string — Mutable. The display name set by clients. Must be <= 63 characters.
      - `createTime` string, google-datetime — Output only. The timestamp when the resource was created. This may be either the time creation was initiated or when it was completed.
      - `updateTime` string, google-datetime — 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.
      - `deleteTime` string, google-datetime — Output only. The timestamp when the resource was deleted. If the resource is not deleted, this must be empty.
      - `etag` string — 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.
      - `location` string — 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.
    - `api` Api — 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.
      - `service` string — The API service name. It is a logical identifier for a networked API, such as "pubsub.googleapis.com". The naming syntax depends on the API management system being used for handling the request.
      - `operation` string — The API operation name. For gRPC requests, it is the fully qualified API method name, such as "google.pubsub.v1.Publisher.Publish". For OpenAPI requests, it is the `operationId`, such as "getPet".
      - `protocol` string — The API protocol used for sending the request, such as "http", "https", "grpc", or "internal".
      - `version` string — The API version associated with the API operation above, such as "v1" or "v1alpha1".
    - `extensions` object[] — Supports extensions for advanced use cases, such as logs and metrics.
  - `resources` ResourceInfo[] — Describes the resources and the policies applied to each resource.
    - `name` string — The name of the resource referenced in the request.
    - `type` string — The resource type in the format of "{service}/{kind}".
    - `permission` string — The resource permission needed for this request. The format must be "{service}/{plural}.{verb}".
    - `container` string — 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/` Required for the policy enforcement on the container level (e.g. VPCSC, Location Policy check, Org Policy check).
    - `location` string — Optional. The location of the resource, it must be a valid zone, region or multiregion, for example: "europe-west4", "northamerica-northeast1-a". Required for location policy check.
  - `flags` string — Optional. Contains a comma-separated list of flags.

## Response `200`

Successful response

---

[API](https://skmtc.dev/google/apis/servicecontrol.md) · [All operations](https://skmtc.dev/google/apis/servicecontrol/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/google/servicecontrol/revisions/c23e3106e6be/schema)
