API reference
Browse every documented API endpoint, request parameter, response, and schema without leaving this site.
Send API requests to your own DurpDeploy server under /api/v1.
Use the API operations guide for complete workflows and examples.
Download the OpenAPI specification to use with your API tools.
Authentication
Send your token in the Authorization: Bearer YOUR_TOKEN header.
Your account role, project membership, and token permissions limit each request.
Read token setup before connecting a client.
JSON request bodies are limited to 4 MiB of encoded bytes and must contain exactly one object matching the endpoint schema. Unknown fields, null, and trailing data return 400. Oversized bodies return 413 before mutation. Control actions accept an empty body or an empty JSON object. Permission order: viewer < deployer < maintainer < admin. Deployers can start existing releases, retry, re-run, and cancel deployments. Maintainers can author content and execute runbooks within admin boundaries. Project membership and token ceilings also limit each operation. Explicit-role tokens cannot manage API tokens. Unrestricted global tokens can change their owner's local password with current-password verification, including for Viewer and Deployer owners. Requests use the host, port, and scheme that serve this specification.
Endpoints
Expand an endpoint to read its parameters and responses.
admin
GET /api/v1/admin/auditList audit log entries.
Parameters
[
{
"type": "string",
"x-go-name": "User",
"description": "Exact current actor name or email. ASCII case is ignored.",
"name": "user",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "UserID",
"name": "user_id",
"in": "query"
},
{
"type": "string",
"x-go-name": "Action",
"name": "action",
"in": "query"
},
{
"type": "string",
"x-go-name": "EntityType",
"name": "entity_type",
"in": "query"
}
]Responses
{
"200": {
"description": "AuditLogListResponse is a list of audit log entries.",
"schema": {
"$ref": "#/definitions/AuditLogListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/admin/database-securityGet configured database transport security and warnings.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/DatabaseSecurityResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/admin/db-tablesList database tables.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "DbTableListResponse is a list of SQLite table names.",
"schema": {
"$ref": "#/definitions/DbTableListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/maintenanceRun maintenance tasks.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/admin/notifications
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "NotificationEventListResponse is a list of notification events.",
"schema": {
"$ref": "#/definitions/NotificationEventListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/admin/notifications/settings
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "GlobalNotification holds the global notification settings.",
"schema": {
"$ref": "#/definitions/GlobalNotification"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/admin/notifications/settings
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "GlobalNotification holds the global notification settings.",
"schema": {
"$ref": "#/definitions/GlobalNotification"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/admin/statsGet server stats.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "ServerStatsResponse contains aggregate counts.",
"schema": {
"$ref": "#/definitions/ServerStatsResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
admin-agents
GET /api/v1/admin/agentsList agents.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/AgentListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/agents/pairPair an agent.
Parameters
[
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/PairAgentRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/PairAgentResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"503": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/admin/agents/{id}Get an agent and its labels.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/AgentDetailResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/admin/agents/{id}Delete an agent from the inventory, retaining deployment history.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/agents/{id}/drainStop new claims without cancelling issued work. Repeated calls are harmless.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/agents/{id}/environmentsAssign an environment routing label to an agent.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/AgentEnvironmentRequest"
}
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/admin/agents/{id}/environmentsRemove an environment routing label from an agent.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/AgentEnvironmentRequest"
}
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/agents/{id}/labelsAdd an agent label.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/AgentLabelRequest"
}
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/admin/agents/{id}/labelsDelete an agent label.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/AgentLabelRequest"
}
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/agents/{id}/resumeResume new claims. Repeated calls are harmless.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/agents/{id}/retry-pairRetry pairing an agent.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/PairAgentRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/PairAgentResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"503": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/agents/{id}/revokeRevoke an agent.
Parameters
[
{
"type": "string",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
}
}Related schemas
admin-tokens
GET /api/v1/admin/tokensList all API tokens (admin only).
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "UserID",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "TokenListResponse is a list of API tokens.",
"schema": {
"$ref": "#/definitions/TokenListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/admin/tokens/{id}Revoke any API token by ID (admin only).
Parameters
[
{
"type": "string",
"x-go-name": "TokenID",
"description": "The API token ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
admin-users
GET /api/v1/admin/usersList all users.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "UserListResponse is a list of users.",
"schema": {
"$ref": "#/definitions/UserListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/admin/usersCreate a user.
Parameters
[
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/UserRequest"
}
}
]Responses
{
"201": {
"description": "User is a user account.",
"schema": {
"$ref": "#/definitions/User"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/admin/users/{id}Get a user.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "User is a user account.",
"schema": {
"$ref": "#/definitions/User"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/admin/users/{id}Update a user.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/UserRequest"
}
}
]Responses
{
"200": {
"description": "User is a user account.",
"schema": {
"$ref": "#/definitions/User"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/admin/users/{id}Delete a user.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
artifacts
GET /api/v1/projects/{id}/package-repositoryRead the active project repository, or null when no package is configured.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/PackageRepositoryResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/projects/{id}/package-repositoryConfigure and activate the project repository. Replacing its source preserves existing pins.
A blank credential preserves the secret only when URL template, auth type, and username are unchanged.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/PackageRepositoryRequest"
}
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/PackageRepositoryResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/projects/{id}/package-repositoryDisable packages for future snapshots. Source records needed by existing pins are retained.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "Removed"
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/package-repository/testDownload and validate one version using the saved repository credentials, without creating a release.
Size is the compressed ZIP byte count. Failure does not claim that the package is missing.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/PackageTestRequest"
}
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/PackageTestResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
},
"502": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/releases/{relId}/artifactRead a release's attached ZIP; pending means no validated pull yet.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RelID",
"name": "relId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ReleaseArtifactResponse"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
}
}Related schemas
deployments
GET /api/v1/deploymentsList deployments in projects accessible to the caller. Global admins see all projects.
Parameters
[
{
"type": "integer",
"format": "int64",
"description": "Positive project ID; inaccessible or nonexistent projects return an empty list.",
"name": "project_id",
"in": "query"
}
]Responses
{
"200": {
"description": "DeploymentListResponse is the paginated envelope for ListDeployments.",
"schema": {
"$ref": "#/definitions/DeploymentListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/activityDeployment counts for the last 14 UTC calendar days, including today.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "DeploymentActivityDay contains counts by current status for one UTC date.",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/DeploymentActivityDay"
}
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}Get a deployment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "Deployment represents a release executing against an environment.",
"schema": {
"$ref": "#/definitions/Deployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/deployments/{id}/approve
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "Deployment represents a release executing against an environment.",
"schema": {
"$ref": "#/definitions/Deployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/artifact-gatesList checksum-bound artifact reviews. Sensitive contents are omitted.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"$ref": "#/responses/ArtifactGateListResponse"
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
}
}Related schemas
POST /api/v1/deployments/{id}/artifact-gates/{stepIndex}/approveApprove this exact artifact revision and resume. Administrator only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StepIndex",
"description": "Zero-based generation step index.",
"name": "stepIndex",
"in": "path",
"required": true
},
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"revision",
"sha256"
],
"properties": {
"revision": {
"type": "integer",
"format": "int64",
"x-go-name": "Revision"
},
"sha256": {
"type": "string",
"x-go-name": "SHA256"
}
}
}
}
]Responses
{
"200": {
"description": "Decision accepted"
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/artifact-gates/{stepIndex}/artifactDownload the exact sensitive artifact. Viewers cannot download artifacts.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StepIndex",
"description": "Zero-based generation step index.",
"name": "stepIndex",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "Verified binary artifact"
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
}
}Related schemas
POST /api/v1/deployments/{id}/artifact-gates/{stepIndex}/rejectReject this exact artifact revision. Administrator only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StepIndex",
"description": "Zero-based generation step index.",
"name": "stepIndex",
"in": "path",
"required": true
},
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"revision",
"sha256"
],
"properties": {
"revision": {
"type": "integer",
"format": "int64",
"x-go-name": "Revision"
},
"sha256": {
"type": "string",
"x-go-name": "SHA256"
}
}
}
}
]Responses
{
"200": {
"description": "Decision accepted"
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/artifact-gates/{stepIndex}/reviewRead redacted Terraform resource changes supplied by the step. Writers only.
Review metadata is not independent verification of the saved plan.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StepIndex",
"description": "Zero-based generation step index.",
"name": "stepIndex",
"in": "path",
"required": true
}
]Responses
{
"200": {
"$ref": "#/responses/ArtifactGateReviewResponse"
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
}
}Related schemas
POST /api/v1/deployments/{id}/cancelCancel a running deployment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "Deployment represents a release executing against an environment.",
"schema": {
"$ref": "#/definitions/Deployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/eventsStream deployment events as Server-Sent Events.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "StreamResponse is a server-sent event stream.",
"schema": {
"$ref": "#/definitions/StreamResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/logsList deployment step logs.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "DeploymentLogListResponse is a list of deployment log entries.",
"schema": {
"$ref": "#/definitions/DeploymentLogListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/deployments/{id}/redeploy
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"201": {
"description": "Deployment represents a release executing against an environment.",
"schema": {
"$ref": "#/definitions/Deployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/deployments/{id}/retryRetry a failed or cancelled deployment.
Recheck lifecycle promotion and approval gates before retrying.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"201": {
"description": "Deployment represents a release executing against an environment.",
"schema": {
"$ref": "#/definitions/Deployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/rollbackPreview the latest prior successful different release in the same project and environment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RollbackPreview"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/deployments/{id}/rollbackCreate an audited deployment of the confirmed rollback target. Normal gates and approvals apply.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/rollbackRequest"
}
}
]Responses
{
"201": {
"description": "Deployment represents a release executing against an environment.",
"schema": {
"$ref": "#/definitions/Deployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/stagingList active staging transfer metadata. File contents are omitted.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"$ref": "#/responses/StagingListResponse"
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/status
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "DeploymentStatusResponse is the status payload for GetDeploymentStatus.",
"schema": {
"$ref": "#/definitions/DeploymentStatusResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/verificationGet the snapshotted verification check and its outcome.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/DeploymentVerification"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/deploymentsList deployments for a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID",
"name": "project_id",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "EnvID",
"name": "env_id",
"in": "query"
},
{
"type": "string",
"x-go-name": "Status",
"name": "status",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "From",
"name": "from",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "To",
"name": "to",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "DeploymentListResponse is the paginated envelope for ListDeployments.",
"schema": {
"$ref": "#/definitions/DeploymentListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/deploymentsStart a deployment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/DeploymentScheduleRequest"
}
},
{
"type": "string",
"x-go-name": "Key",
"description": "Optional key containing 1 to 255 visible ASCII characters.\nKeys are scoped to the user, project, and operation, with no expiry.\nMatching retries return the original 201 response and Idempotency-Replayed: true.\nReuse with different input returns 409. Failed creations do not consume keys.",
"name": "Idempotency-Key",
"in": "header"
}
]Responses
{
"201": {
"description": "Deployment represents a release executing against an environment.",
"schema": {
"$ref": "#/definitions/Deployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
environments
GET /api/v1/environmentsList all environments.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "EnvironmentListResponse is a list of environments.",
"schema": {
"$ref": "#/definitions/EnvironmentListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/environmentsCreate a new environment.
Parameters
[
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/EnvironmentRequest"
}
}
]Responses
{
"201": {
"description": "Environment represents a deployment target.",
"schema": {
"$ref": "#/definitions/Environment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/environments/{id}Get an environment by ID.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "Environment represents a deployment target.",
"schema": {
"$ref": "#/definitions/Environment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/environments/{id}Update an environment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/EnvironmentRequest"
}
}
]Responses
{
"200": {
"description": "Environment represents a deployment target.",
"schema": {
"$ref": "#/definitions/Environment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/environments/{id}Global admin only; deletion also removes scoped shared variables.
Delete an environment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
health
GET /api/v1/healthzPublic API liveness probe. This does not check database connectivity.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "The HTTP API is running.",
"schema": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
}
}
}
},
"400": {
"description": "Unexpected request body."
},
"413": {
"description": "Request body exceeds the encoded byte ceiling."
}
}lifecycles
GET /api/v1/lifecyclesList all lifecycles.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "LifecycleListResponse is a list of lifecycles.",
"schema": {
"$ref": "#/definitions/LifecycleListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/lifecyclesCreate a new lifecycle.
Parameters
[
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/LifecycleRequest"
}
}
]Responses
{
"201": {
"description": "Lifecycle represents a deployment promotion pipeline.",
"schema": {
"$ref": "#/definitions/Lifecycle"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/lifecycles/{id}Get a lifecycle with its stages.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "LifecycleResponse is the detailed lifecycle payload.",
"schema": {
"$ref": "#/definitions/LifecycleResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/lifecycles/{id}Delete a lifecycle and its shared variables. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/lifecycles/{id}/saveSave a lifecycle name and description.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/LifecycleRequest"
}
}
]Responses
{
"200": {
"description": "LifecycleResponse is the detailed lifecycle payload.",
"schema": {
"$ref": "#/definitions/LifecycleResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/lifecycles/{id}/stagesAdd a stage to a lifecycle. Global admin only.
Positive sort_order values select an unoccupied position, including gaps. Omitted, zero, and negative sort_order values append after the highest position.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/LifecycleStageRequest"
}
}
]Responses
{
"201": {
"description": "LifecycleStage is a single stage in a lifecycle.",
"schema": {
"$ref": "#/definitions/LifecycleStage"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/lifecycles/{id}/stages/reorderReorder lifecycle stages. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ReorderStagesRequest"
}
}
]Responses
{
"200": {
"description": "LifecycleStageListResponse is a list of lifecycle stages.",
"schema": {
"$ref": "#/definitions/LifecycleStageListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PATCH /api/v1/lifecycles/{id}/stages/{stageId}Update a lifecycle stage. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StageID",
"description": "The lifecycle stage ID.",
"name": "stageId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/LifecycleStageRequest"
}
}
]Responses
{
"200": {
"description": "LifecycleStage is a single stage in a lifecycle.",
"schema": {
"$ref": "#/definitions/LifecycleStage"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/lifecycles/{id}/stages/{stageId}/deleteDelete a lifecycle stage. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StageID",
"description": "The lifecycle stage ID.",
"name": "stageId",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
logs
GET /api/v1/deployments/{id}/logs.txtExport deployment logs as text.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "TextResponse is a plain text response.",
"schema": {
"$ref": "#/definitions/TextResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/logs/pageRead log previews within 500 rows and 1 MiB, ordered by increasing ID.
Text fields over 16 KiB are shortened. Use next_before for older rows.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"minimum": 1,
"type": "integer",
"format": "int64",
"x-go-name": "Before",
"description": "Return rows older than this ID. Omit to read the latest page.",
"name": "before",
"in": "query"
}
]Responses
{
"200": {
"description": "LogPage contains a bounded history window in increasing log-ID order.",
"schema": {
"$ref": "#/definitions/LogPage"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/logs/stream
Stream deployment logs. The format=structured SSE option emits indexed step logs and lifecycle states, supports after and Last-Event-ID cursors, and ends with a complete event. Default SSE and NDJSON remain text streams. Add preview=true to structured streams for marked 16 KiB display previews.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"x-go-name": "Format",
"description": "Format is sse, ndjson, or structured (SSE with step metadata).",
"name": "format",
"in": "query"
},
{
"minimum": 0,
"type": "integer",
"format": "int64",
"x-go-name": "After",
"description": "Replay events with an ID greater than this cursor (structured only).",
"name": "after",
"in": "query"
},
{
"type": "string",
"x-go-name": "LastEventID",
"description": "Reconnection cursor; overrides after (structured only).",
"name": "Last-Event-ID",
"in": "header"
},
{
"type": "boolean",
"x-go-name": "Preview",
"description": "Bound structured display text to 16 KiB. Defaults to false.",
"name": "preview",
"in": "query"
}
]Responses
{
"200": {
"description": "StreamResponse is a server-sent event stream.",
"schema": {
"$ref": "#/definitions/StreamResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
}
}Related schemas
GET /api/v1/deployments/{id}/logs/{logId}Get a single deployment log entry.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "LogID",
"description": "The log entry ID.",
"name": "logId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "DeploymentLog is a single step log entry.",
"schema": {
"$ref": "#/definitions/DeploymentLog"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
members
GET /api/v1/projects/{id}/membersList members of a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "ProjectMemberListResponse is a list of project members.",
"schema": {
"$ref": "#/definitions/ProjectMemberListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/membersAdd a member to a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ProjectMemberRequest"
}
}
]Responses
{
"201": {
"description": "ProjectMember is a single user membership on a project.",
"schema": {
"$ref": "#/definitions/ProjectMember"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/projects/{id}/members/{userId}Change a project member's role.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "UserID",
"description": "The user ID.",
"name": "userId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ProjectMemberRoleRequest"
}
}
]Responses
{
"200": {
"description": "ProjectMember is a single user membership on a project.",
"schema": {
"$ref": "#/definitions/ProjectMember"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/projects/{id}/members/{userId}Remove a member from a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "UserID",
"description": "The user ID.",
"name": "userId",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
project-groups
GET /api/v1/project-groupsList groups containing accessible projects. Global administrators also see empty groups.
Scoped tokens see only groups containing selected, accessible projects.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ProjectGroupListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/project-groupsCreate a shared group. Requires a global administrator and a global token with an Admin ceiling.
Names are trimmed, case-insensitively unique, and limited to 100 characters. Ungrouped is reserved.
Parameters
[
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ProjectGroupRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/ProjectGroup"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/project-groups/{id}Rename a shared group. Requires a global administrator and a global token with an Admin ceiling.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ProjectGroupRequest"
}
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ProjectGroup"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/project-groups/{id}Delete a group and move its projects to Ungrouped. Requires a global administrator and global Admin token.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "Deleted"
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
project-templates
GET /api/v1/project-templatesList project templates accessible through current source-project membership.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ProjectTemplateListResponse"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
}
}Related schemas
GET /api/v1/projects/{id}/project-templatesList templates owned by an accessible source project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Source project ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ProjectTemplateListResponse"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
}
}Related schemas
POST /api/v1/projects/{id}/project-templatesSave an independent project snapshot without secret values or credentials.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Source project ID.",
"name": "id",
"in": "path",
"required": true
},
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/saveProjectTemplateRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/ProjectTemplateResponse"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
}
}Related schemas
GET /api/v1/projects/{id}/project-templates/{templateId}Preview copied defaults, secret definitions, steps, and references.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Source project ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Template ID within the source project.",
"name": "templateId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/ProjectTemplateResponse"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
}
}Related schemas
POST /api/v1/projects/{id}/project-templates/{templateId}/projectsCreate a project atomically with explicit mappings and fresh secrets and credentials.
Scoped tokens cannot create projects. Lifecycle assignment requires a global administrator.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Source project ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Template ID within the source project.",
"name": "templateId",
"in": "path",
"required": true
},
{
"description": "Use snapshot variable keys for variable_values.\nUse source environment IDs for environment_mappings.\nUse one-based step positions for agent_selectors overrides.\nSupply all secret values and package credentials independently.\nSet reviewed to true after reviewing the preview.",
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ApplyProjectTemplate"
}
}
]Responses
{
"201": {
"description": "ProjectResponse is the JSON shape for a project.",
"schema": {
"$ref": "#/definitions/ProjectResponse"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
}
}Related schemas
projects
GET /api/v1/projectsList projects the authenticated user can access.
Parameters
[
{
"type": "string",
"x-go-name": "Query",
"description": "Search project names and descriptions. Matching ignores ASCII case.",
"name": "q",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "GroupID",
"description": "Omit for all groups. Use 0 for Ungrouped or a positive group ID.",
"name": "group_id",
"in": "query"
},
{
"enum": [
"newest",
"name",
"name_desc"
],
"type": "string",
"default": "name",
"x-go-name": "Sort",
"description": "Name A-Z by default. Use newest for creation time or name_desc for reverse name order.",
"name": "sort",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "ProjectListResponse is a list of projects.",
"schema": {
"$ref": "#/definitions/ProjectListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projectsCreate a new project. Lifecycle assignment requires a global admin.
Parameters
[
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ProjectRequest"
}
}
]Responses
{
"201": {
"description": "ProjectResponse is the JSON shape for a project.",
"schema": {
"$ref": "#/definitions/ProjectResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}Get a project by ID.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "ProjectResponse is the JSON shape for a project.",
"schema": {
"$ref": "#/definitions/ProjectResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/projects/{id}Update a project. Only a global admin can assign a different lifecycle.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ProjectRequest"
}
}
]Responses
{
"200": {
"description": "ProjectResponse is the JSON shape for a project.",
"schema": {
"$ref": "#/definitions/ProjectResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/projects/{id}Delete a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/projects/{id}/groupAssign a project to a visible group, or send group_id null for Ungrouped.
Requires project authoring permission. Group membership does not grant project access.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ProjectGroupAssignment"
}
}
]Responses
{
"200": {
"description": "ProjectResponse is the JSON shape for a project.",
"schema": {
"$ref": "#/definitions/ProjectResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/notificationsGet project notification settings.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "ProjectNotificationResponse is the notification settings for a project.",
"schema": {
"$ref": "#/definitions/ProjectNotificationResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/projects/{id}/notificationsUpdate project notification settings.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ProjectNotificationRequest"
}
}
]Responses
{
"200": {
"description": "ProjectNotificationResponse is the notification settings for a project.",
"schema": {
"$ref": "#/definitions/ProjectNotificationResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
releases
GET /api/v1/projects/{id}/releasesList releases for a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "ReleaseListResponse is a list of releases.",
"schema": {
"$ref": "#/definitions/ReleaseListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/releasesCreate a release snapshot for a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ReleaseRequest"
}
},
{
"type": "string",
"x-go-name": "Key",
"description": "Optional key containing 1 to 255 visible ASCII characters.\nKeys are scoped to the user, project, and operation, with no expiry.\nMatching retries return the original 201 response and Idempotency-Replayed: true.\nReuse with different input returns 409. Failed creations do not consume keys.",
"name": "Idempotency-Key",
"in": "header"
}
]Responses
{
"201": {
"description": "Release is a refreshable snapshot of project steps and variables.",
"schema": {
"$ref": "#/definitions/Release"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/releases/{relId}Get a release with its variable snapshots.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RelID",
"description": "The release ID.",
"name": "relId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "ReleaseWithVariablesResponse is the detailed release payload.",
"schema": {
"$ref": "#/definitions/ReleaseWithVariablesResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/projects/{id}/releases/{relId}Delete a release, its schedules, and completed deployment history.
Active or unconfirmed deployments prevent deletion.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RelID",
"description": "The release ID.",
"name": "relId",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/releases/{relId}/refreshRefresh a release snapshot from current project steps and variables.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RelID",
"description": "The release ID.",
"name": "relId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "Release is a refreshable snapshot of project steps and variables.",
"schema": {
"$ref": "#/definitions/Release"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
runbooks
GET /api/v1/projects/{id}/runbook-executionsList runbook execution history.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookExecutionListResponse"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbook-executions/{executionId}Read a runbook execution.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ExecutionID",
"name": "executionId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookExecutionDetail"
}
}
}Related schemas
POST /api/v1/projects/{id}/runbook-executions/{executionId}/approveApprove and start a pending runbook execution.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ExecutionID",
"name": "executionId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookStateResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
}
}Related schemas
POST /api/v1/projects/{id}/runbook-executions/{executionId}/cancelCancel a running runbook execution.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ExecutionID",
"name": "executionId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookStateResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbook-executions/{executionId}/logsRead persisted runbook logs in execution order.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ExecutionID",
"name": "executionId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "DeploymentLogListResponse is a list of deployment log entries.",
"schema": {
"$ref": "#/definitions/DeploymentLogListResponse"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbook-executions/{executionId}/logs.txtExport all persisted runbook logs as text.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ExecutionID",
"name": "executionId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "TextResponse is a plain text response.",
"schema": {
"$ref": "#/definitions/TextResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbook-executions/{executionId}/logs/pageRead a bounded runbook log page. Use next_before for older rows.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ExecutionID",
"name": "executionId",
"in": "path",
"required": true
},
{
"minimum": 1,
"type": "integer",
"format": "int64",
"x-go-name": "Before",
"description": "Return rows older than this ID. Omit to read the latest page.",
"name": "before",
"in": "query"
}
]Responses
{
"200": {
"description": "LogPage contains a bounded history window in increasing log-ID order.",
"schema": {
"$ref": "#/definitions/LogPage"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbook-executions/{executionId}/logs/streamStream persisted and live runbook logs.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ExecutionID",
"name": "executionId",
"in": "path",
"required": true
},
{
"type": "string",
"x-go-name": "Format",
"description": "Format is sse, ndjson, or structured.",
"name": "format",
"in": "query"
},
{
"type": "boolean",
"x-go-name": "Preview",
"description": "Bound structured display text to 16 KiB. Defaults to false.",
"name": "preview",
"in": "query"
}
]Responses
{
"200": {
"description": "StreamResponse is a server-sent event stream.",
"schema": {
"$ref": "#/definitions/StreamResponse"
}
}
}Related schemas
POST /api/v1/projects/{id}/runbook-executions/{executionId}/retryRetry the pinned version of a completed runbook execution.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ExecutionID",
"name": "executionId",
"in": "path",
"required": true
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/RunbookExecution"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbooksList project runbooks.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookListResponse"
}
}
}Related schemas
POST /api/v1/projects/{id}/runbooksCreate a runbook and its first immutable version.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/RunbookSaveRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/RunbookSaveResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbooks/{runbookId}Read a runbook and its saved versions.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID",
"name": "runbookId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookDetailResponse"
}
}
}Related schemas
PUT /api/v1/projects/{id}/runbooks/{runbookId}Save the next immutable version of a runbook.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID",
"name": "runbookId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/RunbookSaveRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/RunbookSaveResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
}
}Related schemas
DELETE /api/v1/projects/{id}/runbooks/{runbookId}Delete a runbook from active lists and disable its schedules.
Saved versions, backing releases, artifact pins, completed executions, and logs remain for history. Future execution and retry are blocked. Deleted names remain reserved. Finish or cancel unfinished executions and confirm cleanup before deletion. A repeated deletion returns 404.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID",
"name": "runbookId",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "Runbook deleted"
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/runbooks/{runbookId}/executionsRun one concrete version against a project environment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID",
"name": "runbookId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/RunbookExecuteRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/RunbookExecution"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbooks/{runbookId}/schedulesList runbook schedules.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID",
"name": "runbookId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookScheduleListResponse"
}
}
}Related schemas
POST /api/v1/projects/{id}/runbooks/{runbookId}/schedulesSchedule a pinned version or the latest saved version.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID",
"name": "runbookId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/RunbookScheduleRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/RunbookSchedule"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
}
}Related schemas
POST /api/v1/projects/{id}/runbooks/{runbookId}/schedules/{scheduleId}/disableDisable a runbook schedule.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID",
"name": "runbookId",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ScheduleID",
"name": "scheduleId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookScheduleStateResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
}
}Related schemas
GET /api/v1/projects/{id}/runbooks/{runbookId}/versions/{versionId}Read an immutable runbook version.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID",
"name": "runbookId",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "VersionID",
"name": "versionId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/RunbookVersionResponse"
}
}
}Related schemas
schedules
GET /api/v1/projects/{id}/schedulesList scheduled deployments for a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "ScheduledDeploymentListResponse is a list of scheduled deployments.",
"schema": {
"$ref": "#/definitions/ScheduledDeploymentListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/schedulesCreate a scheduled deployment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ScheduleRequest"
}
}
]Responses
{
"201": {
"description": "ScheduledDeployment is a cron-driven deployment configuration.",
"schema": {
"$ref": "#/definitions/ScheduledDeployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/schedules/{schedId}Get a scheduled deployment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "SchedID",
"description": "The schedule ID.",
"name": "schedId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "ScheduledDeployment is a cron-driven deployment configuration.",
"schema": {
"$ref": "#/definitions/ScheduledDeployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/projects/{id}/schedules/{schedId}Update a scheduled deployment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "SchedID",
"description": "The schedule ID.",
"name": "schedId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ScheduleRequest"
}
}
]Responses
{
"200": {
"description": "ScheduledDeployment is a cron-driven deployment configuration.",
"schema": {
"$ref": "#/definitions/ScheduledDeployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/projects/{id}/schedules/{schedId}Delete a scheduled deployment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "SchedID",
"description": "The schedule ID.",
"name": "schedId",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/schedules/{schedId}/toggleToggle active state of a scheduled deployment.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "SchedID",
"description": "The schedule ID.",
"name": "schedId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "ScheduledDeployment is a cron-driven deployment configuration.",
"schema": {
"$ref": "#/definitions/ScheduledDeployment"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
steps
GET /api/v1/projects/{id}/stepsList steps for a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "StepListResponse is a list of project steps.",
"schema": {
"$ref": "#/definitions/StepListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/stepsCreate a project step.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/StepRequest"
}
}
]Responses
{
"201": {
"description": "Step is an executable script step within a project.",
"schema": {
"$ref": "#/definitions/Step"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PATCH /api/v1/projects/{id}/steps/reorderReorder project steps.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ReorderStepsRequest"
}
}
]Responses
{
"200": {
"description": "StepListResponse is a list of project steps.",
"schema": {
"$ref": "#/definitions/StepListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/steps/{stepId}Get a project step.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StepID",
"description": "The step ID.",
"name": "stepId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "Step is an executable script step within a project.",
"schema": {
"$ref": "#/definitions/Step"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/projects/{id}/steps/{stepId}Update a project step.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StepID",
"description": "The step ID.",
"name": "stepId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/StepRequest"
}
}
]Responses
{
"200": {
"description": "Step is an executable script step within a project.",
"schema": {
"$ref": "#/definitions/Step"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/projects/{id}/steps/{stepId}Delete a project step.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StepID",
"description": "The step ID.",
"name": "stepId",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
system
GET /api/v1/versionGet the server executable's software version, build number, and source commit.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "Info describes the executable, independently of agent wire protocols.",
"schema": {
"$ref": "#/definitions/BuildInfo"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
}
}Related schemas
template-library
GET /api/v1/projects/{id}/template-libraryBrowse curated templates within an authorized project. Supports scoped tokens.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Destination project ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/LibraryTemplateListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
}
}Related schemas
GET /api/v1/projects/{id}/template-library/{slug}Preview a curated template within an authorized project. Supports scoped tokens.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Destination project ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"x-go-name": "Slug",
"description": "Curated template slug from the library list.",
"name": "slug",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "LibraryTemplate is bundled with the binary. Applying it creates independent\nproject records, rather than references to a mutable library definition.",
"schema": {
"$ref": "#/definitions/LibraryTemplate"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
}
}Related schemas
POST /api/v1/projects/{id}/template-library/{slug}/applyAppend editable steps and encrypted variables atomically. Never starts work.
Requires effective Maintainer permission. Conflicts do not overwrite configuration.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "Destination project ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"x-go-name": "Slug",
"description": "Curated template slug from the library list.",
"name": "slug",
"in": "path",
"required": true
},
{
"description": "Supply the preview version, reviewed=true, and variable keys.\nHost templates require agent labels. Server-container templates omit labels.\nEvery matching agent runs the steps. Use a unique label for a single host.\nTerraform requires TF_CONTAINER_IMAGE and TF_CONFIG_DIR and pauses before apply.",
"name": "Body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/ApplyLibraryTemplate"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/LibraryApplyResult"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
}
}Related schemas
GET /api/v1/template-libraryList curated step and workflow templates. Global tokens only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/LibraryTemplateListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
}
}Related schemas
GET /api/v1/template-library/{slug}Preview every script, variable, dependency, and permission. Global tokens only.
Parameters
[
{
"type": "string",
"x-go-name": "Slug",
"description": "Curated template slug from the library list.",
"name": "slug",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "LibraryTemplate is bundled with the binary. Applying it creates independent\nproject records, rather than references to a mutable library definition.",
"schema": {
"$ref": "#/definitions/LibraryTemplate"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
}
}Related schemas
templates
GET /api/v1/projects/{id}/templates-pickerList step templates for the picker.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "StepTemplateListResponse is a list of step templates.",
"schema": {
"$ref": "#/definitions/StepTemplateListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/templatesList all step templates.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "StepTemplateListResponse is a list of step templates.",
"schema": {
"$ref": "#/definitions/StepTemplateListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/templatesCreate a step template.
Parameters
[
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/StepTemplateRequest"
}
}
]Responses
{
"201": {
"description": "StepTemplate is a reusable step template.",
"schema": {
"$ref": "#/definitions/StepTemplate"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/templates/{id}Get a step template.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "StepTemplate is a reusable step template.",
"schema": {
"$ref": "#/definitions/StepTemplate"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/templates/{id}Update a step template.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/StepTemplateRequest"
}
}
]Responses
{
"200": {
"description": "StepTemplate is a reusable step template.",
"schema": {
"$ref": "#/definitions/StepTemplate"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"409": {
"description": "Conflict error response.",
"schema": {
"$ref": "#/definitions/ConflictError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/templates/{id}Delete a step template.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/templates/{id}/historyList version history for a step template.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "StepTemplateVersionListResponse is a list of step template versions.",
"schema": {
"$ref": "#/definitions/StepTemplateVersionListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
tokens
GET /api/v1/tokensList API tokens for the authenticated user.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "UserID",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "TokenListResponse is a list of API tokens.",
"schema": {
"$ref": "#/definitions/TokenListResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/tokensCreate a new API token.
Parameters
[
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/CreateTokenRequest"
}
}
]Responses
{
"201": {
"description": "CreateTokenResponse returns the plaintext token once.",
"schema": {
"$ref": "#/definitions/CreateTokenResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/tokens/{id}Revoke the authenticated user's API token.
Parameters
[
{
"type": "string",
"x-go-name": "TokenID",
"description": "The API token ID.",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PATCH /api/v1/tokens/{id}Replace an owned token's explicit scope, role, and project selection.
Scoped tokens and tokens with permission ceilings cannot manage tokens.
Parameters
[
{
"type": "string",
"x-go-name": "TokenID",
"description": "The API token ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/TokenScopeResponse"
}
}
]Responses
{
"200": {
"description": "TokenScopeResponse identifies a token's permission ceiling.",
"schema": {
"$ref": "#/definitions/TokenScopeResponse"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
users
GET /api/v1/users/meGet the currently authenticated user.
This endpoint has no documented parameters.
Responses
{
"200": {
"description": "User is a user account.",
"schema": {
"$ref": "#/definitions/User"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/users/me/passwordChange the authenticated local user's password.
Require an unrestricted global bearer token and the current password. All roles can change their own password. Project-scoped and explicit-role tokens cannot use this operation. Browser sessions and pending MFA challenges are invalidated atomically. API tokens and enrolled factors remain valid. SSO-only accounts must change their password with their identity provider. New passwords must leave room for all three password fields, email, and CSRF within the 64 KiB encoded browser form limit. Line breaks are not allowed.
Parameters
[
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"current_password",
"new_password",
"password_confirmation"
],
"properties": {
"current_password": {
"type": "string",
"format": "password"
},
"new_password": {
"type": "string",
"format": "password",
"minLength": 8
},
"password_confirmation": {
"type": "string",
"format": "password"
}
},
"additionalProperties": false
}
}
]Responses
{
"204": {
"description": "Password changed. Sign in again in all browsers."
},
"400": {
"description": "Invalid JSON body."
},
"401": {
"description": "Missing, invalid, expired, or revoked bearer token."
},
"403": {
"description": "Token has a project scope or permission ceiling."
},
"413": {
"description": "Request body exceeds the encoded byte ceiling."
},
"422": {
"description": "Invalid current password, missing local password, or invalid new password."
},
"500": {
"description": "Password update failed. The transaction preserves the original state."
}
}variables
POST /api/v1/admin/secret-exportsRequest an export of secret-marked project or shared lifecycle variables.
Require an instance administrator and a global bearer token with admin permission. Open approval_url in a browser as the same user. Confirm the selected scope. Reauthenticate with the local password or OAuth/OIDC, including required MFA. Each export requires new authentication. The request expires after five minutes. Keep claim_token private. It is returned once and never belongs in a URL.
Parameters
[
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"scope",
"scope_id"
],
"properties": {
"scope": {
"type": "string",
"enum": [
"project",
"lifecycle"
]
},
"scope_id": {
"type": "integer",
"format": "int64",
"minimum": 1
}
}
}
}
]Responses
{
"201": {
"description": "Pending export. No secret values are returned.",
"schema": {
"type": "object",
"properties": {
"approval_url": {
"description": "Relative browser URL. This identifier does not authorize a download.",
"type": "string"
},
"claim_token": {
"description": "Single-use download credential. Store it securely until approval.",
"type": "string"
},
"expires_at": {
"type": "integer",
"format": "int64"
},
"id": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request or scope."
},
"401": {
"description": "Missing or invalid bearer token."
},
"403": {
"description": "Instance administrator and global token required."
},
"404": {
"description": "Project or lifecycle not found."
},
"413": {
"description": "Request exceeds the JSON body limit."
},
"500": {
"description": "Export request failed."
}
}POST /api/v1/admin/secret-exports/{exportId}/downloadDownload an approved export once as a JSON attachment.
Require the original bearer token and claim_token after browser reauthentication. The approving browser session must remain valid. Logout invalidates approval. Project administrators without the global admin role cannot export secrets. Ordinary variable reads remain masked. Non-secret variables and snapshots are excluded. Successful downloads generate an audit event without secret values.
Parameters
[
{
"type": "string",
"name": "exportId",
"in": "path",
"required": true
},
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"claim_token"
],
"properties": {
"claim_token": {
"type": "string"
}
}
}
}
]Responses
{
"200": {
"description": "JSON attachment. Cache-Control is no-store.",
"schema": {
"type": "object",
"properties": {
"scope": {
"type": "string"
},
"scope_id": {
"type": "integer",
"format": "int64"
},
"variables": {
"type": "array",
"items": {
"type": "object",
"properties": {
"environment_id": {
"type": "integer",
"format": "int64",
"x-nullable": true
},
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"value": {
"description": "Plaintext secret value.",
"type": "string"
}
}
}
}
}
}
},
"400": {
"description": "Invalid JSON body."
},
"401": {
"description": "Missing or invalid bearer token."
},
"403": {
"description": "Instance administrator and global token required."
},
"404": {
"description": "Export is unapproved, expired, canceled, consumed, or bound to different credentials."
},
"413": {
"description": "Request exceeds the JSON body limit."
},
"500": {
"description": "Export failed. No partial export is returned."
}
}GET /api/v1/lifecycles/{id}/variablesList shared lifecycle variables. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/LifecycleVariableList"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/lifecycles/{id}/variablesCreate a shared lifecycle variable. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/VariableRequest"
}
}
]Responses
{
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/LifecycleVariable"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/lifecycles/{id}/variables/{varId}Get a masked shared lifecycle variable. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "varId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/LifecycleVariable"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/lifecycles/{id}/variables/{varId}Update a shared lifecycle variable. Blank values preserve existing secrets. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "varId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/VariableRequest"
}
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/LifecycleVariable"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/lifecycles/{id}/variables/{varId}Delete a shared variable. Future deployments stop inheriting it; active deployments retain captured values. Global admin only.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "varId",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/variablesList variables for a project.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID",
"name": "environment_id",
"in": "query"
},
{
"type": "boolean",
"x-go-name": "SecretOnly",
"name": "secret_only",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Limit",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "Offset",
"name": "offset",
"in": "query"
}
]Responses
{
"200": {
"description": "VariableListResponse is a list of variables.",
"schema": {
"$ref": "#/definitions/VariableListResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
POST /api/v1/projects/{id}/variablesCreate a project variable.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/VariableRequest"
}
}
]Responses
{
"201": {
"description": "VariableResponse is the JSON shape for a variable.",
"schema": {
"$ref": "#/definitions/VariableResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/variables/availableInspect current configured and conditional runtime variables for step authoring.
Secret values are null. Requires project access. Does not inspect snapshots or host environments.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID",
"description": "Omit for scope alternatives rather than an effective environment.",
"name": "environment_id",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "StepID",
"description": "Saved step must belong to this project. Draft fields override its metadata.",
"name": "step_id",
"in": "query"
},
{
"enum": [
"bash",
"pwsh",
"powershell",
"python3"
],
"type": "string",
"x-go-name": "Interpreter",
"name": "interpreter",
"in": "query"
},
{
"enum": [
"local",
"agent"
],
"type": "string",
"x-go-name": "ExecutionTarget",
"name": "execution_target",
"in": "query"
},
{
"enum": [
"host",
"container"
],
"type": "string",
"x-go-name": "AgentExecutionMode",
"description": "Local requires host; agent accepts host or container.",
"name": "agent_execution_mode",
"in": "query"
},
{
"type": "string",
"x-go-name": "VariableNames",
"description": "Comma-separated names. Explicit empty selects all configured variables.",
"name": "variable_names",
"in": "query"
}
]Responses
{
"200": {
"description": "AvailableVariables describes current authoring definitions, not snapshots.",
"schema": {
"$ref": "#/definitions/AvailableVariables"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/variables/inheritedList inherited lifecycle variables and project overrides. Requires project membership; secret values are masked.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"name": "id",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/InheritedVariableList"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"403": {
"description": "Forbidden error response.",
"schema": {
"$ref": "#/definitions/ForbiddenError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
GET /api/v1/projects/{id}/variables/{varId}Get a project variable.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "VarID",
"description": "The variable ID.",
"name": "varId",
"in": "path",
"required": true
}
]Responses
{
"200": {
"description": "VariableResponse is the JSON shape for a variable.",
"schema": {
"$ref": "#/definitions/VariableResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
PUT /api/v1/projects/{id}/variables/{varId}Update a project variable.
Parameters
[
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "VarID",
"description": "The variable ID.",
"name": "varId",
"in": "path",
"required": true
},
{
"x-go-name": "Body",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/VariableRequest"
}
}
]Responses
{
"200": {
"description": "VariableResponse is the JSON shape for a variable.",
"schema": {
"$ref": "#/definitions/VariableResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"404": {
"description": "Not found error response.",
"schema": {
"$ref": "#/definitions/NotFoundError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"422": {
"description": "Validation error response.",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
DELETE /api/v1/projects/{id}/variables/{varId}Delete a project variable.
Parameters
[
{
"enum": [
"inherit"
],
"type": "string",
"x-go-name": "Reset",
"description": "Set to inherit to remove every project value with this name and scope,\nincluding legacy duplicate unscoped rows. Other scopes are retained.",
"name": "reset",
"in": "query"
},
{
"type": "integer",
"format": "int64",
"x-go-name": "ID",
"description": "The resource ID.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"x-go-name": "VarID",
"description": "The variable ID.",
"name": "varId",
"in": "path",
"required": true
}
]Responses
{
"204": {
"description": "EmptyResponse is returned for no-content endpoints.",
"schema": {
"$ref": "#/definitions/EmptyResponse"
}
},
"400": {
"description": "Bad request error response.",
"schema": {
"$ref": "#/definitions/BadRequestError"
}
},
"401": {
"description": "Unauthorized error response.",
"schema": {
"$ref": "#/definitions/UnauthorizedError"
}
},
"413": {
"description": "Request body exceeds the 4 MiB encoded byte ceiling.",
"schema": {
"$ref": "#/definitions/RequestEntityTooLargeError"
}
},
"500": {
"description": "Server error response.",
"schema": {
"$ref": "#/definitions/ServerError"
}
}
}Related schemas
Request and response schemas
Use the related schema links to follow nested request and response fields.
Agent
{
"type": "object",
"properties": {
"administrative_status": {
"type": "string",
"x-go-name": "AdministrativeStatus"
},
"agent_protocol": {
"$ref": "#/definitions/swaggerSQLNullString"
},
"agent_version": {
"$ref": "#/definitions/swaggerSQLNullString"
},
"certificate_fingerprint": {
"$ref": "#/definitions/swaggerSQLNullString"
},
"compatibility": {
"type": "string",
"x-go-name": "Compatibility"
},
"container_interpreters": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "ContainerInterpreters"
},
"container_runtimes": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "ContainerRuntimes"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"current_work": {
"type": "array",
"items": {
"$ref": "#/definitions/swaggerAgentWork"
},
"x-go-name": "CurrentWork"
},
"draining": {
"type": "boolean",
"x-go-name": "Draining"
},
"endpoint": {
"type": "string",
"x-go-name": "Endpoint"
},
"execution_modes": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "ExecutionModes"
},
"health": {
"type": "string",
"x-go-name": "Health"
},
"id": {
"type": "string",
"x-go-name": "ID"
},
"interpreters": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "Interpreters"
},
"last_error": {
"$ref": "#/definitions/swaggerAgentError"
},
"last_heartbeat_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"last_successful_deployment": {
"$ref": "#/definitions/swaggerAgentSuccess"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"queued_work": {
"type": "integer",
"format": "int64",
"x-go-name": "QueuedWork"
},
"recommended_agent_version": {
"type": "string",
"x-go-name": "RecommendedAgentVersion"
},
"revoked_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"server_version": {
"type": "string",
"x-go-name": "ServerVersion"
},
"status": {
"type": "string",
"x-go-name": "Status"
},
"updated_at": {
"type": "integer",
"format": "int64",
"x-go-name": "UpdatedAt"
}
},
"x-go-name": "swaggerAgent",
"x-go-package": "durpdeploy/internal/handler/api"
}AgentDetailResponse
{
"type": "object",
"properties": {
"agent": {
"$ref": "#/definitions/Agent"
},
"environment_labels": {
"type": "array",
"items": {
"$ref": "#/definitions/Environment"
},
"x-go-name": "EnvironmentLabels"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "Labels"
}
},
"x-go-name": "swaggerAgentDetailResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}AgentEnvironmentRequest
{
"type": "object",
"properties": {
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
}
},
"x-go-name": "swaggerAgentEnvironmentRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}AgentLabelRequest
{
"type": "object",
"properties": {
"label": {
"type": "string",
"x-go-name": "Label"
}
},
"x-go-name": "swaggerAgentLabelRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}AgentListResponse
{
"type": "array",
"items": {
"$ref": "#/definitions/Agent"
},
"x-go-name": "swaggerAgentListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ApplyLibraryTemplate
{
"type": "object",
"properties": {
"agent_selectors": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "AgentSelectors"
},
"reviewed": {
"type": "boolean",
"x-go-name": "Reviewed"
},
"variable_values": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"x-go-name": "VariableValues"
},
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-package": "durpdeploy/internal/repository"
}ApplyProjectTemplate
{
"type": "object",
"properties": {
"agent_selectors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"x-go-name": "AgentSelectors"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"environment_mappings": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int64"
},
"x-go-name": "EnvironmentMappings"
},
"lifecycle_id": {
"type": "integer",
"format": "int64",
"x-go-name": "LifecycleID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"package_repository": {
"$ref": "#/definitions/ProjectTemplatePackage"
},
"reviewed": {
"type": "boolean",
"x-go-name": "Reviewed"
},
"variable_values": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"x-go-name": "VariableValues"
}
},
"x-go-package": "durpdeploy/internal/repository"
}ArtifactGateInfo
{
"type": "object",
"properties": {
"approved_at": {
"type": "integer",
"format": "int64",
"x-go-name": "ApprovedAt"
},
"approved_by": {
"type": "integer",
"format": "int64",
"x-go-name": "ApprovedBy"
},
"bundle_sha256": {
"type": "string",
"x-go-name": "BundleSHA256"
},
"bundle_size": {
"type": "integer",
"format": "int64",
"x-go-name": "BundleSize"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"decision_ready": {
"type": "boolean",
"x-go-name": "DecisionReady"
},
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"expires_at": {
"type": "integer",
"format": "int64",
"x-go-name": "ExpiresAt"
},
"review": {
"$ref": "#/definitions/GateReview"
},
"review_format": {
"type": "string",
"x-go-name": "ReviewFormat"
},
"review_source": {
"type": "string",
"x-go-name": "ReviewSource"
},
"review_verified": {
"type": "boolean",
"x-go-name": "ReviewVerified"
},
"revision": {
"type": "integer",
"format": "int64",
"x-go-name": "Revision"
},
"sha256": {
"type": "string",
"x-go-name": "SHA256"
},
"status": {
"type": "string",
"x-go-name": "Status"
},
"step_index": {
"type": "integer",
"format": "int64",
"x-go-name": "StepIndex"
}
},
"x-go-package": "durpdeploy/views/pages"
}AuditLog
{
"type": "object",
"title": "AuditLog is a recorded state-changing action.",
"properties": {
"action": {
"type": "string",
"x-go-name": "Action"
},
"actor_email": {
"type": "string",
"x-go-name": "ActorEmail"
},
"actor_name": {
"type": "string",
"x-go-name": "ActorName"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"details": {
"type": "string",
"x-go-name": "Details"
},
"entity_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EntityID"
},
"entity_type": {
"type": "string",
"x-go-name": "EntityType"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"target_url": {
"description": "Relative web URL. Empty without an unambiguous supported target record.",
"type": "string",
"x-go-name": "TargetURL"
},
"user_id": {
"type": "integer",
"format": "int64",
"x-go-name": "UserID"
}
},
"x-go-name": "swaggerAuditLog",
"x-go-package": "durpdeploy/internal/handler/api"
}AuditLogListResponse
{
"type": "array",
"title": "AuditLogListResponse is a list of audit log entries.",
"items": {
"$ref": "#/definitions/AuditLog"
},
"x-go-name": "swaggerAuditLogListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}AuditLogParams
{
"type": "object",
"title": "AuditLogParams filters the audit log list.",
"properties": {
"action": {
"type": "string",
"x-go-name": "Action"
},
"entity_type": {
"type": "string",
"x-go-name": "EntityType"
},
"limit": {
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"user": {
"description": "Exact current actor name or email. ASCII case is ignored.",
"type": "string",
"x-go-name": "User"
},
"user_id": {
"type": "integer",
"format": "int64",
"x-go-name": "UserID"
}
},
"x-go-name": "swaggerAuditLogParams",
"x-go-package": "durpdeploy/internal/handler/api"
}AvailableVariables
{
"type": "object",
"title": "AvailableVariables describes current authoring definitions, not snapshots.",
"properties": {
"configured": {
"type": "array",
"items": {
"$ref": "#/definitions/VariableDefinition"
},
"x-go-name": "Configured"
},
"context": {
"$ref": "#/definitions/VariableContext"
},
"environments": {
"type": "array",
"items": {
"$ref": "#/definitions/VariableEnvironment"
},
"x-go-name": "Environments"
},
"predefined": {
"type": "array",
"items": {
"$ref": "#/definitions/VariableDefinition"
},
"x-go-name": "Predefined"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "Warnings"
}
},
"x-go-package": "durpdeploy/internal/repository"
}BadRequestError
{
"type": "object",
"title": "Bad request error response.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerBadRequestError",
"x-go-package": "durpdeploy/internal/handler/api"
}BuildInfo
{
"type": "object",
"title": "Info describes the executable, independently of agent wire protocols.",
"properties": {
"build_number": {
"type": "string",
"x-go-name": "BuildNumber"
},
"commit": {
"type": "string",
"x-go-name": "Commit"
},
"modified": {
"type": "boolean",
"x-go-name": "Modified"
},
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-name": "Info",
"x-go-package": "durpdeploy/internal/buildinfo"
}ConflictError
{
"type": "object",
"title": "Conflict error response.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerConflictError",
"x-go-package": "durpdeploy/internal/handler/api"
}CreateTokenRequest
{
"type": "object",
"title": "CreateTokenRequest is the body for CreateToken.",
"properties": {
"name": {
"type": "string",
"x-go-name": "Name"
},
"project_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"x-go-name": "ProjectIDs"
},
"role": {
"description": "Viewer, deployer, maintainer, or admin. This ceiling cannot increase owner permissions.",
"type": "string",
"x-go-name": "Role"
},
"scope": {
"description": "Omit grant fields for legacy global creation. Scoped selections must be nonempty.\nBoth global and scoped tokens support an explicit permission ceiling.",
"type": "string",
"x-go-name": "Scope"
}
},
"x-go-name": "swaggerCreateTokenRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}CreateTokenResponse
{
"type": "object",
"title": "CreateTokenResponse returns the plaintext token once.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"id": {
"type": "string",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"prefix": {
"type": "string",
"x-go-name": "Prefix"
},
"project_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"x-go-name": "ProjectIDs"
},
"role": {
"type": "string",
"x-go-name": "Role"
},
"scope": {
"type": "string",
"x-go-name": "Scope"
},
"token_id": {
"type": "string",
"x-go-name": "TokenID"
}
},
"x-go-name": "swaggerCreateTokenResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}DatabaseSecurityResponse
{
"type": "object",
"properties": {
"backend": {
"type": "string",
"x-go-name": "Backend"
},
"policy": {
"type": "string",
"x-go-name": "Policy"
},
"warning": {
"type": "string",
"x-go-name": "Warning"
}
},
"x-go-name": "swaggerDatabaseSecurityResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}DbTableListResponse
{
"type": "array",
"title": "DbTableListResponse is a list of SQLite table names.",
"items": {
"type": "string"
},
"x-go-name": "swaggerDbTableListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}Deployment
{
"type": "object",
"title": "Deployment represents a release executing against an environment.",
"properties": {
"active_deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ActiveDeploymentID"
},
"active_work_url": {
"type": "string",
"x-go-name": "ActiveWorkURL"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"finished_at": {
"type": "integer",
"format": "int64",
"x-go-name": "FinishedAt"
},
"forced": {
"type": "integer",
"format": "int64",
"x-go-name": "Forced"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"note": {
"type": "string",
"x-go-name": "Note"
},
"provenance": {
"$ref": "#/definitions/ReleaseSource"
},
"queue_position": {
"type": "integer",
"format": "int64",
"x-go-name": "QueuePosition"
},
"release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ReleaseID"
},
"started_at": {
"type": "integer",
"format": "int64",
"x-go-name": "StartedAt"
},
"status": {
"type": "string",
"x-go-name": "Status"
}
},
"x-go-name": "swaggerDeployment",
"x-go-package": "durpdeploy/internal/handler/api"
}DeploymentActivityDay
{
"type": "object",
"title": "DeploymentActivityDay contains counts by current status for one UTC date.",
"properties": {
"counts": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int64"
},
"x-go-name": "Counts"
},
"date": {
"type": "string",
"x-go-name": "Date"
}
},
"x-go-name": "deploymentActivityDay",
"x-go-package": "durpdeploy/internal/handler/api"
}DeploymentListItem
{
"type": "object",
"title": "DeploymentListItem is the enriched row returned by ListDeployments.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"environment_name": {
"type": "string",
"x-go-name": "EnvironmentName"
},
"finished_at": {
"type": "integer",
"format": "int64",
"x-go-name": "FinishedAt"
},
"forced": {
"type": "integer",
"format": "int64",
"x-go-name": "Forced"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"note": {
"type": "string",
"x-go-name": "Note"
},
"project_name": {
"type": "string",
"x-go-name": "ProjectName"
},
"release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ReleaseID"
},
"release_version": {
"type": "string",
"x-go-name": "ReleaseVersion"
},
"started_at": {
"type": "integer",
"format": "int64",
"x-go-name": "StartedAt"
},
"status": {
"type": "string",
"x-go-name": "Status"
}
},
"x-go-name": "swaggerDeploymentListItem",
"x-go-package": "durpdeploy/internal/handler/api"
}DeploymentListResponse
{
"type": "object",
"title": "DeploymentListResponse is the paginated envelope for ListDeployments.",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/DeploymentListItem"
},
"x-go-name": "Items"
},
"limit": {
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"offset": {
"type": "integer",
"format": "int64",
"x-go-name": "Offset"
},
"total": {
"type": "integer",
"format": "int64",
"x-go-name": "Total"
}
},
"x-go-name": "swaggerDeploymentListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}DeploymentLog
{
"type": "object",
"title": "DeploymentLog is a single step log entry.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"line": {
"type": "string",
"x-go-name": "Line"
},
"step_name": {
"type": "string",
"x-go-name": "StepName"
}
},
"x-go-name": "swaggerDeploymentLog",
"x-go-package": "durpdeploy/internal/handler/api"
}DeploymentLogListResponse
{
"type": "array",
"title": "DeploymentLogListResponse is a list of deployment log entries.",
"items": {
"$ref": "#/definitions/DeploymentLog"
},
"x-go-name": "swaggerDeploymentLogListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}DeploymentScheduleRequest
{
"type": "object",
"title": "DeploymentScheduleRequest is the body for scheduling a deployment.",
"properties": {
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"force": {
"type": "boolean",
"x-go-name": "Force"
},
"note": {
"type": "string",
"x-go-name": "Note"
},
"release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ReleaseID"
}
},
"x-go-name": "swaggerDeploymentScheduleRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}DeploymentStagingSnapshot
{
"type": "object",
"properties": {
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"producer": {
"type": "string",
"x-go-name": "Producer"
},
"sha256": {
"type": "string",
"x-go-name": "Sha256"
},
"size": {
"type": "integer",
"format": "int64",
"x-go-name": "Size"
},
"step_index": {
"type": "integer",
"format": "int64",
"x-go-name": "StepIndex"
}
},
"x-go-package": "durpdeploy/internal/db"
}DeploymentStatusResponse
{
"type": "object",
"title": "DeploymentStatusResponse is the status payload for GetDeploymentStatus.",
"properties": {
"active_deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ActiveDeploymentID"
},
"active_work_url": {
"type": "string",
"x-go-name": "ActiveWorkURL"
},
"queue_position": {
"type": "integer",
"format": "int64",
"x-go-name": "QueuePosition"
},
"status": {
"type": "string",
"x-go-name": "Status"
},
"waiting_for_agents": {
"type": "boolean",
"x-go-name": "WaitingForAgents"
}
},
"x-go-name": "swaggerDeploymentStatusResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}DeploymentVerification
{
"type": "object",
"properties": {
"finished_at": {
"$ref": "#/definitions/NullInt64"
},
"started_at": {
"$ref": "#/definitions/NullInt64"
},
"status": {
"type": "string",
"x-go-name": "Status"
},
"timeout_seconds": {
"type": "integer",
"format": "int64",
"x-go-name": "TimeoutSeconds"
},
"type": {
"type": "string",
"x-go-name": "Type"
}
},
"x-go-name": "verificationResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}EmptyResponse
{
"type": "object",
"title": "EmptyResponse is returned for no-content endpoints.",
"x-go-name": "swaggerEmptyResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}Environment
{
"type": "object",
"title": "Environment represents a deployment target.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"tags": {
"type": "string",
"x-go-name": "Tags"
},
"verification_target": {
"description": "Admin-only; omitted from responses for other roles.",
"type": "string",
"x-go-name": "VerificationTarget"
},
"verification_timeout_seconds": {
"type": "integer",
"format": "int64",
"x-go-name": "VerificationTimeoutSeconds"
},
"verification_type": {
"type": "string",
"x-go-name": "VerificationType"
}
},
"x-go-name": "swaggerEnvironment",
"x-go-package": "durpdeploy/internal/handler/api"
}EnvironmentListResponse
{
"type": "array",
"title": "EnvironmentListResponse is a list of environments.",
"items": {
"$ref": "#/definitions/Environment"
},
"x-go-name": "swaggerEnvironmentListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}EnvironmentRequest
{
"type": "object",
"title": "EnvironmentRequest is the body for create/update environment.",
"properties": {
"description": {
"type": "string",
"x-go-name": "Description"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"tags": {
"type": "string",
"x-go-name": "Tags"
},
"verification_target": {
"type": "string",
"x-go-name": "VerificationTarget"
},
"verification_timeout_seconds": {
"type": "integer",
"format": "int64",
"x-go-name": "VerificationTimeoutSeconds"
},
"verification_type": {
"type": "string",
"x-go-name": "VerificationType"
}
},
"x-go-name": "swaggerEnvironmentRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ErrorResponse
{
"type": "object",
"title": "Generic error response.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerErrorResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ForbiddenError
{
"type": "object",
"title": "Forbidden error response.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerForbiddenError",
"x-go-package": "durpdeploy/internal/handler/api"
}GateReview
{
"type": "object",
"title": "GateReview deliberately exposes counts only, never names, values or outputs.",
"properties": {
"create": {
"type": "integer",
"format": "int64",
"x-go-name": "Create"
},
"delete": {
"type": "integer",
"format": "int64",
"x-go-name": "Delete"
},
"read": {
"type": "integer",
"format": "int64",
"x-go-name": "Read"
},
"update": {
"type": "integer",
"format": "int64",
"x-go-name": "Update"
}
},
"x-go-package": "durpdeploy/internal/artifact"
}GlobalNotification
{
"type": "object",
"title": "GlobalNotification holds the global notification settings.",
"properties": {
"discord_webhook_url": {
"type": "string",
"x-go-name": "DiscordWebhookURL"
},
"discord_webhook_url_configured": {
"type": "boolean",
"x-go-name": "DiscordWebhookURLConfigured"
},
"gotify_token": {
"type": "string",
"x-go-name": "GotifyToken"
},
"gotify_token_configured": {
"type": "boolean",
"x-go-name": "GotifyTokenConfigured"
},
"gotify_url": {
"type": "string",
"x-go-name": "GotifyURL"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"notify_emails": {
"type": "string",
"x-go-name": "NotifyEmails"
},
"slack_webhook_url": {
"type": "string",
"x-go-name": "SlackWebhookURL"
},
"slack_webhook_url_configured": {
"type": "boolean",
"x-go-name": "SlackWebhookURLConfigured"
},
"updated_at": {
"type": "integer",
"format": "int64",
"x-go-name": "UpdatedAt"
}
},
"x-go-name": "swaggerGlobalNotification",
"x-go-package": "durpdeploy/internal/handler/api"
}GlobalNotificationRequest
{
"type": "object",
"title": "GlobalNotificationRequest is the body for global notification settings.",
"properties": {
"clear_discord_webhook_url": {
"type": "boolean",
"x-go-name": "ClearDiscordWebhookURL"
},
"clear_gotify_token": {
"type": "boolean",
"x-go-name": "ClearGotifyToken"
},
"clear_slack_webhook_url": {
"type": "boolean",
"x-go-name": "ClearSlackWebhookURL"
},
"discord_webhook_url": {
"type": "string",
"x-go-name": "DiscordWebhookURL"
},
"gotify_token": {
"type": "string",
"x-go-name": "GotifyToken"
},
"gotify_url": {
"type": "string",
"x-go-name": "GotifyURL"
},
"notify_emails": {
"type": "string",
"x-go-name": "NotifyEmails"
},
"slack_webhook_url": {
"type": "string",
"x-go-name": "SlackWebhookURL"
}
},
"x-go-name": "swaggerGlobalNotificationRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}InheritedVariable
{
"type": "object",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"lifecycle_id": {
"type": "integer",
"format": "int64",
"x-go-name": "LifecycleID"
},
"lifecycle_name": {
"type": "string",
"x-go-name": "LifecycleName"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"override": {
"$ref": "#/definitions/VariableResponse"
},
"secret": {
"type": "integer",
"format": "int64",
"x-go-name": "Secret"
},
"value": {
"description": "Empty when Secret is 1.",
"type": "string",
"x-go-name": "Value"
}
},
"x-go-name": "swaggerInheritedVariable",
"x-go-package": "durpdeploy/internal/handler/api"
}InheritedVariableList
{
"type": "array",
"items": {
"$ref": "#/definitions/InheritedVariable"
},
"x-go-name": "swaggerInheritedVariableList",
"x-go-package": "durpdeploy/internal/handler/api"
}LibraryApplyResult
{
"type": "object",
"properties": {
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"slug": {
"type": "string",
"x-go-name": "Slug"
},
"steps_created": {
"type": "integer",
"format": "int64",
"x-go-name": "StepsCreated"
},
"variables_created": {
"type": "integer",
"format": "int64",
"x-go-name": "VariablesCreated"
},
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-package": "durpdeploy/internal/repository"
}LibraryTemplate
{
"description": "LibraryTemplate is bundled with the binary. Applying it creates independent\nproject records, rather than references to a mutable library definition.",
"type": "object",
"properties": {
"configuration": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/LibraryVariableConfig"
},
"x-go-name": "Configuration"
},
"dependencies": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "Dependencies"
},
"kind": {
"type": "string",
"x-go-name": "Kind"
},
"permissions": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "Permissions"
},
"slug": {
"type": "string",
"x-go-name": "Slug"
},
"snapshot": {
"$ref": "#/definitions/ProjectTemplateSnapshot"
},
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-package": "durpdeploy/internal/repository"
}LibraryTemplateListResponse
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/LibraryTemplate"
},
"x-go-name": "Items"
},
"limit": {
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"offset": {
"type": "integer",
"format": "int64",
"x-go-name": "Offset"
},
"total": {
"type": "integer",
"format": "int64",
"x-go-name": "Total"
}
},
"x-go-package": "durpdeploy/internal/handler/api"
}LibraryVariableConfig
{
"type": "object",
"properties": {
"description": {
"type": "string",
"x-go-name": "Description"
},
"format": {
"type": "string",
"x-go-name": "Format"
},
"required": {
"type": "boolean",
"x-go-name": "Required"
}
},
"x-go-package": "durpdeploy/internal/repository"
}Lifecycle
{
"type": "object",
"title": "Lifecycle represents a deployment promotion pipeline.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
}
},
"x-go-name": "swaggerLifecycle",
"x-go-package": "durpdeploy/internal/handler/api"
}LifecycleListResponse
{
"type": "array",
"title": "LifecycleListResponse is a list of lifecycles.",
"items": {
"$ref": "#/definitions/Lifecycle"
},
"x-go-name": "swaggerLifecycleListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}LifecycleRequest
{
"type": "object",
"title": "LifecycleRequest is the body for create/update lifecycle.",
"properties": {
"description": {
"type": "string",
"x-go-name": "Description"
},
"name": {
"type": "string",
"x-go-name": "Name"
}
},
"x-go-name": "swaggerLifecycleRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}LifecycleResponse
{
"type": "object",
"title": "LifecycleResponse is the detailed lifecycle payload.",
"properties": {
"lifecycle": {
"$ref": "#/definitions/Lifecycle"
},
"stages": {
"type": "array",
"items": {
"$ref": "#/definitions/LifecycleStage"
},
"x-go-name": "Stages"
}
},
"x-go-name": "swaggerLifecycleResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}LifecycleStage
{
"type": "object",
"title": "LifecycleStage is a single stage in a lifecycle.",
"properties": {
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"lifecycle_id": {
"type": "integer",
"format": "int64",
"x-go-name": "LifecycleID"
},
"requires_approval": {
"type": "integer",
"format": "int64",
"x-go-name": "RequiresApproval"
},
"sort_order": {
"type": "integer",
"format": "int64",
"x-go-name": "SortOrder"
}
},
"x-go-name": "swaggerLifecycleStage",
"x-go-package": "durpdeploy/internal/handler/api"
}LifecycleStageListResponse
{
"type": "array",
"title": "LifecycleStageListResponse is a list of lifecycle stages.",
"items": {
"$ref": "#/definitions/LifecycleStage"
},
"x-go-name": "swaggerLifecycleStageListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}LifecycleStageRequest
{
"type": "object",
"title": "LifecycleStageRequest is the body for add/update lifecycle stage.",
"properties": {
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"requires_approval": {
"type": "boolean",
"x-go-name": "RequiresApproval"
},
"sort_order": {
"type": "integer",
"format": "int64",
"x-go-name": "SortOrder"
}
},
"x-go-name": "swaggerLifecycleStageRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}LifecycleVariable
{
"type": "object",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"lifecycle_id": {
"type": "integer",
"format": "int64",
"x-go-name": "LifecycleID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"secret": {
"type": "integer",
"format": "int64",
"x-go-name": "Secret"
},
"value": {
"description": "Empty when Secret is 1.",
"type": "string",
"x-go-name": "Value"
}
},
"x-go-name": "swaggerLifecycleVariable",
"x-go-package": "durpdeploy/internal/handler/api"
}LifecycleVariableList
{
"type": "array",
"items": {
"$ref": "#/definitions/LifecycleVariable"
},
"x-go-name": "swaggerLifecycleVariableList",
"x-go-package": "durpdeploy/internal/handler/api"
}ListAccessibleProjectTemplatesRow
{
"type": "object",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"created_by": {
"$ref": "#/definitions/NullInt64"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"source_project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "SourceProjectID"
},
"source_project_name": {
"type": "string",
"x-go-name": "SourceProjectName"
}
},
"x-go-package": "durpdeploy/internal/db"
}LogEntry
{
"type": "object",
"title": "LogEntry is a single line of deployment log output.",
"properties": {
"line": {
"type": "string",
"x-go-name": "Line"
},
"step": {
"type": "string",
"x-go-name": "Step"
},
"ts": {
"type": "integer",
"format": "int64",
"x-go-name": "TS"
}
},
"x-go-name": "swaggerLogEntry",
"x-go-package": "durpdeploy/internal/handler/api"
}LogLineListResponse
{
"type": "array",
"title": "LogLineListResponse is a list of streamed log lines.",
"items": {
"$ref": "#/definitions/LogEntry"
},
"x-go-name": "swaggerLogLineListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}LogPage
{
"type": "object",
"title": "LogPage contains a bounded history window in increasing log-ID order.",
"properties": {
"before": {
"description": "Requested exclusive upper ID. Zero selects the latest page.",
"type": "integer",
"format": "int64",
"x-go-name": "Before"
},
"byte_limit": {
"description": "Maximum JSON response size in bytes, including the envelope (1048576).",
"type": "integer",
"format": "int64",
"x-go-name": "ByteLimit"
},
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/LogPageEntry"
},
"x-go-name": "Items"
},
"last_id": {
"description": "Highest returned ID. Use this as the live stream's after cursor.",
"type": "integer",
"format": "int64",
"x-go-name": "LastID"
},
"limit": {
"description": "Maximum number of returned rows (500).",
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"line_byte_limit": {
"description": "Maximum UTF-8 bytes per displayed text field, including markers (16384).",
"type": "integer",
"format": "int64",
"x-go-name": "LineByteLimit"
},
"next_before": {
"description": "Exclusive cursor for the next older page. Zero means no older rows.",
"type": "integer",
"format": "int64",
"x-go-name": "NextBefore"
}
},
"x-go-name": "swaggerLogPage",
"x-go-package": "durpdeploy/internal/handler/api"
}LogPageEntry
{
"type": "object",
"title": "LogPageEntry is a persisted log row, including nullable step metadata.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"line": {
"type": "string",
"x-go-name": "Line"
},
"step_index": {
"$ref": "#/definitions/NullInt64"
},
"step_name": {
"$ref": "#/definitions/NullString"
},
"step_state": {
"$ref": "#/definitions/NullString"
},
"truncated": {
"description": "True when display text was shortened. Full output remains in exports.",
"type": "boolean",
"x-go-name": "Truncated"
}
},
"x-go-name": "swaggerLogPageEntry",
"x-go-package": "durpdeploy/internal/handler/api"
}LogStreamParams
{
"type": "object",
"title": "LogStreamParams controls the log stream format.",
"properties": {
"format": {
"description": "Format is sse or ndjson; deployment streams also support structured SSE.",
"type": "string",
"x-go-name": "Format"
}
},
"x-go-name": "swaggerLogStreamParams",
"x-go-package": "durpdeploy/internal/handler/api"
}NotFoundError
{
"type": "object",
"title": "Not found error response.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerNotFoundError",
"x-go-package": "durpdeploy/internal/handler/api"
}NotificationEvent
{
"type": "object",
"title": "NotificationEvent is a fired notification record.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"event_type": {
"type": "string",
"x-go-name": "EventType"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"message": {
"type": "string",
"x-go-name": "Message"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"results": {
"type": "string",
"x-go-name": "Results"
}
},
"x-go-name": "swaggerNotificationEvent",
"x-go-package": "durpdeploy/internal/handler/api"
}NotificationEventListResponse
{
"type": "array",
"title": "NotificationEventListResponse is a list of notification events.",
"items": {
"$ref": "#/definitions/NotificationEvent"
},
"x-go-name": "swaggerNotificationEventListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}NullInt64
{
"description": "NullInt64 implements the [Scanner] interface so\nit can be used as a scan destination, similar to [NullString].",
"type": "object",
"title": "NullInt64 represents an int64 that may be null.",
"properties": {
"Int64": {
"type": "integer",
"format": "int64"
},
"Valid": {
"type": "boolean"
}
},
"x-go-package": "database/sql"
}NullString
{
"description": "var s NullString\nerr := db.QueryRow(\"SELECT name FROM foo WHERE id=?\", id).Scan(&s)\n...\nif s.Valid {\nuse s.String\n} else {\nNULL value\n}",
"type": "object",
"title": "NullString represents a string that may be null.\nNullString implements the [Scanner] interface so\nit can be used as a scan destination:",
"properties": {
"String": {
"type": "string"
},
"Valid": {
"type": "boolean"
}
},
"x-go-package": "database/sql"
}PackageRepositoryRequest
{
"type": "object",
"properties": {
"auth_type": {
"type": "string",
"x-go-name": "AuthType"
},
"credential": {
"type": "string",
"x-go-name": "Credential"
},
"url_template": {
"type": "string",
"x-go-name": "URLTemplate"
},
"username": {
"type": "string",
"x-go-name": "Username"
}
},
"x-go-name": "packageRepositoryRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}PackageRepositoryResponse
{
"type": "object",
"properties": {
"auth_type": {
"type": "string",
"x-go-name": "AuthType"
},
"credential_configured": {
"type": "boolean",
"x-go-name": "CredentialConfigured"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"url_template": {
"type": "string",
"x-go-name": "URLTemplate"
},
"username": {
"type": "string",
"x-go-name": "Username"
}
},
"x-go-name": "packageRepositoryResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}PackageTestRequest
{
"type": "object",
"properties": {
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-name": "packageTestRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}PackageTestResponse
{
"type": "object",
"properties": {
"exists": {
"type": "boolean",
"x-go-name": "Exists"
},
"sha256": {
"type": "string",
"x-go-name": "SHA256"
},
"size": {
"type": "integer",
"format": "int64",
"x-go-name": "Size"
},
"url": {
"type": "string",
"x-go-name": "URL"
},
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-name": "packageTestResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}PaginatedResponse
{
"type": "object",
"title": "Paginated list envelope.",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"x-go-name": "Items"
},
"limit": {
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"offset": {
"type": "integer",
"format": "int64",
"x-go-name": "Offset"
},
"total": {
"type": "integer",
"format": "int64",
"x-go-name": "Total"
}
},
"x-go-name": "swaggerPaginatedResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}PairAgentRequest
{
"type": "object",
"properties": {
"address": {
"type": "string",
"x-go-name": "Address"
},
"code": {
"type": "string",
"x-go-name": "Code"
},
"fingerprint": {
"type": "string",
"x-go-name": "Fingerprint"
}
},
"x-go-name": "swaggerPairAgentRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}PairAgentResponse
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"x-go-name": "AgentID"
},
"state": {
"type": "string",
"x-go-name": "State"
}
},
"x-go-name": "swaggerPairAgentResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectGroup
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
}
},
"x-go-name": "projectGroupResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectGroupAssignment
{
"type": "object",
"required": [
"group_id"
],
"properties": {
"group_id": {
"description": "Send null to move the project to Ungrouped. This field is required.",
"type": "integer",
"format": "int64",
"x-go-name": "GroupID",
"x-nullable": true
}
},
"x-go-name": "projectGroupAssignment",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectGroupListResponse
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"project_count": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectCount"
}
}
},
"x-go-name": "Items"
},
"limit": {
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"offset": {
"type": "integer",
"format": "int64",
"x-go-name": "Offset"
},
"total": {
"type": "integer",
"format": "int64",
"x-go-name": "Total"
}
},
"x-go-name": "projectGroupListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectGroupRequest
{
"type": "object",
"properties": {
"name": {
"type": "string",
"x-go-name": "Name"
}
},
"x-go-name": "projectGroupRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectListResponse
{
"type": "object",
"title": "ProjectListResponse is a list of projects.",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/ProjectResponse"
},
"x-go-name": "Items"
},
"limit": {
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"offset": {
"type": "integer",
"format": "int64",
"x-go-name": "Offset"
},
"total": {
"type": "integer",
"format": "int64",
"x-go-name": "Total"
}
},
"x-go-name": "swaggerProjectListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectMember
{
"type": "object",
"title": "ProjectMember is a single user membership on a project.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"role": {
"type": "string",
"x-go-name": "Role"
},
"user_id": {
"type": "integer",
"format": "int64",
"x-go-name": "UserID"
}
},
"x-go-name": "swaggerProjectMember",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectMemberListResponse
{
"type": "array",
"title": "ProjectMemberListResponse is a list of project members.",
"items": {
"$ref": "#/definitions/ProjectMemberResponse"
},
"x-go-name": "swaggerProjectMemberListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectMemberRequest
{
"type": "object",
"title": "ProjectMemberRequest is the body for adding a project member.",
"properties": {
"role": {
"type": "string",
"x-go-name": "Role"
},
"user_id": {
"type": "integer",
"format": "int64",
"x-go-name": "UserID"
}
},
"x-go-name": "swaggerProjectMemberRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectMemberResponse
{
"type": "object",
"title": "ProjectMemberResponse is the JSON shape for project membership.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"email": {
"type": "string",
"x-go-name": "Email"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"role": {
"type": "string",
"x-go-name": "Role"
},
"user_id": {
"type": "integer",
"format": "int64",
"x-go-name": "UserID"
}
},
"x-go-name": "swaggerProjectMemberResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectMemberRoleRequest
{
"type": "object",
"title": "ProjectMemberRoleRequest updates a member's role.",
"properties": {
"role": {
"type": "string",
"x-go-name": "Role"
}
},
"x-go-name": "swaggerProjectMemberRoleRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectNotificationRequest
{
"type": "object",
"title": "ProjectNotificationRequest updates a project's notification settings.",
"properties": {
"clear_discord_webhook_url": {
"type": "boolean",
"x-go-name": "ClearDiscordWebhookURL"
},
"clear_gotify_token": {
"type": "boolean",
"x-go-name": "ClearGotifyToken"
},
"clear_slack_webhook_url": {
"type": "boolean",
"x-go-name": "ClearSlackWebhookURL"
},
"discord_webhook_url": {
"type": "string",
"x-go-name": "DiscordWebhookURL"
},
"gotify_token": {
"type": "string",
"x-go-name": "GotifyToken"
},
"gotify_url": {
"type": "string",
"x-go-name": "GotifyURL"
},
"notify_emails": {
"type": "string",
"x-go-name": "NotifyEmails"
},
"slack_webhook_url": {
"type": "string",
"x-go-name": "SlackWebhookURL"
}
},
"x-go-name": "swaggerProjectNotificationRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectNotificationResponse
{
"type": "object",
"title": "ProjectNotificationResponse is the notification settings for a project.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"discord_webhook_url": {
"type": "string",
"x-go-name": "DiscordWebhookURL"
},
"discord_webhook_url_configured": {
"type": "boolean",
"x-go-name": "DiscordWebhookURLConfigured"
},
"gotify_token": {
"type": "string",
"x-go-name": "GotifyToken"
},
"gotify_token_configured": {
"type": "boolean",
"x-go-name": "GotifyTokenConfigured"
},
"gotify_url": {
"type": "string",
"x-go-name": "GotifyURL"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"notify_emails": {
"type": "string",
"x-go-name": "NotifyEmails"
},
"slack_webhook_url": {
"type": "string",
"x-go-name": "SlackWebhookURL"
},
"slack_webhook_url_configured": {
"type": "boolean",
"x-go-name": "SlackWebhookURLConfigured"
}
},
"x-go-name": "swaggerProjectNotificationResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectRequest
{
"type": "object",
"title": "ProjectRequest is the body for create/update project.",
"properties": {
"description": {
"type": "string",
"x-go-name": "Description"
},
"lifecycle_id": {
"type": "integer",
"format": "int64",
"x-go-name": "LifecycleID"
},
"name": {
"type": "string",
"x-go-name": "Name"
}
},
"x-go-name": "swaggerProjectRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectResponse
{
"type": "object",
"title": "ProjectResponse is the JSON shape for a project.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"discord_webhook_url": {
"type": "string",
"x-go-name": "DiscordWebhookURL"
},
"discord_webhook_url_configured": {
"type": "boolean",
"x-go-name": "DiscordWebhookURLConfigured"
},
"gotify_token": {
"type": "string",
"x-go-name": "GotifyToken"
},
"gotify_token_configured": {
"type": "boolean",
"x-go-name": "GotifyTokenConfigured"
},
"gotify_url": {
"type": "string",
"x-go-name": "GotifyURL"
},
"group_id": {
"type": "integer",
"format": "int64",
"x-go-name": "GroupID",
"x-nullable": true
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"lifecycle_id": {
"type": "integer",
"format": "int64",
"x-go-name": "LifecycleID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"notify_emails": {
"type": "string",
"x-go-name": "NotifyEmails"
},
"slack_webhook_url": {
"type": "string",
"x-go-name": "SlackWebhookURL"
},
"slack_webhook_url_configured": {
"type": "boolean",
"x-go-name": "SlackWebhookURLConfigured"
}
},
"x-go-name": "swaggerProjectResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectTemplateListResponse
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/ListAccessibleProjectTemplatesRow"
},
"x-go-name": "Items"
},
"limit": {
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"offset": {
"type": "integer",
"format": "int64",
"x-go-name": "Offset"
},
"total": {
"type": "integer",
"format": "int64",
"x-go-name": "Total"
}
},
"x-go-name": "swaggerProjectTemplateListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectTemplatePackage
{
"type": "object",
"properties": {
"auth_type": {
"type": "string",
"x-go-name": "AuthType"
},
"credential": {
"type": "string",
"x-go-name": "Credential"
},
"url_template": {
"type": "string",
"x-go-name": "URLTemplate"
},
"username": {
"type": "string",
"x-go-name": "Username"
}
},
"x-go-package": "durpdeploy/internal/repository"
}ProjectTemplateResponse
{
"type": "object",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"snapshot": {
"$ref": "#/definitions/ProjectTemplateSnapshot"
},
"source_project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "SourceProjectID"
}
},
"x-go-name": "projectTemplateResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ProjectTemplateSnapshot
{
"type": "object",
"title": "ProjectTemplateSnapshot excludes credentials and execution history by construction.",
"properties": {
"description": {
"type": "string",
"x-go-name": "Description"
},
"lifecycle_name": {
"type": "string",
"x-go-name": "LifecycleName"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"package_repository": {
"$ref": "#/definitions/Repository"
},
"steps": {
"type": "array",
"items": {
"$ref": "#/definitions/ProjectTemplateStep"
},
"x-go-name": "Steps"
},
"variables": {
"type": "array",
"items": {
"$ref": "#/definitions/ProjectTemplateVariable"
},
"x-go-name": "Variables"
}
},
"x-go-package": "durpdeploy/internal/repository"
}ProjectTemplateStep
{
"type": "object",
"properties": {
"agent_execution_mode": {
"type": "string",
"x-go-name": "AgentExecutionMode"
},
"agent_selectors": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "AgentSelectors"
},
"approval_artifact_path": {
"type": "string",
"x-go-name": "ApprovalArtifactPath"
},
"approval_review_format": {
"type": "string",
"x-go-name": "ApprovalReviewFormat"
},
"approval_review_path": {
"type": "string",
"x-go-name": "ApprovalReviewPath"
},
"container_image": {
"type": "string",
"x-go-name": "ContainerImage"
},
"execution_target": {
"type": "string",
"x-go-name": "ExecutionTarget"
},
"interpreter": {
"type": "string",
"x-go-name": "Interpreter"
},
"max_retries": {
"type": "integer",
"format": "int64",
"x-go-name": "MaxRetries"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"network_mode": {
"type": "string",
"x-go-name": "NetworkMode"
},
"script_body": {
"type": "string",
"x-go-name": "ScriptBody"
},
"sort_order": {
"type": "integer",
"format": "int64",
"x-go-name": "SortOrder"
},
"timeout_seconds": {
"type": "integer",
"format": "int64",
"x-go-name": "TimeoutSeconds"
},
"variable_names": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "VariableNames"
}
},
"x-go-package": "durpdeploy/internal/repository"
}ProjectTemplateVariable
{
"type": "object",
"properties": {
"default": {
"type": "string",
"x-go-name": "Default"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"environment_name": {
"type": "string",
"x-go-name": "EnvironmentName"
},
"key": {
"type": "string",
"x-go-name": "Key"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"secret": {
"type": "boolean",
"x-go-name": "Secret"
}
},
"x-go-package": "durpdeploy/internal/repository"
}Release
{
"type": "object",
"title": "Release is a refreshable snapshot of project steps and variables.",
"properties": {
"artifact_ref": {
"description": "Public HTTPS URL or artifact identifier, including OCI SHA-256 references.",
"type": "string",
"x-go-name": "ArtifactRef"
},
"ci_run_url": {
"type": "string",
"x-go-name": "CIRunURL"
},
"commit_sha": {
"description": "Full hexadecimal SHA-1 or SHA-256 commit identifier.",
"type": "string",
"x-go-name": "CommitSHA"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"repository_url": {
"type": "string",
"x-go-name": "RepositoryURL"
},
"snapshot_locked": {
"description": "Deprecated: retained for compatibility; does not prevent refresh.",
"type": "integer",
"format": "int64",
"x-deprecated": true,
"x-go-name": "SnapshotLocked"
},
"steps_json": {
"type": "string",
"x-go-name": "StepsJSON"
},
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-name": "swaggerRelease",
"x-go-package": "durpdeploy/internal/handler/api"
}ReleaseArtifactResponse
{
"type": "object",
"properties": {
"pending": {
"type": "boolean",
"x-go-name": "Pending"
},
"release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ReleaseID"
},
"repository_id": {
"type": "integer",
"format": "int64",
"x-go-name": "RepositoryID"
},
"sha256": {
"type": "string",
"x-go-name": "SHA256"
},
"size": {
"type": "integer",
"format": "int64",
"x-go-name": "Size"
},
"source_release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "SourceReleaseID"
},
"url": {
"type": "string",
"x-go-name": "URL"
},
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-name": "releaseArtifactResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ReleaseListResponse
{
"type": "array",
"title": "ReleaseListResponse is a list of releases.",
"items": {
"$ref": "#/definitions/Release"
},
"x-go-name": "swaggerReleaseListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ReleaseRequest
{
"type": "object",
"title": "ReleaseRequest is the body for create release.",
"properties": {
"artifact_ref": {
"description": "Public HTTPS URL or artifact identifier, including OCI SHA-256 references.",
"type": "string",
"x-go-name": "ArtifactRef"
},
"ci_run_url": {
"type": "string",
"x-go-name": "CIRunURL"
},
"commit_sha": {
"description": "Full hexadecimal SHA-1 or SHA-256 commit identifier.",
"type": "string",
"x-go-name": "CommitSHA"
},
"repository_url": {
"type": "string",
"x-go-name": "RepositoryURL"
},
"version": {
"description": "Attached packages are downloaded and pinned on the first deployment pull.",
"type": "string",
"x-go-name": "Version"
}
},
"x-go-name": "swaggerReleaseRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ReleaseSource
{
"description": "URL fields require HTTPS without userinfo, query parameters, or fragments.\nFields accept at most 2048 bytes without whitespace or control characters.\nCredentials and recognized secret formats are rejected.",
"type": "object",
"title": "ReleaseSource contains optional, immutable public source identifiers.",
"properties": {
"artifact_ref": {
"description": "Public HTTPS URL or artifact identifier, including OCI SHA-256 references.",
"type": "string",
"x-go-name": "ArtifactRef"
},
"ci_run_url": {
"type": "string",
"x-go-name": "CIRunURL"
},
"commit_sha": {
"description": "Full hexadecimal SHA-1 or SHA-256 commit identifier.",
"type": "string",
"x-go-name": "CommitSHA"
},
"repository_url": {
"type": "string",
"x-go-name": "RepositoryURL"
}
},
"x-go-name": "swaggerReleaseSource",
"x-go-package": "durpdeploy/internal/handler/api"
}ReleaseVariableResponse
{
"description": "Value is always a string. It is an empty string whenever Secret\nis 1 or the variable has no stored value; ordinary reads never\nreturn secret plaintext (issue #29).",
"type": "object",
"title": "ReleaseVariableResponse is a variable snapshot in a release.",
"properties": {
"environment_id": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ReleaseID"
},
"secret": {
"type": "integer",
"format": "int64",
"x-go-name": "Secret"
},
"value": {
"type": "string",
"x-go-name": "Value"
}
},
"x-go-name": "swaggerReleaseVariableResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ReleaseWithVariablesResponse
{
"type": "object",
"title": "ReleaseWithVariablesResponse is the detailed release payload.",
"properties": {
"artifact_ref": {
"description": "Public HTTPS URL or artifact identifier, including OCI SHA-256 references.",
"type": "string",
"x-go-name": "ArtifactRef"
},
"ci_run_url": {
"type": "string",
"x-go-name": "CIRunURL"
},
"commit_sha": {
"description": "Full hexadecimal SHA-1 or SHA-256 commit identifier.",
"type": "string",
"x-go-name": "CommitSHA"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"repository_url": {
"type": "string",
"x-go-name": "RepositoryURL"
},
"steps_json": {
"type": "string",
"x-go-name": "StepsJSON"
},
"variables": {
"type": "array",
"items": {
"$ref": "#/definitions/ReleaseVariableResponse"
},
"x-go-name": "Variables"
},
"version": {
"type": "string",
"x-go-name": "Version"
}
},
"x-go-name": "swaggerReleaseWithVariablesResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ReorderStagesRequest
{
"type": "object",
"title": "ReorderStagesRequest reorders lifecycle stages.",
"properties": {
"stage_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"x-go-name": "StageIDs"
}
},
"x-go-name": "swaggerReorderStagesRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ReorderStepsRequest
{
"type": "object",
"title": "ReorderStepsRequest reorders project steps.",
"properties": {
"step_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"x-go-name": "StepIDs"
}
},
"x-go-name": "swaggerReorderStepsRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}Repository
{
"type": "object",
"properties": {
"auth_type": {
"type": "string",
"x-go-name": "AuthType"
},
"url_template": {
"type": "string",
"x-go-name": "URLTemplate"
},
"username": {
"type": "string",
"x-go-name": "Username"
}
},
"x-go-package": "durpdeploy/internal/artifact"
}RequestEntityTooLargeError
{
"type": "object",
"title": "Request body exceeds the 4 MiB encoded byte ceiling.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerRequestEntityTooLargeError",
"x-go-package": "durpdeploy/internal/handler/api"
}RollbackPreview
{
"type": "object",
"properties": {
"blocked": {
"type": "boolean",
"x-go-name": "Blocked"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"environment_name": {
"type": "string",
"x-go-name": "EnvironmentName"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"reason": {
"type": "string",
"x-go-name": "Reason"
},
"requires_approval": {
"type": "boolean",
"x-go-name": "RequiresApproval"
},
"source_deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "SourceDeploymentID"
},
"source_release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "SourceReleaseID"
},
"source_version": {
"type": "string",
"x-go-name": "SourceVersion"
},
"target_deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "TargetDeploymentID"
},
"target_release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "TargetReleaseID"
},
"target_version": {
"type": "string",
"x-go-name": "TargetVersion"
}
},
"x-go-package": "durpdeploy/internal/repository"
}rollbackRequest
{
"type": "object",
"properties": {
"target_deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "TargetDeploymentID"
}
},
"x-go-package": "durpdeploy/internal/handler/api"
}Runbook
{
"type": "object",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"deleted_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
}
},
"x-go-name": "swaggerRunbook",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookDetailResponse
{
"type": "object",
"properties": {
"runbook": {
"$ref": "#/definitions/Runbook"
},
"versions": {
"type": "array",
"items": {
"$ref": "#/definitions/RunbookVersion"
},
"x-go-name": "Versions"
}
},
"x-go-name": "swaggerRunbookDetailResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookExecuteRequest
{
"type": "object",
"properties": {
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"version_id": {
"type": "integer",
"format": "int64",
"x-go-name": "VersionID"
}
},
"x-go-name": "swaggerRunbookExecuteRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookExecution
{
"type": "object",
"properties": {
"actor_user_id": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"runbook_version_id": {
"type": "integer",
"format": "int64",
"x-go-name": "RunbookVersionID"
},
"schedule_id": {
"$ref": "#/definitions/swaggerSQLNullInteger"
}
},
"x-go-name": "swaggerRunbookExecution",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookExecutionDetail
{
"type": "object",
"properties": {
"active_deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ActiveDeploymentID"
},
"active_work_url": {
"type": "string",
"x-go-name": "ActiveWorkURL"
},
"actor_user_id": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"environment_name": {
"type": "string",
"x-go-name": "EnvironmentName"
},
"finished_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"queue_position": {
"type": "integer",
"format": "int64",
"x-go-name": "QueuePosition"
},
"runbook_deleted_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"runbook_id": {
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID"
},
"runbook_name": {
"type": "string",
"x-go-name": "RunbookName"
},
"runbook_version_id": {
"type": "integer",
"format": "int64",
"x-go-name": "RunbookVersionID"
},
"schedule_id": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"started_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"status": {
"type": "string",
"x-go-name": "Status"
},
"version": {
"type": "integer",
"format": "int64",
"x-go-name": "Version"
}
},
"x-go-name": "swaggerRunbookExecutionDetail",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookExecutionListResponse
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/RunbookExecutionDetail"
},
"x-go-name": "Items"
},
"limit": {
"type": "integer",
"format": "int64",
"x-go-name": "Limit"
},
"offset": {
"type": "integer",
"format": "int64",
"x-go-name": "Offset"
},
"total": {
"type": "integer",
"format": "int64",
"x-go-name": "Total"
}
},
"x-go-name": "swaggerRunbookExecutionListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookListResponse
{
"type": "array",
"items": {
"$ref": "#/definitions/Runbook"
},
"x-go-name": "swaggerRunbookListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookSaveRequest
{
"type": "object",
"properties": {
"artifact_release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ArtifactReleaseID"
},
"description": {
"type": "string",
"x-go-name": "Description"
},
"keep_artifact_pin": {
"type": "boolean",
"x-go-name": "KeepArtifactPin"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"steps": {
"type": "array",
"items": {
"$ref": "#/definitions/RunbookStep"
},
"x-go-name": "Steps"
}
},
"x-go-name": "swaggerRunbookSaveRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookSaveResponse
{
"type": "object",
"properties": {
"runbook": {
"$ref": "#/definitions/Runbook"
},
"version": {
"$ref": "#/definitions/RunbookVersion"
}
},
"x-go-name": "swaggerRunbookSaveResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookSchedule
{
"type": "object",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"cron": {
"type": "string",
"x-go-name": "Cron"
},
"enabled": {
"type": "integer",
"format": "int64",
"x-go-name": "Enabled"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"last_error": {
"type": "string",
"x-go-name": "LastError"
},
"last_fired_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"next_run_at": {
"type": "integer",
"format": "int64",
"x-go-name": "NextRunAt"
},
"runbook_id": {
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID"
},
"version_id": {
"$ref": "#/definitions/swaggerSQLNullInteger"
}
},
"x-go-name": "swaggerRunbookSchedule",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookScheduleListResponse
{
"type": "array",
"items": {
"$ref": "#/definitions/RunbookSchedule"
},
"x-go-name": "swaggerRunbookScheduleListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookScheduleRequest
{
"type": "object",
"properties": {
"cron": {
"type": "string",
"x-go-name": "Cron"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"version_id": {
"type": "integer",
"format": "int64",
"x-go-name": "VersionID"
}
},
"x-go-name": "swaggerRunbookScheduleRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookScheduleStateResponse
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"x-go-name": "Enabled"
}
},
"x-go-name": "swaggerRunbookScheduleStateResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookStateResponse
{
"type": "object",
"properties": {
"status": {
"type": "string",
"x-go-name": "Status"
}
},
"x-go-name": "swaggerRunbookStateResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookStep
{
"type": "object",
"properties": {
"agent_execution_mode": {
"type": "string",
"x-go-name": "AgentExecutionMode"
},
"agent_selectors": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "AgentSelectors"
},
"approval_artifact_path": {
"type": "string",
"x-go-name": "ApprovalArtifactPath"
},
"approval_review_format": {
"type": "string",
"x-go-name": "ApprovalReviewFormat"
},
"approval_review_path": {
"type": "string",
"x-go-name": "ApprovalReviewPath"
},
"container_image": {
"type": "string",
"x-go-name": "ContainerImage"
},
"execution_target": {
"type": "string",
"x-go-name": "ExecutionTarget"
},
"interpreter": {
"type": "string",
"x-go-name": "Interpreter"
},
"max_retries": {
"type": "integer",
"format": "int64",
"x-go-name": "MaxRetries"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"network_mode": {
"type": "string",
"x-go-name": "NetworkMode"
},
"script_body": {
"type": "string",
"x-go-name": "ScriptBody"
},
"sort_order": {
"type": "integer",
"format": "int64",
"x-go-name": "SortOrder"
},
"timeout_seconds": {
"type": "integer",
"format": "int64",
"x-go-name": "TimeoutSeconds"
},
"variable_names": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "VariableNames"
}
},
"x-go-name": "swaggerRunbookStep",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookVersion
{
"type": "object",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ReleaseID"
},
"runbook_id": {
"type": "integer",
"format": "int64",
"x-go-name": "RunbookID"
},
"version": {
"type": "integer",
"format": "int64",
"x-go-name": "Version"
}
},
"x-go-name": "swaggerRunbookVersion",
"x-go-package": "durpdeploy/internal/handler/api"
}RunbookVersionResponse
{
"type": "object",
"properties": {
"artifact": {
"$ref": "#/definitions/ReleaseArtifactResponse"
},
"steps": {
"type": "array",
"items": {
"$ref": "#/definitions/RunbookStep"
},
"x-go-name": "Steps"
},
"version": {
"$ref": "#/definitions/RunbookVersion"
}
},
"x-go-name": "swaggerRunbookVersionResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}saveProjectTemplateRequest
{
"type": "object",
"properties": {
"description": {
"type": "string",
"x-go-name": "Description"
},
"name": {
"type": "string",
"x-go-name": "Name"
}
},
"x-go-package": "durpdeploy/internal/handler/api"
}ScheduledDeployment
{
"type": "object",
"title": "ScheduledDeployment is a cron-driven deployment configuration.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"cron": {
"type": "string",
"x-go-name": "Cron"
},
"enabled": {
"type": "integer",
"format": "int64",
"x-go-name": "Enabled"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"last_error": {
"type": "string",
"x-go-name": "LastError"
},
"last_fired_at": {
"type": "integer",
"format": "int64",
"x-go-name": "LastFiredAt"
},
"next_run_at": {
"type": "integer",
"format": "int64",
"x-go-name": "NextRunAt"
},
"note": {
"type": "string",
"x-go-name": "Note"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ReleaseID"
},
"updated_at": {
"type": "integer",
"format": "int64",
"x-go-name": "UpdatedAt"
}
},
"x-go-name": "swaggerScheduledDeployment",
"x-go-package": "durpdeploy/internal/handler/api"
}ScheduledDeploymentListResponse
{
"type": "array",
"title": "ScheduledDeploymentListResponse is a list of scheduled deployments.",
"items": {
"$ref": "#/definitions/ScheduledDeployment"
},
"x-go-name": "swaggerScheduledDeploymentListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ScheduleRequest
{
"type": "object",
"title": "ScheduleRequest is the body for create/update scheduled deployment.",
"properties": {
"active": {
"description": "Active is an alias for enabled; either is accepted.",
"type": "boolean",
"x-go-name": "Active"
},
"cron": {
"type": "string",
"x-go-name": "Cron"
},
"cron_expr": {
"description": "Deprecated: alias for cron. Prefer cron in new callers.",
"type": "string",
"x-deprecated": true,
"x-go-name": "CronExpr"
},
"enabled": {
"type": "boolean",
"x-go-name": "Enabled"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"note": {
"type": "string",
"x-go-name": "Note"
},
"release_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ReleaseID"
}
},
"x-go-name": "swaggerScheduleRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}ServerError
{
"type": "object",
"title": "Server error response.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerServerError",
"x-go-package": "durpdeploy/internal/handler/api"
}ServerStatsResponse
{
"type": "object",
"title": "ServerStatsResponse contains aggregate counts.",
"properties": {
"deployments": {
"type": "integer",
"format": "int64",
"x-go-name": "Deployments"
},
"projects": {
"type": "integer",
"format": "int64",
"x-go-name": "Projects"
},
"users": {
"type": "integer",
"format": "int64",
"x-go-name": "Users"
}
},
"x-go-name": "swaggerServerStatsResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}SpecResponse
{
"type": "object",
"title": "SpecResponse is the raw OpenAPI JSON spec.",
"x-go-name": "swaggerSpecResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}StatusResponse
{
"type": "object",
"title": "Status message response.",
"properties": {
"status": {
"type": "string",
"x-go-name": "Status"
}
},
"x-go-name": "swaggerStatusResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}Step
{
"type": "object",
"title": "Step is an executable script step within a project.",
"properties": {
"agent_execution_mode": {
"type": "string",
"x-go-name": "AgentExecutionMode"
},
"agent_selectors": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "AgentSelectors"
},
"approval_artifact_path": {
"type": "string",
"x-go-name": "ApprovalArtifactPath"
},
"approval_review_format": {
"type": "string",
"x-go-name": "ApprovalReviewFormat"
},
"approval_review_path": {
"type": "string",
"x-go-name": "ApprovalReviewPath"
},
"container_image": {
"description": "Container image required for local steps and agent container mode.",
"type": "string",
"x-go-name": "ContainerImage"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"execution_target": {
"type": "string",
"x-go-name": "ExecutionTarget"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"interpreter": {
"type": "string",
"x-go-name": "Interpreter"
},
"max_retries": {
"type": "integer",
"format": "int64",
"x-go-name": "MaxRetries"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"network_mode": {
"type": "string",
"x-go-name": "NetworkMode"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"script_body": {
"type": "string",
"x-go-name": "ScriptBody"
},
"sort_order": {
"type": "integer",
"format": "int64",
"x-go-name": "SortOrder"
},
"timeout_seconds": {
"type": "integer",
"format": "int64",
"x-go-name": "TimeoutSeconds"
},
"variable_names": {
"description": "Optional variable-name restriction. Empty passes all variables.",
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "VariableNames"
}
},
"x-go-name": "swaggerStep",
"x-go-package": "durpdeploy/internal/handler/api"
}StepListResponse
{
"type": "array",
"title": "StepListResponse is a list of project steps.",
"items": {
"$ref": "#/definitions/Step"
},
"x-go-name": "swaggerStepListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}StepRequest
{
"type": "object",
"title": "StepRequest is the body for create/update step.",
"properties": {
"agent_execution_mode": {
"type": "string",
"x-go-name": "AgentExecutionMode"
},
"agent_selectors": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "AgentSelectors"
},
"approval_artifact_path": {
"type": "string",
"x-go-name": "ApprovalArtifactPath"
},
"approval_review_format": {
"type": "string",
"x-go-name": "ApprovalReviewFormat"
},
"approval_review_path": {
"type": "string",
"x-go-name": "ApprovalReviewPath"
},
"container_image": {
"description": "Required for local steps and agent container mode; rejected for agent host mode.",
"type": "string",
"x-go-name": "ContainerImage"
},
"execution_target": {
"type": "string",
"x-go-name": "ExecutionTarget"
},
"interpreter": {
"type": "string",
"x-go-name": "Interpreter"
},
"max_retries": {
"type": "integer",
"format": "int64",
"x-go-name": "MaxRetries"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"network_mode": {
"type": "string",
"x-go-name": "NetworkMode"
},
"script_body": {
"type": "string",
"x-go-name": "ScriptBody"
},
"sort_order": {
"type": "integer",
"format": "int64",
"x-go-name": "SortOrder"
},
"timeout_seconds": {
"type": "integer",
"format": "int64",
"x-go-name": "TimeoutSeconds"
},
"variable_names": {
"description": "Optional variable-name restriction. Empty passes all variables;\nentries must be identifiers without duplicates.",
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "VariableNames"
}
},
"x-go-name": "swaggerStepRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}StepTemplate
{
"type": "object",
"title": "StepTemplate is a reusable step template.",
"properties": {
"agent_execution_mode": {
"type": "string",
"x-go-name": "AgentExecutionMode"
},
"agent_selectors": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "AgentSelectors"
},
"approval_artifact_path": {
"type": "string",
"x-go-name": "ApprovalArtifactPath"
},
"approval_review_format": {
"type": "string",
"x-go-name": "ApprovalReviewFormat"
},
"approval_review_path": {
"type": "string",
"x-go-name": "ApprovalReviewPath"
},
"container_image": {
"type": "string",
"x-go-name": "ContainerImage"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"execution_target": {
"type": "string",
"x-go-name": "ExecutionTarget"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"interpreter": {
"type": "string",
"x-go-name": "Interpreter"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"network_mode": {
"type": "string",
"x-go-name": "NetworkMode"
},
"script_body": {
"type": "string",
"x-go-name": "ScriptBody"
},
"variable_names": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "VariableNames"
}
},
"x-go-name": "swaggerStepTemplate",
"x-go-package": "durpdeploy/internal/handler/api"
}StepTemplateListResponse
{
"type": "array",
"title": "StepTemplateListResponse is a list of step templates.",
"items": {
"$ref": "#/definitions/StepTemplate"
},
"x-go-name": "swaggerStepTemplateListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}StepTemplateRequest
{
"type": "object",
"title": "StepTemplateRequest is the body for create/update step template.",
"properties": {
"agent_execution_mode": {
"type": "string",
"x-go-name": "AgentExecutionMode"
},
"agent_selectors": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "AgentSelectors"
},
"approval_artifact_path": {
"type": "string",
"x-go-name": "ApprovalArtifactPath"
},
"approval_review_format": {
"type": "string",
"x-go-name": "ApprovalReviewFormat"
},
"approval_review_path": {
"type": "string",
"x-go-name": "ApprovalReviewPath"
},
"container_image": {
"description": "Required for local steps and agent container mode; rejected for agent host mode.",
"type": "string",
"x-go-name": "ContainerImage"
},
"execution_target": {
"type": "string",
"x-go-name": "ExecutionTarget"
},
"interpreter": {
"type": "string",
"x-go-name": "Interpreter"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"network_mode": {
"type": "string",
"x-go-name": "NetworkMode"
},
"script_body": {
"type": "string",
"x-go-name": "ScriptBody"
},
"variable_names": {
"description": "Optional variable-name restriction. Empty passes all variables;\nentries must be identifiers without duplicates.",
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "VariableNames"
}
},
"x-go-name": "swaggerStepTemplateRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}StepTemplateVersion
{
"type": "object",
"title": "StepTemplateVersion is a historical version of a step template.",
"properties": {
"agent_execution_mode": {
"type": "string",
"x-go-name": "AgentExecutionMode"
},
"agent_selectors": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "AgentSelectors"
},
"approval_artifact_path": {
"type": "string",
"x-go-name": "ApprovalArtifactPath"
},
"approval_review_format": {
"type": "string",
"x-go-name": "ApprovalReviewFormat"
},
"approval_review_path": {
"type": "string",
"x-go-name": "ApprovalReviewPath"
},
"container_image": {
"type": "string",
"x-go-name": "ContainerImage"
},
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"execution_target": {
"type": "string",
"x-go-name": "ExecutionTarget"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"interpreter": {
"type": "string",
"x-go-name": "Interpreter"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"network_mode": {
"type": "string",
"x-go-name": "NetworkMode"
},
"script_body": {
"type": "string",
"x-go-name": "ScriptBody"
},
"template_id": {
"type": "integer",
"format": "int64",
"x-go-name": "TemplateID"
},
"variable_names": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "VariableNames"
},
"version_number": {
"type": "integer",
"format": "int64",
"x-go-name": "VersionNumber"
}
},
"x-go-name": "swaggerStepTemplateVersion",
"x-go-package": "durpdeploy/internal/handler/api"
}StepTemplateVersionListResponse
{
"type": "array",
"title": "StepTemplateVersionListResponse is a list of step template versions.",
"items": {
"$ref": "#/definitions/StepTemplateVersion"
},
"x-go-name": "swaggerStepTemplateVersionListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}StreamResponse
{
"type": "object",
"title": "StreamResponse is a server-sent event stream.",
"properties": {
"data": {
"type": "string",
"x-go-name": "Data"
}
},
"x-go-name": "swaggerStreamResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}swaggerAgentError
{
"type": "object",
"properties": {
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"finished_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
},
"reason": {
"type": "string",
"x-go-name": "Reason"
},
"state": {
"type": "string",
"x-go-name": "State"
},
"step_index": {
"type": "integer",
"format": "int64",
"x-go-name": "StepIndex"
}
},
"x-go-package": "durpdeploy/internal/handler/api"
}swaggerAgentSuccess
{
"type": "object",
"properties": {
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"finished_at": {
"$ref": "#/definitions/swaggerSQLNullInteger"
}
},
"x-go-package": "durpdeploy/internal/handler/api"
}swaggerAgentWork
{
"type": "object",
"properties": {
"deployment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "DeploymentID"
},
"state": {
"type": "string",
"x-go-name": "State"
},
"step_index": {
"type": "integer",
"format": "int64",
"x-go-name": "StepIndex"
}
},
"x-go-package": "durpdeploy/internal/handler/api"
}swaggerSQLNullInteger
{
"type": "object",
"properties": {
"Int64": {
"type": "integer",
"format": "int64"
},
"Valid": {
"type": "boolean"
}
},
"x-go-package": "durpdeploy/internal/handler/api"
}swaggerSQLNullString
{
"type": "object",
"properties": {
"String": {
"type": "string"
},
"Valid": {
"type": "boolean"
}
},
"x-go-package": "durpdeploy/internal/handler/api"
}SwaggerUIResponse
{
"type": "object",
"title": "SwaggerUIResponse is the swagger-ui HTML page.",
"x-go-name": "swaggerUIResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}TerraformResourceChange
{
"type": "object",
"properties": {
"actions": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "Actions"
},
"address": {
"type": "string",
"x-go-name": "Address"
},
"after": {
"type": "string",
"x-go-name": "After"
},
"before": {
"type": "string",
"x-go-name": "Before"
},
"omitted_fields": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "OmittedFields"
}
},
"x-go-package": "durpdeploy/internal/artifact"
}TerraformReviewResponse
{
"type": "object",
"properties": {
"preview_truncated": {
"type": "boolean",
"x-go-name": "PreviewTruncated"
},
"resources": {
"type": "array",
"items": {
"$ref": "#/definitions/TerraformResourceChange"
},
"x-go-name": "Resources"
},
"resources_omitted": {
"type": "integer",
"format": "int64",
"x-go-name": "ResourcesOmitted"
},
"review_source": {
"type": "string",
"x-go-name": "ReviewSource"
},
"review_verified": {
"type": "boolean",
"x-go-name": "ReviewVerified"
}
},
"x-go-package": "durpdeploy/internal/artifact"
}TextResponse
{
"type": "object",
"title": "TextResponse is a plain text response.",
"properties": {
"Body": {
"type": "string"
}
},
"x-go-name": "swaggerTextResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}TokenListResponse
{
"type": "array",
"title": "TokenListResponse is a list of API tokens.",
"items": {
"$ref": "#/definitions/TokenResponse"
},
"x-go-name": "swaggerTokenListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}TokenResponse
{
"type": "object",
"title": "TokenResponse is the token representation returned by list endpoints.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"email": {
"type": "string",
"x-go-name": "Email"
},
"expires_at": {
"type": "integer",
"format": "int64",
"x-go-name": "ExpiresAt"
},
"id": {
"type": "string",
"x-go-name": "ID"
},
"last_used_at": {
"type": "integer",
"format": "int64",
"x-go-name": "LastUsedAt"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"prefix": {
"type": "string",
"x-go-name": "Prefix"
},
"project_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"x-go-name": "ProjectIDs"
},
"revoked_at": {
"type": "integer",
"format": "int64",
"x-go-name": "RevokedAt"
},
"role": {
"type": "string",
"x-go-name": "Role"
},
"scope": {
"type": "string",
"x-go-name": "Scope"
},
"user_id": {
"type": "integer",
"format": "int64",
"x-go-name": "UserID"
},
"user_name": {
"type": "string",
"x-go-name": "UserName"
}
},
"x-go-name": "swaggerTokenResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}TokenScopeResponse
{
"type": "object",
"title": "TokenScopeResponse identifies a token's permission ceiling.",
"properties": {
"project_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"x-go-name": "ProjectIDs"
},
"role": {
"type": "string",
"x-go-name": "Role"
},
"scope": {
"type": "string",
"x-go-name": "Scope"
}
},
"x-go-name": "swaggerTokenScopeResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}UnauthorizedError
{
"type": "object",
"title": "Unauthorized error response.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerUnauthorizedError",
"x-go-package": "durpdeploy/internal/handler/api"
}User
{
"type": "object",
"title": "User is a user account.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"email": {
"type": "string",
"x-go-name": "Email"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"last_login_at": {
"type": "integer",
"format": "int64",
"x-go-name": "LastLoginAt"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"role": {
"type": "string",
"x-go-name": "Role"
},
"updated_at": {
"type": "integer",
"format": "int64",
"x-go-name": "UpdatedAt"
}
},
"x-go-name": "swaggerUser",
"x-go-package": "durpdeploy/internal/handler/api"
}UserListResponse
{
"type": "array",
"title": "UserListResponse is a list of users.",
"items": {
"$ref": "#/definitions/UserResponse"
},
"x-go-name": "swaggerUserListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}UserRequest
{
"type": "object",
"title": "UserRequest is the body for create/update user.",
"properties": {
"email": {
"type": "string",
"x-go-name": "Email"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"password": {
"type": "string",
"x-go-name": "Password"
},
"role": {
"type": "string",
"x-go-name": "Role"
}
},
"x-go-name": "swaggerUserRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}UserResponse
{
"type": "object",
"title": "UserResponse is the JSON shape for a user.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"email": {
"type": "string",
"x-go-name": "Email"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"last_login_at": {
"type": "integer",
"format": "int64",
"x-go-name": "LastLoginAt"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"one_time_password": {
"type": "string",
"x-go-name": "OneTimePassword"
},
"role": {
"type": "string",
"x-go-name": "Role"
},
"updated_at": {
"type": "integer",
"format": "int64",
"x-go-name": "UpdatedAt"
}
},
"x-go-name": "swaggerUserResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}ValidationError
{
"type": "object",
"title": "Validation error response.",
"properties": {
"error": {
"type": "string",
"x-go-name": "Error"
}
},
"x-go-name": "swaggerValidationError",
"x-go-package": "durpdeploy/internal/handler/api"
}Variable
{
"type": "object",
"title": "Variable is a project or environment-scoped variable.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"secret": {
"type": "integer",
"format": "int64",
"x-go-name": "Secret"
},
"value": {
"type": "string",
"x-go-name": "Value"
}
},
"x-go-name": "swaggerVariable",
"x-go-package": "durpdeploy/internal/handler/api"
}VariableContext
{
"type": "object",
"title": "VariableContext contains only draft metadata, never script text or values.",
"properties": {
"agent_execution_mode": {
"type": "string",
"x-go-name": "AgentMode"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"execution_target": {
"type": "string",
"x-go-name": "Target"
},
"interpreter": {
"type": "string",
"x-go-name": "Interpreter"
},
"variable_names": {
"type": "array",
"items": {
"type": "string"
},
"x-go-name": "VariableNames"
}
},
"x-go-package": "durpdeploy/internal/repository"
}VariableDefinition
{
"type": "object",
"title": "VariableDefinition is display data. Secret values are never decrypted.",
"properties": {
"description": {
"type": "string",
"x-go-name": "Description"
},
"effective": {
"type": "boolean",
"x-go-name": "Effective"
},
"environment_id": {
"description": "Null for unscoped defaults and runtime variables.",
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID",
"x-nullable": true
},
"key": {
"type": "string",
"x-go-name": "Key"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"overridden_by": {
"type": "string",
"x-go-name": "OverriddenBy"
},
"reason": {
"type": "string",
"x-go-name": "Reason"
},
"reference": {
"type": "string",
"x-go-name": "Reference"
},
"scope": {
"type": "string",
"x-go-name": "Scope"
},
"secret": {
"type": "boolean",
"x-go-name": "Secret"
},
"source": {
"type": "string",
"x-go-name": "Source"
},
"source_name": {
"type": "string",
"x-go-name": "SourceName"
},
"status": {
"type": "string",
"x-go-name": "Status"
},
"value": {
"description": "Null for secrets and runtime values assigned at execution.",
"type": "string",
"x-go-name": "Value",
"x-nullable": true
}
},
"x-go-package": "durpdeploy/internal/repository"
}VariableEnvironment
{
"type": "object",
"title": "VariableEnvironment deliberately contains no environment configuration.",
"properties": {
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
}
},
"x-go-package": "durpdeploy/internal/repository"
}VariableListResponse
{
"type": "array",
"title": "VariableListResponse is a list of variables.",
"items": {
"$ref": "#/definitions/VariableResponse"
},
"x-go-name": "swaggerVariableListResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}VariableRequest
{
"description": "On update, an empty value with secret=true keeps the stored secret\n(the API never returns secret plaintext, so clients send the masked\nread-back unchanged); set secret=false to clear it.",
"type": "object",
"title": "VariableRequest is the body for create/update variable.",
"properties": {
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"secret": {
"type": "boolean",
"x-go-name": "Secret"
},
"value": {
"type": "string",
"x-go-name": "Value"
}
},
"x-go-name": "swaggerVariableRequest",
"x-go-package": "durpdeploy/internal/handler/api"
}VariableResponse
{
"description": "Value is always an empty string when Secret is 1: ordinary reads\nnever return secret plaintext (issue #29).",
"type": "object",
"title": "VariableResponse is the JSON shape for a variable.",
"properties": {
"created_at": {
"type": "integer",
"format": "int64",
"x-go-name": "CreatedAt"
},
"environment_id": {
"type": "integer",
"format": "int64",
"x-go-name": "EnvironmentID"
},
"id": {
"type": "integer",
"format": "int64",
"x-go-name": "ID"
},
"name": {
"type": "string",
"x-go-name": "Name"
},
"project_id": {
"type": "integer",
"format": "int64",
"x-go-name": "ProjectID"
},
"secret": {
"type": "integer",
"format": "int64",
"x-go-name": "Secret"
},
"value": {
"type": "string",
"x-go-name": "Value"
}
},
"x-go-name": "swaggerVariableResponse",
"x-go-package": "durpdeploy/internal/handler/api"
}