Skip to content

Health ​

Routes are relative to <PUBLIC_BASE_URL>; request and response bodies are JSON unless stated otherwise. Authentication, scopes, pagination and the error format are described in the REST API guides.

GET /healthz ​

Liveness

Answers without touching the database. Carries the brand, the version and the uptime.

Access — No authentication.

Responses

200 — Alive.

FieldTypeRequired
status"ok"yes
brandstringyes
versionstringyes
uptimeSecondsnumberyes
JSON Schema
json
{
  "type": "object",
  "properties": {
    "status": { "type": "string", "const": "ok" },
    "brand": { "type": "string", "minLength": 1 },
    "version": { "type": "string" },
    "uptimeSeconds": { "type": "number", "minimum": 0 }
  },
  "required": [ "status", "brand", "version", "uptimeSeconds" ],
  "additionalProperties": false
}

GET /readyz ​

Readiness

Checks the database and that every migration is applied. 503 with the failing checks otherwise.

Access — No authentication.

Responses

200 — Ready.

FieldTypeRequired
status"ready" | "not_ready"yes
checksobject[]yes
JSON Schema
json
{
  "type": "object",
  "properties": {
    "status": { "type": "string", "enum": [ "ready", "not_ready" ] },
    "checks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": { "type": "string", "enum": [ "database", "migrations" ] },
          "ok": { "type": "boolean" },
          "detail": { "type": "string" }
        },
        "required": [ "name", "ok" ],
        "additionalProperties": false
      }
    }
  },
  "required": [ "status", "checks" ],
  "additionalProperties": false
}

503 — Not ready.

GET /api/v1/branding ​

The effective brand of the instance

Public: name, logos, favicon, colours, sign-in text — what a visitor already sees on screen. Read by the sign-in page before any session.

Access — No authentication.

Responses

200 — The brand.

FieldTypeRequired
namestringyes
source"control_plane" | "environment"yes
logoobjectyes
faviconstring (uri) | nullyes
colorsobjectyes
supportUrlstring (uri) | nullyes
poweredBystring | nullyes
loginobjectyes
instanceobjectyes
JSON Schema
json
{
  "type": "object",
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "source": { "type": "string", "enum": [ "control_plane", "environment" ] },
    "logo": {
      "type": "object",
      "properties": {
        "light": {
          "anyOf": [ { "type": "string", "format": "uri" }, { "type": "null" } ]
        },
        "dark": {
          "anyOf": [ { "type": "string", "format": "uri" }, { "type": "null" } ]
        }
      },
      "required": [ "light", "dark" ],
      "additionalProperties": false
    },
    "favicon": { "anyOf": [ { "type": "string", "format": "uri" }, { "type": "null" } ] },
    "colors": {
      "type": "object",
      "properties": {
        "primary": {
          "anyOf": [
            { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" },
            { "type": "null" }
          ]
        },
        "onPrimary": {
          "anyOf": [
            { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" },
            { "type": "null" }
          ]
        },
        "accent": {
          "anyOf": [
            { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" },
            { "type": "null" }
          ]
        },
        "onAccent": {
          "anyOf": [
            { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" },
            { "type": "null" }
          ]
        }
      },
      "required": [ "primary", "onPrimary", "accent", "onAccent" ],
      "additionalProperties": false
    },
    "supportUrl": { "anyOf": [ { "type": "string", "format": "uri" }, { "type": "null" } ] },
    "poweredBy": { "anyOf": [ { "type": "string" }, { "type": "null" } ] },
    "login": {
      "type": "object",
      "properties": {
        "welcome": {
          "anyOf": [
            {
              "type": "object",
              "properties": { "en": { "type": "string" }, "fr": { "type": "string" } },
              "additionalProperties": false
            },
            { "type": "null" }
          ]
        },
        "image": {
          "anyOf": [ { "type": "string", "format": "uri" }, { "type": "null" } ]
        }
      },
      "required": [ "welcome", "image" ],
      "additionalProperties": false
    },
    "instance": {
      "type": "object",
      "properties": { "suspended": { "type": "boolean" } },
      "required": [ "suspended" ],
      "additionalProperties": false
    }
  },
  "required": [
    "name",
    "source",
    "logo",
    "favicon",
    "colors",
    "supportUrl",
    "poweredBy",
    "login",
    "instance"
  ],
  "additionalProperties": false
}

GET /api/v1/openapi.json ​

This OpenAPI document

The OpenAPI 3.1 description of the instance, generated from the real route schemas. ?lang=fr for French texts.

Access — No authentication.

Parameters

NameInTypeRequired
langquery"en" | "fr"no

Responses

200 — The document.

Type : object

json
{
  "type": "object",
  "propertyNames": { "type": "string" },
  "additionalProperties": {}
}

400 — The request does not match its schema.