> ## 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 オブジェクトについて説明します。

# API オブジェクト

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

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

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

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

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

**パラメータ**

<Expandable title="パラメータ" defaultOpen>
  <ParamField body="code" type="string">
    ログインを拒否する理由となる、プロトコル固有のエラーコード。
    使用できる値: `invalid_scope`, `invalid_request`, `server_error`
  </ParamField>

  <ParamField body="reason" type="string">
    アクセストークンのグラントを拒否する理由を、人間が理解しやすい形式で説明します。
    任意。
  </ParamField>
</Expandable>

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

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

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

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

**パラメータ**

<Expandable title="パラメータ" defaultOpen>
  <ParamField body="key" type="string">
    クレームの名前 (完全修飾 URL を指定する必要がある場合があります) 。
  </ParamField>

  <ParamField body="value" type="unknown">
    クレームの値。
  </ParamField>
</Expandable>

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

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

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

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

**パラメータ**

<Expandable title="パラメータ" defaultOpen>
  <ParamField body="key" type="string">
    削除するキャッシュレコードのキー。
  </ParamField>
</Expandable>

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

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

**パラメータ**

<Expandable title="パラメータ" defaultOpen>
  <ParamField body="key" type="string">
    キャッシュに保存されているレコードのキー。
  </ParamField>
</Expandable>

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

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

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

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

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

**パラメータ**

<Expandable title="パラメータ" defaultOpen>
  <ParamField body="key" type="string">
    保存するレコードのキー。
  </ParamField>

  <ParamField body="value" type="string">
    保存するレコードの値。
  </ParamField>

  <ParamField body="options" type="cachesetoptions">
    キャッシュの動作を調整するためのオプション。
    任意。

    <Expandable title="options プロパティ">
      <ParamField body="expires_at" type="number">
        unix epoch からのミリ秒単位の絶対有効期限。
        キャッシュされたレコードは早期に削除される場合がありますが、
        指定した `expires_at` を過ぎて保持されることはありません。

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

      <ParamField body="ttl" type="number">
        このキャッシュエントリのミリ秒単位の有効期間。
        キャッシュ値は早期に削除される場合がありますが、
        指定した `ttl` を過ぎて保持されることはありません。

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

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

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

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

\[早期アクセス] ターゲットスコープセットにスコープを追加します。追加されたスコープは、すべてのActionsの完了後に
クライアントグラントとの共通部分のみが残されます。グラントに含まれていないスコープは、
最終的なアクセストークンから通知なく削除されます。

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

**パラメータ**

<Expandable title="パラメータ" defaultOpen>
  <ParamField body="scope" type="string">
    追加するスコープ。
  </ParamField>
</Expandable>

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

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

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

**パラメータ**

<Expandable title="パラメータ" defaultOpen>
  <ParamField body="scope" type="string">
    削除するスコープ。
  </ParamField>
</Expandable>

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

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

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

**パラメータ**

<Expandable title="パラメータ" defaultOpen>
  <ParamField body="scopes" type="array of string">
    新しいターゲットスコープセット。
  </ParamField>
</Expandable>

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

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

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