> ## Documentation Index
> Fetch the complete documentation index at: https://developers.fibery.com/llms.txt
> Use this file to discover all available pages before exploring further.

# App configuration

> Define the configuration schema for a custom integration app.

## **App schema**

Each app should follow strict schema with the following structure (all fields are required):

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Type</th>
      <th>Description</th>
      <th>Example</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>name</td>
      <td>string</td>
      <td>Name</td>
      <td>"MyApp"</td>
    </tr>

    <tr>
      <td>website</td>
      <td>string</td>
      <td>Website</td>
      <td>"[http://myawesomeapp.com](http://myawesomeapp.com)"</td>
    </tr>

    <tr>
      <td>version</td>
      <td>string</td>
      <td>Version</td>
      <td>"1.0.0"</td>
    </tr>

    <tr>
      <td>description</td>
      <td>string</td>
      <td>Description</td>
      <td>"My awesome app"</td>
    </tr>

    <tr>
      <td>authentication</td>
      <td>Array</td>
      <td>Authentications</td>
      <td>`[{id: "none", name: "no auth"}]`</td>
    </tr>

    <tr>
      <td>sources</td>
      <td>Array</td>
      <td>Empty array</td>
      <td>`[]`</td>
    </tr>

    <tr>
      <td>responsibleFor</td>
      <td>Object</td>
      <td>Responsibilities</td>

      <td>
        ```json theme={null}
        {
          "dataSynchronization": true,
          "dataImport": false,
          "automations": true
        }
        ```

        <ul>
          <li>`dataSynchronization` — your custom app will be visible in the list of available integrations</li>
          <li>`dataImport` — your custom app will be visible in the list of available imports</li>
          <li>`automations` — your custom app will be visible in the list of available automation actions</li>
        </ul>
      </td>
    </tr>
  </tbody>
</table>

## **Authentication**

Authentication model represents type of authentication in app and has following structure:

| Name | Type | Description | Required | Example |
| - | - | - | - | - |
| id | string | Identity of authenticaiton | true | "oauth" or "token" |
| name | string | Name of authentication | true | "Connection Settings" |
| description | string | Description of authentication | false | "Give the name for connection" |
| fields | Array | Authentication fields | false | `[{optional: false, id: "accountName", name: "Title", type: "text", description: 'Give the name for connection'}]` |

If your app doesn't require authentication, add authentication with *id* = "none". In the case you can omit *fields*.

## **Authentication field**

Authentication field represents the field in account. So account that will send to API endpoints will consist of the authentication fields. Authentication field has following structure:

| Name | Type | Description | Required | Example |
| - | - | - | - | - |
| id | string | Id of field. The id will be specified in account object. | true | "accountName" |
| name | string | Name of the field. Will be displayed in auth form. | true | "Title" |
| type | string | Type of the field | true | "text" |
| description | string | Description of the field | true | "Give the name for connection" |
| optional | boolean | Is the field optional | false | false |
| value | string | Default value of the field | false | null |

Read about [Custom App: Fields](/guides/integrations/fields). Note that authentication field with some types requires more information to specify. For example, for *highlightText* type you also need to specify *editorMode* in authentication field.

## **Filter**

Filter represents filter that will be applied on data. Filter has following structure:

| Name | Type | Description | Required | Example |
| - | - | - | - | - |
| id | string | Id of filter | true | "table" |
| title | string | Title of filter | true | "Table" |
| type | string | Type of filter | true | "list" |
| datalist | boolean | Is filter has values to select from | false | true |
| optional | boolean | Is filter optional | false | false |
| secured | boolean | Secured filter values are not available for change by non-owner | false | true |

See [Integration Filters](/guides/integrations/filters).

Some additional properties should be specified in case when filters should be displayed in special modes, for example JSON or SQL. For example, for *highlightText* type you also need to specify *editorMode* for the filter field.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.