Requête exemple
Réponse exemple
POST/v1/workspace/sso/providersCrée ou remplace le provider SAML du workspace via la Supabase Management API, puis trace la config localement.Ce point d'accès configure l'authentification unique SAML pour le workspace actif. Le handler accepte des métadonnées IdP (XML inline ou URL) et une liste de domaines email à associer. Il s'agit d'une opération idempotente par remplacement : si un provider existe déjà pour ce workspace, il est d'abord supprimé côté Supabase avant d'en créer un nouveau, puis la ligne locale coffrify_sso_configs est mise à jour par upsert (clé de conflit workspace_id).
Le flux complet est : validation des domaines, contrôle d'unicité cross-workspace, suppression de l'éventuel provider précédent, création via la Supabase Management API, upsert local, puis écriture d'une entrée d'audit (sso.provider_created). En cas d'échec de l'upsert local après création, le provider Supabase fraîchement créé fait l'objet d'un rollback best-effort.
Authentification
Requiert une session utilisateur valide (cookie d'authentification Supabase, via requireUser). Aucun scope spécifique n'est requis, mais deux conditions sont imposées : l'utilisateur doit être owner du workspace, et le workspace doit être sur le plan Entreprise (entreprise ou enterprise). À défaut, l'appel renvoie respectivement 403 ou 402.
Corps de la requête
Corps JSON. Au moins un des deux champs de métadonnées (metadata_xml ou metadata_url) est obligatoire, ainsi qu'au moins un domaine valide.
| Champ | Type | Requis | Description |
|---|---|---|---|
| metadata_xml | string | Conditionnel | Métadonnées SAML de l'IdP en XML inline. Requis si metadata_url est absent. Espaces de tête/fin supprimés. |
| metadata_url | string | Conditionnel | URL des métadonnées SAML de l'IdP. Requis si metadata_xml est absent. Stockée comme idp_metadata_url. |
| domains | string[] | Oui | Liste des domaines email rattachés au SSO. Normalisés en minuscules, trim, vides ignorés. Au moins un domaine valide requis (format RFC 1035 simplifié). |
Réponse
En cas de succès (200), la réponse confirme la création et renvoie l'identifiant du provider Supabase ainsi que la liste normalisée des domaines retenus :
| Champ | Type | Description |
|---|---|---|
| ok | boolean | Toujours true en cas de succès. |
| provider_id | string | Identifiant du provider SSO créé côté Supabase (Management API). |
| domains | string[] | Liste finale des domaines associés (normalisés en minuscules). |
Erreurs
| Code | Quand | Résolution |
|---|---|---|
| 400 | Ni metadata_xml ni metadata_url fourni, aucun domaine, ou domaine au format invalide. | Fournissez des métadonnées IdP et au moins un domaine valide (exemple.com). |
| 401 | Aucune session utilisateur valide. | Authentifiez-vous et réessayez. |
| 402 | Le workspace n'est pas sur le plan Entreprise (SSO réservé au plan Entreprise). | Passez le workspace au plan Entreprise avant de configurer le SSO. |
| 403 | L'utilisateur n'est owner d'aucun workspace. | Utilisez un compte owner du workspace cible. |
| 409 | Un des domaines est déjà réclamé par un autre workspace. | Choisissez des domaines non utilisés ailleurs, ou faites libérer le domaine par le workspace propriétaire. |
| 500 | Échec de l'upsert local après création (rollback du provider Supabase tenté). | Réessayez ; si l'erreur persiste, vérifiez l'intégrité de coffrify_sso_configs. |
| 502 | Échec de la création du provider côté Supabase Management API (Échec création provider Supabase). | Vérifiez la validité des métadonnées IdP et la disponibilité de l'API Supabase, puis réessayez. |
Voir aussi
- GET /v1/workspace/sso/providers : lire l'état courant et vérifier la synchronisation avec Supabase.
GET /v1/workspace/audit-log: retrouver l'entréesso.provider_createdgénérée par cette opération.GET /v1/workspace: confirmer l'éligibilité au plan Entreprise avant configuration.