type: google.api.Service
config_version: 2
name: servicemanagement.googleapis.com
title: Google Service Management API

apis:
- name: google.api.servicemanagement.v1.ServiceManager

types:
- name: google.api.servicemanagement.v1.ConfigSource
- name: google.api.servicemanagement.v1.ConfigRef
- name: google.api.servicemanagement.v1.OperationMetadata
- name: google.api.servicemanagement.v1.Rollout
- name: google.api.servicemanagement.v1.SubmitConfigSourceResponse
- name: google.api.servicemanagement.v1.UndeleteServiceResponse

documentation:
  summary: |-
    Google Service Management allows service producers to publish their services
    on Google Cloud Platform so that they can be discovered and used by service
    consumers.
  overview: |-
    Google Service Management manages a set of *services*. Service Management
    allows *service producers* to publish their services on Google Cloud
    Platform so that they can be discovered and used by *service consumers*. It
    also handles the tasks of tracking service lifecycle and programming various
    backend systems -- such as [Stackdriver
    Logging](https://cloud.google.com/stackdriver), [Stackdriver
    Monitoring](https://cloud.google.com/stackdriver) -- to support the managed
    services.

    If you are a service producer, you can use the Google Service Management API
    and [Google Cloud SDK (gcloud)](/sdk) to publish and manage your services.
    Each managed service has a service configuration which declares various
    aspects of the service such as its API surface, along with parameters to
    configure the supporting backend systems, such as logging and monitoring. If
    you build your service using [Google Cloud
    Endpoints](https://cloud.google.com/endpoints/), the service configuration
    will be handled automatically.

    If you are a service consumer and want to use a managed service, you can use
    the Google Service Management API or [Google Cloud
    Console](https://console.cloud.google.com) to activate the service for your
    [Google developer project](https://developers.google.com/console/help/new/),
    then start using its APIs and functions.

    ## Managed services

    REST URL:
    `https://servicemanagement.googleapis.com/v1/services/{service-name}` <br />
    REST schema is defined
    [here](/service-management/reference/rest/v1/services).

    A managed service refers to a network service managed by Service Management.
    Each managed service has a unique name, such as `example.googleapis.com`,
    which must be a valid fully-qualified DNS name, as per RFC 1035.

    A managed service typically provides some REST APIs and/or other functions
    to their service consumers, such as mobile apps or cloud services.

    Service producers can use methods, such as
    [services.create](/service-management/reference/rest/v1/services/create),
    [services.delete](/service-management/reference/rest/v1/services/delete),
    [services.undelete](/service-management/reference/rest/v1/services/undelete),
    to manipulate their managed services.

    ## Service producers

    A service producer is the Google developer project responsible for
    publishing and maintaining a managed service. Each managed service is owned
    by exactly one service producer.

    ## Service consumers

    A service consumer is a Google developer project that has enabled and can
    invoke APIs on a managed service. A managed service can have many service
    consumers.

    ## Service configuration

    REST URL:
    `https://servicemanagement.googleapis.com/v1/services/{service-name}/configs/{config_id}`
    <br /> REST schema is defined
    [here](/service-management/reference/rest/v1/services.configs).

    Each managed service is described by a service configuration which covers a
    wide range of features, including its name, title, RPC API definitions, REST
    API definitions, documentation, authentication, and more.

    To change the configuration of a managed service, the service producer needs
    to publish an updated service configuration to Service Management. Service
    Management keeps a history of published service configurations, making it
    possible to easily retrace how a service's configuration evolved over time.
    Service configurations can be published using the
    [services.configs.create](/service-management/reference/rest/v1/services.configs/create)
    or
    [services.configs.submit](/service-management/reference/rest/v1/services.configs/submit)
    methods.

    Alternatively, `services.configs.submit` allows publishing an
    [OpenAPI](https://github.com/OAI/OpenAPI-Specification) specification,
    formerly known as the Swagger Specification, which is automatically
    converted to a corresponding service configuration.

    ## Service rollout

    REST URL:
    `https://servicemanagement.googleapis.com/v1/services/{service-name}/rollouts/{rollout-id}`
    <br /> REST schema is defined
    [here](/service-management/reference/rest/v1/services.rollouts).

    A `Rollout` defines how Google Service Management should deploy service
    configurations to backend systems and how the configurations take effect at
    runtime. It lets service producers specify multiple service configuration
    versions to be deployed together, and a strategy that indicates how they
    should be used.

    Updating a managed service's configuration can be dangerous, as a
    configuration error can lead to a service outage. To mitigate risks, Service
    Management supports gradual rollout of service configuration changes. This
    feature gives service producers time to identity potential issues and
    rollback service configuration changes in case of errors, thus minimizing
    the customer impact of bad configurations. For example, you could specify
    that 5% of traffic uses configuration 1, while the remaining 95% uses
    configuration 2.

    Service Management keeps a history of rollouts so that service producers can
    undo to previous configuration versions. You can rollback a configuration by
    initiating a new `Rollout` that clones a previously submitted rollout
    record.
  rules:
  - selector: google.longrunning.Operations.ListOperations
    description: Lists service operations that match the specified filter in the request.

backend:
  rules:
  - selector: google.longrunning.Operations.ListOperations
    deadline: 10.0
  - selector: google.longrunning.Operations.GetOperation
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.ListServices
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.GetService
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.CreateService
    deadline: 20.0
  - selector: google.api.servicemanagement.v1.ServiceManager.DeleteService
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.UndeleteService
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.ListServiceConfigs
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.GetServiceConfig
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.CreateServiceConfig
    deadline: 20.0
  - selector: google.api.servicemanagement.v1.ServiceManager.SubmitConfigSource
    deadline: 20.0
  - selector: google.api.servicemanagement.v1.ServiceManager.ListServiceRollouts
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.GetServiceRollout
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.GenerateConfigReport
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.EnableService
    deadline: 10.0
  - selector: google.api.servicemanagement.v1.ServiceManager.DisableService
    deadline: 10.0
  - selector: google.iam.v1.IAMPolicy.SetIamPolicy
    deadline: 10.0
  - selector: google.iam.v1.IAMPolicy.GetIamPolicy
    deadline: 10.0
  - selector: google.iam.v1.IAMPolicy.TestIamPermissions
    deadline: 10.0

http:
  rules:
  - selector: google.longrunning.Operations.ListOperations
    get: /v1/operations

  - selector: google.iam.v1.IAMPolicy.SetIamPolicy
    post: '/v1/{resource=services/*}:setIamPolicy'
    body: '*'
    additional_bindings:
    - post: '/v1/{resource=services/*/consumers/*}:setIamPolicy'
      body: '*'

  - selector: google.iam.v1.IAMPolicy.GetIamPolicy
    post: '/v1/{resource=services/*}:getIamPolicy'
    body: '*'
    additional_bindings:
    - post: '/v1/{resource=services/*/consumers/*}:getIamPolicy'
      body: '*'

  - selector: google.iam.v1.IAMPolicy.TestIamPermissions
    post: '/v1/{resource=services/*}:testIamPermissions'
    body: '*'
    additional_bindings:
    - post: '/v1/{resource=services/*/consumers/*}:testIamPermissions'
      body: '*'


authentication:
  rules:
  - selector: '*'
    oauth:
      canonical_scopes: |-
        https://www.googleapis.com/auth/cloud-platform,
        https://www.googleapis.com/auth/service.management
  - selector: |-
      google.api.servicemanagement.v1.ServiceManager.GetService,
      google.api.servicemanagement.v1.ServiceManager.GetServiceConfig,
      google.api.servicemanagement.v1.ServiceManager.GetServiceRollout,
      google.api.servicemanagement.v1.ServiceManager.ListServiceConfigs,
      google.api.servicemanagement.v1.ServiceManager.ListServiceRollouts,
      google.api.servicemanagement.v1.ServiceManager.ListServices
    oauth:
      canonical_scopes: |-
        https://www.googleapis.com/auth/cloud-platform,
        https://www.googleapis.com/auth/cloud-platform.read-only,
        https://www.googleapis.com/auth/service.management,
        https://www.googleapis.com/auth/service.management.readonly
  - selector: |-
      google.iam.v1.IAMPolicy.GetIamPolicy,
      google.iam.v1.IAMPolicy.TestIamPermissions
    oauth:
      canonical_scopes: |-
        https://www.googleapis.com/auth/cloud-platform,
        https://www.googleapis.com/auth/cloud-platform.read-only,
        https://www.googleapis.com/auth/service.management,
        https://www.googleapis.com/auth/service.management.readonly
