import requests
url = "https://api.platform.ankra.app/org/service-admission/instances/{instance_id}/retirements/{retirement_id}/confirm"
payload = { "digest": "<string>" }
headers = {
"cookie": "ankra_session=",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {cookie: 'ankra_session=', 'Content-Type': 'application/json'},
body: JSON.stringify({digest: '<string>'})
};
fetch('https://api.platform.ankra.app/org/service-admission/instances/{instance_id}/retirements/{retirement_id}/confirm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://api.platform.ankra.app/org/service-admission/instances/{instance_id}/retirements/{retirement_id}/confirm \
--header 'Content-Type: application/json' \
--cookie ankra_session= \
--data '
{
"digest": "<string>"
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"instance_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"plan": {
"schema_version": 1,
"instance_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"actor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"generation": 2,
"namespace": "<string>",
"stack": {
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"state": "deployed",
"members": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "addon",
"name": "<string>",
"namespace": "<string>"
}
],
"member_digest": "<string>"
},
"nothing_deployed": true,
"owned_draft_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"consumers_to_disconnect": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"application_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"namespace": "<string>"
}
],
"shared_kept": [
{
"stack_name": "<string>",
"title": "<string>"
}
],
"data": {
"namespace_deleted": true,
"volumes_deleted": true,
"secrets_deleted": true,
"export_offered": true,
"restore_points": "kept_per_vault_retention",
"statement": "<string>"
},
"expires_at": "2023-11-07T05:31:56Z",
"namespace_contents": {
"observed_at": "2023-11-07T05:31:56Z",
"complete": true,
"incomplete_reason": "<string>",
"items": [
{
"resource_type": "<string>",
"kind": "<string>",
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"owner": {
"kind": "<string>",
"name": "<string>"
}
}
],
"volumes": [
{
"claim_name": "<string>",
"claim_uid": "<string>",
"created_by_service": true,
"storage_class": "<string>",
"volume_name": "<string>",
"reclaim_policy": "<string>"
}
]
},
"cluster_deleted": true
},
"digest": "<string>",
"state": "pending",
"created_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"confirmed_at": "2023-11-07T05:31:56Z",
"phase": "retire_stack",
"settled_at": "2023-11-07T05:31:56Z",
"outcome": "retired",
"reason": "<string>",
"volume_disposal": {
"observed_at": "2023-11-07T05:31:56Z",
"volumes": [
{
"claim_name": "<string>",
"volume_name": "<string>",
"state": "deleted",
"reclaim_policy": "<string>",
"phase": "<string>"
}
],
"retained_volumes": [
"<string>"
],
"complete": true
},
"data_disposal": "complete",
"kept_data": {
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"namespace": "<string>",
"observed_at": "2023-11-07T05:31:56Z",
"retained_volumes": [
"<string>"
],
"unconfirmed_volumes": [
"<string>"
],
"unbound_claims": [
"<string>"
],
"complete": true,
"next_step": "<string>",
"commands": [
{
"purpose": "inspect",
"volume": "<string>",
"command": "<string>"
}
]
}
}Confirm a managed-service retirement by its digest (browser session)
Requires the applications rollout flag, applications.deploy, and on the service cluster clusters.operate, stacks.delete and clusters.read, plus clusters.read on every consumer cluster, all intersected with live token scopes. Accepts only the stored retirement and the digest its actor reviewed, resolves the plan again under the instance lock and enqueues one execution that removes the stack, waits for its members to be removed from the cluster, deletes the service’s namespace once nothing else deploys into it, and releases the name only after the namespace is observed gone. Concurrent confirmations yield one execution; a retry returns the same receipt. The receipt is not proof of removal: follow the retirement’s outcome.
import requests
url = "https://api.platform.ankra.app/org/service-admission/instances/{instance_id}/retirements/{retirement_id}/confirm"
payload = { "digest": "<string>" }
headers = {
"cookie": "ankra_session=",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {cookie: 'ankra_session=', 'Content-Type': 'application/json'},
body: JSON.stringify({digest: '<string>'})
};
fetch('https://api.platform.ankra.app/org/service-admission/instances/{instance_id}/retirements/{retirement_id}/confirm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://api.platform.ankra.app/org/service-admission/instances/{instance_id}/retirements/{retirement_id}/confirm \
--header 'Content-Type: application/json' \
--cookie ankra_session= \
--data '
{
"digest": "<string>"
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"instance_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"plan": {
"schema_version": 1,
"instance_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"actor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"generation": 2,
"namespace": "<string>",
"stack": {
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"state": "deployed",
"members": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "addon",
"name": "<string>",
"namespace": "<string>"
}
],
"member_digest": "<string>"
},
"nothing_deployed": true,
"owned_draft_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"consumers_to_disconnect": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"application_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"namespace": "<string>"
}
],
"shared_kept": [
{
"stack_name": "<string>",
"title": "<string>"
}
],
"data": {
"namespace_deleted": true,
"volumes_deleted": true,
"secrets_deleted": true,
"export_offered": true,
"restore_points": "kept_per_vault_retention",
"statement": "<string>"
},
"expires_at": "2023-11-07T05:31:56Z",
"namespace_contents": {
"observed_at": "2023-11-07T05:31:56Z",
"complete": true,
"incomplete_reason": "<string>",
"items": [
{
"resource_type": "<string>",
"kind": "<string>",
"name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"owner": {
"kind": "<string>",
"name": "<string>"
}
}
],
"volumes": [
{
"claim_name": "<string>",
"claim_uid": "<string>",
"created_by_service": true,
"storage_class": "<string>",
"volume_name": "<string>",
"reclaim_policy": "<string>"
}
]
},
"cluster_deleted": true
},
"digest": "<string>",
"state": "pending",
"created_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"confirmed_at": "2023-11-07T05:31:56Z",
"phase": "retire_stack",
"settled_at": "2023-11-07T05:31:56Z",
"outcome": "retired",
"reason": "<string>",
"volume_disposal": {
"observed_at": "2023-11-07T05:31:56Z",
"volumes": [
{
"claim_name": "<string>",
"volume_name": "<string>",
"state": "deleted",
"reclaim_policy": "<string>",
"phase": "<string>"
}
],
"retained_volumes": [
"<string>"
],
"complete": true
},
"data_disposal": "complete",
"kept_data": {
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"namespace": "<string>",
"observed_at": "2023-11-07T05:31:56Z",
"retained_volumes": [
"<string>"
],
"unconfirmed_volumes": [
"<string>"
],
"unbound_claims": [
"<string>"
],
"complete": true,
"next_step": "<string>",
"commands": [
{
"purpose": "inspect",
"volume": "<string>",
"command": "<string>"
}
]
}
}Authorizations
Browser session. Mutations also require X-Ankra-CSRF.
Body
^sha256:[a-f0-9]{64}$Response
The retirement with its execution receipt.
The server-resolved statement of what the retirement removes and keeps. The digest covers all of it; nothing in it is supplied by the client.
Show child attributes
Show child attributes
^sha256:[a-f0-9]{64}$pending and expired describe an unconfirmed review's window; in_progress and settled a confirmed retirement.
pending, expired, in_progress, settled The confirmation's receipt: the execution carrying out the retirement.
retire_stack, await_teardown, dispose_data Only retired releases the service's name; every other outcome keeps it reserved and reason says why. Whether a retired service's data may remain is data_disposal, beside it.
retired, removal_failed, disposal_unknown, refused, interrupted Why the retirement ended other than retired. A retired outcome carries one only when a reviewed volume still holds the service's data or could not be confirmed gone.
What the retirement lane observed of the reviewed volumes once the namespace was gone: deleting a claim releases its volume, and the volume's reclaim policy decides its data. Each reviewed volume is read live; retained_volumes names exactly the persistent volumes that still hold the service's data, which Ankra does not delete (deleting a retained PersistentVolume would leave its disk behind). Null until the retirement settles retired, and for one that deleted no namespace or was reviewed before the namespace contents were read.
Show child attributes
Show child attributes
What became of the service's data once the retirement settled retired. complete only when Ankra can show the data is gone: nothing was ever deployed, or every claim of the deleted namespace was listed and every volume behind them was read gone. data_kept: a persistent volume was observed still holding the data after the namespace was gone. unconfirmed: every uncertain case - a volume could not be read or named another claim, a Retain volume's object was gone (its disk may remain), a claim had no volume when reviewed, the review was incomplete, the volumes were never read or their record is damaged, the service had no namespace of its own, or its cluster was recorded deleted in Ankra (which does not show its storage was destroyed). Null for every other outcome and until the retirement settles. data_kept and unconfirmed carry kept_data.
complete, data_kept, unconfirmed What a retirement that released the name left of the service's data, or could not rule out, with the next step. Null unless data_disposal is data_kept or unconfirmed.
Show child attributes
Show child attributes