Requête exemple
Réponse exemple
POST/v1/workspace/clone-configClone la configuration (branding, webhooks, modèles, règles, notifications) d'un espace de travail vers un autre.Cet endpoint duplique la configuration d'un espace de travail source (from_workspace_id) vers un espace de travail cible (to_workspace_id). Il est conçu pour amorcer rapidement un nouvel espace de travail à partir d'un modèle existant, par exemple lors de l'ouverture d'une nouvelle filiale ou entité partageant la même marque et les mêmes automatisations. L'appelant doit être propriétaire des deux espaces de travail (vérification sur owner_id). Le comportement notable : l'opération est partielle et non destructive côté cible. Selon la catégorie, les données sont soit fusionnées (upsert pour le branding), soit ajoutées (insert pour webhooks, modèles et règles), sans supprimer la configuration déjà présente dans la cible. Chaque catégorie absente dans la source est simplement ignorée, jamais bloquante.
Authentification
Requiert une clé API valide portant le scope workspace:manage. Une clé sans ce scope reçoit une erreur scope_missing (HTTP 403). En complément du scope, l'endpoint vérifie côté serveur que l'utilisateur associé à la clé est bien propriétaire (owner_id) des deux espaces de travail visés : ce double contrôle empêche de cloner vers ou depuis un espace que vous ne possédez pas, même avec le bon scope.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| from_workspace_id | string | Oui | Identifiant de l'espace de travail source dont la configuration est copiée. Doit appartenir à l'appelant. |
| to_workspace_id | string | Oui | Identifiant de l'espace de travail cible qui reçoit la configuration. Doit appartenir à l'appelant et différer de la source. |
| include | string[] | Non | Liste des catégories à cloner. Valeurs autorisées : branding, webhooks, templates, rules, notifications. Toute valeur inconnue est filtrée. Si le tableau est absent ou vide, toutes les catégories sont clonées par défaut. |
Détail par catégorie : branding est dupliqué via upsert (l'enregistrement de marque de la cible est créé ou écrasé). webhooks copie les champs name, url, events et description de chaque webhook source. templates clone les modèles de transfert en réinitialisant id, workspace_id et created_at. rules clone les règles en réinitialisant id, workspace_id, created_at, execution_count et last_executed_at (les compteurs d'exécution repartent à zéro dans la cible).
Réponse
La réponse renvoie deux tableaux. cloned liste les catégories effectivement copiées, avec le nombre d'éléments entre parenthèses lorsque pertinent (par exemple webhooks (3), templates (2)). skipped liste les catégories demandées mais vides dans la source, avec le motif (par exemple branding (none in source)). Une catégorie peut donc être ni dans cloned ni dans skipped si elle n'a pas été demandée.
Erreurs
| Code | Quand | Résolution |
|---|---|---|
| missing_api_key (401) | Aucun en-tête Authorization n'est fourni. | Ajoutez Authorization: Bearer cof_live_.... |
| invalid_api_key (401) | La clé est invalide ou mal préfixée. | Vérifiez la clé et son préfixe (cof_live_, cof_test_, etc.). |
| scope_missing (403) | La clé ne porte pas le scope workspace:manage. | Émettez une clé incluant le scope workspace:manage. |
| validation_error (400) | from_workspace_id ou to_workspace_id manquant, ou source identique à la cible. | Fournissez deux identifiants distincts et non vides. |
| forbidden (403) | L'appelant ne possède pas les deux espaces de travail. | N'utilisez que des espaces dont vous êtes le propriétaire (owner_id). |
| rate_limited (429) | Quota de requêtes par minute dépassé pour l'espace. | Respectez l'en-tête Retry-After avant de réessayer. |
| internal_error (500) | Erreur serveur lors de la vérification de propriété ou de la copie. | Réessayez ; si le problème persiste, contactez le support avec le request_id. |
Voir aussi
GET /v1/workspace/branding— consulter le branding cloné dans l'espace cible.- GET /v1/webhooks — vérifier les webhooks copiés avant de les activer.
- GET /v1/rules — auditer les règles importées et leurs compteurs réinitialisés.