# Interface Object Structure

## Overview

The `interface` object allows for customization of various user interface elements within the application, including visibility and behavior settings for components such as menus, panels, and links. This section provides a detailed breakdown of the `interface` object structure.

There are 7 main fields under `interface`:

  - `privacyPolicy`
  - `termsOfService`
  - `endpointsMenu`
  - `modelSelect`
  - `parameters`
  - `sidePanel`
  - `presets`

**Notes:**

- The `interface` configurations are applied globally within the application.
- Default values are provided for most settings but can be overridden based on specific requirements or conditions.
- Conditional logic in the application can further modify these settings based on other configurations like model specifications.

## Example

```yaml filename="interface"
interface:
  privacyPolicy:
    externalUrl: "https://example.com/privacy"
    openNewTab: true
  termsOfService:
    externalUrl: "https://example.com/terms"
    openNewTab: true
  endpointsMenu: true
  modelSelect: false
  parameters: true
  sidePanel: true
  presets: false
```

## privacyPolicy

**Key:**
<OptionTable
  options={[
    ['privacyPolicy', 'Object', 'Contains settings related to the privacy policy link provided in the user interface.', 'Allows for the specification of a custom URL and the option to open it in a new tab.'],
  ]}
/>

**Sub-keys:**
<OptionTable
  options={[
    ['externalUrl', 'String (URL)', 'The URL pointing to the privacy policy document.', ''],
    ['openNewTab', 'Boolean', 'Specifies whether the link should open in a new tab.', ''],
  ]}
/>

## termsOfService

**Key:**
<OptionTable
  options={[
    ['termsOfService', 'Object', 'Contains settings related to the terms of service link provided in the user interface.', 'Allows for the specification of a custom URL and the option to open it in a new tab.'],
  ]}
/>

**Sub-keys:**
<OptionTable
  options={[
    ['externalUrl', 'String (URL)', 'The URL pointing to the terms of service document.', ''],
    ['openNewTab', 'Boolean', 'Specifies whether the link should open in a new tab.', ''],
  ]}
/>

## endpointsMenu

**Key:**
<OptionTable
  options={[
    ['endpointsMenu', 'Boolean', 'Controls the visibility of the endpoints menu in the interface.', 'Toggling this setting allows administrators to customize the availability of endpoint selections within the application.'],
  ]}
/>

**Default:** `true`

**Example:**
```yaml filename="interface / endpointsMenu"
interface:
  endpointsMenu: false
```

## modelSelect

**Key:**
<OptionTable
  options={[
    ['modelSelect', 'Boolean', 'Determines whether the model selection feature is available in the UI.', 'Enabling this feature allows users to select different models directly from the interface.'],
  ]}
/>

**Default:** `true`

**Example:**
```yaml filename="interface / modelSelect"
interface:
  modelSelect: true
```

## parameters

**Key:**
<OptionTable
  options={[
    ['parameters', 'Boolean', 'Toggles the visibility of parameter configuration options within the interface.', 'This setting is crucial for users who need to adjust parameters for specific functionalities within the application.'],
  ]}
/>

**Default:** `true`

**Example:**
```yaml filename="interface / parameters"
interface:
  parameters: false
```

## sidePanel

**Key:**
<OptionTable
  options={[
    ['sidePanel', 'Boolean', 'Controls the visibility of the side panel in the application\'s interface.', 'The side panel typically contains additional navigation or information relevant to the application\'s context.'],
  ]}
/>

**Default:** `true`

**Example:**
```yaml filename="interface / sidePanel"
interface:
  sidePanel: true
```

## presets

**Key:**
<OptionTable
  options={[
    ['presets', 'Boolean', 'Enables or disables the use of presets in the application\'s UI.', 'Presets can simplify user interactions by providing pre-configured settings or operations, enhancing user experience and efficiency.'],
  ]}
/>

**Default:** `true`

**Example:**
```yaml filename="interface / presets"
interface:
  presets: true
```