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

# MfaWebAuthnRoamingChallengeMembers

MfaWebAuthnRoamingChallengeMembers

````ts Example theme={null}
export interface MfaWebAuthnRoamingChallengeMembers extends BaseMembers {
  /**
   * Screen-specific properties and data, including WebAuthn challenge options.
   * @type {ScreenMembersOnMfaWebAuthnRoamingChallenge}
   */
  screen: ScreenMembersOnMfaWebAuthnRoamingChallenge;

  /**
   * Initiates the WebAuthn challenge by calling `navigator.credentials.get()` with the
   * options provided in `screen.data.publicKeyChallengeOptions`.
   * If successful, it submits the resulting credential to Auth0 with `action: "default"`.
   * If `navigator.credentials.get()` fails with a known WebAuthn API error (like `NotAllowedError`),
   * this method will internally call `reportWebAuthnError` to inform Auth0.
   *
   * @param {VerifySecurityKeyOptions} [options] - Optional parameters for the verification process,
   * such as `rememberDevice` and other custom options.
   * @returns {Promise<void>} A promise that resolves when the verification attempt is submitted.
   *                          It does not directly return data as a successful operation typically results in a redirect.
   * @throws {Error} Throws an error if `screen.data.publicKeyChallengeOptions` is missing,
   *                 if `navigator.credentials.get()` fails with an unexpected error,
   *                 or if the form submission to Auth0 fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
   * try {
   *   await sdk.verify({ rememberDevice: true });
   *   // On success, Auth0 handles redirection.
   * } catch (error) {
   *   console.error("Security key verification failed:", error);
   *   // Check sdk.transaction.errors for server-side validation messages if the page reloads.
   * }
   * ```
   */
  verify(options?: VerifySecurityKeyOptions): Promise<void>;

  /**
   * Reports a specific WebAuthn API error to Auth0.
   * This method should be used if `navigator.credentials.get()` fails in a way that
   * `verify()` doesn't automatically handle, or if the developer wants to explicitly
   * report an error before trying another action.
   * It submits the error details with `action: "showError::{errorDetails}"`.
   *
   * @param {ReportWebAuthnErrorOptions} options - Contains the `error` object with `name` and `message`
   * from the WebAuthn API, and any other custom options.
   * @returns {Promise<void>} A promise that resolves when the error report is submitted.
   * @throws {Error} Throws an error if the form submission fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
   * // And webAuthnError is an error object from a failed navigator.credentials.get() call.
   * try {
   *   await sdk.reportWebAuthnError({
   *     error: { name: webAuthnError.name, message: webAuthnError.message }
   *   });
   * } catch (submitError) {
   *   console.error("Failed to report WebAuthn error:", submitError);
   * }
   * ```
   */
  reportWebAuthnError(options: ReportWebAuthnErrorOptions): Promise<void>;

  /**
   * Allows the user to opt-out of the WebAuthn challenge and select a different MFA method.
   * This action submits `action: "pick-authenticator"` to Auth0, which should navigate
   * the user to an MFA factor selection screen.
   *
   * @param {TryAnotherMethodOptions} [options] - Optional custom parameters for the request.
   * @returns {Promise<void>} A promise that resolves when the action is submitted.
   * @throws {Error} Throws an error if the form submission fails.
   *
   * @example
   * ```typescript
   * // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
   * try {
   *   await sdk.tryAnotherMethod();
   *   // On success, Auth0 handles redirection to MFA selection.
   * } catch (error) {
   *   console.error("Failed to switch MFA method:", error);
   * }
   * ```
   */
  tryAnotherMethod(options?: TryAnotherMethodOptions): Promise<void>;
}
````

## Properties

<ParamField body="branding" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/BrandingMembers">BrandingMembers</a></span>} />

<ParamField body="client" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/ClientMembers">ClientMembers</a></span>} />

<ParamField body="organization" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/OrganizationMembers">OrganizationMembers</a></span>} />

<ParamField body="prompt" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/PromptMembers">PromptMembers</a></span>} />

<ParamField body="screen" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/ScreenMembersOnMfaWebAuthnRoamingChallenge">ScreenMembersOnMfaWebAuthnRoamingChallenge</a></span>}>
  Screen-specific properties and data, including WebAuthn challenge options.
</ParamField>

<ParamField body="tenant" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/TenantMembers">TenantMembers</a></span>} />

<ParamField body="transaction" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/TransactionMembers">TransactionMembers</a></span>} />

<ParamField body="untrustedData" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/UntrustedDataMembers">UntrustedDataMembers</a></span>} />

<ParamField body="user" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/UserMembers">UserMembers</a></span>} />

## Methods

<ParamField body="reportWebAuthnError" type="Promise<void>">
  Reports a specific WebAuthn API error to Auth0.
  This method should be used if `navigator.credentials.get()` fails in a way that
  `verify()` doesn't automatically handle, or if the developer wants to explicitly
  report an error before trying another action.
  It submits the error details with `action: "showError::{errorDetails}"`.

  A promise that resolves when the error report is submitted.

  #### Throws

  Throws an error if the form submission fails.

  ```typescript Example theme={null}
  // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
  // And webAuthnError is an error object from a failed navigator.credentials.get() call.
  try {
    await sdk.reportWebAuthnError({
      error: { name: webAuthnError.name, message: webAuthnError.message }
    });
  } catch (submitError) {
    console.error("Failed to report WebAuthn error:", submitError);
  }
  ```

  <Expandable title="Parameters">
    <ParamField body="options" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaWebAuthnRoamingChallengeReportErrorOptions">MfaWebAuthnRoamingChallengeReportErrorOptions</a></span>}>
      Contains the `error` object with `name` and `message`
      from the WebAuthn API, and any other custom options.

      **Properties**

      <ParamField body="error" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/WebAuthnErrorDetails">WebAuthnErrorDetails</a></span>}>
        The error object from the WebAuthn API to be reported.
      </ParamField>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="tryAnotherMethod" type="Promise<void>">
  Allows the user to opt-out of the WebAuthn challenge and select a different MFA method.
  This action submits `action: "pick-authenticator"` to Auth0, which should navigate
  the user to an MFA factor selection screen.

  A promise that resolves when the action is submitted.

  #### Throws

  Throws an error if the form submission fails.

  ```typescript Example theme={null}
  // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
  try {
    await sdk.tryAnotherMethod();
    // On success, Auth0 handles redirection to MFA selection.
  } catch (error) {
    console.error("Failed to switch MFA method:", error);
  }
  ```

  <Expandable title="Parameters">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaWebAuthnRoamingChallengeTryAnotherMethodOptions">MfaWebAuthnRoamingChallengeTryAnotherMethodOptions</a></span>}>
      Optional custom parameters for the request.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="verify" type="Promise<void>">
  Initiates the WebAuthn challenge by calling `navigator.credentials.get()` with the
  options provided in `screen.data.publicKeyChallengeOptions`.
  If successful, it submits the resulting credential to Auth0 with `action: "default"`.
  If `navigator.credentials.get()` fails with a known WebAuthn API error (like `NotAllowedError`),
  this method will internally call `reportWebAuthnError` to inform Auth0.

  A promise that resolves when the verification attempt is submitted.
  It does not directly return data as a successful operation typically results in a redirect.

  #### Throws

  Throws an error if `screen.data.publicKeyChallengeOptions` is missing,
  if `navigator.credentials.get()` fails with an unexpected error,
  or if the form submission to Auth0 fails.

  ```typescript Example theme={null}
  // Assuming 'sdk' is an instance of MfaWebAuthnRoamingChallenge
  try {
    await sdk.verify({ rememberDevice: true });
    // On success, Auth0 handles redirection.
  } catch (error) {
    console.error("Security key verification failed:", error);
    // Check sdk.transaction.errors for server-side validation messages if the page reloads.
  }
  ```

  <Expandable title="Parameters">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/VerifySecurityKeyOptions">VerifySecurityKeyOptions</a></span>}>
      Optional parameters for the verification process,
      such as `rememberDevice` and other custom options.

      **Properties**

      <ParamField body="rememberDevice?" type="boolean">
        Optional. If true, attempts to remember the browser for future MFA challenges.
        Corresponds to the `rememberBrowser` form field.
      </ParamField>
    </ParamField>
  </Expandable>
</ParamField>
