Request
- Base URL: /api (relative, and the document was published on a file host, not at the API’s origin)
- URL: /api/projects/{project_id}/service-runtime
- Auth: HTTP bearer
Path parameters
Project ID
Request body
Empty means use the image's own default command.
Response
Service runtime updated successfully
Opt-in to AI summarization of metric alert notifications (NULL/false = off).
Opt-in to AI summarization of API traffic analytics (NULL/false = off).
Whether this project also accepts deployments from a source other than source_type — chiefly, whether a Git-backed project will take an uploaded source archive (drop). null or false means only the configured source_type (plus Docker images and static bundles, which every project accepts) may be deployed.
Attack mode - when enabled, requires CAPTCHA verification for all project environments
ADR-027 Phase 3 opt-out: when false, this project's traces are suppressed from cross-project discovery results. Default true (consistent with the OSS global-observability model where any OtelRead holder can query any project's telemetry).
Enable automatic preview environment creation for each branch
Opt-in to native error-tracking source context (false = off). When on, Temps stores uploaded source files and shows source code in stack traces.
Where auto-capture reads source from (relative to the checkout). Null = the deployment's Docker build context.
Git provider behind git_provider_connection_id: github, github_app, gitlab, gitea, bitbucket or generic. null when the project has no connection (public repository, Docker image or uploaded source).
Clients must use this rather than guessing the host from git_url: a self-hosted GitLab/Gitea/Bitbucket instance can live on any domain, and a connected project may have no clone URL stored at all.
Git clone URL for the repository (used for public repos without a provider connection)
GitLab webhook ID installed on the connected repository. null when no GitLab webhook is installed (not connected to GitLab, or webhook was removed / never created).
Hours to retain built Docker images before nightly cleanup. Null = use the system-wide default from settings.
Authoritative repository visibility. A missing connection alone does not imply that an incompletely configured repository is public.
Idle timeout (seconds) for on-demand preview environments.
When true, newly-created preview environments default to on-demand mode (containers stop after the configured idle timeout to save resources).
Wake timeout (seconds) for on-demand preview environments.
Product lifecycle classification. service projects are tied to a persisted, versioned template release; this is independent from the deployment transport in source_type.
When true, deploy clones only directory via git sparse-checkout.
Logo from the immutable service-template release applied to this project. Clients should prefer it over a deployed site's favicon.
Exact service-template version currently applied to the project.
Source type for project deployments
Determines where the deployment artifacts come from:
- External: Telemetry only, without hosting
- Git: Source code from a Git repository (traditional flow)
- DockerImage: Pre-built Docker image from external registry
- StaticFiles: Pre-built static files uploaded as a bundle
- UploadedSource: Source archive uploaded without a Git repository
- Manual: Flexible type that accepts any deployment method
Bundled template slug that created this project. Clients use this to present template-specific runtime configuration instead of generic source-build controls.
Opt-in Trivy vulnerability scanning of this project's deployed Docker images. Off by default — project owners explicitly enable it.
Example response
{
"docker_socket": {
"nodes": [
"control-plane",
"worker-1"
]
},
"git_provider_type": "gitlab",
"gitlab_webhook_id": 42,
"preset_config": {
"buildContext": "./api",
"dockerfilePath": "docker/Dockerfile"
}
}