305 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
		
		
			
		
	
	
			305 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
|  | // Copyright 2019 Google LLC.
 | ||
|  | //
 | ||
|  | // 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/config_change.proto";
 | ||
|  | import "google/api/field_behavior.proto";
 | ||
|  | import "google/api/metric.proto";
 | ||
|  | import "google/api/quota.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/timestamp.proto";
 | ||
|  | import "google/rpc/status.proto";
 | ||
|  | 
 | ||
|  | option csharp_namespace = "Google.Cloud.ServiceManagement.V1";
 | ||
|  | option go_package = "google.golang.org/genproto/googleapis/api/servicemanagement/v1;servicemanagement";
 | ||
|  | option java_multiple_files = true;
 | ||
|  | option java_outer_classname = "ResourcesProto";
 | ||
|  | option java_package = "com.google.api.servicemanagement.v1";
 | ||
|  | option objc_class_prefix = "GASM";
 | ||
|  | option php_namespace = "Google\\Cloud\\ServiceManagement\\V1";
 | ||
|  | option ruby_package = "Google::Cloud::ServiceManagement::V1";
 | ||
|  | 
 | ||
|  | // The full representation of a Service that is managed by
 | ||
|  | // Google Service Management.
 | ||
|  | message ManagedService {
 | ||
|  |   // The name of the service. See the [overview](https://cloud.google.com/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 the operation (or one of its steps).
 | ||
|  |   enum Status {
 | ||
|  |     // Unspecifed code.
 | ||
|  |     STATUS_UNSPECIFIED = 0;
 | ||
|  | 
 | ||
|  |     // The operation or step has completed without errors.
 | ||
|  |     DONE = 1;
 | ||
|  | 
 | ||
|  |     // The operation or step has not started yet.
 | ||
|  |     NOT_STARTED = 2;
 | ||
|  | 
 | ||
|  |     // The operation or step is in progress.
 | ||
|  |     IN_PROGRESS = 3;
 | ||
|  | 
 | ||
|  |     // The operation or step has completed with errors. If the operation is
 | ||
|  |     // rollbackable, the rollback completed with errors too.
 | ||
|  |     FAILED = 4;
 | ||
|  | 
 | ||
|  |     // The operation or 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;
 | ||
|  | 
 | ||
|  |     // Uncompiled Proto file. Used for storage and display purposes only,
 | ||
|  |     // currently server-side compilation is not supported. Should match the
 | ||
|  |     // inputs to 'protoc' command used to generated FILE_DESCRIPTOR_SET_PROTO. A
 | ||
|  |     // file of this type can only be included if at least one file of type
 | ||
|  |     // FILE_DESCRIPTOR_SET_PROTO is included.
 | ||
|  |     PROTO_FILE = 6;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   // 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 clients of Google Service Controller want to
 | ||
|  |   // send traffic to use different config versions. This is generally
 | ||
|  |   // used by API proxy to split traffic based on your configured percentage for
 | ||
|  |   // each config version.
 | ||
|  |   //
 | ||
|  |   // 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 and the rollback attempt has failed too.
 | ||
|  |     FAILED = 4;
 | ||
|  | 
 | ||
|  |     // The Rollout has not started yet and is pending for execution.
 | ||
|  |     PENDING = 5;
 | ||
|  | 
 | ||
|  |     // The Rollout has failed and rolled back to the previous successful
 | ||
|  |     // Rollout.
 | ||
|  |     FAILED_ROLLED_BACK = 6;
 | ||
|  |   }
 | ||
|  | 
 | ||
|  |   // Optional. Unique identifier of this Rollout. Must be no longer than 63 characters
 | ||
|  |   // and 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 [(google.api.field_behavior) = OPTIONAL];
 | ||
|  | 
 | ||
|  |   // 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;
 | ||
|  | }
 |