Public interface definitions of Google APIs. Topics (grpc依赖)
 
 

1148 lines
40 KiB

// Copyright 2022 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.cloud.workstations.v1beta;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/rpc/status.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/workstations/v1beta;workstations";
option java_multiple_files = true;
option java_outer_classname = "WorkstationsProto";
option java_package = "com.google.cloud.workstations.v1beta";
// Service for interacting with Cloud Workstations.
service Workstations {
option (google.api.default_host) = "workstations.googleapis.com";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/cloud-platform";
// Returns the requested workstation cluster.
rpc GetWorkstationCluster(GetWorkstationClusterRequest)
returns (WorkstationCluster) {
option (google.api.http) = {
get: "/v1beta/{name=projects/*/locations/*/workstationClusters/*}"
};
option (google.api.method_signature) = "name";
}
// Returns all workstation clusters in the specified location.
rpc ListWorkstationClusters(ListWorkstationClustersRequest)
returns (ListWorkstationClustersResponse) {
option (google.api.http) = {
get: "/v1beta/{parent=projects/*/locations/*}/workstationClusters"
};
option (google.api.method_signature) = "parent";
}
// Creates a new workstation cluster.
rpc CreateWorkstationCluster(CreateWorkstationClusterRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1beta/{parent=projects/*/locations/*}/workstationClusters"
body: "workstation_cluster"
};
option (google.api.method_signature) =
"parent,workstation_cluster,workstation_cluster_id";
option (google.longrunning.operation_info) = {
response_type: "WorkstationCluster"
metadata_type: "OperationMetadata"
};
}
// Updates an existing workstation cluster.
rpc UpdateWorkstationCluster(UpdateWorkstationClusterRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1beta/{workstation_cluster.name=projects/*/locations/*/workstationClusters/*}"
body: "workstation_cluster"
};
option (google.api.method_signature) = "workstation_cluster,update_mask";
option (google.longrunning.operation_info) = {
response_type: "WorkstationCluster"
metadata_type: "OperationMetadata"
};
}
// Deletes the specified workstation cluster.
rpc DeleteWorkstationCluster(DeleteWorkstationClusterRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1beta/{name=projects/*/locations/*/workstationClusters/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "WorkstationCluster"
metadata_type: "OperationMetadata"
};
}
// Returns the requested workstation configuration.
rpc GetWorkstationConfig(GetWorkstationConfigRequest)
returns (WorkstationConfig) {
option (google.api.http) = {
get: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}"
};
option (google.api.method_signature) = "name";
}
// Returns all workstation configurations in the specified cluster.
rpc ListWorkstationConfigs(ListWorkstationConfigsRequest)
returns (ListWorkstationConfigsResponse) {
option (google.api.http) = {
get: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*}/workstationConfigs"
};
option (google.api.method_signature) = "parent";
}
// Returns all workstation configurations in the specified cluster on which
// the caller has the "workstations.workstation.create" permission.
rpc ListUsableWorkstationConfigs(ListUsableWorkstationConfigsRequest)
returns (ListUsableWorkstationConfigsResponse) {
option (google.api.http) = {
get: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*}/workstationConfigs:listUsable"
};
option (google.api.method_signature) = "parent";
}
// Creates a new workstation configuration.
rpc CreateWorkstationConfig(CreateWorkstationConfigRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*}/workstationConfigs"
body: "workstation_config"
};
option (google.api.method_signature) =
"parent,workstation_config,workstation_config_id";
option (google.longrunning.operation_info) = {
response_type: "WorkstationConfig"
metadata_type: "OperationMetadata"
};
}
// Updates an existing workstation configuration.
rpc UpdateWorkstationConfig(UpdateWorkstationConfigRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1beta/{workstation_config.name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}"
body: "workstation_config"
};
option (google.api.method_signature) = "workstation_config,update_mask";
option (google.longrunning.operation_info) = {
response_type: "WorkstationConfig"
metadata_type: "OperationMetadata"
};
}
// Deletes the specified workstation configuration.
rpc DeleteWorkstationConfig(DeleteWorkstationConfigRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "WorkstationConfig"
metadata_type: "OperationMetadata"
};
}
// Returns the requested workstation.
rpc GetWorkstation(GetWorkstationRequest) returns (Workstation) {
option (google.api.http) = {
get: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}"
};
option (google.api.method_signature) = "name";
}
// Returns all Workstations using the specified config.
rpc ListWorkstations(ListWorkstationsRequest)
returns (ListWorkstationsResponse) {
option (google.api.http) = {
get: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}/workstations"
};
option (google.api.method_signature) = "parent";
}
// Returns all Workstations using the specified config on which the caller has
// the "workstations.workstations.use" permission.
rpc ListUsableWorkstations(ListUsableWorkstationsRequest)
returns (ListUsableWorkstationsResponse) {
option (google.api.http) = {
get: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}/workstations:listUsable"
};
option (google.api.method_signature) = "parent";
}
// Creates a new workstation.
rpc CreateWorkstation(CreateWorkstationRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1beta/{parent=projects/*/locations/*/workstationClusters/*/workstationConfigs/*}/workstations"
body: "workstation"
};
option (google.api.method_signature) = "parent,workstation,workstation_id";
option (google.longrunning.operation_info) = {
response_type: "Workstation"
metadata_type: "OperationMetadata"
};
}
// Updates an existing workstation.
rpc UpdateWorkstation(UpdateWorkstationRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1beta/{workstation.name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}"
body: "workstation"
};
option (google.api.method_signature) = "workstation,update_mask";
option (google.longrunning.operation_info) = {
response_type: "Workstation"
metadata_type: "OperationMetadata"
};
}
// Deletes the specified workstation.
rpc DeleteWorkstation(DeleteWorkstationRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "Workstation"
metadata_type: "OperationMetadata"
};
}
// Starts running a workstation so that users can connect to it.
rpc StartWorkstation(StartWorkstationRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}:start"
body: "*"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "Workstation"
metadata_type: "OperationMetadata"
};
}
// Stops running a workstation, reducing costs.
rpc StopWorkstation(StopWorkstationRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1beta/{name=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}:stop"
body: "*"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "Workstation"
metadata_type: "OperationMetadata"
};
}
// Returns a short-lived credential that can be used to send authenticated and
// authorized traffic to a workstation.
rpc GenerateAccessToken(GenerateAccessTokenRequest)
returns (GenerateAccessTokenResponse) {
option (google.api.http) = {
post: "/v1beta/{workstation=projects/*/locations/*/workstationClusters/*/workstationConfigs/*/workstations/*}:generateAccessToken"
body: "*"
};
option (google.api.method_signature) = "workstation";
}
}
// A grouping of workstation configurations and the associated workstations
// in that region.
message WorkstationCluster {
option (google.api.resource) = {
type: "workstations.googleapis.com/WorkstationCluster"
pattern: "projects/{project}/locations/{location}/workstationClusters/{workstation_cluster}"
style: DECLARATIVE_FRIENDLY
};
// Configuration options for private clusters.
message PrivateClusterConfig {
// Immutable. Whether Workstations endpoint is private.
bool enable_private_endpoint = 1 [(google.api.field_behavior) = IMMUTABLE];
// Output only. Hostname for the workstation cluster. This field will be
// populated only when private endpoint is enabled. To access workstations
// in the cluster, create a new DNS zone mapping this domain name to an
// internal IP address and a forwarding rule mapping that address to the
// service attachment.
string cluster_hostname = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Service attachment URI for the workstation cluster. The
// service attachemnt is created when private endpoint is enabled. To access
// workstations in the cluster, configure access to the managed service
// using [Private Service
// Connect](https://cloud.google.com/vpc/docs/configure-private-service-connect-services).
string service_attachment_uri = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Full name of this resource.
string name = 1;
// Human-readable name for this resource.
string display_name = 2;
// Output only. A system-assigned unique identified for this resource.
string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Indicates whether this resource is currently being updated to
// match its intended state.
bool reconciling = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Client-specified annotations.
map<string, string> annotations = 5;
// Client-specified labels that are applied to the resource and that are also
// propagated to the underlying Compute Engine resources.
map<string, string> labels = 15;
// Output only. Time when this resource was created.
google.protobuf.Timestamp create_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time when this resource was most recently updated.
google.protobuf.Timestamp update_time = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time when this resource was soft-deleted.
google.protobuf.Timestamp delete_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Checksum computed by the server. May be sent on update and delete requests
// to ensure that the client has an up-to-date value before proceeding.
string etag = 9;
// Immutable. Name of the Compute Engine network in which instances associated
// with this cluster will be created.
string network = 10 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. Name of the Compute Engine subnetwork in which instances
// associated with this cluster will be created. Must be part of the
// subnetwork specified for this cluster.
string subnetwork = 11 [(google.api.field_behavior) = IMMUTABLE];
// Configuration for private cluster.
PrivateClusterConfig private_cluster_config = 12;
// Output only. Whether this resource is in degraded mode, in which case it
// may require user action to restore full functionality. Details can be found
// in the `conditions` field.
bool degraded = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Status conditions describing the current resource state.
repeated google.rpc.Status conditions = 14
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// A set of configuration options describing how a workstation will be run.
// Workstation configurations are intended to be shared across multiple
// workstations.
message WorkstationConfig {
option (google.api.resource) = {
type: "workstations.googleapis.com/WorkstationConfig"
pattern: "projects/{project}/locations/{location}/workstationClusters/{workstation_cluster}/workstationConfigs/{workstation_config}"
style: DECLARATIVE_FRIENDLY
};
// Runtime host for a workstation.
message Host {
// A runtime using a Compute Engine instance.
message GceInstance {
// A set of Compute Engine Shielded instance options.
message GceShieldedInstanceConfig {
// Whether the instance has Secure Boot enabled.
bool enable_secure_boot = 1;
// Whether the instance has the vTPM enabled.
bool enable_vtpm = 2;
// Whether the instance has integrity monitoring enabled.
bool enable_integrity_monitoring = 3;
}
// A set of Compute Engine Confidential VM instance options.
message GceConfidentialInstanceConfig {
// Whether the instance has confidential compute enabled.
bool enable_confidential_compute = 1;
}
// The name of a Compute Engine machine type.
string machine_type = 1;
// Email address of the service account that will be used on VM instances
// used to support this config. This service account must have permission
// to pull the specified container image. If not set, VMs will run without
// a service account, in which case the image must be publicly accessible.
string service_account = 2;
// Network tags to add to the Compute Engine machines backing the
// Workstations.
repeated string tags = 4;
// Number of instances to pool for faster workstation starup.
int32 pool_size = 5;
// Whether instances have no public IP address.
bool disable_public_ip_addresses = 6;
// A set of Compute Engine Shielded instance options.
GceShieldedInstanceConfig shielded_instance_config = 8;
// A set of Compute Engine Confidential VM instance options.
GceConfidentialInstanceConfig confidential_instance_config = 10;
// Size of the boot disk in GB.
int32 boot_disk_size_gb = 9;
}
// Type of host that will be used for the workstation's runtime.
oneof config {
// Specifies a Compute Engine instance as the host.
GceInstance gce_instance = 1;
}
}
// A directory to persist across workstation sessions.
message PersistentDirectory {
// A PersistentDirectory backed by a Compute Engine regional persistent
// disk.
message GceRegionalPersistentDisk {
// Value representing what should happen to the disk after the workstation
// is deleted.
enum ReclaimPolicy {
// Do not use.
RECLAIM_POLICY_UNSPECIFIED = 0;
// The persistent disk will be deleted with the workstation.
DELETE = 1;
// The persistent disk will be remain after the workstation is deleted,
// and the administrator must manually delete the disk.
RETAIN = 2;
}
// Size of the disk in GB. Must be empty if source_snapshot is set.
int32 size_gb = 1;
// Type of file system that the disk should be formatted with. The
// workstation image must support this file system type. Must be empty
// if source_snapshot is set.
string fs_type = 2;
// Type of the disk to use.
string disk_type = 3;
// What should happen to the disk after the workstation is deleted.
// Defaults to DELETE.
ReclaimPolicy reclaim_policy = 4;
}
// Location of this directory in the running workstation.
string mount_path = 1;
// How a persistent directory should be implemented.
oneof directory_type {
// A PersistentDirectory backed by a Compute Engine persistent disk.
GceRegionalPersistentDisk gce_pd = 2;
}
}
// A Docker container.
message Container {
// Docker image defining the container. This image must be accessible by the
// config's service account.
string image = 1;
// If set, overrides the default ENTRYPOINT specified by the image.
repeated string command = 2;
// Arguments passed to the entrypoint.
repeated string args = 3;
// Environment variables passed to the container.
map<string, string> env = 4;
// If set, overrides the default DIR specified by the image.
string working_dir = 5;
// If set, overrides the USER specified in the image with the given uid.
int32 run_as_user = 6;
}
// A customer-specified encryption key for the Compute Engine resources
// of this workstation configuration.
message CustomerEncryptionKey {
// The name of the encryption key that is stored in Google Cloud KMS, for
// example,
// `projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY_NAME`.
string kms_key = 1;
// The service account being used for the encryption request for the
// given KMS key. If absent, the Compute Engine default service account
// is used. However, it is recommended to use a separate service account
// and to follow KMS best practices mentioned at
// https://cloud.google.com/kms/docs/separation-of-duties
string kms_key_service_account = 2;
}
// Full name of this resource.
string name = 1;
// Human-readable name for this resource.
string display_name = 2;
// Output only. A system-assigned unique identified for this resource.
string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Indicates whether this resource is currently being updated to
// match its intended state.
bool reconciling = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Client-specified annotations.
map<string, string> annotations = 5;
// Client-specified labels that are applied to the resource and that are also
// propagated to the underlying Compute Engine resources.
map<string, string> labels = 18;
// Output only. Time when this resource was created.
google.protobuf.Timestamp create_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time when this resource was most recently updated.
google.protobuf.Timestamp update_time = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time when this resource was soft-deleted.
google.protobuf.Timestamp delete_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Checksum computed by the server. May be sent on update and delete requests
// to ensure that the client has an up-to-date value before proceeding.
string etag = 9;
// How long to wait before automatically stopping an instance that hasn't
// received any user traffic. A value of 0 indicates that this instance
// should never time out due to idleness. Defaults to 20 minutes.
google.protobuf.Duration idle_timeout = 10;
// How long to wait before automatically stopping a workstation after it
// started. A value of 0 indicates that workstations using this config should
// never time out. Must be greater than 0 and less than 24 hours if
// encryption_key is set. Defaults to 12 hours.
google.protobuf.Duration running_timeout = 11;
// Runtime host for the workstation.
Host host = 12;
// Directories to persist across workstation sessions.
repeated PersistentDirectory persistent_directories = 13;
// Container that will be run for each workstation using this configuration
// when that workstation is started.
Container container = 14;
// Encrypts resources of this workstation configuration using a
// customer-specified encryption key.
//
// If specified, the boot disk of the Compute Engine instance and the
// persistent disk will be encrypted using this encryption key. If
// this field is not set, the disks will be encrypted using a generated
// key. Customer-specified encryption keys do not protect disk metadata.
//
// If the customer-specified encryption key is rotated, when the workstation
// instance is stopped, the system will attempt to recreate the
// persistent disk with the new version of the key. Be sure to keep
// older versions of the key until the persistent disk is recreated.
// Otherwise, data on the persistent disk will be lost.
//
// If the encryption key is revoked, the workstation session will
// automatically be stopped within 7 hours.
CustomerEncryptionKey encryption_key = 17;
// Output only. Whether this resource is in degraded mode, in which case it
// may require user action to restore full functionality. Details can be found
// in the `conditions` field.
bool degraded = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Status conditions describing the current resource state.
repeated google.rpc.Status conditions = 16
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// A single instance of a developer workstation with its own persistent storage.
message Workstation {
option (google.api.resource) = {
type: "workstations.googleapis.com/Workstation"
pattern: "projects/{project}/locations/{location}/workstationClusters/{workstation_cluster}/workstationConfigs/{workstation_config}/workstations/{workstation}"
style: DECLARATIVE_FRIENDLY
};
// Whether a workstation is running and ready to receive user requests.
enum State {
// Do not use.
STATE_UNSPECIFIED = 0;
// The workstation is not yet ready to accept requests from users but will
// be soon.
STATE_STARTING = 1;
// The workstation is ready to accept requests from users.
STATE_RUNNING = 2;
// The workstation is being stopped.
STATE_STOPPING = 3;
// The workstation is stopped and will not be able to receive requests until
// it is started.
STATE_STOPPED = 4;
}
// Full name of this resource.
string name = 1;
// Human-readable name for this resource.
string display_name = 2;
// Output only. A system-assigned unique identified for this resource.
string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Indicates whether this resource is currently being updated to
// match its intended state.
bool reconciling = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Client-specified annotations.
map<string, string> annotations = 5;
// Client-specified labels that are applied to the resource and that are also
// propagated to the underlying Compute Engine resources.
map<string, string> labels = 13;
// Output only. Time when this resource was created.
google.protobuf.Timestamp create_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time when this resource was most recently updated.
google.protobuf.Timestamp update_time = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time when this resource was soft-deleted.
google.protobuf.Timestamp delete_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Checksum computed by the server. May be sent on update and delete requests
// to ensure that the client has an up-to-date value before proceeding.
string etag = 9;
// Output only. Current state of the workstation.
State state = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Host to which clients can send HTTPS traffic that will be
// received by the workstation. Authorized traffic will be received to the
// workstation as HTTP on port 80. To send traffic to a different port,
// clients may prefix the host with the destination port in the format
// `{port}-{host}`.
string host = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Request message for GetWorkstationCluster.
message GetWorkstationClusterRequest {
// Required. Name of the requested resource.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationCluster"
}
];
}
// Request message for ListWorkstationClusters.
message ListWorkstationClustersRequest {
// Required. Parent resource name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "workstations.googleapis.com/WorkstationCluster"
}
];
// Maximum number of items to return.
int32 page_size = 2;
// next_page_token value returned from a previous List request, if any.
string page_token = 3;
}
// Response message for ListWorkstationClusters.
message ListWorkstationClustersResponse {
// The requested clusters.
repeated WorkstationCluster workstation_clusters = 1;
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
string next_page_token = 2;
// Unreachable resources.
repeated string unreachable = 3;
}
// Message for creating a CreateWorkstationCluster.
message CreateWorkstationClusterRequest {
// Required. Parent resource name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "workstations.googleapis.com/WorkstationCluster"
}
];
// Required. ID to use for the cluster.
string workstation_cluster_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. Cluster to create.
WorkstationCluster workstation_cluster = 3
[(google.api.field_behavior) = REQUIRED];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 4;
}
// Request message for UpdateWorkstationCluster.
message UpdateWorkstationClusterRequest {
// Required. Cluster to update.
WorkstationCluster workstation_cluster = 1
[(google.api.field_behavior) = REQUIRED];
// Required. Mask specifying which fields in the cluster should be updated.
google.protobuf.FieldMask update_mask = 2
[(google.api.field_behavior) = REQUIRED];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 3;
// If set, and the cluster is not found, a new cluster will be created.
// In this situation, update_mask is ignored.
bool allow_missing = 4;
}
// Message for deleting a workstation cluster.
message DeleteWorkstationClusterRequest {
// Required. Name of the cluster to delete.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationCluster"
}
];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 2;
// If set, the request will be rejected if the latest version of the cluster
// on the server does not have this etag.
string etag = 3;
// If set, any workstation configurations and workstations in the cluster will
// also be deleted. Otherwise, the request will work only if the cluster has
// no configurations or workstations.
bool force = 4;
}
// Request message for GetWorkstationConfig.
message GetWorkstationConfigRequest {
// Required. Name of the requested resource.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationConfig"
}
];
}
// Request message for ListWorkstationConfigs.
message ListWorkstationConfigsRequest {
// Required. Parent resource name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationCluster"
}
];
// Maximum number of items to return.
int32 page_size = 2;
// next_page_token value returned from a previous List request, if any.
string page_token = 3;
}
// Response message for ListWorkstationConfigs.
message ListWorkstationConfigsResponse {
// The requested configs.
repeated WorkstationConfig workstation_configs = 1;
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
string next_page_token = 2;
// Unreachable resources.
repeated string unreachable = 3;
}
// Request message for ListUsableWorkstationConfigs.
message ListUsableWorkstationConfigsRequest {
// Required. Parent resource name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationCluster"
}
];
// Maximum number of items to return.
int32 page_size = 2;
// next_page_token value returned from a previous List request, if any.
string page_token = 3;
}
// Response message for ListUsableWorkstationConfigs.
message ListUsableWorkstationConfigsResponse {
// The requested configs.
repeated WorkstationConfig workstation_configs = 1;
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
string next_page_token = 2;
// Unreachable resources.
repeated string unreachable = 3;
}
// Message for creating a CreateWorkstationConfig.
message CreateWorkstationConfigRequest {
// Required. Parent resource name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationCluster"
}
];
// Required. ID to use for the config.
string workstation_config_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. Config to create.
WorkstationConfig workstation_config = 3
[(google.api.field_behavior) = REQUIRED];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 4;
}
// Request message for UpdateWorkstationConfig.
message UpdateWorkstationConfigRequest {
// Required. Config to update.
WorkstationConfig workstation_config = 1
[(google.api.field_behavior) = REQUIRED];
// Required. Mask specifying which fields in the config should be updated.
google.protobuf.FieldMask update_mask = 2
[(google.api.field_behavior) = REQUIRED];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 3;
// If set, and the config is not found, a new config will be created.
// In this situation, update_mask is ignored.
bool allow_missing = 4;
}
// Message for deleting a workstation configuration.
message DeleteWorkstationConfigRequest {
// Required. Name of the config to delete.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationConfig"
}
];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 2;
// If set, the request will be rejected if the latest version of the config on
// the server does not have this etag.
string etag = 3;
// If set, any Workstations in the config will also be deleted. Otherwise,
// the request will work only if the config has no workstations.
bool force = 4;
}
// Request message for GetWorkstation.
message GetWorkstationRequest {
// Required. Name of the requested resource.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/Workstation"
}
];
}
// Request message for ListWorkstations.
message ListWorkstationsRequest {
// Required. Parent resource name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationConfig"
}
];
// Maximum number of items to return.
int32 page_size = 2;
// next_page_token value returned from a previous List request, if any.
string page_token = 3;
}
// Response message for ListWorkstations.
message ListWorkstationsResponse {
// The requested workstations.
repeated Workstation workstations = 1;
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
string next_page_token = 2;
// Unreachable resources.
repeated string unreachable = 3;
}
// Request message for ListUsableWorkstations.
message ListUsableWorkstationsRequest {
// Required. Parent resource name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationConfig"
}
];
// Maximum number of items to return.
int32 page_size = 2;
// next_page_token value returned from a previous List request, if any.
string page_token = 3;
}
// Response message for ListUsableWorkstations.
message ListUsableWorkstationsResponse {
// The requested workstations.
repeated Workstation workstations = 1;
// Token to retrieve the next page of results, or empty if there are no more
// results in the list.
string next_page_token = 2;
// Unreachable resources.
repeated string unreachable = 3;
}
// Message for creating a CreateWorkstation.
message CreateWorkstationRequest {
// Required. Parent resource name.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/WorkstationConfig"
}
];
// Required. ID to use for the workstation.
string workstation_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. Workstation to create.
Workstation workstation = 3 [(google.api.field_behavior) = REQUIRED];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 4;
}
// Request message for UpdateWorkstation.
message UpdateWorkstationRequest {
// Required. Workstation to update.
Workstation workstation = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Mask specifying which fields in the config should be updated.
google.protobuf.FieldMask update_mask = 2
[(google.api.field_behavior) = REQUIRED];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 3;
// If set, and the config is not found, a new config will be created.
// In this situation, update_mask is ignored.
bool allow_missing = 4;
}
// Request message for DeleteWorkstation.
message DeleteWorkstationRequest {
// Required. Name of the workstation to delete.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/Workstation"
}
];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 2;
// If set, the request will be rejected if the latest version of the
// workstation on the server does not have this etag.
string etag = 3;
}
// Request message for StartWorkstation.
message StartWorkstationRequest {
// Required. Name of the workstation to start.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/Workstation"
}
];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 2;
// If set, the request will be rejected if the latest version of the
// workstation on the server does not have this etag.
string etag = 3;
}
// Request message for StopWorkstation.
message StopWorkstationRequest {
// Required. Name of the workstation to stop.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/Workstation"
}
];
// If set, validate the request and preview the review, but do not actually
// apply it.
bool validate_only = 2;
// If set, the request will be rejected if the latest version of the
// workstation on the server does not have this etag.
string etag = 3;
}
// Request message for GenerateAccessToken.
message GenerateAccessTokenRequest {
// Required. Name of the workstation for which the access token should be
// generated.
string workstation = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "workstations.googleapis.com/Workstation"
}
];
// Desired expiration or lifetime of the access token.
oneof expiration {
// Desired expiration time of the access token. This value must
// be at most 24 hours in the future. If a value is not specified, the
// token's expiration time will be set to a default value of 1 hour in the
// future.
google.protobuf.Timestamp expire_time = 2;
// Desired lifetime duration of the access token. This value must
// be at most 24 hours. If a value is not specified, the token's lifetime
// will be set to a default value of 1 hour.
google.protobuf.Duration ttl = 3;
}
}
// Response message for GenerateAccessToken.
message GenerateAccessTokenResponse {
// The generated bearer access token. To use this token, include it in an
// Authorization header of an HTTP request sent to the associated
// workstation's hostname, for example, `Authorization: Bearer
// <access_token>`.
string access_token = 1;
// Time at which the generated token will expire.
google.protobuf.Timestamp expire_time = 2;
}
// Metadata for long-running operations.
message OperationMetadata {
// Output only. Time that the operation was created.
google.protobuf.Timestamp create_time = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time that the operation finished running.
google.protobuf.Timestamp end_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Server-defined resource path for the target of the operation.
string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Name of the verb executed by the operation.
string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Human-readable status of the operation, if any.
string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Identifies whether the user has requested cancellation
// of the operation.
bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. API version used to start the operation.
string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
}