import requests
url = "https://api.platform.ankra.app/org/applications/{application_id}/launch-plan"
headers = {"cookie": "ankra_session="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: 'ankra_session='}};
fetch('https://api.platform.ankra.app/org/applications/{application_id}/launch-plan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://api.platform.ankra.app/org/applications/{application_id}/launch-plan \
--cookie ankra_session={
"application_id": "<string>",
"status": "planned",
"commit_sha": "<string>",
"analysed_at": "2023-11-07T05:31:56Z",
"contract_schema_version": "<string>",
"plan": {},
"plan_hash": "<string>",
"decision_count": 123,
"proof_run": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"commit_sha": "<string>",
"pull_request_url": "<string>",
"pull_request_number": 123,
"verdict": "queued",
"headline": "<string>",
"failed_step": "<string>",
"preview_url": "<string>",
"result": {}
},
"data_migration": {}
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Get an application's Launch Plan (browser session)
The Launch Plan for the application (ankra-bjkszh.2, ankra-bjkszh.16), resolved on read from the App Contract of an analysed commit: per external service its lock-in tier with the reason and evidence, the default choice (bring your own, Ankra open source in the cluster, off, a portability PR, or staying at the vendor) and the alternatives; where each environment variable’s value comes from; the migration step, port, IP family and exposure; and the decisions only a person can make. Cluster facts are not read yet and say unknown. The latest analysed commit by default; commit_sha names one. Requires applications.read. data_migration is the plan’s data move off its vendors for the selection in backup_vault_id and data_migration_choices; without a selection the plan’s defaults keep every vendor and it moves nothing.
import requests
url = "https://api.platform.ankra.app/org/applications/{application_id}/launch-plan"
headers = {"cookie": "ankra_session="}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {cookie: 'ankra_session='}};
fetch('https://api.platform.ankra.app/org/applications/{application_id}/launch-plan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://api.platform.ankra.app/org/applications/{application_id}/launch-plan \
--cookie ankra_session={
"application_id": "<string>",
"status": "planned",
"commit_sha": "<string>",
"analysed_at": "2023-11-07T05:31:56Z",
"contract_schema_version": "<string>",
"plan": {},
"plan_hash": "<string>",
"decision_count": 123,
"proof_run": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"commit_sha": "<string>",
"pull_request_url": "<string>",
"pull_request_number": 123,
"verdict": "queued",
"headline": "<string>",
"failed_step": "<string>",
"preview_url": "<string>",
"result": {}
},
"data_migration": {}
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Browser session. Mutations also require X-Ankra-CSRF.
Path Parameters
Query Parameters
The analysed commit whose plan to resolve; without it, the most recently analysed one.
^[0-9a-f]{7,64}$The backup vault the data migration moves dumps and exports through.
Dependencies to move off their vendors, as : pairs separated by commas (ankra-open-source or needs-portability-pr).
Response
The resolved plan, or its status when there is nothing to plan from
The Launch Plan (schema ankra.launch-plan/v1, enginekit/launchplan) resolved on read from an analysed commit's App Contract. plan and decision_count are null unless status is planned: not-extracted means no contract has been stored yet, unsupported-contract that the stored contract's schema version is not one this resolver reads.
planned, not-extracted, unsupported-contract The plan document: one entry per dependency with its lock-in tier (drop-in, adapter, re-platform or unknown), reason and evidence, the chosen option (bring-your-own, ankra-open-source, off, needs-portability-pr or stays-at-vendor) and the alternatives; components, environment bindings, migrations, network, exposure, storage, cluster facts, findings and the decisions left to a person.
SHA-256 of the plan document; the value a plan-level approval binds to. null when there is no plan.
The latest proof of a setup pull request (schema ankra.proof-run/v1, enginekit/proofrun): the setup the pull request proposes, run once on the organisation's staging cluster - build, the Launch Plan's in-cluster dependency slices, migrations, deploy, readiness routes, smoke, teardown. null until a setup pull request has been proven. Its commit_sha is the setup commit, not the analysed commit above.
Show child attributes
Show child attributes
The plan's data move off its vendors (schema ankra.data-migration/v1, enginekit/datamigration) for the requested selection: per dependency its migration and Postgres strategy, every step in order, the environment the cutover rewires, the rollback steps, the customer's teardown checklist, the bounded actions a plan-level approval covers, and findings (a blocker stops the plan). null when there is no plan.