dyrector.io
  • Welcome 👋
  • Basics
    • Who is it for?
    • How it works
    • Components
    • Use cases
    • API
  • Tutorials
    • Getting started
    • Add your Node
    • Add your Registry
      • Add V2 Registry
      • Add Docker Hub Registry
      • Add GitHub Registry
      • Add GitLab Registry
      • Add Google Registry
      • Add Unchecked Registry
    • Create your Project
      • Create a versionless project
      • Create a versioned project
        • Create a Rolling Version
        • Create an Incremental Version
        • Add a version to your Versioned Project
    • Deploy your Project
    • Create Chat Notifications
    • Inject Files to a Container
  • Features
    • Core functionality
    • Templates
      • Vaultwarden
      • Strapi
      • Cal.com
      • WordPress
      • Minecraft Server
      • Google Microservices Demo
      • Self-managed GitLab
      • MLflow
      • Gitea
      • LinkAce
    • Continuous Deployment
    • Configuration management
      • Container configuration
      • Configuration bundle
    • Monitoring
    • Audit log
    • Storage
  • Self-managed
    • Quick start
    • CLI
    • Proxies
    • Environment variables
    • Self-signed certificates
  • Learn more
    • Changelog
    • Quality Assurance (QA)
    • Roadmap
      • Features in progress
      • Integrations in progress
    • Pricing
    • FAQ
      • Portainer vs. dyrector.io
    • Community
Powered by GitBook
On this page
Edit on GitHub
Export as PDF
  1. Basics

API

Last updated 1 year ago

Registries

Registries are 3rd party registries where the images of versions are located. Learn more about registries .

Projects

Versions

Versions belong to versioned projects. Versionless projects act similar to a rolling version of a versioned project.

Version/Images

Images make up a versioned project's version, or a versionless project.

Teams

Users/Me

Users/Me cover endpoints related to your user profile.

Deployments

Tokens

Tokens are the access tokens that grant you access to a user profile and the teams the profile is a member of.

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.

Audit log

Audit log is a log of team activity generated by the platform.

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

Templates

Dashboard

Dashboard summarizes the latest activities of a team.

Storages

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 .

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 .

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 .

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 .

Node installation takes place with Shell or PowerShell scripts, which can be created or revoked. More details .

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 .

Templates are preset applications that can be turned into a project right away. They can be deployed with minimal configuration. More details about templates .

Storages are S3 compatible memory storages. They can be used for file injection. More details .

here
here
here
here
here
here
here
here
here

Fetch data of registries.

get

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.

Path parameters
teamSlugstringRequired
Responses
200
Data of all registries within a team listed.
application/json
403
Unauthorized request for registries.
get
GET /api/{teamSlug}/registries HTTP/1.1
Host: 
Accept: */*
[
  {
    "type": "v2",
    "id": "text",
    "name": "text",
    "description": "text",
    "icon": "text",
    "url": "text"
  }
]

Fetch data of a registry.

get

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.

Path parameters
teamSlugstringRequired
registryIdstringRequired
Responses
200
Data of a registry listed.
application/json
400
Bad request for a registry.
403
Unauthorized request for a registry.
404
Registry not found.
get
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-05-23T18:12:35.907Z",
  "updatedAt": "2025-05-23T18:12:35.907Z"
}

Delete a registry from dyrector.io.

delete

Deletes a registry with the specified registryId. teamSlug and RegistryID are required in URL.

Path parameters
teamSlugstringRequired
registryIdstringRequired
Responses
204
Registry deleted.
403
Unauthorized request for registry delete.
404
Registry not found.
delete
DELETE /api/{teamSlug}/registries/{registryId} HTTP/1.1
Host: 
Accept: */*

No content

Fetch the projects list.

get

Returns a list of a team's projects and their details. teamSlug needs to be included in URL.

Path parameters
teamSlugstringRequired
Responses
200
List of projects.
application/json
403
Unauthorized request for projects.
get
GET /api/{teamSlug}/projects HTTP/1.1
Host: 
Accept: */*
[
  {
    "type": "versionless",
    "description": "text",
    "versionCount": 1,
    "audit": {
      "createdAt": "2025-05-23T18:12:35.907Z",
      "createdBy": "text",
      "updatedAt": "2025-05-23T18:12:35.907Z",
      "updatedBy": "text"
    },
    "id": "text",
    "name": "text"
  }
]

Fetch details of a project.

get

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.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Responses
200
Details of a project.
application/json
400
Bad request for project details.
403
Unauthorized request for project details.
404
Project not found.
get
GET /api/{teamSlug}/projects/{projectId} HTTP/1.1
Host: 
Accept: */*
{
  "type": "versionless",
  "description": "text",
  "deletable": true,
  "versions": [
    {
      "type": "incremental",
      "audit": {
        "createdAt": "2025-05-23T18:12:35.907Z",
        "createdBy": "text",
        "updatedAt": "2025-05-23T18:12:35.907Z",
        "updatedBy": "text"
      },
      "changelog": "text",
      "default": true,
      "increasable": true,
      "id": "text",
      "name": "text"
    }
  ],
  "audit": {
    "createdAt": "2025-05-23T18:12:35.907Z",
    "createdBy": "text",
    "updatedAt": "2025-05-23T18:12:35.907Z",
    "updatedBy": "text"
  },
  "id": "text",
  "name": "text"
}

Delete a project.

delete

Deletes a project with the specified projectId. teamSlug and ProjectID are required in URL.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Responses
204
Project deleted.
403
Unauthorized request for a project.
404
Project not found.
delete
DELETE /api/{teamSlug}/projects/{projectId} HTTP/1.1
Host: 
Accept: */*

No content

Convert a project to versioned.

post

Converts a project to versioned with the specified projectId. teamSlug and ProjectID are required in URL.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Responses
204
Project converted.
400
Bad request for project conversion.
403
Unauthorized request for project conversion.
post
POST /api/{teamSlug}/projects/{projectId}/convert HTTP/1.1
Host: 
Accept: */*

No content

Fetch the list of all the versions under a project.

get

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.

Path parameters
teamSlugstringRequired
projectIdstringRequired
Query parameters
nameContainsstringOptional
Responses
200
Returns an array with every versions of a project.
application/json
403
Unauthorized request for project versions.
get
GET /api/{teamSlug}/projects/{projectId}/versions HTTP/1.1
Host: 
Accept: */*
[
  {
    "type": "incremental",
    "audit": {
      "createdAt": "2025-05-23T18:12:35.907Z",
      "createdBy": "text",
      "updatedAt": "2025-05-23T18:12:35.907Z",
      "updatedBy": "text"
    },
    "changelog": "text",
    "default": true,
    "increasable": true,
    "id": "text",
    "name": "text"
  }
]

Retrieve the details of a version of a project.

get

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.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Responses
200
Details of a version under a project is fetched.
application/json
400
Bad request for version details.
403
Unauthorized request for version details.
404
Version not found.
get
GET /api/{teamSlug}/projects/{projectId}/versions/{versionId} HTTP/1.1
Host: 
Accept: */*
{
  "type": "incremental",
  "audit": {
    "createdAt": "2025-05-23T18:12:35.907Z",
    "createdBy": "text",
    "updatedAt": "2025-05-23T18:12:35.907Z",
    "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-05-23T18:12:35.907Z",
      "registry": {
        "type": "v2",
        "id": "text",
        "name": "text"
      }
    }
  ],
  "deployments": [
    {
      "status": "preparing",
      "note": "text",
      "updatedAt": "2025-05-23T18:12:35.907Z",
      "node": {
        "type": "docker",
        "status": "unreachable",
        "id": "text",
        "name": "text"
      },
      "id": "text",
      "prefix": "text"
    }
  ]
}

Delete a version.

delete

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.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Responses
204
Version deleted.
403
Unauthorized request for version delete.
404
Version not found.
delete
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.

put

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.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Responses
204
Version turned into default.
400
Bad request.
403
Unauthorized request for setting version as default.
404
Version not found.
put
PUT /api/{teamSlug}/projects/{projectId}/versions/{versionId}/default HTTP/1.1
Host: 
Accept: */*

No content

Fetch data of all images of a version.

get

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.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
Responses
200
Data of images listed.
application/json
403
Unauthorized request for images.
get
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-05-23T18:12:35.907Z",
    "registry": {
      "type": "v2",
      "id": "text",
      "name": "text"
    }
  }
]

Fetch data of an image of a version.

get

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.

Path parameters
teamSlugstringRequired
projectIdstringRequired
versionIdstringRequired
imageIdstringRequired
Responses
200
Data of an image.
application/json
400
Bad request for image details.
403
Unauthorized request for image details.
404
Image not found.
get
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": [
      {