System
Service discovery, health, diagnostics and updates.
14 endpoints · Plakar Control Plane v0.18 · Base URL, authentication and errors
Describe the deployment
/api/v1/
Response 200 OK application/json
-
enrolledboolean -
licenseobject nullable-
expires_atstring<date-time> -
identity_idstring<uuid> -
issued_atstring<date-time> -
modestring nullable -
organization_idstring<uuid> -
planstring -
quota_hardinteger<int64> -
quota_softinteger<int64>
-
-
namestring -
stored_bytesinteger nullableMax: 1.8446744073709552e+19 -
versionstring
Errors
- 400 Bad Request (validation or deserialization error)
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/'Response 200
{
"enrolled": true,
"license": {
"expires_at": "2026-01-01T00:00:00Z",
"identity_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"issued_at": "2026-01-01T00:00:00Z",
"mode": "string",
"organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"plan": "string",
"quota_hard": 0,
"quota_soft": 0
},
"name": "string",
"stored_bytes": 0,
"version": "string"
}Get the appliance hardware specs
/api/v1/appliance/specs
Response 200 OK application/json
-
cpuobject nullable-
countinteger -
modelstring nullable
-
-
dataobject-
free_bytesintegerMax: 1.8446744073709552e+19 -
fs_typestring -
persistentboolean -
size_bytesintegerMax: 1.8446744073709552e+19
-
-
disksarray[object] nullable-
modelstring nullable -
namestring -
size_bytesintegerMax: 1.8446744073709552e+19
-
-
memoryobject nullable-
available_bytesintegerMax: 1.8446744073709552e+19 -
total_bytesintegerMax: 1.8446744073709552e+19
-
-
warningsarray[string]
Errors
- 400 Bad Request (validation or deserialization error)
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/appliance/specs'Response 200
{
"cpu": {
"count": 0,
"model": "string"
},
"data": {
"free_bytes": 0,
"fs_type": "string",
"persistent": true,
"size_bytes": 0
},
"disks": [
{
"model": "string",
"name": "string",
"size_bytes": 0
}
],
"memory": {
"available_bytes": 0,
"total_bytes": 0
},
"warnings": [
"string"
]
}Download a database dump
/api/v1/database/dump
Query parameters
-
formatstringDump encoding.Allowed: sql, gzip, gz, zip Default: "sql"
Response 200 The database dump application/gzip
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/database/dump' \
-H 'Authorization: Bearer <badge>'Get the debug log state
/api/v1/debuglog
Response 200 OK application/json
-
enabledboolean
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/debuglog' \
-H 'Authorization: Bearer <badge>'Response 200
{
"enabled": true
}Turn the debug log on or off
/api/v1/debuglog
Request body application/json required
-
enabledboolean -
revert_after_secondsinteger
Response 200 OK application/json
-
enabledboolean
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X PUT 'https://pcp.example.com/api/v1/debuglog' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"enabled": true,
"revert_after_seconds": 0
}'Response 200
{
"enabled": true
}Check whether an update is available
/api/v1/has-update
Response 200 OK application/json
-
current_versionstring -
descriptionstring -
has_updateboolean -
next_versionstring
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/has-update' \
-H 'Authorization: Bearer <badge>'Response 200
{
"current_version": "string",
"description": "string",
"has_update": true,
"next_version": "string"
}Ping the control plane
/api/v1/janitor/ping
Response 200 OK application/json
-
pongboolean
Errors
- 400 Bad Request (validation or deserialization error)
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X POST 'https://pcp.example.com/api/v1/janitor/ping'Response 200
{
"pong": true
}Replace the instance license
/api/v1/license
Request body application/json required
-
licensestring required
Response 200 OK application/json
-
expires_atstring<date-time> -
identity_idstring<uuid> -
issued_atstring<date-time> -
modestring nullable -
organization_idstring<uuid> -
planstring -
quota_hardinteger<int64> -
quota_softinteger<int64>
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X PUT 'https://pcp.example.com/api/v1/license' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"license": "string"
}'Response 200
{
"expires_at": "2026-01-01T00:00:00Z",
"identity_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"issued_at": "2026-01-01T00:00:00Z",
"mode": "string",
"organization_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90",
"plan": "string",
"quota_hard": 0,
"quota_soft": 0
}Download the daemon log for a day
/api/v1/logs
Query parameters
-
datestring<date-time>Day whose log to return. Defaults to today.
Response 200 The gzipped daemon log application/gzip
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/logs' \
-H 'Authorization: Bearer <badge>'Get the safe mode state
/api/v1/safe-mode
Response 200 OK application/json
-
bystring nullable -
enabledboolean -
reasonstring nullable -
sincestring<date-time> nullable
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/api/v1/safe-mode' \
-H 'Authorization: Bearer <badge>'Response 200
{
"by": "string",
"enabled": true,
"reason": "string",
"since": "2026-01-01T00:00:00Z"
}Turn safe mode on or off
/api/v1/safe-mode
Request body application/json required
-
enabledboolean -
reasonstringMax length: 512
Response 200 OK application/json
-
bystring nullable -
enabledboolean -
reasonstring nullable -
sincestring<date-time> nullable
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X PUT 'https://pcp.example.com/api/v1/safe-mode' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"enabled": true,
"reason": "string"
}'Response 200
{
"by": "string",
"enabled": true,
"reason": "string",
"since": "2026-01-01T00:00:00Z"
}Update the control plane to the latest version
/api/v1/update
Request body application/json required
-
next_versionstring
Response 200 OK application/json
-
task_idstring<uuid>
Errors
- 400 Bad Request (validation or deserialization error)
- 401 Missing, invalid or expired credentials
- 403 The caller may not do this
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl -X POST 'https://pcp.example.com/api/v1/update' \
-H 'Authorization: Bearer <badge>' \
-H 'Content-Type: application/json' \
-d '{
"next_version": "string"
}'Response 200
{
"task_id": "3f1e4a2c-9b7d-4e0f-8a11-2c5d6e7f8a90"
}Check liveness
/health
Response 200 OK
No response body.
Errors
- 400 Bad Request (validation or deserialization error)
- 500 Internal Server Error (panics)
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/health'Check readiness
/health/ready
Response 200 Ready application/json
-
statusstring
Errors
- 400 Bad Request (validation or deserialization error)
- 500 Internal Server Error (panics)
- 503 Not ready
Every error returns the standard error body.
Request
curl 'https://pcp.example.com/health/ready'Response 200
{
"status": "string"
}