Get a compose stack's file
Returns where a stack's compose file comes from (with the pasted file) and the member services it created.
Needs services.view on the service (a grant on its project covers it). Available to MCP clients and the assistant.
seylo_session<token>serviceId*stringPanel-issued id.
^[a-z0-9]{16}$Success.
application/json- response
stack*source*||members*array<>curl -X GET 'https://example.com/api/v1/compose.get?serviceId=string'{ "stack": { "id": "string", "projectId": "string", "name": "string", "kind": "app", "parentId": "string", "status": "idle", "source": { "type": "github", "label": "string", "branch": "string", "builder": "railpack" }, "address": "string", "placements": [ { "nodeId": "string", "nodeName": "string", "replicas": 1 } ], "cpuPercent": 0, "memoryBytes": 0, "memoryLimitBytes": 0, "liveDeployment": { "id": "string", "label": "string", "createdAt": "2019-08-24T14:15:22Z" }, "lastDeployedAt": "2019-08-24T14:15:22Z", "protected": true, "templateSlug": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "stopped": true, "generation": 1, "sourceConfig": { "type": "github", "installationId": "string", "repo": "string", "branch": "string", "deployOnPush": true }, "build": { "builder": "railpack", "contextPath": "string", "dockerfilePath": "string", "inlineDockerfile": "string", "targetStage": "string", "buildNodeId": "string", "startCommand": "string", "installCommand": "string", "buildCommand": "string" }, "container": { "command": [ "string" ], "entrypoint": [ "string" ], "workingDir": "string", "user": "string", "stopSignal": "string", "stopGraceSeconds": 1 }, "ports": [ { "containerPort": 1, "protocol": "tcp" } ], "healthCheck": { "probe": { "type": "tcp", "port": 1 }, "intervalSeconds": 1, "timeoutSeconds": 1, "startPeriodSeconds": 0, "failureThreshold": 1 }, "crashPolicy": { "restart": true, "stopAfterCrashes": 0 }, "restartDelaySeconds": 0, "resources": { "memoryLimitBytes": 6291456, "memoryReservationBytes": 0, "cpuWeight": 1, "pidsLimit": 16 }, "deploy": { "mode": "rolling", "healthTimeoutSeconds": 10 }, "cron": { "schedule": "stringstr", "timeZone": "string", "command": [ "string" ], "timeoutSeconds": 1, "concurrency": "forbid" }, "stickySessions": true, "entryNodeId": "string", "notes": "string", "members": [ { "id": "string", "name": "string", "status": "idle" } ], "volumes": [ { "id": "string", "name": "string", "mountPath": "string", "kind": "volume", "readOnly": true, "sharedWith": [ { "id": "string", "name": "string" } ] } ] }, "source": { "type": "inline", "yaml": "string" }, "members": [ { "id": "string", "projectId": "string", "name": "string", "kind": "app", "parentId": "string", "status": "idle", "source": { "type": "github", "label": "string", "branch": "string", "builder": "railpack" }, "address": "string", "placements": [ { "nodeId": "string", "nodeName": "string", "replicas": 1 } ], "cpuPercent": 0, "memoryBytes": 0, "memoryLimitBytes": 0, "liveDeployment": { "id": "string", "label": "string", "createdAt": "2019-08-24T14:15:22Z" }, "lastDeployedAt": "2019-08-24T14:15:22Z", "protected": true, "templateSlug": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ]}Create a compose stack POST
Creates a compose stack and one member service per compose service on one node (members share volumes, so they stay on the same node). Deploys every member when deployNow is true. Needs `services.create` on the project. Available to MCP clients and the assistant.
Preview a compose stack POST
Parses a compose file and shows the member services it would create in the project, with ports, volumes, dependencies and warnings. Creates nothing. It is a POST (mutation) only because the file is too large for a query string. Needs `services.create` on the project. Available to MCP clients and the assistant.