import requests
url = "https://platform.ankra.app/api/v1/org/service-admission/instances/{instance_id}/retirements"
payload = {
"expected_generation": 2,
"disconnect_consumer_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"acknowledge_data_loss": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expected_generation: 2,
disconnect_consumer_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
acknowledge_data_loss: true
})
};
fetch('https://platform.ankra.app/api/v1/org/service-admission/instances/{instance_id}/retirements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://platform.ankra.app/api/v1/org/service-admission/instances/{instance_id}/retirements \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"expected_generation": 2,
"disconnect_consumer_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"acknowledge_data_loss": true
}
'{
"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"
},
"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>"
}Prepare a managed-service retirement review
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. Resolves, on the primary database, what retiring the instance removes and keeps - its stack found by resource id with every member and the namespace it deploys into, the consumers it is disconnected from, the shared operators it keeps and what happens to its data - and stores an actor-bound plan with a digest and a ten-minute expiry. Nothing on the cluster changes. Refused while the installation runs, while another retirement runs, for another generation, for a disconnect set that is not exactly the service’s consumers, for a stack changed outside Services, and without the data-loss acknowledgement. An actor may hold at most 10 open retirements and an organisation 50.
import requests
url = "https://platform.ankra.app/api/v1/org/service-admission/instances/{instance_id}/retirements"
payload = {
"expected_generation": 2,
"disconnect_consumer_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"acknowledge_data_loss": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expected_generation: 2,
disconnect_consumer_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
acknowledge_data_loss: true
})
};
fetch('https://platform.ankra.app/api/v1/org/service-admission/instances/{instance_id}/retirements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://platform.ankra.app/api/v1/org/service-admission/instances/{instance_id}/retirements \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"expected_generation": 2,
"disconnect_consumer_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"acknowledge_data_loss": true
}
'{
"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"
},
"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>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
The instance generation the person reviewed; a retirement of any other generation is refused.
x >= 1Exactly the service's consumer binding ids, each once. Omitted or null is invalid, never read as an empty list.
Must be true: retiring a service deletes its data, and no export is offered.
Response
The stored retirement review, its plan and digest.
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.
retired, removal_failed, disposal_unknown, refused, interrupted