The typed action APIBuild on the
same contract.
This example plans an update to the same manifest. The product separates planning and execution with explicit action modes.
Illustrative request using the existing endpoint schema. No request is sent; sim-atlas is a fixture identifier.
// SYNTHETIC · revision 09
// Request example only. No request is sent.
POST /api/actions/project.updateManifest
Content-Type: application/json
{
"mode": "plan",
"scope": {
"projectId": "sim-atlas"
},
"input": {
"projectId": "sim-atlas",
"manifest": {
"version": 1,
"services": [
{
"id": "atlas-api",
"name": "atlas-api",
"kind": "web",
"source": {
"type": "image",
"image": "example.invalid/atlas-api:demo"
},
"size": "small",
"replicas": 1,
"port": 8080,
"env": [],
"ownership": "managed"
},
{
"id": "atlas-worker",
"name": "atlas-worker",
"kind": "worker",
"source": {
"type": "image",
"image": "example.invalid/atlas-worker:demo"
},
"size": "small",
"replicas": 1,
"env": [],
"ownership": "managed"
}
],
"resources": [
{
"id": "atlas-jobs",
"name": "atlas-jobs",
"kind": "queue",
"config": {},
"size": "nano",
"ownership": "managed"
}
],
"routes": [],
"bindings": [
{
"id": "api-publishes-jobs",
"from": "atlas-api",
"to": "atlas-jobs",
"capability": "queue_publish",
"note": "API publishes background jobs."
},
{
"id": "worker-consumes-jobs",
"from": "atlas-worker",
"to": "atlas-jobs",
"capability": "queue_consume",
"note": "Worker consumes background jobs."
}
]
}
}
}