Get a Stack
GET/stacks/ {stackId}/
Request
- stackIdstring (uuid)required
ID of the Stack to be retrieved.
Responses
OK
- Schema documentation
- Example
- JSON Schema
- descriptionstringrequired
- disabledbooleanrequired
- idstring (uuid)required
- prefixstringrequired
Prefix for all service-names in this stack.
- projectIdstring (uuid)required
- servicesarray of object
A set of containers that should be started in this stack. The key is relevant for network connectivity between containers, because you can use it as DNS name to resolve this containers from other containers running in the same project (or from managed apps running in the same project). To delete an existing container from a stack using a
PUT
request, simply omit it from the request body. Using aPATCH
request, set it to an empty object{}
.- Array[
- *object
- deployedStateobjectrequired
The actual state of the container that is currently deployed.
- commandarray of string
The container command (equivalent to the Docker cmd). When omitted, this defaults to the command defined in the image.
- Array[
- *string
]
- entrypointarray of string
The container entrypoint (equivalent to the Docker entrypoint). When omitted, this defaults to the entrypoint defined in the image.
- Array[
- *string
]
- envsobject
Key-value map of environment variables that should be passed into the container.
- *string
- imagestringrequired
The image to run, in the usual format also used by
docker run
anddocker compose
. When the image is pulled from a private registry, make sure to create it first, using thecontainer-create-registry
endpoint. The appropriate registry is matched by hostname. - imageDigeststring
- portsarray of string
Exposed ports. Follows the format
<public-port>:<container-port>/<protocol>
. Exposed ports can be accessed from other containers (or managed apps) within the same project. To expose a port publicly, connect it with an ingress resource.- Array[
- *string
]
- volumesarray of string
Volume mounts for this container. These items always follow the format
<volume>:<mountpoint>
. The<volume>
may either be a named volume, or a file path in the (always present) project file system (which is shared among containers and managed apps within a project).- Array[
- *string
]
Message explaining the current state of the container. This may contain information about the current state of the container, or errors that occurred during deployment.
The desired state that is waiting to be reconciled.
- commandarray of string
The container command (equivalent to the Docker cmd). When omitted, this defaults to the command defined in the image.
- Array[
- *string
]
The container entrypoint (equivalent to the Docker entrypoint). When omitted, this defaults to the entrypoint defined in the image.
- Array[
- *string
Key-value map of environment variables that should be passed into the container.
- *string
The image to run, in the usual format also used by docker run
and docker compose
. When the image is pulled from a private registry, make sure to create it first, using the container-create-registry
endpoint. The appropriate registry is matched by hostname.
Exposed ports. Follows the format <public-port>:<container-port>/<protocol>
. Exposed ports can be accessed from other containers (or managed apps) within the same project. To expose a port publicly, connect it with an ingress resource.
- Array[
- *string
Volume mounts for this container. These items always follow the format <volume>:<mountpoint>
. The <volume>
may either be a named volume, or a file path in the (always present) project file system (which is shared among containers and managed apps within a project).
- Array[
- *string
A short ID of the container. This is a unique identifier for the container within the project, and can be used to reference it in other API calls, or for SSH connections.
- Array[
- *object
- idstring (uuid)required
- namestringrequired
- orphanedbooleanrequired
Whether the Volume is attached to a Stack.
- stackIdstring (uuid)required
- storageUsageInBytesintegerrequired
- storageUsageInBytesSetAtstring (date-time)required
{
"description": "string",
"disabled": true,
"id": "f0f86186-0a5a-45b2-aa33-502777496347",
"prefix": "string",
"projectId": "f0f86186-0a5a-45b2-aa33-502777496347",
"services": [
{
"deployedState": {
"command": [
"mysqld"
],
"entrypoint": [
"docker-entrypoint.sh"
],
"envs": {
"MYSQL_DATABASE": "my_db",
"MYSQL_PASSWORD": "my_password",
"MYSQL_ROOT_PASSWORD": "my_root_password",
"MYSQL_USER": "my_user"
},
"image": "mysql:8.0",
"imageDigest": "string",
"ports": [
"3306:3306/tcp"
],
"volumes": [
"data:/var/lib/mysql",
"/home/p-XXXXX/html:/var/www"
]
},
"description": "MySQL DB",
"id": "f0f86186-0a5a-45b2-aa33-502777496347",
"message": "Container ready",
"pendingState": {
"command": [
"mysqld"
],
"entrypoint": [
"docker-entrypoint.sh"
],
"envs": {
"MYSQL_DATABASE": "my_db",
"MYSQL_PASSWORD": "my_password",
"MYSQL_ROOT_PASSWORD": "my_root_password",
"MYSQL_USER": "my_user"
},
"image": "mysql:8.0",
"imageDigest": "string",
"ports": [
"3306:3306/tcp"
],
"volumes": [
"data:/var/lib/mysql",
"/home/p-XXXXX/html:/var/www"
]
},
"serviceName": "mysql-db",
"shortId": "c-12e4u6",
"status": "running"
}
],
"volumes": [
{
"id": "f0f86186-0a5a-45b2-aa33-502777496347",
"name": "string",
"orphaned": true,
"stackId": "f0f86186-0a5a-45b2-aa33-502777496347",
"storageUsageInBytes": 123,
"storageUsageInBytesSetAt": "2025-04-26T19:24:44.178Z"
}
]
}
{
"properties": {
"description": {
"type": "string"
},
"disabled": {
"type": "boolean"
},
"id": {
"format": "uuid",
"type": "string"
},
"prefix": {
"description": "Prefix for all service-names in this stack.",
"type": "string"
},
"projectId": {
"format": "uuid",
"type": "string"
},
"services": {
"items": {
"properties": {
"deployedState": {
"description": "The actual state of the container that is currently deployed.\n",
"properties": {
"command": {
"items": {
"type": "string"
},
"type": "array",
"description": "The container command (equivalent to the [Docker cmd](https://docs.docker.com/reference/dockerfile/#cmd)). When omitted, this defaults to the command defined in the image.\n",
"example": [
"mysqld"
]
},
"entrypoint": {
"items": {
"type": "string"
},
"type": "array",
"description": "The container entrypoint (equivalent to the [Docker entrypoint](https://docs.docker.com/reference/dockerfile/#entrypoint)). When omitted, this defaults to the entrypoint defined in the image.\n",
"example": [
"docker-entrypoint.sh"
]
},
"envs": {
"additionalProperties": {
"type": "string"
},
"type": "object",
"description": "Key-value map of environment variables that should be passed into the container.\n",
"example": {
"MYSQL_DATABASE": "my_db",
"MYSQL_PASSWORD": "my_password",
"MYSQL_ROOT_PASSWORD": "my_root_password",
"MYSQL_USER": "my_user"
}
},
"image": {
"type": "string",
"description": "The image to run, in the usual format also used by `docker run` and `docker compose`. When the image is pulled from a private registry, make sure to create it first, using the `container-create-registry` endpoint. The appropriate registry is matched by hostname.\n",
"example": "mysql:8.0"
},
"imageDigest": {
"type": "string"
},
"ports": {
"items": {
"type": "string"
},
"type": "array",
"description": "Exposed ports. Follows the format `<public-port>:<container-port>/<protocol>`. Exposed ports can be accessed from other containers (or managed apps) within the same project. To expose a port publicly, connect it with an ingress resource.\n",
"example": [
"3306:3306/tcp"
]
},
"volumes": {
"items": {
"type": "string"
},
"type": "array",
"description": "Volume mounts for this container. These items always follow the format `<volume>:<mountpoint>`. The `<volume>` may either be a named volume, or a file path in the (always present) project file system (which is shared among containers and managed apps within a project).\n",
"example": [
"data:/var/lib/mysql",
"/home/p-XXXXX/html:/var/www"
]
}
},
"required": [
"image"
],
"type": "object"
},
"description": {
"example": "MySQL DB",
"type": "string"
},
"id": {
"format": "uuid",
"type": "string"
},
"message": {
"example": "Container ready",
"type": "string",
"description": "Message explaining the current state of the container. This may contain information about the current state of the container, or errors that occurred during deployment.\n"
},
"pendingState": {
"description": "The desired state that is waiting to be reconciled.\n",
"properties": {
"command": {
"items": {
"type": "string"
},
"type": "array",
"description": "The container command (equivalent to the [Docker cmd](https://docs.docker.com/reference/dockerfile/#cmd)). When omitted, this defaults to the command defined in the image.\n",
"example": [
"mysqld"
]
},
"entrypoint": {
"items": {
"type": "string"
},
"type": "array",
"description": "The container entrypoint (equivalent to the [Docker entrypoint](https://docs.docker.com/reference/dockerfile/#entrypoint)). When omitted, this defaults to the entrypoint defined in the image.\n",
"example": [
"docker-entrypoint.sh"
]
},
"envs": {
"additionalProperties": {
"type": "string"
},
"type": "object",
"description": "Key-value map of environment variables that should be passed into the container.\n",
"example": {
"MYSQL_DATABASE": "my_db",
"MYSQL_PASSWORD": "my_password",
"MYSQL_ROOT_PASSWORD": "my_root_password",
"MYSQL_USER": "my_user"
}
},
"image": {
"type": "string",
"description": "The image to run, in the usual format also used by `docker run` and `docker compose`. When the image is pulled from a private registry, make sure to create it first, using the `container-create-registry` endpoint. The appropriate registry is matched by hostname.\n",
"example": "mysql:8.0"
},
"imageDigest": {
"type": "string"
},
"ports": {
"items": {
"type": "string"
},
"type": "array",
"description": "Exposed ports. Follows the format `<public-port>:<container-port>/<protocol>`. Exposed ports can be accessed from other containers (or managed apps) within the same project. To expose a port publicly, connect it with an ingress resource.\n",
"example": [
"3306:3306/tcp"
]
},
"volumes": {
"items": {
"type": "string"
},
"type": "array",
"description": "Volume mounts for this container. These items always follow the format `<volume>:<mountpoint>`. The `<volume>` may either be a named volume, or a file path in the (always present) project file system (which is shared among containers and managed apps within a project).\n",
"example": [
"data:/var/lib/mysql",
"/home/p-XXXXX/html:/var/www"
]
}
},
"required": [
"image"
],
"type": "object"
},
"serviceName": {
"example": "mysql-db",
"type": "string"
},
"shortId": {
"example": "c-12e4u6",
"type": "string",
"description": "A short ID of the container. This is a unique identifier for the container within the project, and can be used to reference it in other API calls, or for SSH connections.\n"
},
"status": {
"enum": [
"running",
"stopped",
"restarting",
"error",
"creating",
"starting"
],
"type": "string"
}
},
"required": [
"id",
"stackId",
"projectId",
"description",
"serviceName",
"pendingState",
"deployedState",
"status",
"shortId"
],
"type": "object"
},
"type": "array",
"description": "A set of containers that should be started in this stack. The key is relevant for network connectivity between containers, because you can use it as DNS name to resolve this containers from other containers running in the same project (or from managed apps running in the same project).\nTo **delete** an existing container from a stack using a `PUT` request, simply omit it from the request body. Using a `PATCH` request, set it to an empty object `{}`.\n",
"x-example-key": "mysql"
},
"volumes": {
"items": {
"properties": {
"id": {
"format": "uuid",
"type": "string"
},
"name": {
"type": "string"
},
"orphaned": {
"description": "Whether the Volume is attached to a Stack.",
"type": "boolean"
},
"stackId": {
"format": "uuid",
"type": "string"
},
"storageUsageInBytes": {
"type": "integer"
},
"storageUsageInBytesSetAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"id",
"stackId",
"name",
"orphaned",
"storageUsageInBytes",
"storageUsageInBytesSetAt"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"id",
"projectId",
"description",
"disabled",
"prefix"
],
"type": "object"
}
Usage examples
- cURL
- JavaScript SDK
- PHP SDK
$ curl \
--fail \
--location \
-H "Authorization: Bearer $MITTWALD_API_TOKEN" \
https://api.mittwald.de/v2/stacks/f0f86186-0a5a-45b2-aa33-502777496347
import { MittwaldAPIV2Client } from "@mittwald/api-client";
import { assertStatus } from "@mittwald/api-client-commons";
const client = MittwaldAPIClient.newWithToken(process.env.MITTWALD_API_TOKEN);
const response = await client.container.getStack({
"stackId": "f0f86186-0a5a-45b2-aa33-502777496347"
});
assertStatus(response, 200);
use \Mittwald\ApiClient\Generated\V2\Clients\Container\GetStack\GetStackRequest;
$client = MittwaldAPIClient::newWithToken(getenv('MITTWALD_API_TOKEN'));
$request = (new GetStackRequest(
stackId: "f0f86186-0a5a-45b2-aa33-502777496347"
));
$response = $client->container()->getStack($request);
var_dump($response->getBody();