> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-fix-docs-5528-php-updates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# アクションのトリガー：post-challenge - APIオブジェクト

> パスワードリセットのpost-challengeアクショントリガーのAPIオブジェクトについて説明します。

`post-challenge`アクショントリガーのAPIオブジェクトは以下を含みます。

## `api.access`

ログイン試行の拒否などでユーザーのログインアクセスを変更します。

### `api.access.deny(reason)`

現在のログイン試行を「拒否」としてマークします。これにより、エンドユーザーがログインフローを完了できなくなります。この操作はメタデータの変更など、このアクションが要求した他のユーザー関連の副次的な影響をキャンセル **しません** 。このアクションが完了すると、ログインフローは即座に中断され、以降のアクションは実行されません。

`api`オブジェクトへの参照を返します。

| パラメーター   | 説明                                                           |
| -------- | ------------------------------------------------------------ |
| `reason` | *文字列*。人間に読める形式でログインの拒否を説明します。エンドユーザーのインターフェイスに直接表示することができます。 |

## `api.authentication`

現在のユーザーセッションについて認証状態の変更を要求します。

### `api.authentication.challengeWith(factor, [options])`

提供された要素と任意の追加要素を使用して多要素認証のチャレンジを要求します。

多要素チャレンジが要求されると、ユーザーがチャレンジを満了するまで後続のアクションは実行されません。チャレンジは以下の場合に満了したと見なされます。

* このトランザクションで要素一致のチャレンジをすでに満了している
* デフォルト要素のチャレンジを正常に満了した
* `additionalFactors`に記述されている任意要素のチャレンジのいずれかを正常に満了した

**注意：** ユーザーがチャレンジの要件をまだ満たしていない場合には、要素のチャレンジ画面が表示されます。`additionalFactors`が提供されている場合は、ユーザーがデフォルト以外のチャレンジを選択できます。

| パラメーター    | 説明                                                               |
| --------- | ---------------------------------------------------------------- |
| `factor`  | *FactorSelector*。最初のチャレンジに使用されるべき要素の種類（およびそのオプション）を記述したオブジェクトです。 |
| `options` | 任意のオブジェクト。`additionalFactors`をプロパティとして指定することもできる追加のオプションです。      |

### `api.authentication.challengeWithAny([factors])`

提供済みの要素または任意の追加要素のいずれかを使用して多要素認証のチャレンジを要求します。

多要素チャレンジが要求されると、ユーザーがチャレンジを満了するまで後続のアクションは実行されません。チャレンジは以下の場合に満了したと見なされます。

* このトランザクションで要素一致のチャレンジをすでに満了している
* デフォルト要素のチャレンジを正常に満了した

**注意：** ユーザーがチャレンジの要件をまだ満たしていない場合には、要素のチャレンジ画面が表示されます。優先する特定の要素がある場合は、`api.authentication.challengeWith()`メソッドが優先されます。

| パラメーター   | 説明                           |
| -------- | ---------------------------- |
| `factor` | *FactorSelector\[]*。要素の配列です。 |

## `api.cache`

実行間で維持されるデータの保管と取得を行います。

### `api.cache.delete(key)`

提供されたkeyにキャッシュ済みの値が存在する場合は、それを記述したレコードを削除します。

値がキャッシュから削除されると、`CacheWriteResult`オブジェクトに`type: "success"`を含めて返します。操作に失敗すると、`type: "error"`を返します。

エラーの場合には、返すオブジェクトに`code`プロパティを含めて、失敗の詳細を示します。

| パラメーター | 説明                            |
| ------ | ----------------------------- |
| `key`  | *文字列*。キャッシュに保管されているレコードのキーです。 |

### `api.cache.get(key)`

提供された`key`にキャッシュ済みの値が存在する場合は、それを記述したレコードを取得します。レコードが見つかった場合には、返されたオブジェクトの`value`プロパティにキャッシュ済みの値があります。

提供された`key`にキャッシュ済みの項目が存在する場合は、それを記述したレコードを返します。キャッシュレコードは以下のプロパティを含むオブジェクトです。

* `value`：キャッシュされた値です。
* `expires_at`：UNIXエポックからの経過ミリ秒数で表したレコードの有効期間です。

**重要：**
このキャッシュは、短命で一時的なデータ向けに設計されています。項目が所定のライフタイム内であったとしても、後のトランザクションでは利用できないかもしれません。

| パラメーター | 説明                            |
| ------ | ----------------------------- |
| `key`  | *文字列*。キャッシュに保管されているレコードのキーです。 |

### `api.cache.set(key, value, [options])`

指定されたkeyのキャッシュに文字列値を保管または更新します。

このキャッシュに保管された値は、それを設定するトリガーにスコープが限定されます。これは[アクションのキャッシュ制限](/docs/ja-jp/customize/actions/limitations)の対象になります。

このように保管された値には、指定された`ttl`または`expires_at`値までのライフタイムがあります。ライフタイムが指定されない場合には、デフォルトのライフタイムである15分が使用されます。ライフタイムは[アクションのキャッシュ制限](/docs/ja-jp/customize/actions/limitations)が定める最大値を超過してはいけません。

| パラメーター               | 説明                                                                                                                                                                                          |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `key`                | *文字列*。キャッシュに保管されているレコードのキーです。                                                                                                                                                               |
| `value`              | *文字列*。保管するレコードの値です。                                                                                                                                                                         |
| `options`            | *任意のオブジェクト*。キャッシュの動作を調整するためのオプションです。                                                                                                                                                        |
| `options.expires_at` | *任意の数値*。UNIXエポックからのミリ秒単位で指定した絶対有効期限です。キャッシュ済みのレコードは早期に削除されることはあっても、`expires_at`で指定された時点を過ぎて存続することはありません。<br />\*\*注意：\*\*この値が`ttl`で指定されている場合は指定するべきではありません。両方で指定された場合、2つの中で早い方の有効期限が適用されます。 |
| `options.ttl`        | *任意の数値*。このキャッシュエントリの存続時間をミリ秒単位で指定します。キャッシュ済みのレコードは早期に削除されることはあっても、`ttl`で指定された時点を過ぎて存続することはありません。<br />\*\*注意：\*\*この値が`expires_at`で指定されている場合は指定するべきではありません。両方で指定された場合、2つの中で早い方の有効期限が適用されます。  |

## `api.redirect`

### `api.redirect.encodeToken(options)`

リダイレクト先（`sendUserTo`経由）のクエリ文字列パラメーターとして使用可能で、信頼性を対象のエンドポイントで証明可能なデータを含むセッショントークンを作成します。対象のエンドポイントは共有シークレットでJWTの署名を確認して、信頼性とデータの整合性を検証できます。

JWT文字列を返します。

| パラメーター                     | 説明                                                                                                          |
| -------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `options`                  | *オプション*。結果のURLのクエリパラメーターに機密データをどのように暗号化するのかを構成します。                                                          |
| `options.expiresInSeconds` | *数値*。トークンが期限切れになるまでの秒数です。デフォルトは900秒です。                                                                      |
| `options.payload`          | *オプション*。リダイレクト先に渡され、信頼性と整合性が証明可能であるべきデータです。                                                                 |
| `options.secret`           | *文字列*。リダイレクト先と共有され、JWTの署名に使用されるシークレットです。この値はシークレットとして保管され、`event.secrets['SECRET_NAME']`を使用して取得されなければなりません。 |

### `api.redirect.sendUserTo(url, options)`

アクションが完了した直後に、ブラウザーを目的の`url`にリダイレクトさせます。

`api`オブジェクトへの参照を返します。

| パラメーター          | 説明                                                 |
| --------------- | -------------------------------------------------- |
| `url`           | *文字列*。リダイレクト先のURLです。                               |
| `options`       | *オプション*。リダイレクトURLに追加される任意のクエリ文字列パラメーターを表すオブジェクトです。 |
| `options.query` | *オプション*。リダイレクトURLに追加する追加のクエリ文字列パラメーターです。           |

### `api.redirect.validateToken(options)`

JWTトークンに含めて`/continue`エンドポイントに渡された暗号化済みのデータを取得すると同時に、そのデータの信頼性と整合性を検証します。

JWTトークンのペイロードを返します。

| パラメーター                       | 説明                                                                           |
| ---------------------------- | ---------------------------------------------------------------------------- |
| `options`                    | *オプション*。リダイレクト後に、JWTトークンに含めて`/continue`エンドポイントに渡された暗号化済みのデータを取得するためのオプションです。 |
| `options.secret`             | *文字列*。トークンの暗号化に使用されたシークレットです。                                                |
| `options.tokenParameterName` | *文字列*。`/continue`エンドポイントに送信されたクエリまたは本文のパラメーターの名前です。デフォルトは`session_token`です。  |

## `api.transaction`

### `api.transaction.setResultUrl(url, options)`

ユーザーがパスワードをリセットした後に、ブラウザーを目的の`url`にリダイレクトさせます。

| パラメーター          | 説明                                                                   |
| --------------- | -------------------------------------------------------------------- |
| `url`           | *文字列*。パスワードの更新後にユーザーのリダイレクト先となるURLです。URLが検証済みでユーザーに安全であることを確認してください。 |
| `options`       | *オプション*。リダイレクト先のURLに追加する任意の追加クエリ文字列パラメーターを表すオブジェクトです。                |
| `options.query` | *オプション*。リダイレクト先のURLに追加する追加のクエリ文字列パラメーターです。                           |
