Skip to content

Santé ​

Les routes sont relatives à <PUBLIC_BASE_URL> ; les corps de requête et de réponse sont en JSON sauf mention contraire. L’authentification, les portées, la pagination et le format des erreurs sont décrits dans les guides de l’API REST.

GET /healthz ​

Vivacité

Répond sans toucher la base. Porte la marque, la version et le temps de fonctionnement.

Accès — Aucune authentification.

Réponses

200 — Vivant.

ChampTypeRequis
status"ok"oui
brandstringoui
versionstringoui
uptimeSecondsnumberoui
Schéma JSON
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 ​

Disponibilité

Vérifie la base et que chaque migration est appliquée. 503 avec les contrôles en échec sinon.

Accès — Aucune authentification.

Réponses

200 — Prête.

ChampTypeRequis
status"ready" | "not_ready"oui
checksobject[]oui
Schéma JSON
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 — Pas prête.

GET /api/v1/branding ​

La marque effective de l’instance

Publique : nom, logos, favicon, couleurs, texte de connexion — ce qu’un visiteur voit déjà à l’écran. Lue par la page de connexion avant toute session.

Accès — Aucune authentification.

Réponses

200 — La marque.

ChampTypeRequis
namestringoui
source"control_plane" | "environment"oui
logoobjectoui
faviconstring (uri) | nulloui
colorsobjectoui
supportUrlstring (uri) | nulloui
poweredBystring | nulloui
loginobjectoui
instanceobjectoui
Schéma JSON
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 ​

Ce document OpenAPI

La description OpenAPI 3.1 de l’instance, générée depuis les schémas réels des routes. ?lang=fr pour les textes en français.

Accès — Aucune authentification.

Paramètres

NomOùTypeRequis
langrequête"en" | "fr"non

Réponses

200 — Le document.

Type : object

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

400 — La requête ne respecte pas son schéma.