remove old instruction file
This commit is contained in:
@@ -1,346 +0,0 @@
|
||||
# Core API Specification
|
||||
|
||||
Expected API endpoints for the Tatlock UI Control Room feature.
|
||||
|
||||
**Base URL:** `http://{host}:8083` (configurable via `CORE_API_URL`)
|
||||
|
||||
---
|
||||
|
||||
## Containers
|
||||
|
||||
### List Containers
|
||||
|
||||
```
|
||||
GET /infrastructure/containers
|
||||
```
|
||||
|
||||
**Query Parameters:**
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `all` | boolean | `true` | Include stopped containers |
|
||||
|
||||
**Response:** `200 OK`
|
||||
```json
|
||||
[
|
||||
{
|
||||
"Id": "abc123def456...",
|
||||
"Names": ["/container-name"],
|
||||
"Image": "nginx:latest",
|
||||
"State": "running",
|
||||
"Status": "Up 2 hours",
|
||||
"Labels": {
|
||||
"com.docker.compose.project": "my-stack",
|
||||
"com.docker.compose.service": "web"
|
||||
},
|
||||
"Ports": [
|
||||
{
|
||||
"IP": "0.0.0.0",
|
||||
"PrivatePort": 80,
|
||||
"PublicPort": 8080,
|
||||
"Type": "tcp"
|
||||
}
|
||||
],
|
||||
"Mounts": [
|
||||
{
|
||||
"Type": "bind",
|
||||
"Source": "/host/path",
|
||||
"Destination": "/container/path",
|
||||
"Mode": "rw",
|
||||
"RW": true
|
||||
}
|
||||
],
|
||||
"NetworkSettings": {
|
||||
"Networks": {
|
||||
"bridge": {}
|
||||
}
|
||||
},
|
||||
"Created": 1704067200,
|
||||
"SizeRw": 12345,
|
||||
"SizeRootFs": 67890
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Get Container
|
||||
|
||||
```
|
||||
GET /infrastructure/containers/{id}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `id` | string | Full container ID |
|
||||
|
||||
**Response:** `200 OK`
|
||||
```json
|
||||
{
|
||||
"Id": "abc123def456...",
|
||||
"Names": ["/container-name"],
|
||||
"Image": "nginx:latest",
|
||||
"State": "running",
|
||||
"Status": "Up 2 hours",
|
||||
"Labels": {},
|
||||
"Ports": [],
|
||||
"Mounts": [],
|
||||
"NetworkSettings": {},
|
||||
"Created": 1704067200
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Container Actions
|
||||
|
||||
```
|
||||
POST /infrastructure/containers/{id}/{action}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `id` | string | Full container ID |
|
||||
| `action` | string | One of: `start`, `stop`, `restart` |
|
||||
|
||||
**Response:** `204 No Content`
|
||||
|
||||
---
|
||||
|
||||
### Get Container Logs
|
||||
|
||||
```
|
||||
GET /infrastructure/containers/{id}/logs
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `id` | string | Full container ID |
|
||||
|
||||
**Query Parameters:**
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `tail` | integer | (all) | Number of lines from end |
|
||||
| `timestamps` | boolean | `false` | Include timestamps |
|
||||
|
||||
**Response:** `200 OK`
|
||||
```
|
||||
Content-Type: text/plain
|
||||
|
||||
2024-01-01T12:00:00Z Log line 1
|
||||
2024-01-01T12:00:01Z Log line 2
|
||||
...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Delete Container
|
||||
|
||||
```
|
||||
DELETE /infrastructure/containers/{id}
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `id` | string | Full container ID |
|
||||
|
||||
**Query Parameters:**
|
||||
| Parameter | Type | Default | Description |
|
||||
|-----------|------|---------|-------------|
|
||||
| `force` | boolean | `false` | Force remove running container |
|
||||
|
||||
**Response:** `204 No Content`
|
||||
|
||||
---
|
||||
|
||||
## Stacks
|
||||
|
||||
Stacks are Docker Compose projects. The stack ID is the value of the `com.docker.compose.project` label on containers.
|
||||
|
||||
### Get Stack Compose YAML
|
||||
|
||||
```
|
||||
GET /infrastructure/stacks/{stackId}/compose
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `stackId` | string | Stack name (compose project name) |
|
||||
|
||||
**Response:** `200 OK`
|
||||
```
|
||||
Content-Type: text/yaml
|
||||
|
||||
version: '3.8'
|
||||
services:
|
||||
web:
|
||||
image: nginx:latest
|
||||
ports:
|
||||
- "8080:80"
|
||||
db:
|
||||
image: postgres:14
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Update Stack Compose YAML
|
||||
|
||||
```
|
||||
PUT /infrastructure/stacks/{stackId}/compose
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `stackId` | string | Stack name (compose project name) |
|
||||
|
||||
**Request Body:**
|
||||
```
|
||||
Content-Type: text/yaml
|
||||
|
||||
version: '3.8'
|
||||
services:
|
||||
web:
|
||||
image: nginx:latest
|
||||
...
|
||||
```
|
||||
|
||||
**Response:** `204 No Content`
|
||||
|
||||
---
|
||||
|
||||
### Get Stack Environment Variables
|
||||
|
||||
```
|
||||
GET /infrastructure/stacks/{stackId}/env
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `stackId` | string | Stack name (compose project name) |
|
||||
|
||||
**Response:** `200 OK`
|
||||
```json
|
||||
{
|
||||
"DB_PASSWORD": "secret123",
|
||||
"API_KEY": "abc-def-ghi",
|
||||
"DEBUG": "false"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Update Stack Environment Variables
|
||||
|
||||
```
|
||||
PUT /infrastructure/stacks/{stackId}/env
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `stackId` | string | Stack name (compose project name) |
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"DB_PASSWORD": "new-secret",
|
||||
"API_KEY": "new-key",
|
||||
"DEBUG": "true"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:** `204 No Content`
|
||||
|
||||
---
|
||||
|
||||
### Deploy Stack
|
||||
|
||||
Redeploys the stack with current YAML and environment variables.
|
||||
|
||||
```
|
||||
POST /infrastructure/stacks/{stackId}/deploy
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `stackId` | string | Stack name (compose project name) |
|
||||
|
||||
**Response:** `202 Accepted`
|
||||
|
||||
---
|
||||
|
||||
### Rebuild Stack
|
||||
|
||||
Pulls fresh images and recreates all containers in the stack.
|
||||
|
||||
```
|
||||
POST /infrastructure/stacks/{stackId}/rebuild
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
| Parameter | Type | Description |
|
||||
|-----------|------|-------------|
|
||||
| `stackId` | string | Stack name (compose project name) |
|
||||
|
||||
**Response:** `202 Accepted`
|
||||
|
||||
---
|
||||
|
||||
## Data Types Reference
|
||||
|
||||
### Container States
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `created` | Container created but not started |
|
||||
| `running` | Container is running |
|
||||
| `paused` | Container is paused |
|
||||
| `restarting` | Container is restarting |
|
||||
| `removing` | Container is being removed |
|
||||
| `exited` | Container has exited |
|
||||
| `dead` | Container is dead |
|
||||
|
||||
### Port Types
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `tcp` | TCP port |
|
||||
| `udp` | UDP port |
|
||||
|
||||
### Mount Types
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `bind` | Bind mount from host |
|
||||
| `volume` | Docker volume |
|
||||
| `tmpfs` | Temporary filesystem |
|
||||
|
||||
---
|
||||
|
||||
## Error Responses
|
||||
|
||||
All endpoints return standard HTTP error codes:
|
||||
|
||||
| Code | Description |
|
||||
|------|-------------|
|
||||
| `400` | Bad Request - Invalid parameters |
|
||||
| `404` | Not Found - Container/Stack not found |
|
||||
| `409` | Conflict - Container already in requested state |
|
||||
| `500` | Internal Server Error |
|
||||
|
||||
**Error Body:**
|
||||
```json
|
||||
{
|
||||
"error": "Container not found",
|
||||
"code": "NOT_FOUND"
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user