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}`
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}`
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}`
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