OpenAPI spec at /api/docs with a Scalar viewer, opt-in via FEAT_API_DOCS
This commit is contained in:
6 files changed
+300
-14
No files matched your search
@@ -7329,7 +7329,30 @@
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"description": "Send `multipart/form-data` with one or more `files` parts; each file is tar-wrapped and written into the target directory. Partial success is reported per file in `uploaded`/`errors`."
|
||||
"description": "Send `multipart/form-data` with one or more `files` parts; each file is tar-wrapped and written into the target directory. Partial success is reported per file in `uploaded`/`errors`.",
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"multipart/form-data": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"files": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "binary"
|
||||
},
|
||||
"description": "One or more files to write into the target directory"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"files"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/containers/{id}/inspect": {
|
||||
@@ -15491,7 +15514,19 @@
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"description": "The request body is the raw image tar (Content-Type application/x-tar), streamed straight to the daemon without buffering. Local/socket or direct TCP only; Hawser is rejected."
|
||||
"description": "The request body is the raw image tar (Content-Type application/x-tar), streamed straight to the daemon without buffering. Local/socket or direct TCP only; Hawser is rejected.",
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/x-tar": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "binary",
|
||||
"description": "The raw image tar, streamed to the daemon (docker load)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/images/pull": {
|
||||
@@ -24994,6 +25029,175 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/stacks/{name}/validate": {
|
||||
"post": {
|
||||
"operationId": "post_api_stacks_name_validate",
|
||||
"tags": [
|
||||
"stacks"
|
||||
],
|
||||
"summary": "Run the Compose Validate preflight linter on a compose file and return findings with severities and line numbers (requires the 'view' permission)",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "name",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Stack name (used to exclude the stack's own containers from cross-stack collision checks)"
|
||||
},
|
||||
{
|
||||
"name": "env",
|
||||
"in": "query",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "integer"
|
||||
},
|
||||
"description": "Environment ID for the context-aware checks (from GET /api/environments)"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Successful response",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"findings": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"ruleId": {
|
||||
"type": "string"
|
||||
},
|
||||
"severity": {
|
||||
"type": "string"
|
||||
},
|
||||
"message": {
|
||||
"type": "string"
|
||||
},
|
||||
"hint": {
|
||||
"type": "string"
|
||||
},
|
||||
"service": {
|
||||
"type": "string"
|
||||
},
|
||||
"line": {
|
||||
"type": "integer"
|
||||
},
|
||||
"fix": {
|
||||
"type": "string"
|
||||
},
|
||||
"fixDescription": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ruleId",
|
||||
"severity",
|
||||
"message"
|
||||
]
|
||||
}
|
||||
},
|
||||
"counts": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"error": {
|
||||
"type": "integer"
|
||||
},
|
||||
"warn": {
|
||||
"type": "integer"
|
||||
},
|
||||
"info": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"error",
|
||||
"warn",
|
||||
"info"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"findings",
|
||||
"counts"
|
||||
]
|
||||
},
|
||||
"example": {
|
||||
"findings": [
|
||||
{
|
||||
"ruleId": "LATEST_TAG",
|
||||
"severity": "warn",
|
||||
"message": "\"web\" uses `:latest` (nginx:latest)",
|
||||
"hint": "Pin a version tag for reproducible deploys and to enable newer-version detection.",
|
||||
"service": "web",
|
||||
"line": 3
|
||||
}
|
||||
],
|
||||
"counts": {
|
||||
"error": 0,
|
||||
"warn": 1,
|
||||
"info": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "compose content is required"
|
||||
},
|
||||
"403": {
|
||||
"description": "Permission denied"
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"cookieAuth": []
|
||||
},
|
||||
{
|
||||
"bearerAuth": []
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"compose": {
|
||||
"type": "string"
|
||||
},
|
||||
"config": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"disabled": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"severity": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"compose"
|
||||
]
|
||||
},
|
||||
"example": {
|
||||
"compose": "services:\n web:\n image: nginx:latest\n ports: [\"8080:80\"]\n"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/stacks/adopt": {
|
||||
"post": {
|
||||
"operationId": "post_api_stacks_adopt",
|
||||
|
||||
@@ -90,6 +90,7 @@ function createTarArchive(filename: string, content: Uint8Array): Uint8Array {
|
||||
* @openapi
|
||||
* summary: Upload one or more files into a container directory (requires the 'exec' permission)
|
||||
* description: Send `multipart/form-data` with one or more `files` parts; each file is tar-wrapped and written into the target directory. Partial success is reported per file in `uploaded`/`errors`.
|
||||
* body-multipart: files:binary[]! One or more files to write into the target directory
|
||||
* path: id:string! Container ID or name (from GET /api/containers)
|
||||
* query: env:integer The target environment ID (omit for the local/default Docker host) (from GET /api/environments)
|
||||
* query: path:string! Absolute target directory inside the container
|
||||
|
||||
@@ -21,6 +21,7 @@ import type { RequestHandler } from './$types';
|
||||
* @openapi
|
||||
* summary: Load a Docker image from an uploaded tar (docker load) for air-gapped hosts
|
||||
* description: The request body is the raw image tar (Content-Type application/x-tar), streamed straight to the daemon without buffering. Local/socket or direct TCP only; Hawser is rejected.
|
||||
* body-raw: application/x-tar The raw image tar, streamed to the daemon (docker load)
|
||||
* query: env:integer Target environment id
|
||||
* resp-200: {success:boolean!, loaded:string}
|
||||
* resp-200-desc: loaded echoes the daemon's final line, e.g. "Loaded image: alpine:3.20"
|
||||
|
||||
Reference in new issue
Block a user