> ## 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.

> Obtén información sobre el objeto de API del trigger credentials-exchange de Actions.

# Triggers de Actions: credentials-exchange - Objeto de API

El objeto de API del trigger credentials-exchange de Actions incluye:

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

Controla la disponibilidad del token de acceso.

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

Marca el intercambio actual de tokens como denegado.

<ResponseField name="code" type="string">
  El code de error específico del protocolo que justifica el rechazo del inicio de sesión.

  Valores permitidos: `invalid_scope`, `invalid_request`, `server_error`
</ResponseField>

<ResponseField name="reason" type="string" post={["optional"]}>
  Una explicación legible para las personas sobre el motivo del rechazo de la concesión del token de acceso.
</ResponseField>

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

Solicita cambios en el token de acceso emitido.

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

Establece una claim personalizada en el Token de acceso que se emitirá.

<ResponseField name="key" type="string">
  Nombre de la claim (ten en cuenta que puede que deba ser una URL completa).
</ResponseField>

<ResponseField name="value" type="unknown">
  El valor de la claim.
</ResponseField>

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

Permite realizar cambios en la caché.

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

Elimina el registro que describe un valor almacenado en caché en la
clave proporcionada, si existe.

<ResponseField name="key" type="string">
  La clave del registro de caché que se va a eliminar.
</ResponseField>

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

Recupera un registro que describe un valor almacenado en caché en la clave proporcionada,
si existe. Si se encuentra un registro, el valor almacenado en caché se encuentra
en la propiedad `value` del objeto devuelto.

<ResponseField name="key" type="string">
  La clave del registro almacenado en la caché.
</ResponseField>

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

Almacena o actualiza un valor de cadena en la caché en la clave especificada.

Los valores almacenados en esta caché se limitan al Trigger en el que
se establecen. Están sujetos a los [límites de la caché de Actions](https://auth0.com/docs/customize/actions/limitations).

Los valores almacenados de esta forma tendrán una vigencia de *hasta* los valores
de `ttl` o `expires_at` especificados. Si no se especifica ninguna vigencia, se usará una
vigencia predeterminada de 15 minutos. Las vigencias no pueden superar la duración máxima
indicada en [límites de la caché de Actions](https://auth0.com/docs/customize/actions/limitations).

**Importante**: Esta caché está diseñada para datos efímeros y de corta duración. Es posible que los elementos no estén
disponibles en transacciones posteriores, aunque aún se encuentren dentro del tiempo de vigencia indicado.

<ResponseField name="key" type="string">
  La clave del registro que se almacenará.
</ResponseField>

<ResponseField name="value" type="string">
  El valor del registro que se almacenará.
</ResponseField>

<ResponseField name="options" type="cachesetoptions" post={["optional"]}>
  Opciones para ajustar el comportamiento de la caché.

  <Expandable title="propiedades de options" defaultOpen>
    <ResponseField name="expires_at" type="number" post={["optional"]}>
      La hora de expiración absoluta en milisegundos desde la época Unix.
      Aunque los registros almacenados en caché puedan eliminarse antes, nunca
      permanecerán más allá del valor `expires_at` proporcionado.

      *Nota*: No debe proporcionarse este valor si también se
      proporcionó un valor para `ttl`. Si se proporcionan ambas opciones, se
      usará la expiración más temprana de las dos.
    </ResponseField>

    <ResponseField name="ttl" type="number" post={["optional"]}>
      El valor de tiempo de vida de esta entrada de caché en milisegundos.
      Aunque los valores almacenados en caché puedan eliminarse antes, nunca
      permanecerán más allá del valor `ttl` proporcionado.

      *Nota*: No debe proporcionarse este valor si también se
      proporcionó un valor para `expires_at`. Si se proporcionan ambas opciones, se
      usará la expiración más temprana de las dos.
    </ResponseField>
  </Expandable>
</ResponseField>

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

\[Acceso anticipado] Realice cambios en la transacción.

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

\[Acceso anticipado] Agrega un scope al conjunto de alcances de destino. Los alcances agregados se intersectan con la
concesión de cliente una vez finalizadas todas las Actions. Los alcances que no estén presentes en la concesión
se descartan sin aviso del token de acceso final.

<ResponseField name="scope" type="string">
  El scope que se va a agregar.
</ResponseField>

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

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

\[Early Access] Elimina un scope del conjunto de alcances de destino.

<ResponseField name="scope" type="string">
  El scope que se debe eliminar.
</ResponseField>

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

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

\[Acceso anticipado] Reemplaza por completo el conjunto de alcances de destino. Los nuevos alcances se cruzan con
la concesión de cliente una vez que se completan todas las Actions. Los alcances que no estén presentes en la
concesión se omiten sin aviso del token de acceso final.

<ResponseField name="scopes" type="array of strings">
  El nuevo conjunto de alcances de destino.
</ResponseField>

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

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

\[Acceso anticipado] Elimina todos los alcances del conjunto de alcances de destino.

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