# Record Field Classes

## Accessing Record Fields

Use the `getField` method to access record fields.

**Java:**

```java
data.getField(FieldType.class)
```

**Kotlin:**

```kotlin
data.getField<FieldType>()
```

The `FieldType` needs to be a class from the list below.

## Field Type Classes Reference

### KeeperRecordField

All Record Fields extend the KeeperRecordField class, and contain a label field

```
sealed class KeeperRecordField {
    abstract val label: String?
}
```

#### Field Values

| Name  | Type     | Required | Default |
| ----- | -------- | -------- | ------- |
| label | `String` | No       | null    |

### Password

```
data class Password(
    var label: String? = null,
    var required: Boolean? = null,
    var privacyScreen: Boolean? = null,
    var enforceGeneration: Boolean? = null,
    var complexity: PasswordComplexity? = null,
    val value: MutableList<String>
)
```

#### Field Values

| Name              | Type                  | Required | Default |
| ----------------- | --------------------- | -------- | ------- |
| label             | `String`              | No       | null    |
| required          | `Boolean`             | No       | null    |
| privacyScreen     | `Boolean`             | No       | null    |
| enforceGeneration | `Boolean`             | No       | null    |
| value             | `MutableList<String>` | Yes      |         |

### Url

{% code overflow="wrap" %}

```
data class Url(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name          | Type                  | Required | Default |
| ------------- | --------------------- | -------- | ------- |
| label         | `String`              | No       | null    |
| required      | `Boolean`             | No       | null    |
| privacyScreen | `Boolean`             | No       | null    |
| value         | `MutableList<String>` | Yes      |         |

### FileRef

{% code overflow="wrap" %}

```
data class FileRef(var label: String? = null, var required: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name     | Type                  | Required | Default |
| -------- | --------------------- | -------- | ------- |
| label    | `String`              | No       | null    |
| required | `Boolean`             | No       | null    |
| value    | `MutableList<String>` | Yes      |         |

### OneTimeCode

{% code overflow="wrap" %}

```
data class OneTimeCode(var label: String? = null, var required: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name     | Type                  | Required | Default |
| -------- | --------------------- | -------- | ------- |
| label    | `String`              | No       | null    |
| required | `Boolean`             | No       | null    |
| value    | `MutableList<String>` | Yes      |         |

### OneTimePassword

{% code overflow="wrap" %}

```
data class OneTimePassword(var label: String? = null, var required: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name     | Type                  | Required | Default |
| -------- | --------------------- | -------- | ------- |
| label    | `String`              | No       | null    |
| required | `Boolean`             | No       | null    |
| value    | `MutableList<String>` | Yes      |         |

### Name

{% code overflow="wrap" %}

```
data class Name(var first: String? = null, var middle: String? = null, var last: String? = null)
```

{% endcode %}

#### Field Values

| Name   | Type     | Required | Default |
| ------ | -------- | -------- | ------- |
| first  | `String` | No       | null    |
| middle | `String` | No       | null    |
| last   | `String` | No       | null    |

### Names

{% code overflow="wrap" %}

```
data class Names(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<Name>)
```

{% endcode %}

#### Field Values

| Name          | Type                | Required | Default |
| ------------- | ------------------- | -------- | ------- |
| label         | `String`            | No       | null    |
| required      | `Boolean`           | No       | null    |
| privacyScreen | `Boolean`           | No       | null    |
| value         | `MutableList<Name>` | Yes      |         |

### BirthDate

{% code overflow="wrap" %}

```
data class BirthDate(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<Long>)
```

{% endcode %}

#### Field Values

| Name          | Type                | Required | Default |
| ------------- | ------------------- | -------- | ------- |
| label         | `String`            | No       | null    |
| required      | `Boolean`           | No       | null    |
| privacyScreen | `Boolean`           | No       | null    |
| value         | `MutableList<Long>` | Yes      |         |

### Date

{% code overflow="wrap" %}

```
data class Date(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<Long>)
```

{% endcode %}

#### Field Values

| Name          | Type                | Required | Default |
| ------------- | ------------------- | -------- | ------- |
| label         | `String`            | No       | null    |
| required      | `Boolean`           | No       | null    |
| privacyScreen | `Boolean`           | No       | null    |
| value         | `MutableList<Long>` | Yes      |         |

### ExpirationDate

{% code overflow="wrap" %}

```
data class ExpirationDate(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<Long>)
```

{% endcode %}

#### Field Values

| Name          | Type                | Required | Default |
| ------------- | ------------------- | -------- | ------- |
| label         | `String`            | No       | null    |
| required      | `Boolean`           | No       | null    |
| privacyScreen | `Boolean`           | No       | null    |
| value         | `MutableList<Long>` | Yes      |         |

### Text

{% code overflow="wrap" %}

```
data class Text(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, var value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name          | Type                  | Required | Default |
| ------------- | --------------------- | -------- | ------- |
| label         | `String`              | No       | null    |
| required      | `Boolean`             | No       | null    |
| privacyScreen | `Boolean`             | No       | null    |
| value         | `MutableList<String>` | Yes      |         |

### SecurityQuestion

```
data class SecurityQuestion(var question: String? = null, var answer: String? = null)
```

#### Field Values

| Name     | Type     | Required | Default |
| -------- | -------- | -------- | ------- |
| question | `String` | No       | null    |
| answer   | `String` | No       | null    |

### SecurityQuestions

```
data class SecurityQuestions(
    var label: String? = null,
    var required: Boolean? = null,
    var privacyScreen: Boolean? = null,
    val value: MutableList<SecurityQuestion>
)
```

#### Field Values

| Name          | Type                            | Required | Default |
| ------------- | ------------------------------- | -------- | ------- |
| label         | `String`                        | No       | null    |
| required      | `Boolean`                       | No       | null    |
| privacyScreen | `Boolean`                       | No       | null    |
| value         | `MutableList<SecurityQuestion>` | Yes      |         |

### Multiline

{% code overflow="wrap" %}

```
data class Multiline(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name          | Type                  | Required | Default |
| ------------- | --------------------- | -------- | ------- |
| label         | `String`              | No       | null    |
| required      | `Boolean`             | No       | null    |
| privacyScreen | `Boolean`             | No       | null    |
| value         | `MutableList<String>` | Yes      |         |

### Email

{% code overflow="wrap" %}

```
data class Email(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name          | Type                  | Required | Default |
| ------------- | --------------------- | -------- | ------- |
| label         | `String`              | No       | null    |
| required      | `Boolean`             | No       | null    |
| privacyScreen | `Boolean`             | No       | null    |
| value         | `MutableList<String>` | Yes      |         |

### CardRef

{% code overflow="wrap" %}

```
data class CardRef(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name          | Type                  | Required | Default |
| ------------- | --------------------- | -------- | ------- |
| label         | `String`              | No       | null    |
| required      | `Boolean`             | No       | null    |
| privacyScreen | `Boolean`             | No       | null    |
| value         | `MutableList<String>` | Yes      |         |

### AddressRef

{% code overflow="wrap" %}

```
data class AddressRef(var label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name          | Type                  | Required | Default |
| ------------- | --------------------- | -------- | ------- |
| label         | `String`              | No       | null    |
| required      | `Boolean`             | No       | null    |
| privacyScreen | `Boolean`             | No       | null    |
| value         | `MutableList<String>` | Yes      |         |

### PinCode

{% code overflow="wrap" %}

```
data class PinCode(
    var label: String? = null,
    var required: Boolean? = null,
    var privacyScreen: Boolean? = null,
    val value: MutableList<String>
)
```

{% endcode %}

#### Field Values

| Name          | Type                  | Required | Default |
| ------------- | --------------------- | -------- | ------- |
| label         | `String`              | No       | null    |
| required      | `Boolean`             | No       | null    |
| privacyScreen | `Boolean`             | No       | null    |
| value         | `MutableList<String>` | Yes      |         |

### Phone

```
data class Phone(
    val region: String? = null,
    val number: String? = null,
    val ext: String? = null,
    val type: String? = null
)
```

#### Field Values

| Name   | Type     | Required | Default |
| ------ | -------- | -------- | ------- |
| region | `String` | No       | null    |
| number | `String` | No       | null    |
| ext    | `String` | No       | null    |
| type   | `String` | No       | null    |

### Phones

{% code overflow="wrap" %}

```
data class Phones(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: List<Phone>)
```

{% endcode %}

#### Field Values

| Name          | Type          | Required | Default |
| ------------- | ------------- | -------- | ------- |
| label         | `String`      | No       | null    |
| required      | `Boolean`     | No       | null    |
| privacyScreen | `Boolean`     | No       | null    |
| value         | `List<Phone>` | Yes      |         |

### HiddenField

{% code overflow="wrap" %}

```
data class HiddenField(
    val label: String? = null,
    var required: Boolean? = null,
    var privacyScreen: Boolean? = null,
    val value: List<String>
)
```

{% endcode %}

#### Field Values

| Name          | Type           | Required | Default |
| ------------- | -------------- | -------- | ------- |
| label         | `String`       | No       | null    |
| required      | `Boolean`      | No       | null    |
| privacyScreen | `Boolean`      | No       | null    |
| value         | `List<String>` | Yes      |         |

### SecureNote

{% code overflow="wrap" %}

```
data class SecureNote(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: List<String>)
```

{% endcode %}

#### Field Values

| Name          | Type           | Required | Default |
| ------------- | -------------- | -------- | ------- |
| label         | `String`       | No       | null    |
| required      | `Boolean`      | No       | null    |
| privacyScreen | `Boolean`      | No       | null    |
| value         | `List<String>` | Yes      |         |

### AccountNumber

{% code overflow="wrap" %}

```
data class AccountNumber(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: List<String>)
```

{% endcode %}

#### Field Values

| Name          | Type           | Required | Default |
| ------------- | -------------- | -------- | ------- |
| label         | `String`       | No       | null    |
| required      | `Boolean`      | No       | null    |
| privacyScreen | `Boolean`      | No       | null    |
| value         | `List<String>` | Yes      |         |

### PaymentCard

```
data class PaymentCard(
    var cardNumber: String? = null,
    var cardExpirationDate: String? = null,
    var cardSecurityCode: String? = null
)
```

#### Field Values

| Name               | Type     | Required | Default |
| ------------------ | -------- | -------- | ------- |
| cardNumber         | `String` | No       | null    |
| cardExpirationDate | `String` | No       | null    |
| cardSecurityCode   | `String` | No       | null    |

### PaymentCards

{% code overflow="wrap" %}

```
data class PaymentCards(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<PaymentCard>) :
```

{% endcode %}

#### Field Values

| Name          | Type                        | Required | Default |
| ------------- | --------------------------- | -------- | ------- |
| label         | `String`                    | No       | null    |
| required      | `Boolean`                   | No       | null    |
| privacyScreen | `Boolean`                   | No       | null    |
| value         | `MutableList<PaymentCard>)` | Yes      |         |

### BankAccount

```
data class BankAccount(
    var accountType: String? = null,
    var routingNumber: String? = null,
    var accountNumber: String? = null,
    var otherType: String? = null
)
```

#### Field Values

| Name          | Type     | Required | Default |
| ------------- | -------- | -------- | ------- |
| accountType   | `String` | No       | null    |
| routingNumber | `String` | No       | null    |
| accountNumber | `String` | No       | null    |
| otherType     | `String` | No       | null    |

### BankAccounts

{% code overflow="wrap" %}

```
data class BankAccounts(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<BankAccount>) :
```

{% endcode %}

#### Field Values

| Name          | Type                        | Required | Default |
| ------------- | --------------------------- | -------- | ------- |
| label         | `String`                    | No       | null    |
| required      | `Boolean`                   | No       | null    |
| privacyScreen | `Boolean`                   | No       | null    |
| value         | `MutableList<BankAccount>)` | Yes      |         |

### KeyPair

```
data class KeyPair(
    val publicKey: String? = null,
    val privateKey: String? = null,
)
```

#### Field Values

| Name       | Type     | Required | Default |
| ---------- | -------- | -------- | ------- |
| publicKey  | `String` | no       | null    |
| privateKey | `String` | no       | null    |

### KeyPairs

{% code overflow="wrap" %}

```
data class KeyPairs(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<KeyPair>)
```

{% endcode %}

#### Field Values

| Name          | Type                   | Required | Default |
| ------------- | ---------------------- | -------- | ------- |
| label         | `String`               | No       | null    |
| required      | `Boolean`              | No       | null    |
| privacyScreen | `Boolean`              | No       | null    |
| value         | `MutableList<KeyPair>` | Yes      |         |

### Host

```
data class Host(
    val hostName: String? = null,
    val port: String? = null,
    val allowSupplyUser: Boolean? = null,
    val allowSupplyHost: Boolean? = null
)
```

#### Field Values

| Name            | Type      | Required | Default |
| --------------- | --------- | -------- | ------- |
| hostName        | `String`  | No       | null    |
| port            | `String`  | No       | null    |
| allowSupplyUser | `Boolean` | No       | null    |
| allowSupplyHost | `Boolean` | No       | null    |

### Hosts

{% code overflow="wrap" %}

```
data class Hosts(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<Host>)
```

{% endcode %}

#### Field Values

| Name          | Type                | Required | Default |
| ------------- | ------------------- | -------- | ------- |
| label         | `String`            | No       | null    |
| required      | `Boolean`           | No       | null    |
| privacyScreen | `Boolean`           | No       | null    |
| value         | `MutableList<Host>` | Yes      |         |

### Address

```
data class Address(
    val street1: String? = null,
    val street2: String? = null,
    val city: String? = null,
    val state: String? = null,
    val country: String? = null,
    val zip: String? = null
)
```

#### Field Values

| Name    | Type     | Required | Default |
| ------- | -------- | -------- | ------- |
| street1 | `String` | No       | null    |
| street2 | `String` | No       | null    |
| city    | `String` | No       | null    |
| state   | `String` | No       | null    |
| country | `String` | No       | null    |
| zip     | `String` | No       | null    |

### Addresses

{% code overflow="wrap" %}

```
data class Addresses(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<Address>)
```

{% endcode %}

#### Field Values

| Name          | Type                   | Required | Default |
| ------------- | ---------------------- | -------- | ------- |
| label         | `String`               | No       | null    |
| required      | `Boolean`              | No       | null    |
| privacyScreen | `Boolean`              | No       | null    |
| value         | `MutableList<Address>` | Yes      |         |

### LicenseNumber

{% code overflow="wrap" %}

```
data class LicenseNumber(val label: String? = null, var required: Boolean? = null, var privacyScreen: Boolean? = null, val value: MutableList<String>)
```

{% endcode %}

#### Field Values

| Name          | Type                  | Required | Default |
| ------------- | --------------------- | -------- | ------- |
| label         | `String`              | No       | null    |
| required      | `Boolean`             | No       | null    |
| privacyScreen | `Boolean`             | No       | null    |
| value         | `MutableList<String>` | Yes      |         |

### KeeperFileData

```
data class KeeperFileData(
    val title: String,
    val name: String,
    val type: String?,
    val size: Long,
    val lastModified: Long
)
```

#### Field Values

| Name         | Type     | Required | Default |
| ------------ | -------- | -------- | ------- |
| title        | `String` | Yes      |         |
| name         | `String` | Yes      |         |
| type         | `String` | No       | Null    |
| size         | `Long`   | Yes      |         |
| lastModified | `Long`   | Yes      |         |

### AllowedSettings

Configuration object defining which operations are permitted for a PAM resource.

{% code overflow="wrap" %}

```
data class AllowedSettings(
    val connections: Boolean? = null,
    val portForwards: Boolean? = null,
    val rotation: Boolean? = null,
    val sessionRecording: Boolean? = null,
    val typescriptRecording: Boolean? = null
)
```

{% endcode %}

#### Field Values

| Name                | Type      | Required | Default | Description                   |
| ------------------- | --------- | -------- | ------- | ----------------------------- |
| connections         | `Boolean` | No       | null    | Allow connections to resource |
| portForwards        | `Boolean` | No       | null    | Allow port forwarding         |
| rotation            | `Boolean` | No       | null    | Allow credential rotation     |
| sessionRecording    | `Boolean` | No       | null    | Enable session recording      |
| typescriptRecording | `Boolean` | No       | null    | Enable typescript recording   |

### PamResource

PAM resource reference containing controller, folder, and credential information.

{% code overflow="wrap" %}

```
data class PamResource(
    val controllerUid: String? = null,
    val folderUid: String? = null,
    val resourceRef: MutableList<String>? = null,
    val adminCredentialRef: String? = null,
    val allowedSettings: AllowedSettings? = null
)
```

{% endcode %}

#### Field Values

| Name               | Type                  | Required | Default | Description                        |
| ------------------ | --------------------- | -------- | ------- | ---------------------------------- |
| controllerUid      | `String`              | No       | null    | Controller UID                     |
| folderUid          | `String`              | No       | null    | Folder UID                         |
| resourceRef        | `MutableList<String>` | No       | null    | Resource reference UIDs            |
| adminCredentialRef | `String`              | No       | null    | Admin credential UID               |
| allowedSettings    | `AllowedSettings`     | No       | null    | Permitted operations configuration |

### PamResources

PAM resource configurations for accessing privileged resources.

{% code overflow="wrap" %}

```
data class PamResources(
    val label: String? = null,
    var required: Boolean? = null,
    val value: MutableList<PamResource>
)
```

{% endcode %}

#### Field Values

| Name     | Type                       | Required | Default | Description               |
| -------- | -------------------------- | -------- | ------- | ------------------------- |
| label    | `String`                   | No       | null    | Field label               |
| required | `Boolean`                  | No       | null    | Whether field is required |
| value    | `MutableList<PamResource>` | Yes      |         | List of PAM resources     |

#### Example Usage

```java
PamResources pamResources = data.getField(PamResources.class);
if (pamResources != null && !pamResources.getValue().isEmpty()) {
    PamResource resource = pamResources.getValue().get(0);
    System.out.println("Controller UID: " + resource.getControllerUid());
    System.out.println("Folder UID: " + resource.getFolderUid());

    if (resource.getAllowedSettings() != null) {
        System.out.println("Connections allowed: " + resource.getAllowedSettings().getConnections());
        System.out.println("Rotation allowed: " + resource.getAllowedSettings().getRotation());
    }
}
```

### PamHostnames

Hostnames associated with PAM resources. Uses the `Host` type for hostname and port information.

{% code overflow="wrap" %}

```
data class PamHostnames(
    val label: String? = null,
    var required: Boolean? = null,
    var privacyScreen: Boolean? = null,
    val value: MutableList<Host>
)
```

{% endcode %}

#### Field Values

| Name          | Type                | Required | Default | Description               |
| ------------- | ------------------- | -------- | ------- | ------------------------- |
| label         | `String`            | No       | null    | Field label               |
| required      | `Boolean`           | No       | null    | Whether field is required |
| privacyScreen | `Boolean`           | No       | null    | Enable privacy screen     |
| value         | `MutableList<Host>` | Yes      |         | List of hosts             |

{% hint style="info" %}
**Note**: `PamHostnames` uses the `Host` type (hostname + port) which is documented in the Hosts section above.
{% endhint %}

#### Example Usage

```java
PamHostnames hostnames = data.getField(PamHostnames.class);
if (hostnames != null && !hostnames.getValue().isEmpty()) {
    for (Host host : hostnames.getValue()) {
        System.out.println("Hostname: " + host.getHostName());
        System.out.println("Port: " + host.getPort());
    }
}
```

### PamRbiConnection

RBI (Remote Browser Isolation) connection settings including audio and clipboard controls.

{% code overflow="wrap" %}

```
data class PamRbiConnection(
    val protocol: String? = null,
    val userRecords: MutableList<String>? = null,
    val recordingIncludeKeys: Boolean? = null,
    val allowUrlManipulation: Boolean? = null,
    val allowedUrlPatterns: String? = null,
    val allowedResourceUrlPatterns: String? = null,
    val httpCredentialsUid: String? = null,
    val autofillConfiguration: String? = null,
    val ignoreInitialSslCert: Boolean? = null,
    val disableAudio: Boolean? = null,
    val disableCopy: Boolean? = null,
    val disablePaste: Boolean? = null,
    val audioChannels: Int? = null,
    val audioBps: Int? = null,
    val audioSampleRate: Int? = null
)
```

{% endcode %}

#### Field Values

| Name                       | Type                  | Required | Default | Description                                       |
| -------------------------- | --------------------- | -------- | ------- | ------------------------------------------------- |
| protocol                   | `String`              | No       | null    | Connection protocol                               |
| userRecords                | `MutableList<String>` | No       | null    | Associated user record UIDs                       |
| recordingIncludeKeys       | `Boolean`             | No       | null    | Include keystrokes in recording                   |
| allowUrlManipulation       | `Boolean`             | No       | null    | Allow URL manipulation                            |
| allowedUrlPatterns         | `String`              | No       | null    | Allowed URL patterns                              |
| allowedResourceUrlPatterns | `String`              | No       | null    | Allowed resource URL patterns                     |
| httpCredentialsUid         | `String`              | No       | null    | HTTP credentials record UID                       |
| autofillConfiguration      | `String`              | No       | null    | Autofill configuration JSON                       |
| ignoreInitialSslCert       | `Boolean`             | No       | null    | Ignore initial SSL certificate errors             |
| **disableAudio**           | `Boolean`             | No       | null    | **Disable audio for RBI sessions**                |
| **disableCopy**            | `Boolean`             | No       | null    | **Disable clipboard copy operations**             |
| **disablePaste**           | `Boolean`             | No       | null    | **Disable clipboard paste operations**            |
| **audioChannels**          | `Int`                 | No       | null    | **Number of audio channels (e.g., 2 for stereo)** |
| **audioBps**               | `Int`                 | No       | null    | **Audio bits per second (e.g., 16)**              |
| **audioSampleRate**        | `Int`                 | No       | null    | **Audio sample rate in Hz (e.g., 44100)**         |

{% hint style="info" %}
**New in v17.1.3**: The six fields in **bold** (disableAudio, disableCopy, disablePaste, audioChannels, audioBps, audioSampleRate) were added to support RBI audio and clipboard controls.
{% endhint %}

### PamRemoteBrowserSetting

Container for RBI connection settings.

{% code overflow="wrap" %}

```
data class PamRemoteBrowserSetting(
    val connection: PamRbiConnection? = null
)
```

{% endcode %}

#### Field Values

| Name       | Type               | Required | Default | Description                  |
| ---------- | ------------------ | -------- | ------- | ---------------------------- |
| connection | `PamRbiConnection` | No       | null    | RBI connection configuration |

### PamRemoteBrowserSettings

Remote Browser Isolation settings for secure browser-based access to privileged resources.

{% code overflow="wrap" %}

```
data class PamRemoteBrowserSettings(
    val label: String? = null,
    var required: Boolean? = null,
    val value: MutableList<PamRemoteBrowserSetting>
)
```

{% endcode %}

#### Field Values

| Name     | Type                                   | Required | Default | Description               |
| -------- | -------------------------------------- | -------- | ------- | ------------------------- |
| label    | `String`                               | No       | null    | Field label               |
| required | `Boolean`                              | No       | null    | Whether field is required |
| value    | `MutableList<PamRemoteBrowserSetting>` | Yes      |         | List of RBI settings      |

#### Example Usage

```java
PamRemoteBrowserSettings rbiSettings = data.getField(PamRemoteBrowserSettings.class);
if (rbiSettings != null && !rbiSettings.getValue().isEmpty()) {
    PamRemoteBrowserSetting setting = rbiSettings.getValue().get(0);
    PamRbiConnection connection = setting.getConnection();

    if (connection != null) {
        System.out.println("Protocol: " + connection.getProtocol());
        System.out.println("Audio disabled: " + connection.getDisableAudio());
        System.out.println("Copy disabled: " + connection.getDisableCopy());
        System.out.println("Paste disabled: " + connection.getDisablePaste());

        if (connection.getAudioChannels() != null) {
            System.out.println("Audio channels: " + connection.getAudioChannels());
            System.out.println("Audio sample rate: " + connection.getAudioSampleRate());
        }
    }
}
```

### PamSettingsConnection

Protocol-specific connection settings for PAM resources (RDP, SSH/Terminal, VNC, Kubernetes). Fields are organized by protocol type and only populated when relevant to the connection type.

{% code overflow="wrap" %}

```
data class PamSettingsConnection(
    // Base connection properties
    val protocol: String? = null,
    val userRecords: MutableList<String>? = null,
    val port: String? = null,
    val allowSupplyUser: Boolean? = null,
    val allowSupplyHost: Boolean? = null,
    val recordingIncludeKeys: Boolean? = null,

    // Common display and security settings
    val colorScheme: String? = null,
    val resizeMethod: String? = null,
    val security: String? = null,
    val ignoreCert: Boolean? = null,

    // Clipboard settings
    val disableCopy: Boolean? = null,
    val disablePaste: Boolean? = null,

    // Database-specific fields
    val database: String? = null,
    val disableCsvExport: Boolean? = null,
    val disableCsvImport: Boolean? = null,

    // SSH/Terminal settings (10 new fields)
    val hostKey: String? = null,
    val command: String? = null,
    val fontSize: String? = null,
    val fontName: String? = null,
    val scrollback: Int? = null,
    val backspace: String? = null,
    val terminalType: String? = null,
    val clipboardEncoding: String? = null,
    val locale: String? = null,
    val timezone: String? = null,
    val serverAliveInterval: Int? = null,

    // VNC settings (7 new fields)
    val destHost: String? = null,
    val destPort: String? = null,
    val enableAudio: Boolean? = null,
    val audioServername: String? = null,
    val swapRedBlue: Boolean? = null,
    val cursor: String? = null,
    val forceLossless: Boolean? = null,

    // RDP specific settings (26 new fields)
    val disableAuth: Boolean? = null,
    val loadBalanceInfo: String? = null,
    val preconnectionId: String? = null,
    val preconnectionBlob: String? = null,
    val disableAudio: Boolean? = null,
    val enableWallpaper: Boolean? = null,
    val enableFullWindowDrag: Boolean? = null,
    val sftp: SFTPConnection? = null,
    val initialProgram: String? = null,
    val normalizeClipboard: String? = null,
    val clientName: String? = null,
    val serverLayout: String? = null,
    val enableTouch: Boolean? = null,
    val console: Boolean? = null,
    val width: Int? = null,
    val height: Int? = null,
    val dpi: Int? = null,
    val colorDepth: Int? = null,
    val readOnly: Boolean? = null,
    val consoleAudio: Boolean? = null,
    val enableAudioInput: Boolean? = null,
    val enablePrinting: Boolean? = null,
    val enableTheming: Boolean? = null,
    val enableFontSmoothing: Boolean? = null,
    val enableDesktopComposition: Boolean? = null,
    val enableMenuAnimations: Boolean? = null,
    val disableBitmapCaching: Boolean? = null,
    val disableOffscreenCaching: Boolean? = null,
    val disableGlyphCaching: Boolean? = null,
    val remoteApp: String? = null,
    val remoteAppDir: String? = null,
    val remoteAppArgs: String? = null,
    val redirectedPrinterName: String? = null,

    // Kubernetes settings (6 new fields)
    val useSSL: Boolean? = null,
    val namespace: String? = null,
    val pod: String? = null,
    val container: String? = null,
    val caCert: String? = null,
    val clientCert: String? = null,
    val clientKey: String? = null
)
```

{% endcode %}

#### Field Values by Protocol

**Common Fields (All Protocols)**

| Name                 | Type                  | Required | Default | Description                     |
| -------------------- | --------------------- | -------- | ------- | ------------------------------- |
| protocol             | `String`              | No       | null    | Connection protocol type        |
| userRecords          | `MutableList<String>` | No       | null    | Associated user record UIDs     |
| port                 | `String`              | No       | null    | Connection port number          |
| allowSupplyUser      | `Boolean`             | No       | null    | Allow user to supply username   |
| allowSupplyHost      | `Boolean`             | No       | null    | Allow user to supply hostname   |
| recordingIncludeKeys | `Boolean`             | No       | null    | Include keystrokes in recording |
| colorScheme          | `String`              | No       | null    | Color scheme preference         |
| resizeMethod         | `String`              | No       | null    | Window resize method            |
| security             | `String`              | No       | null    | Security level                  |
| ignoreCert           | `Boolean`             | No       | null    | Ignore certificate errors       |
| disableCopy          | `Boolean`             | No       | null    | Disable clipboard copy          |
| disablePaste         | `Boolean`             | No       | null    | Disable clipboard paste         |

**SSH/Terminal Fields**

| Name                    | Type     | Required | Default | Description                                  |
| ----------------------- | -------- | -------- | ------- | -------------------------------------------- |
| **fontName**            | `String` | No       | null    | **Terminal font name (e.g., "Courier New")** |
| **scrollback**          | `Int`    | No       | null    | **Scrollback buffer size in lines**          |
| **backspace**           | `String` | No       | null    | **Backspace key behavior (e.g., "^H")**      |
| **terminalType**        | `String` | No       | null    | **Terminal type (e.g., "xterm-256color")**   |
| **clipboardEncoding**   | `String` | No       | null    | **Clipboard text encoding (e.g., "UTF-8")**  |
| **locale**              | `String` | No       | null    | **Locale setting (e.g., "en\_US.UTF-8")**    |
| **serverAliveInterval** | `Int`    | No       | null    | **Keep-alive interval in seconds**           |
| **timezone**            | `String` | No       | null    | **Timezone (e.g., "America/New\_York")**     |
| hostKey                 | `String` | No       | null    | SSH host key                                 |
| command                 | `String` | No       | null    | Command to execute on connection             |
| fontSize                | `String` | No       | null    | Terminal font size                           |

**VNC Fields**

| Name                | Type      | Required | Default | Description                                       |
| ------------------- | --------- | -------- | ------- | ------------------------------------------------- |
| **enableAudio**     | `Boolean` | No       | null    | **Enable audio streaming**                        |
| **audioServername** | `String`  | No       | null    | **Audio server hostname**                         |
| **swapRedBlue**     | `Boolean` | No       | null    | **Swap red and blue color channels**              |
| **cursor**          | `String`  | No       | null    | **Cursor display mode (e.g., "remote", "local")** |
| **forceLossless**   | `Boolean` | No       | null    | **Force lossless compression**                    |
| destHost            | `String`  | No       | null    | Destination host for VNC proxy                    |
| destPort            | `String`  | No       | null    | Destination port for VNC proxy                    |

**RDP Fields**

| Name                         | Type             | Required | Default | Description                                |
| ---------------------------- | ---------------- | -------- | ------- | ------------------------------------------ |
| **width**                    | `Int`            | No       | null    | **Screen width in pixels**                 |
| **height**                   | `Int`            | No       | null    | **Screen height in pixels**                |
| **dpi**                      | `Int`            | No       | null    | **Screen DPI (dots per inch)**             |
| **colorDepth**               | `Int`            | No       | null    | **Color depth in bits (e.g., 16, 24, 32)** |
| **initialProgram**           | `String`         | No       | null    | **Program to run on connection**           |
| **remoteApp**                | `String`         | No       | null    | **RemoteApp program name**                 |
| **remoteAppDir**             | `String`         | No       | null    | **RemoteApp working directory**            |
| **remoteAppArgs**            | `String`         | No       | null    | **RemoteApp command-line arguments**       |
| **clientName**               | `String`         | No       | null    | **Client computer name**                   |
| **serverLayout**             | `String`         | No       | null    | **Keyboard layout (e.g., "en-US")**        |
| **normalizeClipboard**       | `String`         | No       | null    | **Clipboard normalization mode**           |
| **console**                  | `Boolean`        | No       | null    | **Connect to console session**             |
| **readOnly**                 | `Boolean`        | No       | null    | **Read-only connection**                   |
| **consoleAudio**             | `Boolean`        | No       | null    | **Enable console audio**                   |
| **enableAudioInput**         | `Boolean`        | No       | null    | **Enable audio input (microphone)**        |
| **enableTouch**              | `Boolean`        | No       | null    | **Enable touch input**                     |
| **enablePrinting**           | `Boolean`        | No       | null    | **Enable printer redirection**             |
| **enableTheming**            | `Boolean`        | No       | null    | **Enable desktop theming**                 |
| **enableFontSmoothing**      | `Boolean`        | No       | null    | **Enable font smoothing**                  |
| **enableDesktopComposition** | `Boolean`        | No       | null    | **Enable desktop composition**             |
| **enableMenuAnimations**     | `Boolean`        | No       | null    | **Enable menu animations**                 |
| **disableBitmapCaching**     | `Boolean`        | No       | null    | **Disable bitmap caching**                 |
| **disableOffscreenCaching**  | `Boolean`        | No       | null    | **Disable offscreen caching**              |
| **disableGlyphCaching**      | `Boolean`        | No       | null    | **Disable glyph caching**                  |
| **redirectedPrinterName**    | `String`         | No       | null    | **Redirected printer name**                |
| disableAuth                  | `Boolean`        | No       | null    | Disable authentication                     |
| loadBalanceInfo              | `String`         | No       | null    | Load balancing information                 |
| preconnectionId              | `String`         | No       | null    | Pre-connection ID                          |
| preconnectionBlob            | `String`         | No       | null    | Pre-connection blob                        |
| disableAudio                 | `Boolean`        | No       | null    | Disable all audio                          |
| enableWallpaper              | `Boolean`        | No       | null    | Enable desktop wallpaper                   |
| enableFullWindowDrag         | `Boolean`        | No       | null    | Enable full window drag                    |
| sftp                         | `SFTPConnection` | No       | null    | SFTP connection settings                   |

**Kubernetes Fields**

| Name           | Type      | Required | Default | Description                         |
| -------------- | --------- | -------- | ------- | ----------------------------------- |
| **useSSL**     | `Boolean` | No       | null    | **Use SSL/TLS connection**          |
| **namespace**  | `String`  | No       | null    | **Kubernetes namespace**            |
| **pod**        | `String`  | No       | null    | **Pod name**                        |
| **container**  | `String`  | No       | null    | **Container name within pod**       |
| **caCert**     | `String`  | No       | null    | **CA certificate (PEM format)**     |
| **clientCert** | `String`  | No       | null    | **Client certificate (PEM format)** |
| **clientKey**  | `String`  | No       | null    | **Client private key (PEM format)** |

**Database Fields**

| Name             | Type      | Required | Default | Description        |
| ---------------- | --------- | -------- | ------- | ------------------ |
| database         | `String`  | No       | null    | Database name      |
| disableCsvExport | `Boolean` | No       | null    | Disable CSV export |
| disableCsvImport | `Boolean` | No       | null    | Disable CSV import |

{% hint style="info" %}
**New in v17.1.3**: The 43 fields in **bold** were added to support protocol-specific connection settings:

* **10 SSH/Terminal fields** - Terminal display and localization settings
* **7 VNC fields** - Audio and display control
* **26 RDP fields** - Display, audio, application, and performance settings
* **6 Kubernetes fields** - Container access and TLS configuration
  {% endhint %}

{% hint style="warning" %}
**Protocol-Specific Field Availability**: Not all fields are populated for every connection type. Only fields relevant to the active protocol will contain values. Always check for null before accessing protocol-specific fields.
{% endhint %}

### PamSettingsPortForward

Port forwarding configuration including local port customization.

{% code overflow="wrap" %}

```
data class PamSettingsPortForward(
    val reusePort: Boolean? = null,
    val port: String? = null,
    val useSpecifiedLocalPort: Boolean? = null,
    val localPort: String? = null
)
```

{% endcode %}

#### Field Values

| Name                      | Type      | Required | Default | Description                                        |
| ------------------------- | --------- | -------- | ------- | -------------------------------------------------- |
| reusePort                 | `Boolean` | No       | null    | Reuse port for multiple connections                |
| port                      | `String`  | No       | null    | Remote port to forward                             |
| **useSpecifiedLocalPort** | `Boolean` | No       | null    | **Use custom local port instead of auto-assigned** |
| **localPort**             | `String`  | No       | null    | **Specific local port number to use**              |

{% hint style="info" %}
**New in v17.1.3**: The two fields in **bold** (useSpecifiedLocalPort, localPort) were added to support custom local port configuration for port forwarding.
{% endhint %}

### PamSetting

Container combining connection and port forwarding settings for PAM.

{% code overflow="wrap" %}

```
data class PamSetting(
    val connection: PamSettingsConnection? = null,
    val portForward: PamSettingsPortForward? = null,
    val allowSupplyHost: Boolean? = null
)
```

{% endcode %}

#### Field Values

| Name            | Type                     | Required | Default | Description                   |
| --------------- | ------------------------ | -------- | ------- | ----------------------------- |
| connection      | `PamSettingsConnection`  | No       | null    | Connection settings           |
| portForward     | `PamSettingsPortForward` | No       | null    | Port forwarding configuration |
| allowSupplyHost | `Boolean`                | No       | null    | Allow user to supply hostname |

### PamSettings

Protocol-specific connection settings and port forwarding configurations for PAM resources.

{% code overflow="wrap" %}

```
data class PamSettings(
    val label: String? = null,
    var required: Boolean? = null,
    val value: MutableList<PamSetting>
)
```

{% endcode %}

#### Field Values

| Name     | Type                      | Required | Default | Description               |
| -------- | ------------------------- | -------- | ------- | ------------------------- |
| label    | `String`                  | No       | null    | Field label               |
| required | `Boolean`                 | No       | null    | Whether field is required |
| value    | `MutableList<PamSetting>` | Yes      |         | List of PAM settings      |

#### Example Usage

```java
PamSettings pamSettings = data.getField(PamSettings.class);
if (pamSettings != null && !pamSettings.getValue().isEmpty()) {
    PamSetting setting = pamSettings.getValue().get(0);

    // Access connection settings
    if (setting.getConnection() != null) {
        PamSettingsConnection conn = setting.getConnection();
        System.out.println("Protocol: " + conn.getProtocol());
        System.out.println("Port: " + conn.getPort());

        // Protocol-specific fields
        if ("rdp".equals(conn.getProtocol())) {
            System.out.println("Screen: " + conn.getWidth() + "x" + conn.getHeight());
            System.out.println("Color depth: " + conn.getColorDepth());
        } else if ("ssh".equals(conn.getProtocol())) {
            System.out.println("Terminal type: " + conn.getTerminalType());
            System.out.println("Font: " + conn.getFontName());
        }
    }

    // Access port forwarding settings
    if (setting.getPortForward() != null) {
        PamSettingsPortForward pf = setting.getPortForward();
        System.out.println("Remote port: " + pf.getPort());

        if (Boolean.TRUE.equals(pf.getUseSpecifiedLocalPort())) {
            System.out.println("Local port: " + pf.getLocalPort());
        } else {
            System.out.println("Local port: Auto-assigned");
        }
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/keeperpam/secrets-manager/developer-sdk-library/java-sdk/record-field-classes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
