<!-- llms.txt: https://workos.com/llms.txt -->

# Data providers

Browse the data providers configured in the environment, manage which ones the organization can use, and connect or disconnect the authenticated user's own accounts.

## Connect a data provider with client credentials

Connect the authenticated user to a data provider with OAuth client credentials the user supplies. Replaces the credentials when the user already has a client-credentials connection to the data provider, so this is both the connect and the reconnect path. The credentials are stored encrypted and never returned.

:::code-group

```graphql language="graphql" title="Mutation" tab="1"
mutation ConnectDataProviderWithClientCredentials($input: ConnectDataProviderWithClientCredentialsInput!) {
  connectDataProviderWithClientCredentials(input: $input) {
    __typename
    ... on DataProviderAuthMethodUnsupported {
      authMethod
      supportedAuthMethods
    }
    ... on DataProviderConfigInvalid {
      message
    }
    ... on DataProviderConnected {
      connection {
        authMethod
        createdAt
        dataProviderId
        dataProviderSlug
        id
        organizationId
        scopes
        state
        updatedAt
        userId
      }
    }
    ... on DataProviderConnectionAuthMethodConflict {
      existingAuthMethod
    }
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "connectDataProviderWithClientCredentials": {
      "__typename": "DataProviderAuthMethodUnsupported",
      "authMethod": "authMethod_example",
      "supportedAuthMethods": [
        "supportedAuthMethods_example"
      ]
    }
  }
}
```

:::

## Start a data provider authorization

Start an OAuth authorization connecting the authenticated user to a data provider. Returns the URL to open in a popup and the `state` to poll with `dataProviderAuthorizationStatus`. Re-authorizing a provider the user is already connected to replaces that connection's credentials once the flow completes, so this is also the reconnect path.

:::code-group

```graphql language="graphql" title="Mutation" tab="1"
mutation CreateDataProviderAuthorization($input: CreateDataProviderAuthorizationInput!) {
  createDataProviderAuthorization(input: $input) {
    __typename
    ... on DataProviderAuthorization {
      handoffToken
      redirectToken
      state
      url
    }
    ... on DataProviderAuthorizationUnavailable {
      message
    }
    ... on DataProviderConfigInvalid {
      message
    }
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "createDataProviderAuthorization": {
      "__typename": "DataProviderAuthorization",
      "handoffToken": "handoffToken_example",
      "redirectToken": "redirectToken_example",
      "state": "state_example",
      "url": "url_example"
    }
  }
}
```

:::

## Connect a data provider

Connect the authenticated user to a data provider with an API key the user supplies. Replaces the API key when the user already has an API-key connection to the data provider.

:::code-group

```graphql language="graphql" title="Mutation" tab="1"
mutation CreateDataProviderConnection($input: CreateDataProviderConnectionInput!) {
  createDataProviderConnection(input: $input) {
    authMethod
    createdAt
    dataProviderId
    dataProviderSlug
    id
    organizationId
    scopes
    state
    updatedAt
    userId
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "createDataProviderConnection": {
      "authMethod": "authMethod_example",
      "createdAt": "2024-01-01T00:00:00.000Z",
      "dataProviderId": "dataProviderId_01EHWNCE74X7JSDV0X3SZ3KJNY",
      "dataProviderSlug": "dataProviderSlug_example",
      "id": "id_01EHWNCE74X7JSDV0X3SZ3KJNY",
      "organizationId": "organizationId_01EHWNCE74X7JSDV0X3SZ3KJNY",
      "scopes": [
        "scopes_example"
      ],
      "state": "state_example",
      "updatedAt": "2024-01-01T00:00:00.000Z",
      "userId": "userId_01EHWNCE74X7JSDV0X3SZ3KJNY"
    }
  }
}
```

:::

## Start an organization data provider authorization

Start an OAuth authorization connecting the token's organization to an organization-owned data provider, producing one connection shared by every member. A handoff is always required: the member completing the flow must confirm it explicitly because the resulting connection is not their own.

:::code-group

```graphql language="graphql" title="Mutation" tab="1"
mutation CreateOrganizationDataProviderAuthorization($input: CreateOrganizationDataProviderAuthorizationInput!) {
  createOrganizationDataProviderAuthorization(input: $input) {
    __typename
    ... on DataProviderAuthorization {
      handoffToken
      redirectToken
      state
      url
    }
    ... on DataProviderAuthorizationUnavailable {
      message
    }
    ... on DataProviderConfigInvalid {
      message
    }
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "createOrganizationDataProviderAuthorization": {
      "__typename": "DataProviderAuthorization",
      "handoffToken": "handoffToken_example",
      "redirectToken": "redirectToken_example",
      "state": "state_example",
      "url": "url_example"
    }
  }
}
```

:::

## Get an authorization status

Report whether an authorization attempt is still outstanding. Poll this with the `state` returned when the authorization was created while the popup is open; it flips to `connecting: false` once the provider callback has been handled or the attempt expired.

:::code-group

```graphql language="graphql" title="Query" tab="1"
query DataProviderAuthorizationStatus($dataProviderId: ID!, $state: String!) {
  dataProviderAuthorizationStatus(dataProviderId: $dataProviderId, state: $state) {
    connecting
    state
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "dataProviderAuthorizationStatus": {
      "connecting": true,
      "state": "state_example"
    }
  }
}
```

:::

## Get a data provider connection

Return one of the authenticated user's data provider connections by ID.

:::code-group

```graphql language="graphql" title="Query" tab="1"
query DataProviderConnection($id: ID!) {
  dataProviderConnection(id: $id) {
    authMethod
    createdAt
    dataProviderId
    dataProviderSlug
    id
    organizationId
    scopes
    state
    updatedAt
    userId
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "dataProviderConnection": {
      "authMethod": "authMethod_example",
      "createdAt": "2024-01-01T00:00:00.000Z",
      "dataProviderId": "dataProviderId_01EHWNCE74X7JSDV0X3SZ3KJNY",
      "dataProviderSlug": "dataProviderSlug_example",
      "id": "id_01EHWNCE74X7JSDV0X3SZ3KJNY",
      "organizationId": "organizationId_01EHWNCE74X7JSDV0X3SZ3KJNY",
      "scopes": [
        "scopes_example"
      ],
      "state": "state_example",
      "updatedAt": "2024-01-01T00:00:00.000Z",
      "userId": "userId_01EHWNCE74X7JSDV0X3SZ3KJNY"
    }
  }
}
```

:::

## List data provider connections

List the authenticated user's data provider connections, including their status.

:::code-group

```graphql language="graphql" title="Query" tab="1"
query DataProviderConnections($after: String, $before: String, $limit: Int, $order: PaginationOrder) {
  dataProviderConnections(after: $after, before: $before, limit: $limit, order: $order) {
    data {
      authMethod
      createdAt
      dataProviderId
      dataProviderSlug
      id
      organizationId
      scopes
      state
      updatedAt
      userId
    }
    listMetadata {
      after
      before
    }
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "dataProviderConnections": {
      "data": [
        {
          "authMethod": "authMethod_example",
          "createdAt": "2024-01-01T00:00:00.000Z",
          "dataProviderId": "dataProviderId_01EHWNCE74X7JSDV0X3SZ3KJNY",
          "dataProviderSlug": "dataProviderSlug_example",
          "id": "id_01EHWNCE74X7JSDV0X3SZ3KJNY",
          "organizationId": "organizationId_01EHWNCE74X7JSDV0X3SZ3KJNY",
          "scopes": [
            "scopes_example"
          ],
          "state": "state_example",
          "updatedAt": "2024-01-01T00:00:00.000Z",
          "userId": "userId_01EHWNCE74X7JSDV0X3SZ3KJNY"
        }
      ],
      "listMetadata": {
        "after": "after_example",
        "before": "before_example"
      }
    }
  }
}
```

:::

## Get a data provider

Return a data provider by ID within the token's environment.

:::code-group

```graphql language="graphql" title="Query" tab="1"
query DataProvider($id: ID!) {
  dataProvider(id: $id) {
    authMethods
    createdAt
    description
    enabled
    id
    integrationType
    name
    scopes
    slug
    state
    updatedAt
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "dataProvider": {
      "authMethods": [
        "authMethods_example"
      ],
      "createdAt": "2024-01-01T00:00:00.000Z",
      "description": "description_example",
      "enabled": true,
      "id": "id_01EHWNCE74X7JSDV0X3SZ3KJNY",
      "integrationType": "integrationType_example",
      "name": "name_example",
      "scopes": [
        "scopes_example"
      ],
      "slug": "slug_example",
      "state": "state_example",
      "updatedAt": "2024-01-01T00:00:00.000Z"
    }
  }
}
```

:::

## List data providers

List the data providers configured in the token's environment.

:::code-group

```graphql language="graphql" title="Query" tab="1"
query DataProviders($after: String, $before: String, $limit: Int, $order: PaginationOrder) {
  dataProviders(after: $after, before: $before, limit: $limit, order: $order) {
    data {
      authMethods
      createdAt
      description
      enabled
      id
      integrationType
      name
      scopes
      slug
      state
      updatedAt
    }
    listMetadata {
      after
      before
    }
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "dataProviders": {
      "data": [
        {
          "authMethods": [
            "authMethods_example"
          ],
          "createdAt": "2024-01-01T00:00:00.000Z",
          "description": "description_example",
          "enabled": true,
          "id": "id_01EHWNCE74X7JSDV0X3SZ3KJNY",
          "integrationType": "integrationType_example",
          "name": "name_example",
          "scopes": [
            "scopes_example"
          ],
          "slug": "slug_example",
          "state": "state_example",
          "updatedAt": "2024-01-01T00:00:00.000Z"
        }
      ],
      "listMetadata": {
        "after": "after_example",
        "before": "before_example"
      }
    }
  }
}
```

:::

## Disconnect a data provider

Disconnect one of the authenticated user's data provider connections, revoking the stored credentials.

:::code-group

```graphql language="graphql" title="Mutation" tab="1"
mutation DeleteDataProviderConnection($id: ID!) {
  deleteDataProviderConnection(id: $id)
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "deleteDataProviderConnection": "deleteDataProviderConnection_01EHWNCE74X7JSDV0X3SZ3KJNY"
  }
}
```

:::

## List an organization's data providers

List the data providers the token's organization connects on behalf of all its members, with the organization's shared connection when it has one.

:::code-group

```graphql language="graphql" title="Query" tab="1"
query OrganizationDataProviders($after: String, $before: String, $limit: Int, $order: PaginationOrder) {
  organizationDataProviders(after: $after, before: $before, limit: $limit, order: $order) {
    data {
      authMethods
      connection {
        authMethod
        createdAt
        dataProviderId
        dataProviderSlug
        id
        organizationId
        scopes
        state
        updatedAt
        userId
      }
      createdAt
      description
      enabled
      hasCredentials
      id
      integrationType
      name
      scopes
      slug
      state
      updatedAt
    }
    listMetadata {
      after
      before
    }
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "organizationDataProviders": {
      "data": [
        {
          "authMethods": [
            "authMethods_example"
          ],
          "connection": {
            "authMethod": "authMethod_example",
            "createdAt": "2024-01-01T00:00:00.000Z",
            "dataProviderId": "dataProviderId_01EHWNCE74X7JSDV0X3SZ3KJNY",
            "dataProviderSlug": "dataProviderSlug_example",
            "id": "id_01EHWNCE74X7JSDV0X3SZ3KJNY",
            "organizationId": "organizationId_01EHWNCE74X7JSDV0X3SZ3KJNY",
            "scopes": [
              "scopes_example"
            ],
            "state": "state_example",
            "updatedAt": "2024-01-01T00:00:00.000Z",
            "userId": "userId_01EHWNCE74X7JSDV0X3SZ3KJNY"
          },
          "createdAt": "2024-01-01T00:00:00.000Z",
          "description": "description_example",
          "enabled": true,
          "hasCredentials": true,
          "id": "id_01EHWNCE74X7JSDV0X3SZ3KJNY",
          "integrationType": "integrationType_example",
          "name": "name_example",
          "scopes": [
            "scopes_example"
          ],
          "slug": "slug_example",
          "state": "state_example",
          "updatedAt": "2024-01-01T00:00:00.000Z"
        }
      ],
      "listMetadata": {
        "after": "after_example",
        "before": "before_example"
      }
    }
  }
}
```

:::

## Set a data provider's configuration

Write a data provider's configuration for the token's organization: whether the organization's members can connect it, the scopes it requests, the organization's own OAuth client credentials, and any non-secret configuration values the provider declares. Fields left out are unchanged. Supersedes `setDataProviderEnabled` for anything beyond toggling `enabled`.

:::code-group

```graphql language="graphql" title="Mutation" tab="1"
mutation SetDataProviderConfiguration($input: SetDataProviderConfigurationInput!) {
  setDataProviderConfiguration(input: $input) {
    __typename
    ... on DataProviderConfigInvalid {
      message
    }
    ... on DataProviderConfiguration {
      availableScopes
      config {
        name
        value
      }
      dataProviderId
      dataProviderSlug
      enabled
      hasCredentials
      organizationId
      scopes
      updatedAt
    }
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "setDataProviderConfiguration": {
      "__typename": "DataProviderConfigInvalid",
      "message": "message_example"
    }
  }
}
```

:::

## Enable or disable a data provider

Enable or disable a data provider for the token's organization. Disabling it hides the data provider from the organization's users and stops new connections; existing connections stay readable so they can be disconnected.

:::code-group

```graphql language="graphql" title="Mutation" tab="1"
mutation SetDataProviderEnabled($input: SetDataProviderEnabledInput!) {
  setDataProviderEnabled(input: $input) {
    authMethods
    createdAt
    description
    enabled
    id
    integrationType
    name
    scopes
    slug
    state
    updatedAt
  }
}
```

```json language="json" title="Response" tab="2"
{
  "data": {
    "setDataProviderEnabled": {
      "authMethods": [
        "authMethods_example"
      ],
      "createdAt": "2024-01-01T00:00:00.000Z",
      "description": "description_example",
      "enabled": true,
      "id": "id_01EHWNCE74X7JSDV0X3SZ3KJNY",
      "integrationType": "integrationType_example",
      "name": "name_example",
      "scopes": [
        "scopes_example"
      ],
      "slug": "slug_example",
      "state": "state_example",
      "updatedAt": "2024-01-01T00:00:00.000Z"
    }
  }
}
```

:::

### Mutation connectDataProviderWithClientCredentials

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `clientId` | String! | Yes | The OAuth client ID issued by the data provider. Only data providers whose `authMethods` include `client_credentials` can be connected this way. |
| `clientSecret` | String! | Yes | The OAuth client secret issued by the data provider. Write-only: it is stored encrypted and never returned. |
| `config` | [DataProviderConfigEntryInput!] | No | Values for the provider's connection configuration fields. |
| `dataProviderId` | ID! | Yes | The data provider to connect the authenticated user to. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `DataProviderAuthMethodUnsupported` | DataProviderAuthMethodUnsupported | The data provider cannot be connected the requested way — for example client credentials for a provider that only supports OAuth. |
| `DataProviderConfigInvalid` | DataProviderConfigInvalid | The supplied configuration does not satisfy the provider's declared fields. |
| `DataProviderConnected` | DataProviderConnected | The connection was created or its credentials were replaced. |
| `DataProviderConnectionAuthMethodConflict` | DataProviderConnectionAuthMethodConflict | The user already has a connection to this data provider that authenticates differently, so it must be disconnected first. |

### Mutation createDataProviderAuthorization

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `config` | [DataProviderConfigEntryInput!] | No | Values for the provider's connect-time configuration fields. Omit when the provider declares none. |
| `dataProviderId` | ID! | Yes | The data provider to authorize for the authenticated user. It must be one the user can connect (`dataProviders`). |
| `requireHandoff` | Boolean | No | Request a confirmation step at the end of the flow, returning a `handoffToken` the client must complete. Defaults to false. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `DataProviderAuthorization` | DataProviderAuthorization | A started authorization: the URL to open and the state to poll while the user completes it. |
| `DataProviderAuthorizationUnavailable` | DataProviderAuthorizationUnavailable | The data provider cannot start an authorization right now — most often because the organization has not supplied its own OAuth credentials yet. |
| `DataProviderConfigInvalid` | DataProviderConfigInvalid | The supplied configuration does not satisfy the provider's declared fields. |

### Mutation createDataProviderConnection

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `apiKey` | String! | Yes | The API key issued by the data provider. Only data providers whose `authMethods` include `api_key` can be connected this way; OAuth providers are connected through the widget's authorization flow. |
| `dataProviderId` | ID! | Yes | The data provider to connect the authenticated user to. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `authMethod` | String! | How the connection authenticates: `oauth`, `api_key`, or `client_credentials`. |
| `createdAt` | DateTime! |  |
| `dataProviderId` | ID! | The data provider this connection was created for. |
| `dataProviderSlug` | String! | The slug of the connected data provider. |
| `id` | ID! |  |
| `organizationId` | ID |  |
| `scopes` | [String!]! | The OAuth scopes granted for this connection. |
| `state` | String! | The status of the connection: `connected` or `needs_reauthorization`. |
| `updatedAt` | DateTime! |  |
| `userId` | ID |  |

### Mutation createOrganizationDataProviderAuthorization

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `config` | [DataProviderConfigEntryInput!] | No | Values for the provider's connect-time configuration fields. Omit when the provider declares none. |
| `dataProviderId` | ID! | Yes | The organization-owned data provider to authorize (`organizationDataProviders`). |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `DataProviderAuthorization` | DataProviderAuthorization | A started authorization: the URL to open and the state to poll while the user completes it. |
| `DataProviderAuthorizationUnavailable` | DataProviderAuthorizationUnavailable | The data provider cannot start an authorization right now — most often because the organization has not supplied its own OAuth credentials yet. |
| `DataProviderConfigInvalid` | DataProviderConfigInvalid | The supplied configuration does not satisfy the provider's declared fields. |

### Query dataProviderAuthorizationStatus

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `dataProviderId` | ID! | Yes | The data provider the authorization was started for. |
| `state` | String! | Yes | The `state` returned when the authorization was created. Must match exactly. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `connecting` | Boolean! | True while the attempt is outstanding. It becomes false once the provider callback has been handled or the attempt expired, so a client that sees false reloads the connection to learn the outcome. |
| `state` | String! | The `state` that was polled. |

### Query dataProviderConnection

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | ID! | Yes |  |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `authMethod` | String! | How the connection authenticates: `oauth`, `api_key`, or `client_credentials`. |
| `createdAt` | DateTime! |  |
| `dataProviderId` | ID! | The data provider this connection was created for. |
| `dataProviderSlug` | String! | The slug of the connected data provider. |
| `id` | ID! |  |
| `organizationId` | ID |  |
| `scopes` | [String!]! | The OAuth scopes granted for this connection. |
| `state` | String! | The status of the connection: `connected` or `needs_reauthorization`. |
| `updatedAt` | DateTime! |  |
| `userId` | ID |  |

### Query dataProviderConnections

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `after` | String | No |  |
| `before` | String | No |  |
| `limit` | Int | No |  |
| `order` | PaginationOrder | No | Enum represents the pagination order. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `data` | [DataProviderConnection!]! | A connection between a data provider and the authenticated user's account. |
| `listMetadata` | ListMetadata! |  |

### Query dataProvider

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | ID! | Yes |  |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `authMethods` | [String!]! | How accounts authenticate with this data provider. |
| `createdAt` | DateTime! |  |
| `description` | String |  |
| `enabled` | Boolean! | Whether the data provider is enabled in the environment. |
| `id` | ID! |  |
| `integrationType` | String! | The provider type this data provider was created from. |
| `name` | String! | The display name of the data provider. |
| `scopes` | [String!] | The OAuth scopes configured for the data provider. `null` when the provider's default scopes are used. |
| `slug` | String! | The slug of the data provider. |
| `state` | String! | The configuration state of the data provider: `valid`, `invalid`, or `requested`. |
| `updatedAt` | DateTime! |  |

### Query dataProviders

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `after` | String | No |  |
| `before` | String | No |  |
| `limit` | Int | No |  |
| `order` | PaginationOrder | No | Enum represents the pagination order. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `data` | [DataProvider!]! | A third-party data provider configured for the current environment. |
| `listMetadata` | ListMetadata! |  |

### Mutation deleteDataProviderConnection

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | ID! | Yes |  |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `deleteDataProviderConnection` | ID! |  |

### Query organizationDataProviders

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `after` | String | No |  |
| `before` | String | No |  |
| `limit` | Int | No |  |
| `order` | PaginationOrder | No | Enum represents the pagination order. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `data` | [OrganizationDataProvider!]! | A data provider the token's organization connects on behalf of all its members. |
| `listMetadata` | ListMetadata! |  |

### Mutation setDataProviderConfiguration

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `clientId` | String | No | The organization's own OAuth client ID. Must be supplied together with `clientSecret`. |
| `clientSecret` | String | No | The organization's own OAuth client secret. Write-only: it is stored encrypted and never returned; clients read `hasCredentials` instead. |
| `config` | [DataProviderConfigEntryInput!] | No | Non-secret configuration values declared by the provider. |
| `dataProviderId` | ID! | Yes | The data provider to configure for the token's organization. Configuration always applies to the token's organization; it cannot be set for another one. |
| `enabled` | Boolean | No | Whether the organization's users can see and connect the data provider. |
| `scopes` | [String!] | No | The scopes the organization requests. Only providers where the organization brings its own OAuth credentials may widen beyond the defaults. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `DataProviderConfigInvalid` | DataProviderConfigInvalid | The supplied configuration does not satisfy the provider's declared fields. |
| `DataProviderConfiguration` | DataProviderConfiguration | A data provider's configuration for the token's organization, excluding secret values. |

### Mutation setDataProviderEnabled

#### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `dataProviderId` | ID! | Yes |  |
| `enabled` | Boolean! | Yes | Whether the data provider is available to the organization the token was issued for. |

#### Returns

| Field | Type | Description |
| --- | --- | --- |
| `authMethods` | [String!]! | How accounts authenticate with this data provider. |
| `createdAt` | DateTime! |  |
| `description` | String |  |
| `enabled` | Boolean! | Whether the data provider is enabled in the environment. |
| `id` | ID! |  |
| `integrationType` | String! | The provider type this data provider was created from. |
| `name` | String! | The display name of the data provider. |
| `scopes` | [String!] | The OAuth scopes configured for the data provider. `null` when the provider's default scopes are used. |
| `slug` | String! | The slug of the data provider. |
| `state` | String! | The configuration state of the data provider: `valid`, `invalid`, or `requested`. |
| `updatedAt` | DateTime! |  |