Adding Google Service Management protos
diff --git a/google/api/servicemanagement/README.md b/google/api/servicemanagement/README.md
new file mode 100644
index 0000000..e3e36df
--- /dev/null
+++ b/google/api/servicemanagement/README.md
@@ -0,0 +1,102 @@
+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.
\ No newline at end of file
diff --git a/google/api/servicemanagement/v1/resources.proto b/google/api/servicemanagement/v1/resources.proto
new file mode 100644
index 0000000..e4735fc
--- /dev/null
+++ b/google/api/servicemanagement/v1/resources.proto
@@ -0,0 +1,284 @@
+// Copyright 2016 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api.servicemanagement.v1;
+
+import "google/api/annotations.proto";
+import "google/api/service.proto";
+import "google/longrunning/operations.proto";
+import "google/protobuf/any.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/struct.proto";
+import "google/protobuf/timestamp.proto";
+import "google/rpc/status.proto";
+
+option java_multiple_files = true;
+option java_outer_classname = "ResourcesProto";
+option java_package = "com.google.api.servicemanagement.v1";
+option objc_class_prefix = "GASM";
+
+
+// The full representation of a Service that is managed by
+// Google Service Management.
+message ManagedService {
+  // The name of the service. See the [overview](/service-management/overview)
+  // for naming requirements.
+  string service_name = 2;
+
+  // ID of the project that produces and owns this service.
+  string producer_project_id = 3;
+}
+
+// The metadata associated with a long running operation resource.
+message OperationMetadata {
+  // Represents the status of one operation step.
+  message Step {
+    // The short description of the step.
+    string description = 2;
+
+    // The status code.
+    Status status = 4;
+  }
+
+  // Code describes the status of one operation step.
+  enum Status {
+    // Unspecifed code.
+    STATUS_UNSPECIFIED = 0;
+
+    // The step has completed without errors.
+    DONE = 1;
+
+    // The step has not started yet.
+    NOT_STARTED = 2;
+
+    // The step is in progress.
+    IN_PROGRESS = 3;
+
+    // The step has completed with errors.
+    FAILED = 4;
+
+    // The step has completed with cancellation.
+    CANCELLED = 5;
+  }
+
+  // The full name of the resources that this operation is directly
+  // associated with.
+  repeated string resource_names = 1;
+
+  // Detailed status information for each step. The order is undetermined.
+  repeated Step steps = 2;
+
+  // Percentage of completion of this operation, ranging from 0 to 100.
+  int32 progress_percentage = 3;
+
+  // The start time of the operation.
+  google.protobuf.Timestamp start_time = 4;
+}
+
+// Represents a diagnostic message (error or warning)
+message Diagnostic {
+  // The kind of diagnostic information possible.
+  enum Kind {
+    // Warnings and errors
+    WARNING = 0;
+
+    // Only errors
+    ERROR = 1;
+  }
+
+  // File name and line number of the error or warning.
+  string location = 1;
+
+  // The kind of diagnostic information provided.
+  Kind kind = 2;
+
+  // Message describing the error or warning.
+  string message = 3;
+}
+
+// Represents a source file which is used to generate the service configuration
+// defined by `google.api.Service`.
+message ConfigSource {
+  // A unique ID for a specific instance of this message, typically assigned
+  // by the client for tracking purpose. If empty, the server may choose to
+  // generate one instead.
+  string id = 5;
+
+  // Set of source configuration files that are used to generate a service
+  // configuration (`google.api.Service`).
+  repeated ConfigFile files = 2;
+}
+
+// Generic specification of a source configuration file
+message ConfigFile {
+  enum FileType {
+    // Unknown file type.
+    FILE_TYPE_UNSPECIFIED = 0;
+
+    // YAML-specification of service.
+    SERVICE_CONFIG_YAML = 1;
+
+    // OpenAPI specification, serialized in JSON.
+    OPEN_API_JSON = 2;
+
+    // OpenAPI specification, serialized in YAML.
+    OPEN_API_YAML = 3;
+
+    // FileDescriptorSet, generated by protoc.
+    //
+    // To generate, use protoc with imports and source info included.
+    // For an example test.proto file, the following command would put the value
+    // in a new file named out.pb.
+    //
+    // $protoc --include_imports --include_source_info test.proto -o out.pb
+    FILE_DESCRIPTOR_SET_PROTO = 4;
+  }
+
+  // The file name of the configuration file (full or relative path).
+  string file_path = 1;
+
+  // The bytes that constitute the file.
+  bytes file_contents = 3;
+
+  // The type of configuration file this represents.
+  FileType file_type = 4;
+}
+
+// Represents a service configuration with its name and id.
+message ConfigRef {
+  // Resource name of a service config. It must have the following
+  // format: "services/{service name}/configs/{config id}".
+  string name = 1;
+}
+
+// Change report associated with a particular service configuration.
+//
+// It contains a list of ConfigChanges based on the comparison between
+// two service configurations.
+message ChangeReport {
+  // List of changes between two service configurations.
+  // The changes will be alphabetically sorted based on the identifier
+  // of each change.
+  // A ConfigChange identifier is a dot separated path to the configuration.
+  // Example: visibility.rules[selector='LibraryService.CreateBook'].restriction
+  repeated google.api.ConfigChange config_changes = 1;
+}
+
+// A rollout resource that defines how service configuration versions are pushed
+// to control plane systems. Typically, you create a new version of the
+// service config, and then create a Rollout to push the service config.
+message Rollout {
+  // Strategy that specifies how Google Service Control should select
+  // different
+  // versions of service configurations based on traffic percentage.
+  //
+  // One example of how to gradually rollout a new service configuration using
+  // this
+  // strategy:
+  // Day 1
+  //
+  //     Rollout {
+  //       id: "example.googleapis.com/rollout_20160206"
+  //       traffic_percent_strategy {
+  //         percentages: {
+  //           "example.googleapis.com/20160201": 70.00
+  //           "example.googleapis.com/20160206": 30.00
+  //         }
+  //       }
+  //     }
+  //
+  // Day 2
+  //
+  //     Rollout {
+  //       id: "example.googleapis.com/rollout_20160207"
+  //       traffic_percent_strategy: {
+  //         percentages: {
+  //           "example.googleapis.com/20160206": 100.00
+  //         }
+  //       }
+  //     }
+  message TrafficPercentStrategy {
+    // Maps service configuration IDs to their corresponding traffic percentage.
+    // Key is the service configuration ID, Value is the traffic percentage
+    // which must be greater than 0.0 and the sum must equal to 100.0.
+    map<string, double> percentages = 1;
+  }
+
+  // Strategy used to delete a service. This strategy is a placeholder only
+  // used by the system generated rollout to delete a service.
+  message DeleteServiceStrategy {
+
+  }
+
+  // Status of a Rollout.
+  enum RolloutStatus {
+    // No status specified.
+    ROLLOUT_STATUS_UNSPECIFIED = 0;
+
+    // The Rollout is in progress.
+    IN_PROGRESS = 1;
+
+    // The Rollout has completed successfully.
+    SUCCESS = 2;
+
+    // The Rollout has been cancelled. This can happen if you have overlapping
+    // Rollout pushes, and the previous ones will be cancelled.
+    CANCELLED = 3;
+
+    // The Rollout has failed. It is typically caused by configuration errors.
+    FAILED = 4;
+
+    // The Rollout has not started yet and is pending for execution.
+    PENDING = 5;
+  }
+
+  // Optional unique identifier of this Rollout. Only lower case letters, digits
+  //  and '-' are allowed.
+  //
+  // If not specified by client, the server will generate one. The generated id
+  // will have the form of <date><revision number>, where "date" is the create
+  // date in ISO 8601 format.  "revision number" is a monotonically increasing
+  // positive number that is reset every day for each service.
+  // An example of the generated rollout_id is '2016-02-16r1'
+  string rollout_id = 1;
+
+  // Creation time of the rollout. Readonly.
+  google.protobuf.Timestamp create_time = 2;
+
+  // The user who created the Rollout. Readonly.
+  string created_by = 3;
+
+  // The status of this rollout. Readonly. In case of a failed rollout,
+  // the system will automatically rollback to the current Rollout
+  // version. Readonly.
+  RolloutStatus status = 4;
+
+  // Strategy that defines which versions of service configurations should be
+  // pushed
+  // and how they should be used at runtime.
+  oneof strategy {
+    // Google Service Control selects service configurations based on
+    // traffic percentage.
+    TrafficPercentStrategy traffic_percent_strategy = 5;
+
+    // The strategy associated with a rollout to delete a `ManagedService`.
+    // Readonly.
+    DeleteServiceStrategy delete_service_strategy = 200;
+  }
+
+  // The name of the service associated with this Rollout.
+  string service_name = 8;
+}
diff --git a/google/api/servicemanagement/v1/servicemanager.proto b/google/api/servicemanagement/v1/servicemanager.proto
new file mode 100644
index 0000000..44dd3a1
--- /dev/null
+++ b/google/api/servicemanagement/v1/servicemanager.proto
@@ -0,0 +1,391 @@
+// Copyright 2016 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api.servicemanagement.v1;
+
+import "google/api/annotations.proto";
+import "google/api/service.proto";
+import "google/api/servicemanagement/v1/resources.proto";
+import "google/longrunning/operations.proto";
+import "google/protobuf/any.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/struct.proto";
+import "google/rpc/status.proto";
+
+option java_multiple_files = true;
+option java_outer_classname = "ServiceManagerProto";
+option java_package = "com.google.api.servicemanagement.v1";
+option objc_class_prefix = "GASM";
+
+
+// [Google Service Management API](/service-management/overview)
+service ServiceManager {
+  // Lists all managed services.
+  rpc ListServices(ListServicesRequest) returns (ListServicesResponse) {
+    option (google.api.http) = { get: "/v1/services" };
+  }
+
+  // Gets a managed service.
+  rpc GetService(GetServiceRequest) returns (ManagedService) {
+    option (google.api.http) = { get: "/v1/services/{service_name}" };
+  }
+
+  // Creates a new managed service.
+  // Please note one producer project can own no more than 20 services.
+  //
+  // Operation<response: ManagedService>
+  rpc CreateService(CreateServiceRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = { post: "/v1/services" body: "service" };
+  }
+
+  // Deletes a managed service. This method will change the serivce in the
+  // `Soft-Delete` state for 30 days. Within this period, service producers may
+  // call [UndeleteService][google.api.servicemanagement.v1.ServiceManager.UndeleteService] to restore the service.
+  // After 30 days, the service will be permanently deleted.
+  //
+  // Operation<response: google.protobuf.Empty>
+  rpc DeleteService(DeleteServiceRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = { delete: "/v1/services/{service_name}" };
+  }
+
+  // Revives a previously deleted managed service. The method restores the
+  // service using the configuration at the time the service was deleted.
+  // The target service must exist and must have been deleted within the
+  // last 30 days.
+  //
+  // Operation<response: UndeleteServiceResponse>
+  rpc UndeleteService(UndeleteServiceRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = { post: "/v1/services/{service_name}:undelete" body: "null" };
+  }
+
+  // Lists the history of the service configuration for a managed service,
+  // from the newest to the oldest.
+  rpc ListServiceConfigs(ListServiceConfigsRequest) returns (ListServiceConfigsResponse) {
+    option (google.api.http) = { get: "/v1/services/{service_name}/configs" };
+  }
+
+  // Gets a service configuration (version) for a managed service.
+  rpc GetServiceConfig(GetServiceConfigRequest) returns (google.api.Service) {
+    option (google.api.http) = { get: "/v1/services/{service_name}/configs/{config_id}" };
+  }
+
+  // Creates a new service configuration (version) for a managed service.
+  // This method only stores the service configuration. To roll out the service
+  // configuration to backend systems please call
+  // [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout].
+  rpc CreateServiceConfig(CreateServiceConfigRequest) returns (google.api.Service) {
+    option (google.api.http) = { post: "/v1/services/{service_name}/configs" body: "service_config" };
+  }
+
+  // Creates a new service configuration (version) for a managed service based
+  // on
+  // user-supplied configuration source files (for example: OpenAPI
+  // Specification). This method stores the source configurations as well as the
+  // generated service configuration. To rollout the service configuration to
+  // other services,
+  // please call [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout].
+  //
+  // Operation<response: SubmitConfigSourceResponse>
+  rpc SubmitConfigSource(SubmitConfigSourceRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = { post: "/v1/services/{service_name}/configs:submit" body: "*" };
+  }
+
+  // Lists the history of the service configuration rollouts for a managed
+  // service, from the newest to the oldest.
+  rpc ListServiceRollouts(ListServiceRolloutsRequest) returns (ListServiceRolloutsResponse) {
+    option (google.api.http) = { get: "/v1/services/{service_name}/rollouts" };
+  }
+
+  // Gets a service configuration [rollout][google.api.servicemanagement.v1.Rollout].
+  rpc GetServiceRollout(GetServiceRolloutRequest) returns (Rollout) {
+    option (google.api.http) = { get: "/v1/services/{service_name}/rollouts/{rollout_id}" };
+  }
+
+  // Creates a new service configuration rollout. Based on rollout, the
+  // Google Service Management will roll out the service configurations to
+  // different backend services. For example, the logging configuration will be
+  // pushed to Google Cloud Logging.
+  //
+  // Please note that any previous pending and running Rollouts and associated
+  // Operations will be automatically cancelled so that the latest Rollout will
+  // not be blocked by previous Rollouts.
+  //
+  // Operation<response: Rollout>
+  rpc CreateServiceRollout(CreateServiceRolloutRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = { post: "/v1/services/{service_name}/rollouts" body: "rollout" };
+  }
+
+  // Generates and returns a report (errors, warnings and changes from
+  // existing configurations) associated with
+  // GenerateConfigReportRequest.new_value
+  //
+  // If GenerateConfigReportRequest.old_value is specified,
+  // GenerateConfigReportRequest will contain a single ChangeReport based on the
+  // comparison between GenerateConfigReportRequest.new_value and
+  // GenerateConfigReportRequest.old_value.
+  // If GenerateConfigReportRequest.old_value is not specified, this method
+  // will compare GenerateConfigReportRequest.new_value with the last pushed
+  // service configuration.
+  rpc GenerateConfigReport(GenerateConfigReportRequest) returns (GenerateConfigReportResponse) {
+    option (google.api.http) = { post: "/v1/services:generateConfigReport" body: "*" };
+  }
+
+  // Enable a managed service for a project with default setting.
+  //
+  // Operation<response: EnableServiceResponse>
+  //
+  // [google.rpc.Status][google.rpc.Status] errors may contain a
+  // [google.rpc.PreconditionFailure][] error detail.
+  rpc EnableService(EnableServiceRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = { post: "/v1/services/{service_name}:enable" body: "*" };
+  }
+
+  // Disable a managed service for a project.
+  //
+  // Operation<response: DisableServiceResponse>
+  rpc DisableService(DisableServiceRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = { post: "/v1/services/{service_name}:disable" body: "*" };
+  }
+}
+
+// Request message for `ListServices` method.
+message ListServicesRequest {
+  // Include services produced by the specified project.
+  string producer_project_id = 1;
+
+  // Requested size of the next page of data.
+  int32 page_size = 5;
+
+  // Token identifying which result to start with; returned by a previous list
+  // call.
+  string page_token = 6;
+}
+
+// Response message for `ListServices` method.
+message ListServicesResponse {
+  // The results of the query.
+  repeated ManagedService services = 1;
+
+  // Token that can be passed to `ListServices` to resume a paginated query.
+  string next_page_token = 2;
+}
+
+// Request message for `GetService` method.
+message GetServiceRequest {
+  // The name of the service.  See the `ServiceManager` overview for naming
+  // requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+}
+
+// Request message for CreateService method.
+message CreateServiceRequest {
+  // Initial values for the service resource.
+  ManagedService service = 1;
+}
+
+// Request message for DeleteService method.
+message DeleteServiceRequest {
+  // The name of the service.  See the [overview](/service-management/overview)
+  // for naming requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+}
+
+// Request message for UndeleteService method.
+message UndeleteServiceRequest {
+  // The name of the service. See the [overview](/service-management/overview)
+  // for naming requirements. For example: `example.googleapis.com`.
+  string service_name = 1;
+}
+
+// Response message for UndeleteService method.
+message UndeleteServiceResponse {
+  // Revived service resource.
+  ManagedService service = 1;
+}
+
+// Request message for GetServiceConfig method.
+message GetServiceConfigRequest {
+  // The name of the service.  See the [overview](/service-management/overview)
+  // for naming requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+
+  string config_id = 2;
+}
+
+// Request message for ListServiceConfigs method.
+message ListServiceConfigsRequest {
+  // The name of the service.  See the [overview](/service-management/overview)
+  // for naming requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+
+  // The token of the page to retrieve.
+  string page_token = 2;
+
+  // The max number of items to include in the response list.
+  int32 page_size = 3;
+}
+
+// Response message for ListServiceConfigs method.
+message ListServiceConfigsResponse {
+  // The list of service configuration resources.
+  repeated google.api.Service service_configs = 1;
+
+  // The token of the next page of results.
+  string next_page_token = 2;
+}
+
+// Request message for CreateServiceConfig method.
+message CreateServiceConfigRequest {
+  // The name of the service.  See the [overview](/service-management/overview)
+  // for naming requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+
+  // The service configuration resource.
+  google.api.Service service_config = 2;
+}
+
+// Request message for SubmitConfigSource method.
+message SubmitConfigSourceRequest {
+  // The name of the service.  See the [overview](/service-management/overview)
+  // for naming requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+
+  // The source configuration for the service.
+  ConfigSource config_source = 2;
+
+  // Optional. If set, this will result in the generation of a
+  // `google.api.Service` configuration based on the `ConfigSource` provided,
+  // but the generated config and the sources will NOT be persisted.
+  bool validate_only = 3;
+}
+
+// Response message for SubmitConfigSource method.
+message SubmitConfigSourceResponse {
+  // The generated service configuration.
+  google.api.Service service_config = 1;
+}
+
+// Request message for 'CreateServiceRollout'
+message CreateServiceRolloutRequest {
+  // The name of the service.  See the [overview](/service-management/overview)
+  // for naming requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+
+  // The rollout resource. The `service_name` field is output only.
+  Rollout rollout = 2;
+}
+
+// Request message for 'ListServiceRollouts'
+message ListServiceRolloutsRequest {
+  // The name of the service.  See the [overview](/service-management/overview)
+  // for naming requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+
+  // The token of the page to retrieve.
+  string page_token = 2;
+
+  // The max number of items to include in the response list.
+  int32 page_size = 3;
+}
+
+// Response message for ListServiceRollouts method.
+message ListServiceRolloutsResponse {
+  // The list of rollout resources.
+  repeated Rollout rollouts = 1;
+
+  // The token of the next page of results.
+  string next_page_token = 2;
+}
+
+// Request message for GetServiceRollout method.
+message GetServiceRolloutRequest {
+  // The name of the service.  See the [overview](/service-management/overview)
+  // for naming requirements.  For example: `example.googleapis.com`.
+  string service_name = 1;
+
+  // The id of the rollout resource.
+  string rollout_id = 2;
+}
+
+// Request message for EnableService method.
+message EnableServiceRequest {
+  // Name of the service to enable. Specifying an unknown service name will
+  // cause the request to fail.
+  string service_name = 1;
+
+  // The identity of consumer resource which service enablement will be
+  // applied to.
+  //
+  // The Google Service Management implementation accepts the following
+  // forms: "project:<project_id>", "project_number:<project_number>".
+  //
+  // Note: this is made compatible with
+  // google.api.servicecontrol.v1.Operation.consumer_id.
+  string consumer_id = 2;
+}
+
+// Request message for DisableService method.
+message DisableServiceRequest {
+  // Name of the service to disable. Specifying an unknown service name
+  // will cause the request to fail.
+  string service_name = 1;
+
+  // The identity of consumer resource which service disablement will be
+  // applied to.
+  //
+  // The Google Service Management implementation accepts the following
+  // forms: "project:<project_id>", "project_number:<project_number>".
+  //
+  // Note: this is made compatible with
+  // google.api.servicecontrol.v1.Operation.consumer_id.
+  string consumer_id = 2;
+}
+
+// Request message for GenerateConfigReport method.
+message GenerateConfigReportRequest {
+  // Service configuration for which we want to generate the report.
+  // For this version of API, the supported types are
+  // [google.api.servicemanagement.v1.ConfigRef][google.api.servicemanagement.v1.ConfigRef],
+  // [google.api.servicemanagement.v1.ConfigSource][google.api.servicemanagement.v1.ConfigSource],
+  // and [google.api.Service][google.api.Service]
+  google.protobuf.Any new_config = 1;
+
+  // Service configuration against which the comparison will be done.
+  // For this version of API, the supported types are
+  // [google.api.servicemanagement.v1.ConfigRef][google.api.servicemanagement.v1.ConfigRef],
+  // [google.api.servicemanagement.v1.ConfigSource][google.api.servicemanagement.v1.ConfigSource],
+  // and [google.api.Service][google.api.Service]
+  google.protobuf.Any old_config = 2;
+}
+
+// Response message for GenerateConfigReport method.
+message GenerateConfigReportResponse {
+  // Name of the service this report belongs to.
+  string service_name = 1;
+
+  // ID of the service configuration this report belongs to.
+  string id = 2;
+
+  // list of ChangeReport, each corresponding to comparison between two
+  // service configurations.
+  repeated ChangeReport change_reports = 3;
+
+  // Errors / Linter warnings associated with the service definition this
+  // report
+  // belongs to.
+  repeated Diagnostic diagnostics = 4;
+}