# Décisions et approbations

Demandez un verdict — approuver, refuser ou modifications — et laissez votre flux de travail brancher dessus sans lire d'étiquettes.

## Décisions et approbations

Beaucoup de demandes existent pour obtenir une seule chose : un oui, un non, ou un « pas comme ça ». La question de décision capture ce verdict dans une forme sur laquelle votre automatisation peut brancher directement, sans deviner quel champ contenait la réponse.

<h2 id="why">Pourquoi une question spéciale</h2>

<p>
  Chaque choix a déjà une <a href="/fr/requests/field-keys#option-keys">clé d'option</a>, donc un flux de travail peut brancher sur
  n'importe quel bouton radio. Ce qu'un flux de travail ne peut pas faire, c'est savoir, à travers tous les formulaires ayant une
  approbation, quelle clé signifie « oui » : le bouton radio d'un auteur dit <code>sign_off</code>, celui d'un autre <code>approved</code>.
</p>

<p>
  La <strong>question de décision</strong> fixe les noms. C'est une question à choix unique avec la clé de champ <code>decision</code>, dont
  les trois options portent les clés d'option <code>approve</code>, <code>decline</code> et <code>changes</code>. Leurs libellés restent à
  vous pour les reformuler et les traduire ; les clés en dessous ne bougent jamais. Quand le destinataire en choisit une, la demande se
  termine avec un <strong>résultat</strong>. Tout bouton radio à la clé <code>decision</code> dont les options portent ces trois clés compte
  — le préréglage ne fait que les définir pour vous.
</p>

<h2 id="insert">Ajouter une décision à votre formulaire</h2>

/</strong> dans l'éditeur et choisissez <strong>Décision</strong> — « Approuver, refuser, ou demander des modifications ».",
    },
    {
      title: 'Reformulez les libellés',
      description:
        "Vous obtenez une question intitulée « Approuvez-vous ? » avec les choix Approuver, Refuser, et Demander des modifications. Réécrivez-les comme vous voulez — « Valider », « Rejeter », « Renvoyer pour correction ». Traduisez-les comme n'importe quel autre contenu.",
    },
    {
      title: 'Demandez pourquoi, si nécessaire',
      description:
        'Un verdict seul s’explique rarement. Ajoutez une question de texte long juste après, et n’affichez-la que pour refuser et modifications avec la <a href="/fr/building-forms/conditional-logic">logique conditionnelle</a>.',
    },
    {
      title: 'Publiez',
      description:
        "Les demandes créées à partir de cette version publiée se terminent avec un résultat. Comme toute clé de champ, decision n'existe qu'une fois le formulaire publié.",
    },
  ]}
/>

> ⚠️ **Seul le préréglage produit un résultat**
> <p>
>     Le résultat est lu depuis la question dont la clé de champ est <code>decision</code>, et seulement quand la clé de l'option choisie est
>     l'une des trois. Un bouton radio que vous construisez à la main avec des options intitulées Approuver, Refuser et Modifications dérive
>     exactement ces clés, donc il fonctionne sans le préréglage ; un bouton radio avec d'autres libellés fonctionne une fois que vous tapez
>     les trois clés dans le <a href="/fr/requests/field-keys#option-keys">tableau Clés</a>.
>   </p>
>   <ul>
>     <li>
>       Supprimez l'une des trois options, ou retapez sa clé, et la publication vous avertit : « La question de décision n'a pas d'option
>       Approuver, Refuser ou Demander des modifications, donc les demandes peuvent se terminer sans résultat. » Les trois doivent être
>       présentes — une décision qui ne peut qu'approuver ne peut pas refuser.
>     </li>
>     <li>
>       Une question de décision à l'intérieur d'un <a href="/fr/building-forms/repeating-groups">groupe répétable</a> est une question
>       ordinaire et est ignorée pour le résultat.
>     </li>
>   </ul>

<h2 id="values">Les trois valeurs</h2>

<p>
  Ces trois valeurs forment un contrat public, comme une clé de champ : une automatisation, un agent et une formule de tableur les lisent
  tous. <strong>Ajouter une quatrième option et la choisir est une réponse ordinaire, pas un verdict</strong> — cette demande se termine
  sans résultat, plutôt qu'avec une valeur que votre récepteur n'a jamais rencontrée.
</p>

<h2 id="where">Où apparaît le résultat</h2>

```
{
  "id": "evt_...",
  "type": "request.completed",
  "test": false,
  "data": {
    "request": {
      "id": "kd7...",
      "externalId": "run-42",
      "status": "completed",
      "outcome": "changes",
      "context": { "case_id": "CASE-9" }
    },
    "answers": {
      "decision": "changes",
      "reason": "Please split the line items per site."
    }
  }
}
```

<p>
  Branchez sur <code>data.request.outcome</code>. <strong>status</strong> indique si la demande s'est terminée ; <strong>outcome</strong>{' '}
  indique ce que le destinataire a décidé. Une demande expirée ou annulée a un statut et aucun résultat, tout comme une demande terminée sur
  un formulaire sans question de décision.
</p>

<h2 id="agents">Depuis un agent</h2>

<p>
  L'outil MCP est <code>editor_insertDecisionQuestion</code>, qui prend un titre et les trois libellés dans la langue du formulaire. Un
  agent qui ne peut pas héberger de point de terminaison de callback interroge plutôt <code>request_get</code> et lit <code>outcome</code>{' '}
  quand le statut quitte <code>pending</code>. <a href="/fr/developers/mcp-server#requests">Demandes sur le serveur MCP →</a>
</p>

<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Callbacks et signature](/fr/requests/callbacks) — La charge utile complète et comment la vérifier.
  - [La page Demandes](/fr/requests/managing-requests) — Filtrez par résultat et suivez une demande.
  - [Logique conditionnelle](/fr/building-forms/conditional-logic) — Demandez une raison uniquement quand c'est nécessaire.
  - [Types de questions](/fr/building-forms/field-types) — Toutes les autres questions que vous pouvez poser.
</div>
