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

> credentials-exchange Action トリガーの API オブジェクトについて説明します。

# Actions トリガー: credentials-exchange - API オブジェクト

credentials-exchange Actions トリガーの API オブジェクトには、以下が含まれます。

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

アクセストークンの利用可否を制御します。

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

現在のトークン交換を拒否としてマークします。

<ResponseField name="code" type="string">
  ログインを拒否する理由を示す、プロトコル固有のエラーコードです。

  使用可能な値: `invalid_scope`, `invalid_request`, `server_error`
</ResponseField>

<ResponseField name="reason" type="string" post={["optional"]}>
  アクセストークンの付与を拒否する理由について、人が読める形で説明したものです。
</ResponseField>

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

発行されるアクセストークンの変更をリクエストします。

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

発行されるアクセストークンにカスタムクレームを設定します。

<ResponseField name="key" type="string">
  クレームの名前 (完全修飾URLの指定が必要になる場合があることに注意してください) 。
</ResponseField>

<ResponseField name="value" type="unknown">
  クレームの値。
</ResponseField>

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

キャッシュを変更します。

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

指定された
key に対応するキャッシュ値のレコードが存在する場合は、削除します。

<ResponseField name="key" type="string">
  削除するキャッシュレコードのキーです。
</ResponseField>

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

指定したキーに対応するキャッシュ値のレコードが存在する場合は、それを取得します。
レコードが見つかった場合、キャッシュされた値は返されるオブジェクトの `value` プロパティに格納されます。

<ResponseField name="key" type="string">
  キャッシュに保存されているレコードのキーです。
</ResponseField>

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

指定したキーに対応する文字列値をキャッシュに保存または更新します。

このキャッシュに保存された値は、設定された Trigger にスコープされます。
これらの値には、[Actions Cache Limits](https://auth0.com/docs/customize/actions/limitations) が適用されます。

この方法で保存された値の有効期間は、指定した
`ttl` または `expires_at` の *最大* その値までです。有効期間が指定されていない場合は、デフォルトで
15 分が使用されます。有効期間は、
[Actions Cache Limits](https://auth0.com/docs/customize/actions/limitations) に記載されている最大時間を超えることはできません。

**重要**: このキャッシュは、短期間のみ有効な一時的なデータ向けに設計されています。項目は、
指定した有効期間内であっても、後続のトランザクションで利用できない場合があります。

<ResponseField name="key" type="string">
  保存するレコードのキーです。
</ResponseField>

<ResponseField name="value" type="string">
  保存するレコードの値です。
</ResponseField>

<ResponseField name="options" type="cachesetoptions" post={["optional"]}>
  キャッシュの動作を調整するためのオプションです。

  <Expandable title="options のプロパティ" defaultOpen>
    <ResponseField name="expires_at" type="number" post={["optional"]}>
      Unix エポックからの経過時間をミリ秒で表した絶対有効期限です。
      キャッシュされたレコードはそれより前に削除される場合がありますが、
      指定した `expires_at` を過ぎて保持されることはありません。

      *注*: `ttl` に値も
      指定している場合、この値は指定しないでください。両方のオプションを指定した場合は、
      2 つのうち早い方の有効期限が使用されます。
    </ResponseField>

    <ResponseField name="ttl" type="number" post={["optional"]}>
      このキャッシュエントリの有効期間をミリ秒で表す値です。
      キャッシュされた値はそれより前に削除される場合がありますが、
      指定した `ttl` を過ぎて保持されることはありません。

      *注*: `expires_at` に値も
      指定している場合、この値は指定しないでください。両方のオプションを指定した場合は、
      2 つのうち早い方の有効期限が使用されます。
    </ResponseField>
  </Expandable>
</ResponseField>

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

\[早期アクセス] トランザクションを変更します。

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

\[早期アクセス] ターゲットスコープセットにスコープを追加します。追加されたスコープは、
すべての Actions の完了後にクライアントグラントとの積集合が計算されます。グラントに存在しないスコープは、
最終的なアクセストークンには通知なく含まれなくなります。

<ResponseField name="scope" type="string">
  追加するスコープ。
</ResponseField>

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

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

\[Early Access] ターゲットスコープセットからスコープを削除します。

<ResponseField name="scope" type="string">
  削除するスコープです。
</ResponseField>

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

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

\[早期アクセス] ターゲットスコープセット全体を置き換えます。新しいスコープは、
すべての Actions の完了後にクライアントグラントとの共通部分のみが適用されます。グラントに含まれない
スコープは、最終的なアクセストークンから自動的に除外されます。

<ResponseField name="scopes" type="array of strings">
  新しいターゲットスコープセット。
</ResponseField>

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

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

\[早期アクセス] ターゲットスコープセットからすべてのスコープを削除します。

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