# CreateRestoreCredentialRequest

Artifact: [androidx.credentials:credentials](https://developer.android.com/jetpack/androidx/releases/credentials) [View Source](https://cs.android.com/search?q=file:androidx/credentials/CreateRestoreCredentialRequest.kt+class:androidx.credentials.CreateRestoreCredentialRequest) Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.5.0)

*** ** * ** ***

<br />

```
public final class CreateRestoreCredentialRequest extends CreateCredentialRequest
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.credentials.CreateCredentialRequest](https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest) ||
|   | ↳ | [androidx.credentials.CreateRestoreCredentialRequest](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest) |

*** ** * ** ***

A request to create a restore credential used for app restore purpose. [App restore feature](https://www.android.com/transfer-data-android-to-android/) is a feature that allows users to copy an app and its data to a new Android device.

If the `https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest#isCloudBackupEnabled()` is true, the restore credential service will periodically backup the restore credential to cloud. In order to use this setting, the user device must enable backup and have end-to-end-encryption enabled, such as screen lock. More about cloud backup can be found [here](https://developer.android.com/identity/data/backup). Cloud backup is supported on Android 2.2 and above. If the cloud backup is not enabled, catch the `https://developer.android.com/reference/androidx/credentials/exceptions/restorecredential/E2eeUnavailableException` and retry without cloud backup.

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/credentials/exceptions/restorecredential/E2eeUnavailableException` | if `https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest#isCloudBackupEnabled()` was requested but the user device did not enable backup or e2ee (screen lock). |
| `https://developer.android.com/reference/androidx/credentials/exceptions/restorecredential/CreateRestoreCredentialDomException` | if the requestJson is an invalid Json that does not follow the standard webauthn web json format |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | If `https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest#requestJson()` is empty, or if it is not a valid JSON, or if it doesn't have a valid `user.id` defined according to the webauthn spec (https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson) |

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest#CreateRestoreCredentialRequest(kotlin.String,kotlin.Boolean)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html requestJson, boolean isCloudBackupEnabled )` |

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest#getRequestJson()()` the request in JSON format in the [standard webauthn web json](https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson). |
| `final boolean` | `https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest#isCloudBackupEnabled()()` whether the credential should be backed up to cloud. |

### Inherited methods

From [androidx.credentials.CreateCredentialRequest](https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest) `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/os/Bundle.html` `https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest#getCandidateQueryData()()`

the partial request data in the `https://developer.android.com/reference/android/os/Bundle.html` format that will be sent to the provider during the initial candidate query stage, which should not contain sensitive user credential information (note: bundle keys in the form of `androidx.credentials.*` are reserved for internal library use)
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/os/Bundle.html` `https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest#getCredentialData()()`

the request data in the `https://developer.android.com/reference/android/os/Bundle.html` format
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest.DisplayInfo` `https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest#getDisplayInfo()()`

the information to be displayed on the screen
`final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest#getOrigin()()`

the origin of a different application if the request is being made on behalf of that application (Note: for API level \>=34, setting a non-null value for this parameter will throw a SecurityException if android.permission.CREDENTIAL_MANAGER_SET_ORIGIN is not present)
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest#getType()()`

the credential type determined by the credential-type-specific subclass (e.g. the type for `https://developer.android.com/reference/androidx/credentials/CreatePasswordRequest` is `https://developer.android.com/reference/androidx/credentials/PasswordCredential#TYPE_PASSWORD_CREDENTIAL()` and for `https://developer.android.com/reference/androidx/credentials/CreatePublicKeyCredentialRequest` is `https://developer.android.com/reference/androidx/credentials/PublicKeyCredential#TYPE_PUBLIC_KEY_CREDENTIAL()`)
`final boolean` `https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest#isAutoSelectAllowed()()`

whether a create option will be automatically chosen if it is the only one available to the user
`final boolean` `https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest#isSystemProviderRequired()()`

true if must only be fulfilled by a system provider and false otherwise
`final boolean` `https://developer.android.com/reference/androidx/credentials/CreateCredentialRequest#preferImmediatelyAvailableCredentials()()`

true if you prefer the operation to return immediately when there is no available passkey registration offering instead of falling back to discovering remote options, and false (preferred by default) otherwise

## Public constructors

### CreateRestoreCredentialRequest

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.5.0)

```
public CreateRestoreCredentialRequest(
    @NonNull String requestJson,
    boolean isCloudBackupEnabled
)
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html requestJson` | the request in JSON format in the [standard webauthn web json](https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson). |
| `boolean isCloudBackupEnabled` | whether the credential should be backed up to cloud. |

## Public methods

### getRequestJson

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.5.0)

```
public final @NonNull String getRequestJson()
```

the request in JSON format in the [standard webauthn web json](https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson).

### isCloudBackupEnabled

Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.5.0)

```
public final boolean isCloudBackupEnabled()
```

whether the credential should be backed up to cloud.