> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Découvrez l’objet API du déclencheur credentials-exchange d’Actions.

# Déclencheurs d’Actions : credentials-exchange - objet API

L’objet API du déclencheur credentials-exchange d’Actions comprend :

<div id="apiaccess">
  ## `api.access`
</div>

Contrôler la disponibilité du jeton d’accès.

<div id="apiaccessdenycode-reason">
  ### `api.access.deny(code, reason)`
</div>

Marque l’échange de jeton en cours comme refusé.

<ResponseField name="code" type="string">
  Le code d’erreur propre au protocole qui justifie le refus de la connexion.

  Valeurs autorisées : `invalid_scope`, `invalid_request`, `server_error`
</ResponseField>

<ResponseField name="reason" type="string" post={["optional"]}>
  Une explication en langage clair du rejet de l’octroi du jeton d’accès.
</ResponseField>

<div id="apiaccesstoken">
  ## `api.accessToken`
</div>

Permet de modifier le jeton d’accès en cours d’émission.

<div id="apiaccesstokensetcustomclaimkey-value">
  ### `api.accessToken.setCustomClaim(key, value)`
</div>

Définit une revendication personnalisée sur le Jeton d’accès qui sera émis.

<ResponseField name="key" type="string">
  Nom de la revendication (notez qu’il peut être nécessaire qu’il s’agisse d’une URL entièrement qualifiée).
</ResponseField>

<ResponseField name="value" type="unknown">
  La valeur de la revendication.
</ResponseField>

<div id="apicache">
  ## `api.cache`
</div>

Modifiez le cache.

<div id="apicachedeletekey">
  ### `api.cache.delete(key)`
</div>

Supprime l’enregistrement associé à la valeur mise en cache pour la
clé fournie, s’il existe.

<ResponseField name="key" type="string">
  La clé de l’enregistrement du cache à supprimer.
</ResponseField>

<div id="apicachegetkey">
  ### `api.cache.get(key)`
</div>

Récupère un enregistrement décrivant une valeur mise en cache à la clé fournie,
si elle existe. Si un enregistrement est trouvé, la valeur mise en cache se trouve
dans la propriété `value` de l'objet retourné.

<ResponseField name="key" type="string">
  La clé de l'enregistrement stocké dans le cache.
</ResponseField>

<div id="apicachesetkey-value-options">
  ### `api.cache.set(key, value, options)`
</div>

Stocke ou met à jour une valeur de chaîne dans le cache pour la clé spécifiée.

Les valeurs stockées dans ce cache sont limitées au Trigger dans lequel elles
sont définies. Elles sont assujetties aux [limites du cache d'Actions](https://auth0.com/docs/customize/actions/limitations).

Les valeurs stockées de cette façon auront une durée de vie pouvant aller *jusqu'aux*
valeurs `ttl` ou `expires_at` spécifiées. Si aucune durée de vie n'est spécifiée, une durée de vie
par défaut de 15 minutes sera utilisée. Les durées de vie ne peuvent pas dépasser la durée maximale
indiquée dans [les limites du cache d'Actions](https://auth0.com/docs/customize/actions/limitations).

**Important** : Ce cache est conçu pour des données éphémères à courte durée de vie. Il est possible que les éléments ne soient pas
disponibles dans des transactions ultérieures, même s'ils n'ont pas encore atteint la fin de leur durée de vie.

<ResponseField name="key" type="string">
  La clé de l'enregistrement à stocker.
</ResponseField>

<ResponseField name="value" type="string">
  La valeur de l'enregistrement à stocker.
</ResponseField>

<ResponseField name="options" type="cachesetoptions" post={["optional"]}>
  Options permettant d'ajuster le comportement du cache.

  <Expandable title="propriétés de options" defaultOpen>
    <ResponseField name="expires_at" type="number" post={["optional"]}>
      L'heure d'expiration absolue en millisecondes depuis l'époque Unix.
      Bien que les enregistrements mis en cache puissent être évincés plus tôt, ils ne
      demeureront jamais au-delà de la valeur `expires_at` fournie.

      *Remarque* : Cette valeur ne doit pas être fournie si une valeur a aussi été
      fournie pour `ttl`. Si les deux options sont fournies, la date
      d'expiration la plus rapprochée des deux sera utilisée.
    </ResponseField>

    <ResponseField name="ttl" type="number" post={["optional"]}>
      La durée de vie de cette entrée de cache en millisecondes.
      Bien que les valeurs mises en cache puissent être évincées plus tôt, elles ne
      demeureront jamais au-delà de la valeur `ttl` fournie.

      *Remarque* : Cette valeur ne doit pas être fournie si une valeur a aussi été
      fournie pour `expires_at`. Si les deux options sont fournies, la date
      d'expiration la plus rapprochée des deux sera utilisée.
    </ResponseField>
  </Expandable>
</ResponseField>

<div id="apitransaction">
  ## `api.transaction`
</div>

\[Accès anticipé] Modifiez la transaction.

<div id="apitransactionaddtargetscopescope">
  ### `api.transaction.addTargetScope(scope)`
</div>

\[Accès anticipé] Ajoute un scope à l’ensemble des scopes cibles. Les scopes ajoutés sont croisés avec l’autorisation de l’application une fois toutes les Actions terminées. Les scopes qui ne figurent pas dans cette autorisation sont ignorés et exclus du jeton d’accès final.

<ResponseField name="scope" type="string">
  Le scope à ajouter.
</ResponseField>

```js theme={null}
exports.onExecuteCredentialsExchange = async (event, api) => {
  api.transaction.addTargetScope('read:reports');
};
```

<div id="apitransactionremovetargetscopescope">
  ### `api.transaction.removeTargetScope(scope)`
</div>

\[Accès anticipé] Supprime un scope de l’ensemble des scopes cibles.

<ResponseField name="scope" type="string">
  Le scope à supprimer.
</ResponseField>

```js theme={null}
exports.onExecuteCredentialsExchange = async (event, api) => {
  api.transaction.removeTargetScope('admin:full');
};
```

<div id="apitransactionsettargetscopesscopes">
  ### `api.transaction.setTargetScopes(scopes)`
</div>

\[Accès anticipé] Remplace l’ensemble complet des scopes cibles. Les nouveaux scopes sont ensuite croisés avec
l’autorisation accordée à l’application une fois toutes les Actions terminées. Les scopes qui ne figurent pas dans
l’autorisation sont omis sans avertissement du jeton d’accès final.

<ResponseField name="scopes" type="array of strings">
  Le nouvel ensemble de scopes cibles.
</ResponseField>

```js theme={null}
exports.onExecuteCredentialsExchange = async (event, api) => {
  api.transaction.setTargetScopes(['read:users', 'write:users']);
};
```

<div id="apitransactioncleartargetscopes">
  ### `api.transaction.clearTargetScopes()`
</div>

\[Accès anticipé] Supprime tous les scopes de l’ensemble cible de scopes.

```js theme={null}
exports.onExecuteCredentialsExchange = async (event, api) => {
  api.transaction.clearTargetScopes();
};
```
