Create an app or cron service
Creates an app or cron service in a project on one node. The source can be set now or later (services.setSource, github.connectRepo). Nothing runs until the first deploy, unless deployNow is true. Databases, Boxes, compose stacks and templates have their own create ops.
Needs services.create on the project. Available to MCP clients and the assistant.
seylo_session<token>application/json- body
projectId*stringPanel-issued id.
^[a-z0-9]{16}$name*stringDNS-safe; the service's host name on the project network. Unique in its project.
^[a-z0-9]([a-z0-9-]*[a-z0-9])?$1 <= length <= 40kind*string|stringnodeId*stringPanel-issued id.
^[a-z0-9]{16}$source?|||||build?ports?array<>items <= 20cron?deployNow?booleanfalseSuccess.
application/json- response
id*stringPanel-issued id.
^[a-z0-9]{16}$projectId*stringPanel-issued id.
^[a-z0-9]{16}$name*stringDNS-safe; the service's host name on the project network. Unique in its project.
^[a-z0-9]([a-z0-9-]*[a-z0-9])?$1 <= length <= 40kind*||||||||Compose members have kind app and a parentId naming their stack.
parentId*|nullstatus*string|string|string|string|string|string|string|string|string|stringsource*address*string|nullplacements*array<>cpuPercent*|nullmemoryBytes*|nullmemoryLimitBytes*|nullliveDeployment*|nulllastDeployedAt*|nullprotected*booleantemplateSlug*string|nullcreatedAt*stringdate-timeupdatedAt*stringdate-timestopped*booleangeneration*integer1 <= valuesourceConfig*|||||build*container*ports*array<>healthCheck*|nullcrashPolicy*restartDelaySeconds*integer0 <= valueresources*deploy*cron*|nullstickySessions*booleanentryNodeId*|nullnotes*stringmembers*array<>volumes*array<>curl -X POST 'https://example.com/api/v1/services.create' \ -H 'Content-Type: application/json' \ -d '{ "projectId": "string", "name": "string", "kind": "app", "nodeId": "string"}'{ "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" } ] } ]}Change a registry login POST
Renames a registry login or replaces its server, user name or password. Omitted fields keep their value. Changes apply on the next deploy that pulls. Needs `registries.manage`, which owners and admins hold. Not available to MCP clients or the assistant.
Delete a service POST
Deletes a service with its containers, volumes, files, domains, deploy history and kept images on every node. Deleting a compose stack deletes its members. Protected services cannot be deleted. The caller repeats the service name to confirm. Needs `services.delete` on the service (a grant on its project covers it). Available to MCP clients and the assistant, after a person approves the call.