diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index 98b5d0b71..01667b8d3 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -2190,6 +2190,53 @@ ] } }, + "/api/v1/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}": { + "post": { + "summary": "Creates a new Worker Deployment Version.", + "description": "Experimental. This API might significantly change or be removed in a\nfuture release.", + "operationId": "CreateWorkerDeploymentVersion2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1CreateWorkerDeploymentVersionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.deploymentName", + "description": "Identifies the Worker Deployment this Version is part of.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowServiceCreateWorkerDeploymentVersionBody" + } + } + ], + "tags": [ + "WorkflowService" + ] + } + }, "/api/v1/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}/{deploymentVersion.buildId}": { "get": { "summary": "Describes a worker deployment version.\nExperimental. This API might significantly change or be removed in a future release.", @@ -2313,6 +2360,59 @@ ] } }, + "/api/v1/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}/{deploymentVersion.buildId}/update-compute-config": { + "post": { + "summary": "Updates the compute config attached to a Worker Deployment Version.\nExperimental. This API might significantly change or be removed in a future release.", + "operationId": "UpdateWorkerDeploymentVersionComputeConfig2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateWorkerDeploymentVersionComputeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.deploymentName", + "description": "Identifies the Worker Deployment this Version is part of.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.buildId", + "description": "A unique identifier for this Version within the Deployment it is a part of.\nNot necessarily unique within the namespace.\nThe combination of `deployment_name` and `build_id` uniquely identifies this\nVersion within the namespace, because Deployment names are unique within a namespace.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowServiceUpdateWorkerDeploymentVersionComputeConfigBody" + } + } + ], + "tags": [ + "WorkflowService" + ] + } + }, "/api/v1/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}/{deploymentVersion.buildId}/update-metadata": { "post": { "summary": "Updates the user-given metadata attached to a Worker Deployment Version.\nExperimental. This API might significantly change or be removed in a future release.", @@ -2366,6 +2466,59 @@ ] } }, + "/api/v1/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}/{deploymentVersion.buildId}/validate-compute-config": { + "post": { + "summary": "Validates the compute config without attaching it to a Worker Deployment Version.\nExperimental. This API might significantly change or be removed in a future release.", + "operationId": "ValidateWorkerDeploymentVersionComputeConfig2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1ValidateWorkerDeploymentVersionComputeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.deploymentName", + "description": "Identifies the Worker Deployment this Version is part of.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.buildId", + "description": "A unique identifier for this Version within the Deployment it is a part of.\nNot necessarily unique within the namespace.\nThe combination of `deployment_name` and `build_id` uniquely identifies this\nVersion within the namespace, because Deployment names are unique within a namespace.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowServiceValidateWorkerDeploymentVersionComputeConfigBody" + } + } + ], + "tags": [ + "WorkflowService" + ] + } + }, "/api/v1/namespaces/{namespace}/worker-deployments": { "get": { "summary": "Lists all Worker Deployments that are tracked in the Namespace.\nExperimental. This API might significantly change or be removed in a future release.", @@ -6735,6 +6888,53 @@ ] } }, + "/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}": { + "post": { + "summary": "Creates a new Worker Deployment Version.", + "description": "Experimental. This API might significantly change or be removed in a\nfuture release.", + "operationId": "CreateWorkerDeploymentVersion", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1CreateWorkerDeploymentVersionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.deploymentName", + "description": "Identifies the Worker Deployment this Version is part of.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowServiceCreateWorkerDeploymentVersionBody" + } + } + ], + "tags": [ + "WorkflowService" + ] + } + }, "/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}/{deploymentVersion.buildId}": { "get": { "summary": "Describes a worker deployment version.\nExperimental. This API might significantly change or be removed in a future release.", @@ -6858,6 +7058,59 @@ ] } }, + "/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}/{deploymentVersion.buildId}/update-compute-config": { + "post": { + "summary": "Updates the compute config attached to a Worker Deployment Version.\nExperimental. This API might significantly change or be removed in a future release.", + "operationId": "UpdateWorkerDeploymentVersionComputeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateWorkerDeploymentVersionComputeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.deploymentName", + "description": "Identifies the Worker Deployment this Version is part of.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.buildId", + "description": "A unique identifier for this Version within the Deployment it is a part of.\nNot necessarily unique within the namespace.\nThe combination of `deployment_name` and `build_id` uniquely identifies this\nVersion within the namespace, because Deployment names are unique within a namespace.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowServiceUpdateWorkerDeploymentVersionComputeConfigBody" + } + } + ], + "tags": [ + "WorkflowService" + ] + } + }, "/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}/{deploymentVersion.buildId}/update-metadata": { "post": { "summary": "Updates the user-given metadata attached to a Worker Deployment Version.\nExperimental. This API might significantly change or be removed in a future release.", @@ -6911,6 +7164,59 @@ ] } }, + "/namespaces/{namespace}/worker-deployment-versions/{deploymentVersion.deploymentName}/{deploymentVersion.buildId}/validate-compute-config": { + "post": { + "summary": "Validates the compute config without attaching it to a Worker Deployment Version.\nExperimental. This API might significantly change or be removed in a future release.", + "operationId": "ValidateWorkerDeploymentVersionComputeConfig", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1ValidateWorkerDeploymentVersionComputeConfigResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.deploymentName", + "description": "Identifies the Worker Deployment this Version is part of.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "deploymentVersion.buildId", + "description": "A unique identifier for this Version within the Deployment it is a part of.\nNot necessarily unique within the namespace.\nThe combination of `deployment_name` and `build_id` uniquely identifies this\nVersion within the namespace, because Deployment names are unique within a namespace.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/WorkflowServiceValidateWorkerDeploymentVersionComputeConfigBody" + } + } + ], + "tags": [ + "WorkflowService" + ] + } + }, "/namespaces/{namespace}/worker-deployments": { "get": { "summary": "Lists all Worker Deployments that are tracked in the Namespace.\nExperimental. This API might significantly change or be removed in a future release.", @@ -8774,6 +9080,26 @@ } } }, + "ComputeConfigScalingGroup": { + "type": "object", + "properties": { + "taskQueueTypes": { + "type": "array", + "items": { + "$ref": "#/definitions/v1TaskQueueType" + }, + "description": "Optional. The set of task queue types this scaling group serves. \nIf not provided, this scaling group serves all not otherwise defined\ntask types." + }, + "provider": { + "$ref": "#/definitions/v1ComputeProvider", + "description": "Stores instructions for a worker control plane controller how to respond\nto worker lifeycle events." + }, + "scaler": { + "$ref": "#/definitions/v1ComputeScaler", + "description": "Informs a worker lifecycle controller *when* and *how often* to perform\ncertain worker lifecycle actions like starting a serverless worker." + } + } + }, "DeploymentInfoTaskQueueInfo": { "type": "object", "properties": { @@ -9237,6 +9563,31 @@ "WorkflowServiceCreateWorkerDeploymentBody": { "type": "object", "properties": { + "identity": { + "type": "string", + "description": "Optional. The identity of the client who initiated this request." + }, + "requestId": { + "type": "string", + "description": "A unique identifier for this create request for idempotence. Typically UUIDv4." + } + }, + "description": "Creates a new WorkerDeployment." + }, + "WorkflowServiceCreateWorkerDeploymentVersionBody": { + "type": "object", + "properties": { + "deploymentVersion": { + "type": "object", + "properties": { + "buildId": { + "type": "string", + "description": "A unique identifier for this Version within the Deployment it is a part of.\nNot necessarily unique within the namespace.\nThe combination of `deployment_name` and `build_id` uniquely identifies this\nVersion within the namespace, because Deployment names are unique within a namespace." + } + }, + "description": "Required.", + "title": "Required." + }, "computeConfig": { "$ref": "#/definitions/v1ComputeConfig", "description": "Optional. Contains the new worker compute configuration for the Worker\nDeployment. Used for worker scale management." @@ -9247,10 +9598,10 @@ }, "requestId": { "type": "string", - "description": "A unique identifier for this create request for idempotence. Typically UUIDv4." + "description": "A unique identifier for this create request for idempotence. Typically UUIDv4.\nIf a second request with the same ID is recieved, it is considered a successful no-op.\nRetrying with a different request ID for the same deployment name + build ID is an error." } }, - "description": "Creates a new WorkerDeployment." + "description": "Creates a new WorkerDeploymentVersion." }, "WorkflowServiceCreateWorkflowRuleBody": { "type": "object", @@ -10571,6 +10922,44 @@ } } }, + "WorkflowServiceUpdateWorkerDeploymentVersionComputeConfigBody": { + "type": "object", + "properties": { + "deploymentVersion": { + "type": "object", + "description": "Required.", + "title": "Required." + }, + "computeConfigScalingGroups": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ComputeConfigScalingGroup" + }, + "description": "Optional. Contains the compute config scaling groups to add or updated for the Worker\nDeployment." + }, + "removeComputeConfigScalingGroups": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional. Contains the compute config scaling groups to remove from the Worker Deployment." + }, + "identity": { + "type": "string", + "description": "Optional. The identity of the client who initiated this request." + }, + "requestId": { + "type": "string", + "description": "A unique identifier for this create request for idempotence. Typically UUIDv4.\nIf a second request with the same ID is recieved, it is considered a successful no-op.\nRetrying with a different request ID for the same deployment name + build ID is an error." + }, + "conflictToken": { + "type": "string", + "format": "byte", + "description": "This value is returned so that it can be optionally passed to APIs\nthat write to the Worker Deployment state to ensure that the state\ndid not change between this API call and a future write." + } + }, + "description": "Used to update the compute config of a Worker Deployment Version." + }, "WorkflowServiceUpdateWorkerDeploymentVersionMetadataBody": { "type": "object", "properties": { @@ -10676,6 +11065,25 @@ }, "description": "Keep the parameters in sync with:\n - temporal.api.batch.v1.BatchOperationUpdateWorkflowExecutionOptions.\n - temporal.api.workflow.v1.PostResetOperation.UpdateWorkflowOptions." }, + "WorkflowServiceValidateWorkerDeploymentVersionComputeConfigBody": { + "type": "object", + "properties": { + "deploymentVersion": { + "type": "object", + "description": "Required.", + "title": "Required." + }, + "computeConfig": { + "$ref": "#/definitions/v1ComputeConfig", + "description": "Required. Contains the new worker compute configuration for the Worker Deployment." + }, + "identity": { + "type": "string", + "description": "Optional. The identity of the client who initiated this request." + } + }, + "description": "Used to validate the compute config without attaching it to a Worker Deployment Version." + }, "protobufAny": { "type": "object", "properties": { @@ -12003,13 +12411,12 @@ "v1ComputeConfig": { "type": "object", "properties": { - "provider": { - "$ref": "#/definitions/v1ComputeProvider", - "description": "Stores instructions for a worker control plane controller how to respond\nto worker lifeycle events." - }, - "scaler": { - "$ref": "#/definitions/v1ComputeScaler", - "description": "Informs a worker lifecycle controller *when* and *how often* to perform\ncertain worker lifecycle actions like starting a serverless worker." + "scalingGroups": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ComputeConfigScalingGroup" + }, + "description": "Each scaling group describes a compute config for a specific subset of the worker \ndeployment version: covering a specific set of task types and/or regions.\nHaving different configurations for different task types, allows independent\ntuning of activity and workflow task processing (for example).\n\nThe key of the map is the ID of the scaling group used to reference it in subsequent\nupdate calls." } }, "description": "ComputeConfig stores configuration that helps a worker control plane\ncontroller understand *when* and *how* to respond to worker lifecycle\nevents." @@ -12023,11 +12430,11 @@ }, "detailJson": { "type": "string", - "title": "will be an unencrypted, JSON-encoded object of provider-specific\ninformation" + "title": "Unencrypted, JSON-encoded object of provider-specific information" }, "detailPayload": { "$ref": "#/definitions/v1Payload", - "description": "will be an encrypted, encoded bytestring containing\nprovider-specific information. The implementation must understand\nhow to decrypt the payload." + "description": "Encrypted, encoded bytestring containing provider-specific \ninformation. The implementation must understand how to decrypt the payload." }, "nexusEndpoint": { "type": "string", @@ -12039,15 +12446,17 @@ "v1ComputeScaler": { "type": "object", "properties": { - "minInstances": { - "type": "integer", - "format": "int32", - "description": "The lower limit for the number of Workers (in the WorkerDeployment) to\nwhich the ComputeScaler can scale down." + "type": { + "type": "string", + "description": "Type of the compute scaler. this string is implementation-specific and\ncan be used by implementations to understand how to interpret the\ncontents of the scaler_details field." }, - "maxInstances": { - "type": "integer", - "format": "int32", - "description": "The upper limit for the number of Workers (in the WorkerDeployment) to\nwhich the ComputeScaler can scale up. Must be greater than or equal to\nmin_instances." + "detailJson": { + "type": "string", + "title": "Unencrypted, JSON-encoded object of scaler-specific information" + }, + "detailPayload": { + "$ref": "#/definitions/v1Payload", + "description": "Encrypted, encoded bytestring containing scaler-specific \ninformation. The implementation must understand how to decrypt the payload." } }, "description": "ComputeScaler instructs the Temporal Service when to scale up or down the number of\nWorkers that comprise a WorkerDeployment." @@ -12229,6 +12638,16 @@ } } }, + "v1CreateWorkerDeploymentVersionResponse": { + "type": "object", + "properties": { + "conflictToken": { + "type": "string", + "format": "byte", + "description": "This value is returned so that it can be optionally passed to APIs that\nwrite to the WorkerDeployment state to ensure that the state did not\nchange between this API call and a future write." + } + } + }, "v1CreateWorkflowRuleResponse": { "type": "object", "properties": { @@ -13056,9 +13475,9 @@ "type": "boolean", "description": "True if the server supports Nexus operations.\nThis flag is dependent both on server version and for Nexus to be enabled via server configuration." }, - "serverlessDeployments": { + "serverScaledDeployments": { "type": "boolean", - "description": "True if the server supports serverless deployments.\nThis flag is dependent both on server version and for serverless deployments\nto be enabled via server configuration." + "description": "True if the server supports server-scaled deployments.\nThis flag is dependent both on server version and for server-scaled deployments\nto be enabled via server configuration." } }, "description": "System capability details." @@ -16704,6 +17123,16 @@ } } }, + "v1UpdateWorkerDeploymentVersionComputeConfigResponse": { + "type": "object", + "properties": { + "conflictToken": { + "type": "string", + "format": "byte", + "description": "This value is returned so that it can be optionally passed to APIs that\nwrite to the WorkerDeployment state to ensure that the state did not\nchange between this API call and a future write." + } + } + }, "v1UpdateWorkerDeploymentVersionMetadataResponse": { "type": "object", "properties": { @@ -16777,6 +17206,9 @@ }, "description": "Information a user can set, often for use by user interfaces." }, + "v1ValidateWorkerDeploymentVersionComputeConfigResponse": { + "type": "object" + }, "v1VersionDrainageInfo": { "type": "object", "properties": { @@ -16939,10 +17371,6 @@ "routingConfigUpdateState": { "$ref": "#/definitions/v1RoutingConfigUpdateState", "description": "Indicates whether the routing_config has been fully propagated to all\nrelevant task queues and their partitions." - }, - "computeConfig": { - "$ref": "#/definitions/v1ComputeConfig", - "description": "Contains information used by worker control plane controllers to handle\nscale events." } }, "description": "A Worker Deployment (Deployment, for short) represents all workers serving \na shared set of Task Queues. Typically, a Deployment represents one service or \napplication.\nA Deployment contains multiple Deployment Versions, each representing a different \nversion of workers. (see documentation of WorkerDeploymentVersionInfo)\nDeployment records are created in Temporal server automatically when their\nfirst poller arrives to the server.\nExperimental. Worker Deployments are experimental and might significantly change in the future." @@ -17051,6 +17479,10 @@ "metadata": { "$ref": "#/definitions/v1VersionMetadata", "description": "Arbitrary user-provided metadata attached to this version." + }, + "computeConfig": { + "$ref": "#/definitions/v1ComputeConfig", + "description": "Optional. Contains the new worker compute configuration for the Worker\nDeployment. Used for worker scale management." } }, "description": "A Worker Deployment Version (Version, for short) represents all workers of the same \ncode and config within a Deployment. Workers of the same Version are expected to \nbehave exactly the same so when executions move between them there are no \nnon-determinism issues.\nWorker Deployment Versions are created in Temporal server automatically when \ntheir first poller arrives to the server.\nExperimental. Worker Deployments are experimental and might significantly change in the future." diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index 8f0106008..978e549da 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -1958,6 +1958,46 @@ paths: application/json: schema: $ref: '#/components/schemas/Status' + /api/v1/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}: + post: + tags: + - WorkflowService + description: |- + Creates a new Worker Deployment Version. + + Experimental. This API might significantly change or be removed in a + future release. + operationId: CreateWorkerDeploymentVersion + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: deployment_version.deployment_name + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkerDeploymentVersionRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkerDeploymentVersionResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' /api/v1/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}: get: tags: @@ -2091,6 +2131,49 @@ paths: application/json: schema: $ref: '#/components/schemas/Status' + ? /api/v1/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/update-compute-config + : post: + tags: + - WorkflowService + description: |- + Updates the compute config attached to a Worker Deployment Version. + Experimental. This API might significantly change or be removed in a future release. + operationId: UpdateWorkerDeploymentVersionComputeConfig + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: deployment_version.deployment_name + in: path + required: true + schema: + type: string + - name: deployment_version.build_id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkerDeploymentVersionComputeConfigRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkerDeploymentVersionComputeConfigResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' ? /api/v1/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/update-metadata : post: tags: @@ -2134,6 +2217,49 @@ paths: application/json: schema: $ref: '#/components/schemas/Status' + ? /api/v1/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/validate-compute-config + : post: + tags: + - WorkflowService + description: |- + Validates the compute config without attaching it to a Worker Deployment Version. + Experimental. This API might significantly change or be removed in a future release. + operationId: ValidateWorkerDeploymentVersionComputeConfig + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: deployment_version.deployment_name + in: path + required: true + schema: + type: string + - name: deployment_version.build_id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ValidateWorkerDeploymentVersionComputeConfigRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ValidateWorkerDeploymentVersionComputeConfigResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' /api/v1/namespaces/{namespace}/worker-deployments: get: tags: @@ -6033,6 +6159,46 @@ paths: application/json: schema: $ref: '#/components/schemas/Status' + /namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}: + post: + tags: + - WorkflowService + description: |- + Creates a new Worker Deployment Version. + + Experimental. This API might significantly change or be removed in a + future release. + operationId: CreateWorkerDeploymentVersion + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: deployment_version.deployment_name + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkerDeploymentVersionRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CreateWorkerDeploymentVersionResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' /namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}: get: tags: @@ -6166,6 +6332,49 @@ paths: application/json: schema: $ref: '#/components/schemas/Status' + ? /namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/update-compute-config + : post: + tags: + - WorkflowService + description: |- + Updates the compute config attached to a Worker Deployment Version. + Experimental. This API might significantly change or be removed in a future release. + operationId: UpdateWorkerDeploymentVersionComputeConfig + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: deployment_version.deployment_name + in: path + required: true + schema: + type: string + - name: deployment_version.build_id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkerDeploymentVersionComputeConfigRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateWorkerDeploymentVersionComputeConfigResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' ? /namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/update-metadata : post: tags: @@ -6209,6 +6418,49 @@ paths: application/json: schema: $ref: '#/components/schemas/Status' + ? /namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/validate-compute-config + : post: + tags: + - WorkflowService + description: |- + Validates the compute config without attaching it to a Worker Deployment Version. + Experimental. This API might significantly change or be removed in a future release. + operationId: ValidateWorkerDeploymentVersionComputeConfig + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: deployment_version.deployment_name + in: path + required: true + schema: + type: string + - name: deployment_version.build_id + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ValidateWorkerDeploymentVersionComputeConfigRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ValidateWorkerDeploymentVersionComputeConfigResponse' + default: + description: Default error response + content: + application/json: + schema: + $ref: '#/components/schemas/Status' /namespaces/{namespace}/worker-deployments: get: tags: @@ -9118,6 +9370,29 @@ components: ComputeConfig: type: object properties: + scalingGroups: + type: object + additionalProperties: + $ref: '#/components/schemas/ComputeConfig_ScalingGroup' + description: "Each scaling group describes a compute config for a specific subset of the worker \n deployment version: covering a specific set of task types and/or regions.\n Having different configurations for different task types, allows independent\n tuning of activity and workflow task processing (for example).\n\n The key of the map is the ID of the scaling group used to reference it in subsequent\n update calls." + description: |- + ComputeConfig stores configuration that helps a worker control plane + controller understand *when* and *how* to respond to worker lifecycle + events. + ComputeConfig_ScalingGroup: + type: object + properties: + taskQueueTypes: + type: array + items: + enum: + - TASK_QUEUE_TYPE_UNSPECIFIED + - TASK_QUEUE_TYPE_WORKFLOW + - TASK_QUEUE_TYPE_ACTIVITY + - TASK_QUEUE_TYPE_NEXUS + type: string + format: enum + description: "Optional. The set of task queue types this scaling group serves. \n If not provided, this scaling group serves all not otherwise defined\n task types." provider: allOf: - $ref: '#/components/schemas/ComputeProvider' @@ -9130,10 +9405,6 @@ components: description: |- Informs a worker lifecycle controller *when* and *how often* to perform certain worker lifecycle actions like starting a serverless worker. - description: |- - ComputeConfig stores configuration that helps a worker control plane - controller understand *when* and *how* to respond to worker lifecycle - events. ComputeProvider: type: object properties: @@ -9146,18 +9417,14 @@ components: detailJson: type: string description: |- - will be an unencrypted, JSON-encoded object of provider-specific - information + Unencrypted, JSON-encoded object of provider-specific information (-- api-linter: core::0146::any=disabled aip.dev/not-precedent: This needs to be extensible to externally-written compute providers --) detailPayload: allOf: - $ref: '#/components/schemas/Payload' - description: |- - will be an encrypted, encoded bytestring containing - provider-specific information. The implementation must understand - how to decrypt the payload. + description: "Encrypted, encoded bytestring containing provider-specific \n information. The implementation must understand how to decrypt the payload." nexusEndpoint: type: string description: |- @@ -9172,19 +9439,23 @@ components: ComputeScaler: type: object properties: - minInstances: - type: integer + type: + type: string description: |- - The lower limit for the number of Workers (in the WorkerDeployment) to - which the ComputeScaler can scale down. - format: int32 - maxInstances: - type: integer + Type of the compute scaler. this string is implementation-specific and + can be used by implementations to understand how to interpret the + contents of the scaler_details field. + detailJson: + type: string description: |- - The upper limit for the number of Workers (in the WorkerDeployment) to - which the ComputeScaler can scale up. Must be greater than or equal to - min_instances. - format: int32 + Unencrypted, JSON-encoded object of scaler-specific information + (-- api-linter: core::0146::any=disabled + aip.dev/not-precedent: This needs to be extensible to + externally-written compute scalers --) + detailPayload: + allOf: + - $ref: '#/components/schemas/Payload' + description: "Encrypted, encoded bytestring containing scaler-specific \n information. The implementation must understand how to decrypt the payload." description: |- ComputeScaler instructs the Temporal Service when to scale up or down the number of Workers that comprise a WorkerDeployment. @@ -9346,6 +9617,32 @@ components: description: |- The name of the Worker Deployment to create. If a Worker Deployment with this name already exists, an error will be returned. + identity: + type: string + description: Optional. The identity of the client who initiated this request. + requestId: + type: string + description: A unique identifier for this create request for idempotence. Typically UUIDv4. + description: Creates a new WorkerDeployment. + CreateWorkerDeploymentResponse: + type: object + properties: + conflictToken: + type: string + description: |- + This value is returned so that it can be optionally passed to APIs that + write to the WorkerDeployment state to ensure that the state did not + change between this API call and a future write. + format: bytes + CreateWorkerDeploymentVersionRequest: + type: object + properties: + namespace: + type: string + deploymentVersion: + allOf: + - $ref: '#/components/schemas/WorkerDeploymentVersion' + description: Required. computeConfig: allOf: - $ref: '#/components/schemas/ComputeConfig' @@ -9357,9 +9654,12 @@ components: description: Optional. The identity of the client who initiated this request. requestId: type: string - description: A unique identifier for this create request for idempotence. Typically UUIDv4. - description: Creates a new WorkerDeployment. - CreateWorkerDeploymentResponse: + description: |- + A unique identifier for this create request for idempotence. Typically UUIDv4. + If a second request with the same ID is recieved, it is considered a successful no-op. + Retrying with a different request ID for the same deployment name + build ID is an error. + description: Creates a new WorkerDeploymentVersion. + CreateWorkerDeploymentVersionResponse: type: object properties: conflictToken: @@ -10170,11 +10470,11 @@ components: description: |- True if the server supports Nexus operations. This flag is dependent both on server version and for Nexus to be enabled via server configuration. - serverlessDeployments: + serverScaledDeployments: type: boolean description: |- - True if the server supports serverless deployments. - This flag is dependent both on server version and for serverless deployments + True if the server supports server-scaled deployments. + This flag is dependent both on server version and for server-scaled deployments to be enabled via server configuration. description: System capability details. GetWorkerBuildIdCompatibilityResponse: @@ -15103,6 +15403,54 @@ components: allOf: - $ref: '#/components/schemas/WorkerConfig' description: The worker configuration. Will be returned if the command was sent to a single worker. + UpdateWorkerDeploymentVersionComputeConfigRequest: + type: object + properties: + namespace: + type: string + deploymentVersion: + allOf: + - $ref: '#/components/schemas/WorkerDeploymentVersion' + description: Required. + computeConfigScalingGroups: + type: object + additionalProperties: + $ref: '#/components/schemas/ComputeConfig_ScalingGroup' + description: |- + Optional. Contains the compute config scaling groups to add or updated for the Worker + Deployment. + removeComputeConfigScalingGroups: + type: array + items: + type: string + description: Optional. Contains the compute config scaling groups to remove from the Worker Deployment. + identity: + type: string + description: Optional. The identity of the client who initiated this request. + requestId: + type: string + description: |- + A unique identifier for this create request for idempotence. Typically UUIDv4. + If a second request with the same ID is recieved, it is considered a successful no-op. + Retrying with a different request ID for the same deployment name + build ID is an error. + conflictToken: + type: string + description: |- + This value is returned so that it can be optionally passed to APIs + that write to the Worker Deployment state to ensure that the state + did not change between this API call and a future write. + format: bytes + description: Used to update the compute config of a Worker Deployment Version. + UpdateWorkerDeploymentVersionComputeConfigResponse: + type: object + properties: + conflictToken: + type: string + description: |- + This value is returned so that it can be optionally passed to APIs that + write to the WorkerDeployment state to ensure that the state did not + change between this API call and a future write. + format: bytes UpdateWorkerDeploymentVersionMetadataRequest: type: object properties: @@ -15269,6 +15617,26 @@ components: that is a single JSON string for use in user interfaces. User interface formatting may apply to this text in common use. The payload data section is limited to 20000 bytes by default. description: Information a user can set, often for use by user interfaces. + ValidateWorkerDeploymentVersionComputeConfigRequest: + type: object + properties: + namespace: + type: string + deploymentVersion: + allOf: + - $ref: '#/components/schemas/WorkerDeploymentVersion' + description: Required. + computeConfig: + allOf: + - $ref: '#/components/schemas/ComputeConfig' + description: Required. Contains the new worker compute configuration for the Worker Deployment. + identity: + type: string + description: Optional. The identity of the client who initiated this request. + description: Used to validate the compute config without attaching it to a Worker Deployment Version. + ValidateWorkerDeploymentVersionComputeConfigResponse: + type: object + properties: {} VersionDrainageInfo: type: object properties: @@ -15484,12 +15852,6 @@ components: Indicates whether the routing_config has been fully propagated to all relevant task queues and their partitions. format: enum - computeConfig: - allOf: - - $ref: '#/components/schemas/ComputeConfig' - description: |- - Contains information used by worker control plane controllers to handle - scale events. description: "A Worker Deployment (Deployment, for short) represents all workers serving \n a shared set of Task Queues. Typically, a Deployment represents one service or \n application.\n A Deployment contains multiple Deployment Versions, each representing a different \n version of workers. (see documentation of WorkerDeploymentVersionInfo)\n Deployment records are created in Temporal server automatically when their\n first poller arrives to the server.\n Experimental. Worker Deployments are experimental and might significantly change in the future." WorkerDeploymentInfo_WorkerDeploymentVersionSummary: type: object @@ -15701,6 +16063,12 @@ components: allOf: - $ref: '#/components/schemas/VersionMetadata' description: Arbitrary user-provided metadata attached to this version. + computeConfig: + allOf: + - $ref: '#/components/schemas/ComputeConfig' + description: |- + Optional. Contains the new worker compute configuration for the Worker + Deployment. Used for worker scale management. description: "A Worker Deployment Version (Version, for short) represents all workers of the same \n code and config within a Deployment. Workers of the same Version are expected to \n behave exactly the same so when executions move between them there are no \n non-determinism issues.\n Worker Deployment Versions are created in Temporal server automatically when \n their first poller arrives to the server.\n Experimental. Worker Deployments are experimental and might significantly change in the future." WorkerDeploymentVersionInfo_VersionTaskQueueInfo: type: object diff --git a/temporal/api/compute/v1/config.proto b/temporal/api/compute/v1/config.proto index 9423ce5ed..87d707fd9 100644 --- a/temporal/api/compute/v1/config.proto +++ b/temporal/api/compute/v1/config.proto @@ -11,15 +11,34 @@ option csharp_namespace = "Temporalio.Api.Compute.V1"; import "temporal/api/compute/v1/provider.proto"; import "temporal/api/compute/v1/scaler.proto"; +import "temporal/api/enums/v1/task_queue.proto"; // ComputeConfig stores configuration that helps a worker control plane // controller understand *when* and *how* to respond to worker lifecycle // events. message ComputeConfig { - // Stores instructions for a worker control plane controller how to respond - // to worker lifeycle events. - temporal.api.compute.v1.ComputeProvider provider = 1; - // Informs a worker lifecycle controller *when* and *how often* to perform - // certain worker lifecycle actions like starting a serverless worker. - temporal.api.compute.v1.ComputeScaler scaler = 2; + message ScalingGroup { + // Optional. The set of task queue types this scaling group serves. + // If not provided, this scaling group serves all not otherwise defined + // task types. + repeated temporal.api.enums.v1.TaskQueueType task_queue_types = 1; + + // Stores instructions for a worker control plane controller how to respond + // to worker lifeycle events. + temporal.api.compute.v1.ComputeProvider provider = 3; + + // Informs a worker lifecycle controller *when* and *how often* to perform + // certain worker lifecycle actions like starting a serverless worker. + temporal.api.compute.v1.ComputeScaler scaler = 4; + } + + // Each scaling group describes a compute config for a specific subset of the worker + // deployment version: covering a specific set of task types and/or regions. + // Having different configurations for different task types, allows independent + // tuning of activity and workflow task processing (for example). + // + // The key of the map is the ID of the scaling group used to reference it in subsequent + // update calls. + map scaling_groups = 1; } + diff --git a/temporal/api/compute/v1/provider.proto b/temporal/api/compute/v1/provider.proto index 0ce446f6a..fa669423a 100644 --- a/temporal/api/compute/v1/provider.proto +++ b/temporal/api/compute/v1/provider.proto @@ -23,15 +23,13 @@ message ComputeProvider { string type = 1; // Contains provider-specific instructions and configuration. oneof detail { - // will be an unencrypted, JSON-encoded object of provider-specific - // information + // Unencrypted, JSON-encoded object of provider-specific information // (-- api-linter: core::0146::any=disabled // aip.dev/not-precedent: This needs to be extensible to // externally-written compute providers --) string detail_json = 2; - // will be an encrypted, encoded bytestring containing - // provider-specific information. The implementation must understand - // how to decrypt the payload. + // Encrypted, encoded bytestring containing provider-specific + // information. The implementation must understand how to decrypt the payload. temporal.api.common.v1.Payload detail_payload = 3; } // Optional. If the compute provider is a Nexus service, this should point diff --git a/temporal/api/compute/v1/scaler.proto b/temporal/api/compute/v1/scaler.proto index 7fbb7da74..5dd433c47 100644 --- a/temporal/api/compute/v1/scaler.proto +++ b/temporal/api/compute/v1/scaler.proto @@ -9,14 +9,26 @@ option java_outer_classname = "ScalerProto"; option ruby_package = "Temporalio::Api::Compute::V1"; option csharp_namespace = "Temporalio.Api.Compute.V1"; +import "temporal/api/common/v1/message.proto"; + // ComputeScaler instructs the Temporal Service when to scale up or down the number of // Workers that comprise a WorkerDeployment. message ComputeScaler { - // The lower limit for the number of Workers (in the WorkerDeployment) to - // which the ComputeScaler can scale down. - int32 min_instances = 1; - // The upper limit for the number of Workers (in the WorkerDeployment) to - // which the ComputeScaler can scale up. Must be greater than or equal to - // min_instances. - int32 max_instances = 2; + // Type of the compute scaler. this string is implementation-specific and + // can be used by implementations to understand how to interpret the + // contents of the scaler_details field. + string type = 1; + + // Contains scaler-specific instructions and configuration. + oneof detail { + // Unencrypted, JSON-encoded object of scaler-specific information + // (-- api-linter: core::0146::any=disabled + // aip.dev/not-precedent: This needs to be extensible to + // externally-written compute scalers --) + string detail_json = 2; + + // Encrypted, encoded bytestring containing scaler-specific + // information. The implementation must understand how to decrypt the payload. + temporal.api.common.v1.Payload detail_payload = 3; + } } diff --git a/temporal/api/deployment/v1/message.proto b/temporal/api/deployment/v1/message.proto index 11a2ccfa2..4480e6d93 100644 --- a/temporal/api/deployment/v1/message.proto +++ b/temporal/api/deployment/v1/message.proto @@ -159,6 +159,10 @@ message WorkerDeploymentVersionInfo { // Arbitrary user-provided metadata attached to this version. VersionMetadata metadata = 10; + + // Optional. Contains the new worker compute configuration for the Worker + // Deployment. Used for worker scale management. + temporal.api.compute.v1.ComputeConfig compute_config = 16; } // Information about workflow drainage to help the user determine when it is safe @@ -212,10 +216,6 @@ message WorkerDeploymentInfo { // relevant task queues and their partitions. temporal.api.enums.v1.RoutingConfigUpdateState routing_config_update_state = 7; - // Contains information used by worker control plane controllers to handle - // scale events. - temporal.api.compute.v1.ComputeConfig compute_config = 20; - message WorkerDeploymentVersionSummary { // Deprecated. Use `deployment_version`. string version = 1 [deprecated = true]; diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index 3803f7c60..2039fbe49 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -1268,10 +1268,10 @@ message GetSystemInfoResponse { // This flag is dependent both on server version and for Nexus to be enabled via server configuration. bool nexus = 11; - // True if the server supports serverless deployments. - // This flag is dependent both on server version and for serverless deployments + // True if the server supports server-scaled deployments. + // This flag is dependent both on server version and for server-scaled deployments // to be enabled via server configuration. - bool serverless_deployments = 12; + bool server_scaled_deployments = 12; } } @@ -2353,10 +2353,6 @@ message CreateWorkerDeploymentRequest { // this name already exists, an error will be returned. string deployment_name = 2; - // Optional. Contains the new worker compute configuration for the Worker - // Deployment. Used for worker scale management. - temporal.api.compute.v1.ComputeConfig compute_config = 3; - // Optional. The identity of the client who initiated this request. string identity = 4; // A unique identifier for this create request for idempotence. Typically UUIDv4. @@ -2396,6 +2392,32 @@ message ListWorkerDeploymentsResponse { } } +// Creates a new WorkerDeploymentVersion. +message CreateWorkerDeploymentVersionRequest { + string namespace = 1; + // Required. + temporal.api.deployment.v1.WorkerDeploymentVersion deployment_version = 2; + + // Optional. Contains the new worker compute configuration for the Worker + // Deployment. Used for worker scale management. + temporal.api.compute.v1.ComputeConfig compute_config = 4; + + // Optional. The identity of the client who initiated this request. + string identity = 3; + + // A unique identifier for this create request for idempotence. Typically UUIDv4. + // If a second request with the same ID is recieved, it is considered a successful no-op. + // Retrying with a different request ID for the same deployment name + build ID is an error. + string request_id = 5; +} + +message CreateWorkerDeploymentVersionResponse { + // This value is returned so that it can be optionally passed to APIs that + // write to the WorkerDeployment state to ensure that the state did not + // change between this API call and a future write. + bytes conflict_token = 1; +} + // Used for manual deletion of Versions. User can delete a Version only when all the // following conditions are met: // - It is not the Current or Ramping Version of its Deployment. @@ -2430,6 +2452,58 @@ message DeleteWorkerDeploymentRequest { message DeleteWorkerDeploymentResponse { } +// Used to update the compute config of a Worker Deployment Version. +message UpdateWorkerDeploymentVersionComputeConfigRequest { + string namespace = 1; + + // Required. + temporal.api.deployment.v1.WorkerDeploymentVersion deployment_version = 2; + + // Optional. Contains the compute config scaling groups to add or updated for the Worker + // Deployment. + map compute_config_scaling_groups = 6; + + // Optional. Contains the compute config scaling groups to remove from the Worker Deployment. + repeated string remove_compute_config_scaling_groups = 7; + + // Optional. The identity of the client who initiated this request. + string identity = 3; + + // A unique identifier for this create request for idempotence. Typically UUIDv4. + // If a second request with the same ID is recieved, it is considered a successful no-op. + // Retrying with a different request ID for the same deployment name + build ID is an error. + string request_id = 4; + + // This value is returned so that it can be optionally passed to APIs + // that write to the Worker Deployment state to ensure that the state + // did not change between this API call and a future write. + bytes conflict_token = 5; +} + +message UpdateWorkerDeploymentVersionComputeConfigResponse { + // This value is returned so that it can be optionally passed to APIs that + // write to the WorkerDeployment state to ensure that the state did not + // change between this API call and a future write. + bytes conflict_token = 1; +} + +// Used to validate the compute config without attaching it to a Worker Deployment Version. +message ValidateWorkerDeploymentVersionComputeConfigRequest { + string namespace = 1; + + // Required. + temporal.api.deployment.v1.WorkerDeploymentVersion deployment_version = 2; + + // Required. Contains the new worker compute configuration for the Worker Deployment. + temporal.api.compute.v1.ComputeConfig compute_config = 4; + + // Optional. The identity of the client who initiated this request. + string identity = 3; +} + +message ValidateWorkerDeploymentVersionComputeConfigResponse { +} + // Used to update the user-defined metadata of a Worker Deployment Version. message UpdateWorkerDeploymentVersionMetadataRequest { string namespace = 1; diff --git a/temporal/api/workflowservice/v1/service.proto b/temporal/api/workflowservice/v1/service.proto index e7edcd43f..db62e2b24 100644 --- a/temporal/api/workflowservice/v1/service.proto +++ b/temporal/api/workflowservice/v1/service.proto @@ -1131,6 +1131,47 @@ service WorkflowService { }; } + // Creates a new Worker Deployment Version. + // + // Experimental. This API might significantly change or be removed in a + // future release. + rpc CreateWorkerDeploymentVersion (CreateWorkerDeploymentVersionRequest) returns (CreateWorkerDeploymentVersionResponse) { + option (google.api.http) = { + post: "/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}" + body: "*" + additional_bindings { + post: "/api/v1/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}" + body: "*" + } + }; + } + + // Updates the compute config attached to a Worker Deployment Version. + // Experimental. This API might significantly change or be removed in a future release. + rpc UpdateWorkerDeploymentVersionComputeConfig (UpdateWorkerDeploymentVersionComputeConfigRequest) returns (UpdateWorkerDeploymentVersionComputeConfigResponse) { + option (google.api.http) = { + post: "/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/update-compute-config" + body: "*" + additional_bindings { + post: "/api/v1/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/update-compute-config" + body: "*" + } + }; + } + + // Validates the compute config without attaching it to a Worker Deployment Version. + // Experimental. This API might significantly change or be removed in a future release. + rpc ValidateWorkerDeploymentVersionComputeConfig (ValidateWorkerDeploymentVersionComputeConfigRequest) returns (ValidateWorkerDeploymentVersionComputeConfigResponse) { + option (google.api.http) = { + post: "/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/validate-compute-config" + body: "*" + additional_bindings { + post: "/api/v1/namespaces/{namespace}/worker-deployment-versions/{deployment_version.deployment_name}/{deployment_version.build_id}/validate-compute-config" + body: "*" + } + }; + } + // Updates the user-given metadata attached to a Worker Deployment Version. // Experimental. This API might significantly change or be removed in a future release. rpc UpdateWorkerDeploymentVersionMetadata (UpdateWorkerDeploymentVersionMetadataRequest) returns (UpdateWorkerDeploymentVersionMetadataResponse) {