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-08-15T19:57:04.366Z",
"updatedAt": "2025-08-15T19:57:04.366Z"
}
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-08-15T19:57:04.366Z",
"updatedAt": "2025-08-15T19:57:04.366Z"
}
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.
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.
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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"updatedBy": "text"
},
"changelog": "text",
"default": true,
"increasable": true,
"id": "text",
"name": "text"
}
],
"audit": {
"createdAt": "2025-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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.
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.
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.
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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"registry": {
"type": "v2",
"id": "text",
"name": "text"
}
}
],
"deployments": [
{
"status": "preparing",
"note": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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.
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.
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.
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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"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.
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.
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.
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-08-15T19:57:04.366Z",
"id": "text",
"name": "text"
}
]
}
Request must include teamId
and name
. Admin access required for a successful request.
Team name modified.
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
, 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-08-15T19:57:04.366Z",
"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.
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.
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.
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.
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"
}
]
}
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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"expiresAt": "2025-08-15T19:57:04.366Z"
}
}
Request must include teamSlug
and deploymentId
in the URL.
Deployment deleted.
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.
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-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"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.
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.
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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"expiresAt": "2025-08-15T19:57:04.366Z",
"token": "text",
"curl": "text"
}
Request must include teamSlug
and deploymentId
in the URL.
Deployment token deleted.
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-08-15T19:57:04.366Z",
"createdAt": "2025-08-15T19:57:04.366Z"
}
]
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-08-15T19:57:04.366Z",
"createdAt": "2025-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"createdAt": "2025-08-15T19:57:04.366Z"
}
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-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"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-08-15T19:57:04.366Z",
"version": "text",
"updating": true,
"id": "text",
"name": "text",
"hasToken": true,
"install": {
"command": "text",
"script": "text",
"expireAt": "2025-08-15T19:57:04.366Z"
},
"inUse": true
}
Request must include the teamSlug
in URL, and node's name
in body, body can include description
and icon
.
Node details modified.
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.
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: */*
text
Request 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-08-15T19:57:04.366Z"
}
Request must include the teamSlug
in URL, and node's name
in body.
Agent install script deleted.
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.
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.
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-08-15T19%3A57%3A04.366Z&to=2025-08-15T19%3A57%3A04.366Z HTTP/1.1
Host:
Accept: */*
{
"items": [
{
"createdAt": "2025-08-15T19:57:04.366Z",
"event": "text",
"data": {}
}
],
"total": 1
}
Request must include nodeId
, prefix
, and name
.
Container started.
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.
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.
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.
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.
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-08-15T19:57:04.366Z",
"reason": "text",
"imageName": "text",
"imageTag": "text",
"ports": [
{
"internal": 1,
"external": 1
}
]
}
]
Request must include nodeId
, and the name
of the container.
Container started.
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.
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.
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.
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-08-15T19%3A57%3A04.366Z&to=2025-08-15T19%3A57%3A04.366Z HTTP/1.1
Host:
Accept: */*
{
"items": [
{
"actorType": "get",
"context": "http",
"method": "get",
"createdAt": "2025-08-15T19:57:04.366Z",
"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.
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.
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.
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-08-15T19:57:04.366Z",
"createdBy": "text",
"updatedAt": "2025-08-15T19:57:04.366Z",
"updatedBy": "text"
},
"id": "text",
"name": "text"
}
Request must include templateId
.
Retrieve data of an image of a template.
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 teamSlug
and storageId
in URL. name
, and url
must be included in body. Request body may include description
, icon
, accesKey
, and secretKey
.
Storage updated.
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.
Unauthorized request for storage delete.
Storage not found.
DELETE /api/{teamSlug}/storages/{storageId} HTTP/1.1
Host:
Accept: */*
No content
Last updated