API
Registries
Registries are 3rd party registries where the images of versions are located. Learn more about registries here.
Lists every registries available in the active team. Request must include teamSlug in URL. Response is an array including the name, id, type, description, and icon of the registry.Registries are 3rd party registries where the container images are stored.
Data of all registries within a team listed.
Unauthorized request for registries.
GET /api/{teamSlug}/registries HTTP/1.1
Host:
Accept: */*
[
{
"type": "v2",
"id": "text",
"name": "text",
"description": "text",
"icon": "text",
"url": "text"
}
]To add a new registry, include teamSlug in URL, body must include name, type, description, details, and icon. Type, details, and name are required. Response is an array including the name, id, type, description, imageNamePrefix, inUse, icon, and audit log info of the registry.
New registry created.
Bad request for registry creation.
Unauthorized request for registry creation.
Registry name taken.
POST /api/{teamSlug}/registries HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 102
{
"type": "group",
"details": {
"imageNamePrefix": "text"
},
"name": "text",
"description": "text",
"icon": "text"
}{
"type": "group",
"details": {
"imageNamePrefix": "text"
},
"id": "text",
"name": "text",
"description": "text",
"icon": "text",
"inUse": true,
"createdAt": "2025-10-28T04:25:58.018Z",
"updatedAt": "2025-10-28T04:25:58.018Z"
}Lists the details of a registry. Request must include teamSlug and RegistryID in URL. registryId refers to the registry's ID. Response is an array including the name, id, type, description, imageNamePrefix, inUse, icon, and audit log info of the registry.
Data of a registry listed.
Bad request for a registry.
Unauthorized request for a registry.
Registry not found.
GET /api/{teamSlug}/registries/{registryId} HTTP/1.1
Host:
Accept: */*
{
"type": "group",
"details": {
"imageNamePrefix": "text"
},
"id": "text",
"name": "text",
"description": "text",
"icon": "text",
"inUse": true,
"createdAt": "2025-10-28T04:25:58.018Z",
"updatedAt": "2025-10-28T04:25:58.018Z"
}Modify the name, type, description, details, and icon. RegistryId refers to the registry's ID. teamSlug and RegistryID is required in URL, body must include type, details, and name.
Registry modified.
No content
Bad request for registry modification.
Unauthorized request for registry modification.
Registry not found.
Registry name taken.
PUT /api/{teamSlug}/registries/{registryId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 102
{
"type": "group",
"details": {
"imageNamePrefix": "text"
},
"name": "text",
"description": "text",
"icon": "text"
}No content
Deletes a registry with the specified registryId. teamSlug and RegistryID are required in URL.
Registry deleted.
No content
Unauthorized request for registry delete.
Registry not found.
DELETE /api/{teamSlug}/registries/{registryId} HTTP/1.1
Host:
Accept: */*
No content
Projects
There are two kinds of projects in dyrector.io: versionless and versioned. Versionless projects make up one deployable unit without versioning, while versioned projects come with multiple rolling or incremental versions. More details here.
Returns a list of a team's projects and their details. teamSlug needs to be included in URL.
List of projects.
Unauthorized request for projects.
GET /api/{teamSlug}/projects HTTP/1.1
Host:
Accept: */*
[
{
"type": "versionless",
"description": "text",
"versionCount": 1,
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"id": "text",
"name": "text"
}
]Create a new project for a team. teamSlug needs to be included in URL. Newly created team has a type and a name as required variables, and optionally a description and a changelog.
New project created.
Bad request for project creation.
Unauthorized request for project creation.
Project name taken.
POST /api/{teamSlug}/projects HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 76
{
"type": "versionless",
"name": "text",
"description": "text",
"changelog": "text"
}{
"type": "versionless",
"description": "text",
"versionCount": 1,
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"id": "text",
"name": "text"
}Returns a project's details. teamSlug and ProjectID needs to be included in URL. The response should contain an array, consisting of the project's name, id, type, description, deletability, versions and version related data, including version name and id, changelog, increasibility.
Details of a project.
Bad request for project details.
Unauthorized request for project details.
Project not found.
GET /api/{teamSlug}/projects/{projectId} HTTP/1.1
Host:
Accept: */*
{
"type": "versionless",
"description": "text",
"deletable": true,
"versions": [
{
"type": "incremental",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"changelog": "text",
"default": true,
"increasable": true,
"id": "text",
"name": "text"
}
],
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"id": "text",
"name": "text"
}Updates a project. teamSlug is required in URL, as well as projectId to identify which project is modified, name, description and changelog can be adjusted with this call.
Project details are modified.
No content
Bad request for project details modification.
Unauthorized request for project details modification.
Project not found.
Project name taken.
PUT /api/{teamSlug}/projects/{projectId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 55
{
"name": "text",
"description": "text",
"changelog": "text"
}No content
Deletes a project with the specified projectId. teamSlug and ProjectID are required in URL.
Project deleted.
No content
Unauthorized request for a project.
Project not found.
DELETE /api/{teamSlug}/projects/{projectId} HTTP/1.1
Host:
Accept: */*
No content
Converts a project to versioned with the specified projectId. teamSlug and ProjectID are required in URL.
Project converted.
No content
Bad request for project conversion.
Unauthorized request for project conversion.
POST /api/{teamSlug}/projects/{projectId}/convert HTTP/1.1
Host:
Accept: */*
No content
Versions
Versions belong to versioned projects. Versionless projects act similar to a rolling version of a versioned project.
The purpose of versions is to separate different variations of your project. They can be either rolling or incremental. One versionless project can have multiple versions of both types. More details about rolling and incremental versions here.
Returns an array containing the every version that belong to a project. teamSlug and ProjectId must be included in URL. ProjectId refers to the project's ID. Details include the version's name, id, type, audit log details, changelog, and increasibility.
Returns an array with every versions of a project.
Unauthorized request for project versions.
GET /api/{teamSlug}/projects/{projectId}/versions HTTP/1.1
Host:
Accept: */*
[
{
"type": "incremental",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"changelog": "text",
"default": true,
"increasable": true,
"id": "text",
"name": "text"
}
]Creates a new version in a project. projectId refers to the project's ID. teamSlug and ProjectId must be included in URL, request's body need to include name and type of the version, changelog is optionable. Response should include the name, id, changelog, increasibility, type, and audit log details of the version.
New version created.
Bad request for version creation.
Unauthorized request for version creation.
Version name taken.
POST /api/{teamSlug}/projects/{projectId}/versions HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 55
{
"type": "incremental",
"name": "text",
"changelog": "text"
}{
"type": "incremental",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"changelog": "text",
"default": true,
"increasable": true,
"id": "text",
"name": "text"
}Returns the details of a version in the project. teamSlug and ProjectId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID. Details include the version's name, id, type, audit log details, changelog, increasibility, mutability, deletability, and all image related data, including name, id, tag, order and configuration data of the images.
Details of a version under a project is fetched.
Bad request for version details.
Unauthorized request for version details.
Version not found.
GET /api/{teamSlug}/projects/{projectId}/versions/{versionId} HTTP/1.1
Host:
Accept: */*
{
"type": "incremental",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"changelog": "text",
"default": true,
"increasable": true,
"id": "text",
"name": "text",
"mutable": true,
"deletable": true,
"images": [
{
"id": "text",
"name": "text",
"tag": "text",
"order": 1,
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"secrets": [
{
"required": true,
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
},
"createdAt": "2025-10-28T04:25:58.018Z",
"registry": {
"type": "v2",
"id": "text",
"name": "text"
}
}
],
"deployments": [
{
"status": "preparing",
"note": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"node": {
"type": "docker",
"status": "unreachable",
"id": "text",
"name": "text"
},
"id": "text",
"prefix": "text"
}
]
}Updates a version's name and changelog. teamSlug, ProjectId and VersionId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID.
Changelog of a version is updated.
No content
Bad request for version modification.
Unauthorized request for version modification.
Version not found.
Version name taken.
PUT /api/{teamSlug}/projects/{projectId}/versions/{versionId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 34
{
"name": "text",
"changelog": "text"
}No content
This call deletes a version. teamSlug, ProjectId and VersionId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID.
Version deleted.
No content
Unauthorized request for version delete.
Version not found.
DELETE /api/{teamSlug}/projects/{projectId}/versions/{versionId} HTTP/1.1
Host:
Accept: */*
No content
Turn version into a default one of the versioned project other versions under it will inherit images and deployments from.
This call turns a version into the default one, resulting other versions within this project later inherit images, deployments and their configurations from it. teamSlug, ProjectId and VersionId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID.
Version turned into default.
No content
Bad request.
Unauthorized request for setting version as default.
Version not found.
PUT /api/{teamSlug}/projects/{projectId}/versions/{versionId}/default HTTP/1.1
Host:
Accept: */*
No content
Increases the version of a project with a new child version. teamSlug, ProjectId and VersionId must be included in URL. projectId refers to the project's ID, versionId refers to the version's ID. name refers to the name of the new version, and is required in the body.
New version created.
Bad request for increasing version.
Unauthorized request for increasing version.
POST /api/{teamSlug}/projects/{projectId}/versions/{versionId}/increase HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 34
{
"name": "text",
"changelog": "text"
}{
"type": "incremental",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"changelog": "text",
"default": true,
"increasable": true,
"id": "text",
"name": "text"
}Version/Images
Images make up a versioned project's version, or a versionless project.
Fetch details of images within a version. ProjectId refers to the project's ID, versionId refers to the version's ID. Both, and teamSlug are required in the URL.Details come in an array, including name, id, tag, order, and config details of the image.
Data of images listed.
Unauthorized request for images.
GET /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images HTTP/1.1
Host:
Accept: */*
[
{
"id": "text",
"name": "text",
"tag": "text",
"order": 1,
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"secrets": [
{
"required": true,
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
},
"createdAt": "2025-10-28T04:25:58.018Z",
"registry": {
"type": "v2",
"id": "text",
"name": "text"
}
}
]Add new images to a version. projectId refers to the project's ID, versionId refers to the version's ID. These, and teamSlug are required in the URL. registryId refers to the registry's ID, images refers to the name(s) of the images you'd like to add. These are required variables in the body.
New image added.
Bad request for images.
Unauthorized request for images.
POST /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 41
[
{
"registryId": "text",
"images": [
"text"
]
}
][
{
"id": "text",
"name": "text",
"tag": "text",
"order": 1,
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"secrets": [
{
"required": true,
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
},
"createdAt": "2025-10-28T04:25:58.018Z",
"registry": {
"type": "v2",
"id": "text",
"name": "text"
}
}
]Fetch details of an image within a version. projectId refers to the project's ID, versionId refers to the version's ID, imageId refers to the image's ID. All, and teamSlug are required in the URL.Image details consists name, id, tag, order, and the config of the image.
Data of an image.
Bad request for image details.
Unauthorized request for image details.
Image not found.
GET /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images/{imageId} HTTP/1.1
Host:
Accept: */*
{
"id": "text",
"name": "text",
"tag": "text",
"order": 1,
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"secrets": [
{
"required": true,
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
},
"createdAt": "2025-10-28T04:25:58.018Z",
"registry": {
"type": "v2",
"id": "text",
"name": "text"
}
}Delete an image. projectId refers to the project's ID, versionId refers to the version's ID, imageId refers to the image's ID. All, and teamSlug are required in the URL.
Delete an image from a version.
No content
Unauthorized request for an image.
Image not found.
DELETE /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images/{imageId} HTTP/1.1
Host:
Accept: */*
No content
Modify the configuration variables of an image. projectId refers to the project's ID, versionId refers to the version's ID, imageId refers to the image's ID. All, and teamSlug are required in the URL. Tag refers to the version of the image, config is an object of configuration variables.
Image's configure variables updated.
No content
Bad request for an image.
Unauthorized request for an image.
Image not found.
PATCH /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images/{imageId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 2029
{
"tag": "text",
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"secrets": [
{
"required": true,
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
}
}No content
Edit image deployment order of a version. projectId refers to the project's ID, versionId refers to the version's ID. Both, and teamSlug are required in the URL. Request body should include the IDs of the images in an array.
Image order modified.
No content
Bad request for ordering.
Unauthorized request for ordering.
PUT /api/{teamSlug}/projects/{projectId}/versions/{versionId}/images/order HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 8
[
"text"
]No content
Teams
Teams are the shared entity of multiple users. The purpose of teams is to separate users, nodes and projects based on their needs within an organization. Team owners can assign roles. More details about teams here.
List of teams consist of name, id, and statistics, including number of users, projects, nodes, versions, and deployments.Teams are the shared entity of multiple users. The purpose of teams is to separate users, nodes and projects based on their needs within an organization. Team owners can assign roles. More details about teams here.
List of teams and their statistics.
Unauthorized request for teams.
GET /api/teams HTTP/1.1
Host:
Accept: */*
[
{
"statistics": {
"users": 1,
"projects": 1,
"nodes": 1,
"versions": 1,
"deployments": 1
},
"id": "text",
"name": "text",
"slug": "text"
}
]Request must include name, which is going to be the name of the newly made team. Response should include name, id, and statistics, including number of users, projects, nodes, versions, and deployments.
New team created.
Bad request for team creation.
Unauthorized request for team creation.
Team name taken.
POST /api/teams HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 29
{
"slug": "text",
"name": "text"
}{
"statistics": {
"users": 1,
"projects": 1,
"nodes": 1,
"versions": 1,
"deployments": 1
},
"id": "text",
"name": "text",
"slug": "text"
}Get the details of a team. Request must include teamId, which is the ID of the team they'd like to get the data of. Data of teams consist of name, id, and statistics, including number of users, projects, nodes, versions, and deployments. Response should include user details, as well, including name, id, role, status, email, and lastLogin.
Details of the team.
Bad request for team details.
Unauthorized request for team details.
Team not found.
GET /api/teams/{teamId} HTTP/1.1
Host:
Accept: */*
{
"statistics": {
"users": 1,
"projects": 1,
"nodes": 1,
"versions": 1,
"deployments": 1
},
"id": "text",
"name": "text",
"slug": "text",
"users": [
{
"role": "owner",
"status": "pending",
"email": "text",
"lastLogin": "2025-10-28T04:25:58.018Z",
"id": "text",
"name": "text"
}
]
}Request must include teamId and name. Admin access required for a successful request.
Team name modified.
No content
Bad request for team modification.
Unauthorized request for team modification.
Team not found.
Team name taken.
PUT /api/teams/{teamId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 29
{
"slug": "text",
"name": "text"
}No content
Request must include teamId. Owner access required for successful request.
Team deleted.
No content
Unauthorized request for team delete.
Team not found.
DELETE /api/teams/{teamId} HTTP/1.1
Host:
Accept: */*
No content
Request must include teamId, email and firstName. Admin access required for a successful request.Response should include new user's name, id, role, status, email, and lastLogin. Admin access required for a successful request.
User invited.
Bad request for user invitation.
Unauthorized request for user invitation.
User is already invited to or already in the team.
POST /api/teams/{teamId}/users HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 70
{
"email": "text",
"firstName": "text",
"lastName": "text",
"captcha": "text"
}{
"role": "owner",
"status": "pending",
"email": "text",
"lastLogin": "2025-10-28T04:25:58.018Z",
"id": "text",
"name": "text"
}Promotes or demotes the user. Request must include teamId, userId and role. Admin access required for a successful request.
User's role modified.
No content
Bad request for user role modification.
Unauthorized request for user role modification.
User not found.
PUT /api/teams/{teamId}/users/{userId}/role HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 16
{
"role": "owner"
}No content
Removes the current user from the team. Request must include teamId.
User removed from a team.
No content
Unauthorized request for user removal.
User not found.
DELETE /api/teams/{teamId}/users/leave HTTP/1.1
Host:
Accept: */*
No content
Removes the user from the team. Request must include teamId, userId. Admin access required for a successful request.
User removed from a team.
No content
Unauthorized request for user removal.
User not found.
DELETE /api/teams/{teamId}/users/{userId} HTTP/1.1
Host:
Accept: */*
No content
This call sends a new invitation link to a user who hasn't accepted invitation to a team.Request must include teamId, userId. Admin access required for a successful request.
New invite link sent.
No content
Bad request for reinvitation.
Unauthorized request for reinvitation.
POST /api/teams/{teamId}/users/{userId}/reinvite HTTP/1.1
Host:
Accept: */*
No content
Users/Me
Users/Me cover endpoints related to your user profile.
Response includes the user, teams, and invitations.
Fetch the current user.
Bad request for current user.
Unauthorized request for current user.
POST /api/users/me HTTP/1.1
Host:
Accept: */*
{
"user": {
"id": "text",
"name": "text"
},
"teams": [
{
"role": "owner",
"id": "text",
"name": "text",
"slug": "text"
}
],
"invitations": [
{
"id": "text",
"name": "text",
"slug": "text"
}
]
}Request must include teamId.
Invitation accepted.
No content
Bad request for team invitation.
Unauthorized request for team invitation.
POST /api/users/me/invitations/{teamId} HTTP/1.1
Host:
Accept: */*
No content
Request must include teamId.
Invitation declined.
No content
Unauthorized request for invite declination.
Invitation not found.
DELETE /api/users/me/invitations/{teamId} HTTP/1.1
Host:
Accept: */*
No content
Deployments
Deployments are the process that gets the installation of your versions or versionless projects done on the node of your choice. More details about deployments here.
Get the list of deployments. Request needs to include teamSlug in URL. A deployment should include id, prefix, status, note, audit log details, project name, id, type, version name, type, id, and node name, id, type.
List of deployments.
Unauthorized request for deployments.
GET /api/{teamSlug}/deployments HTTP/1.1
Host:
Accept: */*
[
{
"status": "preparing",
"note": "text",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"project": {
"type": "versionless",
"id": "text",
"name": "text"
},
"version": {
"type": "incremental",
"id": "text",
"name": "text"
},
"node": {
"type": "docker",
"id": "text",
"name": "text"
},
"id": "text",
"prefix": "text"
}
]Request must include teamSlug in URL, versionId, nodeId, and prefix, which refers to the ID of a version, a node and the prefix of the deployment, must be included in body. Response should include deployment id, prefix, status, note, and audit log details, as well as project type, id, name, version type, id, name, and node type, id, name.
New deployment created.
Bad request for a deployment.
Unauthorized request for a deployment.
Prefix taken for the node.
POST /api/{teamSlug}/deployments HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 66
{
"versionId": "text",
"nodeId": "text",
"prefix": "text",
"note": "text"
}{
"status": "preparing",
"note": "text",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"project": {
"type": "versionless",
"id": "text",
"name": "text"
},
"version": {
"type": "incremental",
"id": "text",
"name": "text"
},
"node": {
"type": "docker",
"id": "text",
"name": "text"
},
"id": "text",
"prefix": "text"
}Get details of a certain deployment. Request must include teamSlug and deploymentId in URL. Deployment details should include id, prefix, environment, status, note, audit log details, project name, id, type, version name, type, id, and node name, id, type.
Details of a deployment.
Bad request for deployment details.
Unauthorized request for deployment details.
Deployment not found.
GET /api/{teamSlug}/deployments/{deploymentId} HTTP/1.1
Host:
Accept: */*
{
"status": "preparing",
"note": "text",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"project": {
"type": "versionless",
"id": "text",
"name": "text"
},
"version": {
"type": "incremental",
"id": "text",
"name": "text"
},
"node": {
"type": "docker",
"id": "text",
"name": "text"
},
"id": "text",
"prefix": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"publicKey": "text",
"instances": [
{
"id": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"image": {
"id": "text",
"name": "text",
"tag": "text",
"order": 1,
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"secrets": [
{
"required": true,
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
},
"createdAt": "2025-10-28T04:25:58.018Z",
"registry": {
"type": "v2",
"id": "text",
"name": "text"
}
},
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"secrets": [
{
"required": true,
"id": "text",
"key": "text",
"value": "text",
"encrypted": true,
"publicKey": "text"
}
],
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
}
}
],
"lastTry": 1,
"token": {
"id": "text",
"name": "text",
"createdAt": "2025-10-28T04:25:58.018Z",
"expiresAt": "2025-10-28T04:25:58.018Z"
}
}Request must include teamSlug and deploymentId in the URL.
Deployment deleted.
No content
Unauthorized request for a deployment.
Deployment not found.
DELETE /api/{teamSlug}/deployments/{deploymentId} HTTP/1.1
Host:
Accept: */*
No content
Request must include deploymentId and teamSlug in URL.
Deployment modified.
No content
Bad request for a deployment.
Unauthorized request for a deployment.
Deployment not found.
PATCH /api/{teamSlug}/deployments/{deploymentId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 89
{
"note": "text",
"prefix": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}No content
Request must include teamSlug, deploymentId and instanceId, which refer to the ID of a deployment and the instance, in the URL. Instances are the manifestation of an image in the deployment. Response should include state, id, updatedAt, and image details including id, name, tag, order and config variables.
Details of an instance.
Bad request for instance details.
Unauthorized request for an instance.
Instance not found.
GET /api/{teamSlug}/deployments/{deploymentId}/instances/{instanceId} HTTP/1.1
Host:
Accept: */*
{
"id": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"image": {
"id": "text",
"name": "text",
"tag": "text",
"order": 1,
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"secrets": [
{
"required": true,
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
},
"createdAt": "2025-10-28T04:25:58.018Z",
"registry": {
"type": "v2",
"id": "text",
"name": "text"
}
},
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"secrets": [
{
"required": true,
"id": "text",
"key": "text",
"value": "text",
"encrypted": true,
"publicKey": "text"
}
],
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
}
}Request must include teamSlug, deploymentId, instanceId in URL, and portion of the instance configuration as config in the body. Response should include config variables in an array.
Instance configuration updated.
No content
Bad request for an instance.
Unauthorized request for an instance.
Instance not found.
PATCH /api/{teamSlug}/deployments/{deploymentId}/instances/{instanceId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 2067
{
"config": {
"expose": "none",
"restartPolicy": "always",
"networkMode": "none",
"deploymentStrategy": "recreate",
"secrets": [
{
"required": true,
"id": "text",
"key": "text",
"value": "text",
"encrypted": true,
"publicKey": "text"
}
],
"name": "text",
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"routing": {
"domain": "text",
"path": "text",
"stripPath": true,
"uploadLimit": "text"
},
"user": 1,
"tty": true,
"configContainer": {
"image": "text",
"volume": "text",
"path": "text",
"keepFiles": true
},
"ports": [
{
"id": "text",
"internal": 1,
"external": 1
}
],
"portRanges": [
{
"id": "text",
"internal": {
"from": 1,
"to": 1
},
"external": {
"from": 1,
"to": 1
}
}
],
"volumes": [
{
"type": "ro",
"id": "text",
"name": "text",
"path": "text",
"size": "text",
"class": "text"
}
],
"commands": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"initContainers": [
{
"id": "text",
"name": "text",
"image": "text",
"command": [
{
"id": "text",
"key": "text"
}
],
"args": [
{
"id": "text",
"key": "text"
}
],
"environment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"useParentConfig": true,
"volumes": [
{
"id": "text",
"name": "text",
"path": "text"
}
]
}
],
"capabilities": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"storage": {
"storageId": "text",
"path": "text",
"bucket": "text"
},
"logConfig": {
"driver": "nodeDefault",
"options": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"networks": [
{
"id": "text",
"key": "text"
}
],
"dockerLabels": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"customHeaders": [
{
"id": "text",
"key": "text"
}
],
"proxyHeaders": true,
"useLoadBalancer": true,
"extraLBAnnotations": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"healthCheckConfig": {
"port": 1,
"livenessProbe": "text",
"readinessProbe": "text",
"startupProbe": "text"
},
"resourceConfig": {
"limits": {
"cpu": "text",
"memory": "text"
},
"requests": {
"cpu": "text",
"memory": "text"
}
},
"annotations": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
},
"labels": {
"service": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"deployment": [
{
"value": "text",
"id": "text",
"key": "text"
}
],
"ingress": [
{
"value": "text",
"id": "text",
"key": "text"
}
]
}
}
}No content
Request must include teamSlug, deploymentId and instanceId, which refer to the ID of a deployment and the instance, needs to be included in URL. Response should include container prefix and name, and publicKey, keys.
Secrets of an instance listed.
Bad request for instance secrets.
Unauthorized request for instance secrets.
Instance secrets not found.
GET /api/{teamSlug}/deployments/{deploymentId}/instances/{instanceId}/secrets HTTP/1.1
Host:
Accept: */*
{
"container": {
"prefix": "text",
"name": "text"
},
"publicKey": "text",
"keys": [
"text"
]
}Request must include teamSlug and deploymentId in the URL.
Deployment initiated.
No content
Bad request for a deployment.
Unauthorized request for a deployment.
POST /api/{teamSlug}/deployments/{deploymentId}/start HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 22
{
"instances": [
"text"
]
}No content
Request must include teamSlug and deploymentId in the URL, which will be copied. The body must include the nodeId, prefix and optionally a note. Response should include deployment data: id, prefix, status, note, and miscellaneous details of audit log, project, version, and node.
Deployment copied.
Bad request for a deployment.
Unauthorized request for a deployment.
Prefix taken for the node.
POST /api/{teamSlug}/deployments/{deploymentId}/copy HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 47
{
"nodeId": "text",
"prefix": "text",
"note": "text"
}{
"status": "preparing",
"note": "text",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"project": {
"type": "versionless",
"id": "text",
"name": "text"
},
"version": {
"type": "incremental",
"id": "text",
"name": "text"
},
"node": {
"type": "docker",
"id": "text",
"name": "text"
},
"id": "text",
"prefix": "text"
}Request must include teamSlug and deploymentId in the URL. Response should include an items array with objects of type, deploymentStatus, createdAt, log, and containerState which consists of state and instanceId.
Deployment event log.
Bad request for a deployment log.
Unauthorized request for a deployment log.
Deployment log not found.
GET /api/{teamSlug}/deployments/{deploymentId}/log?skip=1&take=1 HTTP/1.1
Host:
Accept: */*
{
"items": [
{
"type": "log",
"deploymentStatus": "preparing",
"createdAt": "2025-10-28T04:25:58.018Z",
"log": [
"text"
],
"containerState": {
"state": "running",
"instanceId": "text"
}
}
],
"total": 1
}Request must include teamSlug and deploymentId in the URL. In the body a name and optionally the expiration date as expirationInDays.
Deployment token with jwt and the curl command.
Bad request for a deployment token.
Unauthorized request for a deployment token.
Token name taken.
PUT /api/{teamSlug}/deployments/{deploymentId}/token HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 36
{
"name": "text",
"expirationInDays": 1
}{
"id": "text",
"name": "text",
"createdAt": "2025-10-28T04:25:58.018Z",
"expiresAt": "2025-10-28T04:25:58.018Z",
"token": "text",
"curl": "text"
}Request must include teamSlug and deploymentId in the URL.
Deployment token deleted.
No content
Unauthorized request for a deployment token.
Deployment token not found.
DELETE /api/{teamSlug}/deployments/{deploymentId}/token HTTP/1.1
Host:
Accept: */*
No content
Tokens
Tokens are the access tokens that grant you access to a user profile and the teams the profile is a member of.
Access token's support is to provide secure access to the HTTP api without a cookie.
Token list fetched.
Unauthorized request for tokens.
GET /api/tokens HTTP/1.1
Host:
Accept: */*
[
{
"id": "text",
"name": "text",
"expiresAt": "2025-10-28T04:25:58.018Z",
"createdAt": "2025-10-28T04:25:58.018Z"
}
]Request must include name and expirationInDays.
Bad request for token creation.
Unauthorized request for token creation.
Token name taken.
POST /api/tokens HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 36
{
"name": "text",
"expirationInDays": 1
}{
"id": "text",
"name": "text",
"expiresAt": "2025-10-28T04:25:58.018Z",
"createdAt": "2025-10-28T04:25:58.018Z",
"token": "text"
}Access token's details are name, id, and the time of creation and expiration. Request must include tokenId.
Token details listed.
Bad request for token details.
Unauthorized request for token details.
Token not found.
GET /api/tokens/{tokenId} HTTP/1.1
Host:
Accept: */*
{
"id": "text",
"name": "text",
"expiresAt": "2025-10-28T04:25:58.018Z",
"createdAt": "2025-10-28T04:25:58.018Z"
}Nodes
Nodes are the deployment targets. Nodes are registered by installing at least one of the agents – crane for Kubernetes, dagent for Docker. These agents connect the platform to your node. One team can have as many nodes as they like.
Node installation takes place with Shell or PowerShell scripts, which can be created or revoked. More details here.
Fetch data of deployment targets. Request must include teamSlug in URL. Response should include an array with the node's type, status, description, icon, address, connectedAt date, version, updating, id, and name.
Data of nodes listed.
Unauthorized request for nodes.
GET /api/{teamSlug}/nodes HTTP/1.1
Host:
Accept: */*
[
{
"type": "docker",
"status": "unreachable",
"description": "text",
"icon": "text",
"address": "text",
"connectedAt": "2025-10-28T04:25:58.018Z",
"version": "text",
"updating": true,
"id": "text",
"name": "text"
}
]Request must include the teamSlug in URL, and node's name in body. Response should include an array with the node's type, status, description, icon, address, connectedAt date, version, updating, id, and name.
New node created.
Bad request for node creation.
Unauthorized request for node creation.
Node name taken.
POST /api/{teamSlug}/nodes HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 50
{
"name": "text",
"description": "text",
"icon": "text"
}{
"type": "docker",
"status": "unreachable",
"description": "text",
"icon": "text",
"address": "text",
"connectedAt": "2025-10-28T04:25:58.018Z",
"version": "text",
"updating": true,
"id": "text",
"name": "text"
}Fetch data of a specific node. Request must include teamSlug in URL, and nodeId in body. Response should include an array with the node's type, status, description, icon, address, connectedAt date, version, updating, id, name, hasToken, and agent installation details.
Data of the node.
Bad request for node details.
Unauthorized request for node details.
Node not found.
GET /api/{teamSlug}/nodes/{nodeId} HTTP/1.1
Host:
Accept: */*
{
"type": "docker",
"status": "unreachable",
"description": "text",
"icon": "text",
"address": "text",
"connectedAt": "2025-10-28T04:25:58.018Z",
"version": "text",
"updating": true,
"id": "text",
"name": "text",
"hasToken": true,
"install": {
"command": "text",
"script": "text",
"expireAt": "2025-10-28T04:25:58.018Z"
},
"inUse": true
}Request must include the teamSlug in URL, and node's name in body, body can include description and icon.
Node details modified.
No content
Bad request for node details.
Unauthorized request for node details.
Node not found.
Node name taken.
PUT /api/{teamSlug}/nodes/{nodeId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 50
{
"name": "text",
"description": "text",
"icon": "text"
}No content
Request must include the teamSlug in URL, and node's name in body.
Node deleted.
No content
Unauthorized request for node delete.
Node not found.
DELETE /api/{teamSlug}/nodes/{nodeId} HTTP/1.1
Host:
Accept: */*
No content
Request must include the teamSlug in URL, and node's name in body. Response should include type, status, description, icon, address, connectedAt date, version, updating, id, name, hasToken, and install details.
Bad request for an install script.
Unauthorized request for an install script.
Install script not found.
GET /api/{teamSlug}/nodes/{nodeId}/script HTTP/1.1
Host:
Accept: */*
textRequest must include teamSlug in URL and nodeId, type, and scriptType.
Install script generated.
Bad request for an install script.
Unauthorized request for an install script.
POST /api/{teamSlug}/nodes/{nodeId}/script HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 93
{
"type": "docker",
"scriptType": "shell",
"rootPath": "text",
"dagentTraefik": {
"acmeEmail": "text"
}
}{
"command": "text",
"script": "text",
"expireAt": "2025-10-28T04:25:58.018Z"
}Request must include the teamSlug in URL, and node's name in body.
Agent install script deleted.
No content
Unauthorized request for script delete.
Install script not found.
DELETE /api/{teamSlug}/nodes/{nodeId}/script HTTP/1.1
Host:
Accept: */*
No content
Request must include the teamSlug in URL, and node's name in body.
Token revoked.
No content
Unauthorized request for a token.
Token not found.
DELETE /api/{teamSlug}/nodes/{nodeId}/token HTTP/1.1
Host:
Accept: */*
No content
Request must include the teamSlug in URL, and node's name in body.
Node details modified.
No content
Bad request for node details.
Unauthorized request for node details.
POST /api/{teamSlug}/nodes/{nodeId}/update HTTP/1.1
Host:
Accept: */*
No content
Request must include teamSlug in URL, and its body must include skip, take, and dates of from and to. Response should include an array of items: createdAt date, event, and data.
Paginated list of the audit log.
Bad request for audit log.
Unauthorized request for audit log.
Audit log not found.
GET /api/{teamSlug}/nodes/{nodeId}/audit?skip=1&take=1&from=2025-10-28T04%3A25%3A58.018Z&to=2025-10-28T04%3A25%3A58.018Z HTTP/1.1
Host:
Accept: */*
{
"items": [
{
"createdAt": "2025-10-28T04:25:58.018Z",
"event": "text",
"data": {}
}
],
"total": 1
}Request must include nodeId, prefix, and name.
Container started.
No content
Bad request for container starting.
Unauthorized request for container starting.
POST /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers/{name}/start HTTP/1.1
Host:
Accept: */*
No content
Request must include nodeId, prefix, and name.
Container stopped.
No content
Bad request for container stopping.
Unauthorized request for container stopping.
POST /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers/{name}/stop HTTP/1.1
Host:
Accept: */*
No content
Request must include nodeId, prefix, and name.
Container restarted.
No content
Bad request for container restarting.
Unauthorized request for container restarting.
POST /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers/{name}/restart HTTP/1.1
Host:
Accept: */*
No content
Request must include nodeId, and prefix.
Containers deleted.
No content
Unauthorized request for container delete.
Container not found.
DELETE /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers HTTP/1.1
Host:
Accept: */*
No content
Request must include nodeId, prefix, and name.
Container deleted.
No content
Unauthorized request for container delete.
Container not found.
DELETE /api/{teamSlug}/nodes/{nodeId}/{prefix}/containers/{name} HTTP/1.1
Host:
Accept: */*
No content
Request must include nodeId and prefix. Response should include id, command, createdAt, state, status, imageName, imageTag and ports of images.
Fetch data of containers running on a node.
Unauthorized request for containers.
GET /api/{teamSlug}/nodes/{nodeId}/containers?prefix=text HTTP/1.1
Host:
Accept: */*
[
{
"state": "running",
"id": {
"prefix": "text",
"name": "text"
},
"command": "text",
"createdAt": "2025-10-28T04:25:58.018Z",
"reason": "text",
"imageName": "text",
"imageTag": "text",
"ports": [
{
"internal": 1,
"external": 1
}
]
}
]Request must include nodeId, and the name of the container.
Container started.
No content
Bad request for container starting.
Unauthorized request for container starting.
POST /api/{teamSlug}/nodes/{nodeId}/containers/{name}/start HTTP/1.1
Host:
Accept: */*
No content
Request must include nodeId, and the name of the container.
Container stopped.
No content
Bad request for container stopping.
Unauthorized request for container stopping.
POST /api/{teamSlug}/nodes/{nodeId}/containers/{name}/stop HTTP/1.1
Host:
Accept: */*
No content
Request must include nodeId, and the name of the container.
Container restarted.
No content
Bad request for container restarting.
Unauthorized request for container restarting.
POST /api/{teamSlug}/nodes/{nodeId}/containers/{name}/restart HTTP/1.1
Host:
Accept: */*
No content
Request must include nodeId, and the name of the container.
Container deleted.
No content
Unauthorized request for container delete.
Container not found.
DELETE /api/{teamSlug}/nodes/{nodeId}/containers/{name} HTTP/1.1
Host:
Accept: */*
No content
Audit log
Audit log is a log of team activity generated by the platform.
Request must include skip, take, and dates of from and to. Response should include an array of items: createdAt date, userId, email, serviceCall, and data.
Paginated list of the audit log.
Unauthorized request for audit logs.
GET /api/{teamSlug}/audit-log?skip=1&take=1&from=2025-10-28T04%3A25%3A58.018Z&to=2025-10-28T04%3A25%3A58.018Z HTTP/1.1
Host:
Accept: */*
{
"items": [
{
"actorType": "get",
"context": "http",
"method": "get",
"createdAt": "2025-10-28T04:25:58.018Z",
"user": {
"id": "text",
"email": "text"
},
"name": "text",
"event": "text",
"data": {}
}
],
"total": 1
}Health
Health refers to the status of the different services that make up the platform. It can be checked to see if the platform works properly.
Response should include status, version of the platform and lastMigration of database.
Service status.
GET /api/health HTTP/1.1
Host:
Accept: */*
Service status.
{
"status": {},
"version": "text",
"lastMigration": "text"
}Notifications
Notifications are chat notifications in Slack, Discord, and Teams. They send an automated message about deployments, new versions, new nodes, and new users. More details here.
Response should include teamSlug in the URL, type, id, name, url, active, and creatorName in the body.
Notifications listed.
Unauthorized request for notifications.
GET /api/{teamSlug}/notifications HTTP/1.1
Host:
Accept: */*
[
{
"type": "discord",
"id": "text",
"name": "text",
"url": "text",
"active": true,
"creatorName": "text"
}
]Request must include teamSlug in the URL, type, enabledEvents, id, name, url, and active in the body. Response should list type, enabledEvents, id, name, url, active, and creatorName.
New notification created.
Bad request for a notification.
Unauthorized request for a notification.
Notification name taken.
POST /api/{teamSlug}/notifications HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 98
{
"type": "discord",
"enabledEvents": [
"deployment-created"
],
"name": "text",
"url": "text",
"active": true
}{
"type": "discord",
"enabledEvents": [
"deployment-created"
],
"id": "text",
"name": "text",
"url": "text",
"active": true,
"creatorName": "text"
}Request must include teamSlug and notificationId parameters in URL. Response should include type, enabledEvents, id, name, url, active, and creatorName.
Details of notification listed.
Bad request for notification details.
Unauthorized request for notification details.
Notification not found.
GET /api/{teamSlug}/notifications/{notificationId} HTTP/1.1
Host:
Accept: */*
{
"type": "discord",
"enabledEvents": [
"deployment-created"
],
"id": "text",
"name": "text",
"url": "text",
"active": true,
"creatorName": "text"
}Request must include teamSlug in the URL, type, enabledEvents, id, name, url, and active in the body. Response should include type, enabledEvents, id, name, url, active, and creatorName.
Notification modified.
Bad request for a notification.
Unauthorized request for a notification.
Notification not found.
Notification name taken.
PUT /api/{teamSlug}/notifications/{notificationId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 98
{
"type": "discord",
"enabledEvents": [
"deployment-created"
],
"name": "text",
"url": "text",
"active": true
}{
"type": "discord",
"enabledEvents": [
"deployment-created"
],
"id": "text",
"name": "text",
"url": "text",
"active": true,
"creatorName": "text"
}Request must include teamSlug and notificationId in URL.
Notification deleted.
No content
Unauthorized request for notification delete.
Notification not found.
DELETE /api/{teamSlug}/notifications/{notificationId} HTTP/1.1
Host:
Accept: */*
No content
Request must include teamSlug and notificationId in URL.
Test message sent.
No content
Bad request for a test message.
Unauthorized request for a test message.
POST /api/{teamSlug}/notifications/{notificationId}/test HTTP/1.1
Host:
Accept: */*
No content
Templates
Templates are preset applications that can be turned into a project right away. They can be deployed with minimal configuration. More details about templates here.
Response should include id, name, description and technologies of templates.
Templates listed.
Unauthorized request for templates.
GET /api/templates HTTP/1.1
Host:
Accept: */*
[
{
"id": "text",
"name": "text",
"description": "text",
"technologies": [
"text"
]
}
]Request must include type, id, and name. Response should include id, name, description, type, and audit log details of templates.
New project created.
Bad request for project creation.
Unauthorized request for project creation.
Project name taken.
POST /api/templates HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 87
{
"type": "versionless",
"id": "text",
"teamSlug": "text",
"name": "text",
"description": "text"
}{
"type": "versionless",
"description": "text",
"audit": {
"createdAt": "2025-10-28T04:25:58.018Z",
"createdBy": "text",
"updatedAt": "2025-10-28T04:25:58.018Z",
"updatedBy": "text"
},
"id": "text",
"name": "text"
}Request must include templateId.
Retrieve data of an image of a template.
No content
Bad request for template images.
Unauthorized request for template images.
Template images not found.
GET /api/templates/{templateId}/image HTTP/1.1
Host:
Accept: */*
No content
Dashboard
Dashboard summarizes the latest activities of a team.
teamSlug is required in URL. Response should include users, number of auditLogEntries, projects, versions, deployments, failedDeployments, details of nodes, latestDeployments and auditLog entries.
Dashboard data listed.
Unauthorized request for the dashboard.
GET /api/{teamSlug}/dashboard HTTP/1.1
Host:
Accept: */*
{
"users": 1,
"auditLog": 1,
"projects": 1,
"versions": 1,
"deployments": 1,
"failedDeployments": 1,
"onboarding": {
"signUp": {
"done": true,
"resourceId": "text"
},
"createTeam": {
"done": true,
"resourceId": "text"
},
"createNode": {
"done": true,
"resourceId": "text"
},
"createProject": {
"done": true,
"resourceId": "text"
},
"createVersion": {
"done": true,
"resourceId": "text"
},
"addImages": {
"done": true,
"resourceId": "text"
},
"addDeployment": {
"done": true,
"resourceId": "text"
},
"deploy": {
"done": true,
"resourceId": "text"
}
}
}Storages
Storages are S3 compatible memory storages. They can be used for file injection. More details here.
Response should include description, icon, url, id, and name. teamSlug is required in URL.
List of storages.
Unauthorized request for storages.
GET /api/{teamSlug}/storages HTTP/1.1
Host:
Accept: */*
[
{
"description": "text",
"icon": "text",
"url": "text",
"id": "text",
"name": "text"
}
]Creates a new storage. Request must include teamSlug in URL, body is required to include name, and url. Request body may include description, icon, accesKey, and secretKey. Response should include description, icon, url, id, name, accessKey, secretKey, and inUse.
New storage created.
Bad request for storage creation.
Unauthorized request for storage creation.
Storage name taken.
POST /api/{teamSlug}/storages HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 101
{
"name": "text",
"description": "text",
"icon": "text",
"url": "text",
"accessKey": "text",
"secretKey": "text"
}{
"description": "text",
"icon": "text",
"url": "text",
"id": "text",
"name": "text",
"accessKey": "text",
"secretKey": "text",
"inUse": true
}Response should include id, and name. teamSlug is required in URL.
Name and ID of storage options listed.
Bad request for storage options.
Unauthorized request for storage options.
Storage options not found.
GET /api/{teamSlug}/storages/options HTTP/1.1
Host:
Accept: */*
[
{
"id": "text",
"name": "text"
}
]Get the details of a storage. Request must include teamSlug and storageId in URL. Response should include description, icon, url, id, name, accessKey, secretKey, and inUse.
Storage details.
Bad request for storage details.
Unauthorized request for storage details.
Storage not found.
GET /api/{teamSlug}/storages/{storageId} HTTP/1.1
Host:
Accept: */*
{
"description": "text",
"icon": "text",
"url": "text",
"id": "text",
"name": "text",
"accessKey": "text",
"secretKey": "text",
"inUse": true
}Updates a storage. Request must include teamSlugand storageId in URL. name, and url must be included in body. Request body may include description, icon, accesKey, and secretKey.
Storage updated.
No content
Bad request for storage update.
Unauthorized request for storage update.
Storage not found.
Storage name taken.
PUT /api/{teamSlug}/storages/{storageId} HTTP/1.1
Host:
Content-Type: application/json
Accept: */*
Content-Length: 101
{
"name": "text",
"description": "text",
"icon": "text",
"url": "text",
"accessKey": "text",
"secretKey": "text"
}No content
Deletes a storage. Request must include teamSlug and storageId in URL.
Storage deleted.
No content
Unauthorized request for storage delete.
Storage not found.
DELETE /api/{teamSlug}/storages/{storageId} HTTP/1.1
Host:
Accept: */*
No content
Last updated