curl --request POST \
--url https://api.zelinqa.ai/v1/configuration/changes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"changes": [
{
"entity": "question",
"operation": "create",
"question": {
"id": "q_delivery_window",
"text": "À quelle période souhaitez-vous être livré ?",
"type": "single_choice",
"sub_objective_id": "so_livraison",
"active": true,
"choices": [
{
"id": "choice_1m",
"label": "Dans le mois"
},
{
"id": "choice_3m",
"label": "Dans les trois mois"
},
{
"id": "choice_later",
"label": "Plus tard"
}
]
}
},
{
"entity": "success_information",
"operation": "create",
"success_information": {
"id": "delivery_window",
"label": "Fenêtre de livraison souhaitée",
"primary_question_id": "q_delivery_window",
"schema": {
"type": "string",
"enum": [
"dans_le_mois",
"trois_mois",
"plus_tard"
]
}
}
}
]
}
'{
"request_id": "req_71aa",
"draft_revision": 42,
"applied": 2,
"warnings": []
}Appliquer des changements au brouillon
Applique atomiquement une liste ordonnée d’opérations au brouillon : soit toutes réussissent, soit aucune n’est écrite. Les identifiants fournis par l’appelant sont conservés ; ils restent stables entre les publications.
Cette route ne publie rien. Le brouillon devient actif uniquement après
POST /v1/configuration/publish et la fin de la compilation.
Les erreurs de validation sont renvoyées groupées dans
configuration_validation_failed, avec la position de chaque opération
fautive, afin que Studio puisse toutes les afficher d’un coup.
curl --request POST \
--url https://api.zelinqa.ai/v1/configuration/changes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"changes": [
{
"entity": "question",
"operation": "create",
"question": {
"id": "q_delivery_window",
"text": "À quelle période souhaitez-vous être livré ?",
"type": "single_choice",
"sub_objective_id": "so_livraison",
"active": true,
"choices": [
{
"id": "choice_1m",
"label": "Dans le mois"
},
{
"id": "choice_3m",
"label": "Dans les trois mois"
},
{
"id": "choice_later",
"label": "Plus tard"
}
]
}
},
{
"entity": "success_information",
"operation": "create",
"success_information": {
"id": "delivery_window",
"label": "Fenêtre de livraison souhaitée",
"primary_question_id": "q_delivery_window",
"schema": {
"type": "string",
"enum": [
"dans_le_mois",
"trois_mois",
"plus_tard"
]
}
}
}
]
}
'{
"request_id": "req_71aa",
"draft_revision": 42,
"applied": 2,
"warnings": []
}Autorisations
Clé d'intégration préfixée nbq_live_, envoyée dans
Authorization: Bearer nbq_live_… et résolue par l'authorizer Lambda de
l'API Gateway publique. L'authorizer valide la clé, puis injecte en amont
du service les headers de contexte x-tenant-id, x-nbq-id et x-scopes —
x-scopes étant la liste des scopes de la clé séparés par des virgules,
par exemple runtime,configuration:read.
Ces headers ne sont jamais acceptés depuis le client : toute valeur entrante
est écrasée. Une clé absente ou invalide produit 401 au niveau de la
passerelle ; une clé valide sans le scope requis produit 403 avec le code
insufficient_scope.
En-têtes
Clé unique par mutation logique, choisie par l'appelant.
Même clé et même corps renvoient exactement la réponse d'origine, sans
rejouer l'effet : aucun retry ne double turn_count, un outcome, un
événement, un feedback ou une publication. Même clé avec un corps différent
produit 409 idempotency_key_reused.
Les enregistrements sont isolés par tenant et par opération, et sont purgés après 24 heures. Passé ce délai, la même clé est traitée comme neuve.
8 - 128Corps
Opérations appliquées dans l'ordre, atomiquement.
1 - 500 elements- Option 1
- Option 2
- Option 3
- Option 4
Show child attributes
Show child attributes
Si fourni, les changements ne sont appliqués que si le brouillon est
toujours à cette révision. Sinon configuration_validation_failed avec
le code draft_revision_mismatch.
x >= 0Réponse
Brouillon mis à jour.
Nouvelle révision du brouillon après application.
x >= 0x >= 0Anomalies non bloquantes pour l'édition, mais qui empêcheront la publication si elles ne sont pas corrigées.
Show child attributes
Show child attributes