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

# API configuration (`providers.yaml`)

API configurations are listed in the `providers.yaml` file, located in the [Nango GitHub repository](https://github.com/NangoHQ/nango/blob/master/packages/providers/providers.yaml).

## Examples

> [tab] Hubspot
>
> ```yaml theme={null}
> hubspot:
>     display_name: HubSpot
>     categories:
>         - marketing
>         - support
>         - crm
>     auth_mode: OAUTH2
>     authorization_url: https://app.hubspot.com/oauth/authorize
>     token_url: https://api.hubapi.com/oauth/v1/token
>     connection_configuration:
>         - portalId
>     post_connection_script: hubspotPostConnection
>     webhook_routing_script: hubspotWebhookRouting
>     proxy:
>         base_url: https://api.hubapi.com
>         decompress: true
>         paginate:
>             type: cursor
>             cursor_path_in_response: paging.next.after
>             limit_name_in_request: limit
>             cursor_name_in_request: after
>             response_path: results
>     docs: https://nango.dev/docs/api-integrations/hubspot
> ```

> [tab] Salesforce
>
> ```yaml theme={null}
> salesforce:
>     display_name: Salesforce
>     categories:
>         - crm
>     auth_mode: OAUTH2
>     authorization_url: https://login.salesforce.com/services/oauth2/authorize
>     token_url: https://login.salesforce.com/services/oauth2/token
>     authorization_params:
>         prompt: consent
>     default_scopes:
>         - offline_access
>     token_response_metadata:
>         - instance_url
>     proxy:
>         base_url: ${connectionConfig.instance_url}
>     webhook_routing_script: salesforceWebhookRouting
>     post_connection_script: salesforcePostConnection
>     docs: https://nango.dev/docs/api-integrations/salesforce
>     connection_config:
>         instance_url:
>             type: string
>             title: Instance URL
>             description: The instance URL of your Salesforce account
>             format: uri
>             pattern: '^https?://.*$'
> ```

> [tab] Google
>
> ```yaml theme={null}
> google:
>     display_name: Google
>     auth_mode: OAUTH2
>     authorization_url: https://accounts.google.com/o/oauth2/v2/auth
>     token_url: https://oauth2.googleapis.com/token
>     authorization_params:
>         response_type: code
>         access_type: offline
>         prompt: consent
>     proxy:
>         base_url: https://www.googleapis.com
>         paginate:
>             type: cursor
>             cursor_path_in_response: nextPageToken
>             limit_name_in_request: maxSize
>             cursor_name_in_request: pageToken
>             response_path: items
>     docs: https://nango.dev/docs/api-integrations/google
> ```

> [tab] Notion
>
> ```yaml theme={null}
> notion:
>     display_name: Notion
>     categories:
>         - knowledge-base
>         - productivity
>     auth_mode: OAUTH2
>     authorization_url: https://api.notion.com/v1/oauth/authorize
>     token_url: https://api.notion.com/v1/oauth/token
>     authorization_params:
>         response_type: code
>         owner: user
>     authorization_method: header
>     body_format: json
>     proxy:
>         retry:
>             after: 'Retry-After'
>         base_url: https://api.notion.com
>         headers:
>             'Notion-Version': '2022-06-28'
>         paginate:
>             type: cursor
>             cursor_path_in_response: next_cursor
>             cursor_name_in_request: start_cursor
>             limit_name_in_request: page_size
>             response_path: results
>     docs: https://nango.dev/docs/api-integrations/notion
> ```

> [tab] Linear
>
> ```yaml theme={null}
> linear:
>     display_name: Linear
>     categories:
>         - productivity
>         - ticketing
>     auth_mode: OAUTH2
>     authorization_url: https://linear.app/oauth/authorize
>     token_url: https://api.linear.app/oauth/token
>     scope_separator: ','
>     authorization_params:
>         prompt: consent
>     proxy:
>         base_url: https://api.linear.app
>     disable_pkce: true
>     webhook_routing_script: linearWebhookRouting
>     post_connection_script: linearPostConnection
>     webhook_user_defined_secret: true
>     docs: https://nango.dev/docs/api-integrations/linear
> ```

> [tab] Slack
>
> ```yaml theme={null}
> slack:
>     display_name: Slack
>     categories:
>         - productivity
>     auth_mode: OAUTH2
>     authorization_url: https://slack.com/oauth/v2/authorize
>     token_url: https://slack.com/api/oauth.v2.access
>     token_response_metadata:
>         - incoming_webhook.url
>         - incoming_webhook.channel
>         - incoming_webhook.channel_id
>         - bot_user_id
>         - team.id
>     proxy:
>         base_url: https://slack.com/api
>         paginate:
>             type: cursor
>             cursor_path_in_response: response_metadata.next_cursor
>             cursor_name_in_request: cursor
>             limit_name_in_request: limit
>     webhook_routing_script: slackWebhookRouting
>     docs: https://nango.dev/docs/api-integrations/slack
> ```

## All configuration fields

> [!TIP]
>
> Looking for the JSON Schema, find it in our [GitHub](https://github.com/NangoHQ/nango/blob/master/scripts/validation/providers/schema.json)

**alias** `string`

Allows to extend the configuration of another API.

**display\_name** `string` *required*

The display name of the provider, used in the UI.

**auth\_mode** `string`

The authentication mode. Must be one of: "API\_KEY", "APP", "APP\_STORE", "BASIC", "NONE", "OAUTH1", "OAUTH2", "OAUTH2\_CC", "CUSTOM", "TBA", "JWT", "BILL", "TWO\_STEP", "SIGNATURE".

**auth** `object`

Authentication configuration.

**response\_type** `string`

The response type for authentication.

**authorization\_method** `string`

The authorization method. Must be `header`

**authorization\_params** `object`

Query parameters of the authorization request.

**access\_type** `string`

Possible value: "offline"

**approval\_prompt** `string`

Possible values: "auto", "force"

**duration** `string`

Possible value: "permanent"

**expiration** `string`

Possible value: "never"

**force\_verify** `boolean`

Whether to force verification

**nonce** `string`

A unique string to be included in the request

**prompt** `string`

Possible value: "consent"

**response\_mode** `string`

The mode of the response

**response\_type** `string`

The type of the response

**authorization\_url** `string`

The URL to get the OAuth 2 credentials from the external API.

**authorization\_url\_encoded** `boolean`

Should the `authorization_url` be encoded or not

**authorization\_url\_replacements** `object`

An object containing key-value pairs for replacements in the authorization URL.

**body\_format** `string`

The format of the request body. e.g: `json`

**categories** `array`

An array of strings representing the categories of the API.

**connection\_configuration** `array`

An array of strings representing the `connectionConfig` that are automatically populated by post-connection functions.

**decode\_url** `boolean`

Whether to decode the URL or not.

**default\_scopes** `array`

The minimum list of scopes that are necessary to connect to the API.

**disable\_pkce** `boolean`

Disables the [PKCE](https://oauth.net/2/pkce/) extension to the Authorization Code flow.

**docs** `string`

The URL to the developer API documentation.

**docs\_connect** `string`

The URL to the end user documentation (e.g: how to connect).

**post\_connection\_script** `string`

The name of the script to run after a connection is established.

**proxy** `object`

Proxy configuration for the API.

**base\_url** `string`

The base URL for the API.

**decompress** `boolean`

Whether to decompress the response.

**headers** `object`

Headers to be sent with each request.

**paginate** `object`

Pagination configuration.

**cursor\_name\_in\_request** `string`

The name of the cursor parameter in the request.

**cursor\_path\_in\_response** `string`

The path to the cursor value in the response.

**limit\_name\_in\_request** `string`

The name of the limit parameter in the request.

**link\_rel\_in\_response\_header** `string`

The rel attribute of the link header for pagination.

**link\_path\_in\_response\_body** `string`

The path to the link in the response body.

**offset\_name\_in\_request** `string`

The name of the offset parameter in the request.

**offset\_calculation\_method** `string`

The method to calculate the offset in the request. Must be one of: "per-page" or "by-response-size". Optional parameter that defaults to "by-response-size".

**offset\_start\_value** `number`

The starting value for the offset.

**response\_path** `string`

The path to the paginated data in the response.

**type** `string`

The type of pagination. Must be one of: "link", "cursor", "offset".

**query** `object`

Query parameters to be sent with each request.

**retry** `object`

Retry configuration.

**after** `string`

The name of the rate-limit header, e.g. `after: 'X-Rate-Limit-Reset'`

**at** `string`

The name of the rate-limit header, e.g. `at: 'x-ratelimit-reset'`

**verification** `object` *required*

Configure a HTTP call to verify if credentials are valid, only used for API Key and Basic auth.

**method** `string`

The HTTP method for verification. Must be either "GET" or "POST".

**endpoint** `string` *required*

The endpoint for verification.

**base\_url\_override** `string`

Override the base URL for verification.

**headers** `object`

Headers for the verification request.

**redirect\_uri\_metadata** `array`

The metadata to capture from the callback request.

**refresh\_url** `string`

The URL used for refreshing the access token. Defaults to the `token_url`

**refresh\_params** `object`

Parameters used for refreshing the access token.

**grant\_type** `string`

The grant type for refreshing the token. Must be "refresh\_token".

**request\_params** `object`

An object containing request parameters to pass to an authorization request.

**request\_url** `string`

The URL for making API an authorization request.

**scope\_separator** `string`

The separator used between scopes in the authorization request.
Defaults to space, but some APIs sur `,` or `+`.

**signature\_method** `string`

The signature method used for OAuth 1.0. Must be either "HMAC-SHA1" or "PLAINTEXT".

**token\_expiration\_buffer** `number`

A buffer time (in seconds) before the token expiration to trigger a refresh.

**token\_params** `object`

Parameters used for obtaining the access token.

**grant\_type** `string`

The grant type for obtaining the token. Must be either "authorization\_code" or "client\_credentials".

**request** `string`

Additional request information for obtaining the token.

**token\_request\_auth\_method** `string`

The authentication method used for token requests: "basic", "custom", "private\_key\_jwt", or "none". Use "none" for public clients that send only their client\_id, with no client secret.

**expires\_in\_unit** `string`

The unit of time for token expiration. Must be "milliseconds".

**token\_response\_metadata** `array`

An array of strings representing metadata from the token response that will be saved in `connection.metadata`.

**token\_url** `string`

The URL to get the OAuth 2 credentials from the external API.

**token\_url\_encoded** `boolean`

Should the `token_url` be encoded or not

**webhook\_user\_defined\_secret** `boolean`

Wether the webhook secret is set by the user.

**webhook\_routing\_script** `array`

Specifies a script to handle external [webhooks](https://nango.dev/docs/getting-started/use-cases/webhooks-from-external-apis.md).

**authorization\_url\_fragment** `string`

Specifies a fragment to be appended to the authorization URL, typically used to modify the redirection flow or pass additional information in the URL before the query parameters.

**connection\_config** `object`

The list of properties available in `${connectionConfig}` and their validation.

**\[name]** `object`

**type** `string` *required*

The type of this value. Must be "string".

**title** `string` *required*

The title of this value.

**description** `string` *required*

The description of this value.

**example** `string`

An example of valid value to display in a UI.

**pattern** `string`

A regex pattern for the credential.

**format** `string`

The special format of this value (e.g: `hostname`, `uri`)

**order** `number`

The order in which this field should be displayed in a UI

**doc\_section** `string`

The documentation section relative to `docs_connect`

**credentials** `object`

The list of credentials and their validation, only filed if necessary (e.g: API\_KEY, BASIC)

**\[credential\_name]** `object`

**type** `string` *required*

The type of the credential. Must be "string".

**title** `string` *required*

The title of the credential.

**description** `string` *required*

The description of the credential.

**example** `string`

An example of the credential.

**pattern** `string`

A pattern for the credential.

**format** `string`

The format of the credential.

**doc\_section** `string`

The documentation section for the credential.

> [!TIP]
>
> **Questions, problems, feedback?** Please reach out in the [Slack community](https://nango.dev/slack).


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