Référence API
API : meta
1 opérations REST du groupe meta.
GET /meta#
Bootstrap metadata-driven de l'instance (ADR-104)
Sans Authorization : méta PUBLIQUE (identité visuelle du login + contrat de version) - aucune donnée métier, pas de liste de modules. Avec un Bearer valide (session utilisateur §2bis ou token d'app) : méta COMPLÈTE (modules actifs, branding et labels runtime, capacités, entités). Un Bearer invalide répond 401 - jamais de dégradation silencieuse vers la forme publique.
Scopes d'app : voir sécurité de l’opération. Les autres droits, périmètres et contrôles métier restent applicables.
Aucun corps de requête déclaré dans ce contrat.
Réponses
200 : Méta publique (anonyme) ou complète (authentifié)
Contenu de la réponse 200
{
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Nom de l'instance (productName)"
},
"version": {
"type": "string",
"description": "Version produit de l'instance (semver ADR-097)"
},
"minAppVersion": {
"type": "string",
"description": "Version minimale de l'app mobile supportée - l'app compare et dégrade explicitement"
},
"logo": {
"type": "string"
},
"logoOnBrand": {
"type": "string"
},
"colors": {
"type": "object",
"properties": {
"primary": {
"type": "string"
},
"primaryAccent": {
"type": "string"
},
"soft": {
"type": "string"
},
"dark": {
"type": "string"
},
"background": {
"type": "string"
}
},
"required": [
"primary",
"primaryAccent",
"soft",
"dark",
"background"
],
"additionalProperties": false
},
"sso": {
"type": "array",
"items": {
"type": "string",
"enum": [
"google",
"microsoft"
]
},
"description": "Providers SSO actifs sur l'instance (T-762) - le login n'affiche que ceux-là"
},
"auth": {
"type": "object",
"properties": {
"loginUrl": {
"type": "string",
"description": "Entrée de la connexion mobile par le navigateur système (T-1020, ADR-141 D5) : GET <loginUrl>?redirect=<scheme de retour de l'app> ; au retour, POST /api/auth/handoff/mobile { token }"
}
},
"required": [
"loginUrl"
],
"additionalProperties": false,
"description": "Connexion de l'app : aucun mot de passe, passkey ou code d'application dans le navigateur système"
}
},
"required": [
"name",
"version",
"minAppVersion",
"logo",
"logoOnBrand",
"colors",
"sso",
"auth"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Nom de l'instance (productName)"
},
"version": {
"type": "string",
"description": "Version produit de l'instance (semver ADR-097)"
},
"minAppVersion": {
"type": "string",
"description": "Version minimale de l'app mobile supportée - l'app compare et dégrade explicitement"
},
"logo": {
"type": "string"
},
"logoOnBrand": {
"type": "string"
},
"colors": {
"type": "object",
"properties": {
"primary": {
"type": "string"
},
"primaryAccent": {
"type": "string"
},
"soft": {
"type": "string"
},
"dark": {
"type": "string"
},
"background": {
"type": "string"
}
},
"required": [
"primary",
"primaryAccent",
"soft",
"dark",
"background"
],
"additionalProperties": false
},
"sso": {
"type": "array",
"items": {
"type": "string",
"enum": [
"google",
"microsoft"
]
},
"description": "Providers SSO actifs sur l'instance (T-762) - le login n'affiche que ceux-là"
},
"auth": {
"type": "object",
"properties": {
"loginUrl": {
"type": "string"
},
"loginMethod": {
"anyOf": [
{
"type": "string",
"enum": [
"passkey",
"passkey_or_totp"
]
},
{
"type": "null"
}
],
"description": "Méthode de connexion du compte (T-1017, ADR-141 D3) : passkey (défaut) ou passkey_or_totp (mode élargi posé par un admin - l'app propose alors la gestion du code d'application). Null pour une app connectée."
}
},
"required": [
"loginUrl",
"loginMethod"
],
"additionalProperties": false
},
"logoCompact": {
"type": "string"
},
"locale": {
"type": "string"
},
"currency": {
"type": "string"
},
"labels": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"singular": {
"type": "string"
},
"plural": {
"type": "string"
},
"all": {
"type": "string"
},
"create": {
"type": "string"
}
},
"required": [
"singular",
"plural"
],
"additionalProperties": false
},
"description": "Labels du glossaire (cycle, businessUnit, resource, objets renommables)"
},
"fieldLabels": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"modules": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "boolean"
},
"description": "Modules actifs de l'instance - la navigation de l'app s'en déduit"
},
"capabilities": {
"type": "object",
"properties": {
"pdfDownload": {
"type": "boolean"
}
},
"required": [
"pdfDownload"
],
"additionalProperties": false
},
"businessUnits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string"
},
"shortName": {
"type": "string"
},
"color": {
"type": "string"
},
"logo": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"shortName",
"color",
"logo"
],
"additionalProperties": false
}
},
"quoteLossReasons": {
"type": "array",
"items": {
"type": "string"
},
"description": "Motifs de perte d'un devis de l'organisation (#651), dans l'ordre des réglages, « Autre » compris : la transition vers refused exige l'un d'eux en lossReason."
}
},
"required": [
"name",
"version",
"minAppVersion",
"logo",
"logoOnBrand",
"colors",
"sso",
"auth",
"logoCompact",
"locale",
"currency",
"labels",
"fieldLabels",
"modules",
"capabilities",
"businessUnits",
"quoteLossReasons"
],
"additionalProperties": false
}
]
}
}
}default : Erreur - enveloppe problem+json (RFC 9457)
Contenu de la réponse default
{
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}Opération OpenAPI complète
{
"summary": "Bootstrap metadata-driven de l'instance (ADR-104)",
"description": "Sans Authorization : méta PUBLIQUE (identité visuelle du login + contrat de version) - aucune donnée métier, pas de liste de modules. Avec un Bearer valide (session utilisateur §2bis ou token d'app) : méta COMPLÈTE (modules actifs, branding et labels runtime, capacités, entités). Un Bearer invalide répond 401 - jamais de dégradation silencieuse vers la forme publique.",
"tags": [
"meta"
],
"security": [
{
"oauth2": []
},
{
"userSession": []
}
],
"responses": {
"200": {
"description": "Méta publique (anonyme) ou complète (authentifié)",
"content": {
"application/json": {
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Nom de l'instance (productName)"
},
"version": {
"type": "string",
"description": "Version produit de l'instance (semver ADR-097)"
},
"minAppVersion": {
"type": "string",
"description": "Version minimale de l'app mobile supportée - l'app compare et dégrade explicitement"
},
"logo": {
"type": "string"
},
"logoOnBrand": {
"type": "string"
},
"colors": {
"type": "object",
"properties": {
"primary": {
"type": "string"
},
"primaryAccent": {
"type": "string"
},
"soft": {
"type": "string"
},
"dark": {
"type": "string"
},
"background": {
"type": "string"
}
},
"required": [
"primary",
"primaryAccent",
"soft",
"dark",
"background"
],
"additionalProperties": false
},
"sso": {
"type": "array",
"items": {
"type": "string",
"enum": [
"google",
"microsoft"
]
},
"description": "Providers SSO actifs sur l'instance (T-762) - le login n'affiche que ceux-là"
},
"auth": {
"type": "object",
"properties": {
"loginUrl": {
"type": "string",
"description": "Entrée de la connexion mobile par le navigateur système (T-1020, ADR-141 D5) : GET <loginUrl>?redirect=<scheme de retour de l'app> ; au retour, POST /api/auth/handoff/mobile { token }"
}
},
"required": [
"loginUrl"
],
"additionalProperties": false,
"description": "Connexion de l'app : aucun mot de passe, passkey ou code d'application dans le navigateur système"
}
},
"required": [
"name",
"version",
"minAppVersion",
"logo",
"logoOnBrand",
"colors",
"sso",
"auth"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Nom de l'instance (productName)"
},
"version": {
"type": "string",
"description": "Version produit de l'instance (semver ADR-097)"
},
"minAppVersion": {
"type": "string",
"description": "Version minimale de l'app mobile supportée - l'app compare et dégrade explicitement"
},
"logo": {
"type": "string"
},
"logoOnBrand": {
"type": "string"
},
"colors": {
"type": "object",
"properties": {
"primary": {
"type": "string"
},
"primaryAccent": {
"type": "string"
},
"soft": {
"type": "string"
},
"dark": {
"type": "string"
},
"background": {
"type": "string"
}
},
"required": [
"primary",
"primaryAccent",
"soft",
"dark",
"background"
],
"additionalProperties": false
},
"sso": {
"type": "array",
"items": {
"type": "string",
"enum": [
"google",
"microsoft"
]
},
"description": "Providers SSO actifs sur l'instance (T-762) - le login n'affiche que ceux-là"
},
"auth": {
"type": "object",
"properties": {
"loginUrl": {
"type": "string"
},
"loginMethod": {
"anyOf": [
{
"type": "string",
"enum": [
"passkey",
"passkey_or_totp"
]
},
{
"type": "null"
}
],
"description": "Méthode de connexion du compte (T-1017, ADR-141 D3) : passkey (défaut) ou passkey_or_totp (mode élargi posé par un admin - l'app propose alors la gestion du code d'application). Null pour une app connectée."
}
},
"required": [
"loginUrl",
"loginMethod"
],
"additionalProperties": false
},
"logoCompact": {
"type": "string"
},
"locale": {
"type": "string"
},
"currency": {
"type": "string"
},
"labels": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"singular": {
"type": "string"
},
"plural": {
"type": "string"
},
"all": {
"type": "string"
},
"create": {
"type": "string"
}
},
"required": [
"singular",
"plural"
],
"additionalProperties": false
},
"description": "Labels du glossaire (cycle, businessUnit, resource, objets renommables)"
},
"fieldLabels": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"modules": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "boolean"
},
"description": "Modules actifs de l'instance - la navigation de l'app s'en déduit"
},
"capabilities": {
"type": "object",
"properties": {
"pdfDownload": {
"type": "boolean"
}
},
"required": [
"pdfDownload"
],
"additionalProperties": false
},
"businessUnits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string"
},
"shortName": {
"type": "string"
},
"color": {
"type": "string"
},
"logo": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"shortName",
"color",
"logo"
],
"additionalProperties": false
}
},
"quoteLossReasons": {
"type": "array",
"items": {
"type": "string"
},
"description": "Motifs de perte d'un devis de l'organisation (#651), dans l'ordre des réglages, « Autre » compris : la transition vers refused exige l'un d'eux en lossReason."
}
},
"required": [
"name",
"version",
"minAppVersion",
"logo",
"logoOnBrand",
"colors",
"sso",
"auth",
"logoCompact",
"locale",
"currency",
"labels",
"fieldLabels",
"modules",
"capabilities",
"businessUnits",
"quoteLossReasons"
],
"additionalProperties": false
}
]
}
}
}
},
"default": {
"description": "Erreur - enveloppe problem+json (RFC 9457)",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/Problem"
}
}
}
}
}
}