{ "lexicon": 1, "id": "com.publicdomainrelay.temp.cluster.deleteCluster", "defs": { "main": { "type": "procedure", "description": "Begin teardown of the named cluster. Sets the deletion timestamp; the finalizer then runs the gate, which passes only when the tenant path is observed shut inside the timeout. MUST NOT block: the gate is asynchronous and the two outcomes are TeardownBlocked (an alert, and nothing is destroyed) or deletion. So this call answers 202 and reports Draining, and a caller that wants the outcome polls listClusters. This is the only entry point into teardown, and it is not reversible - a Draining cluster cannot be un-drained. It is also the one verb that destroys the retained store; use controlPlaneDown to stop the control plane without losing it.", "input": { "encoding": "application/json", "schema": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string", "description": "The cluster label, unique within the calling account." } } } }, "output": { "encoding": "application/json", "schema": { "type": "object", "required": ["phase"], "properties": { "phase": { "type": "string", "knownValues": ["Draining"], "description": "Always Draining. TeardownBlocked is deliberately not reported here - it is a condition on the cluster, observable through listClusters, not a failure of this call: nothing has been destroyed and an operator has something to act on." } } } }, "errors": [ { "name": "InvalidRequest", "description": "Name absent, or not a legal RFC-1123 label within 63 characters." }, { "name": "Unauthorized", "description": "Missing or invalid service-auth token. Also returned when the token's aud is not this service or its lxm is not this method." }, { "name": "ClusterNotFound", "description": "This account has no cluster of that name. Deliberately indistinguishable from a name that belongs to another account." } ] } } }