> ## Documentation Index
> Fetch the complete documentation index at: https://novu-c5de82d9-nv-8794-quote-reply-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Integration schema

> Reference the Novu integration schema used in API requests and responses. Review fields, data types, and object structure for this resource.

### Integration

Integration is third party service used by Novu to send notification for a specific channel. For example, [sengrid](/platform/integrations/email/sendgrid) is a email integration and [twilio](/platform/integrations/sms/twilio) is a sms integration. Read more about integrations on [integrations concept page](/platform/concepts/integrations). Integration APIs don't return credentials with secret key based authorization method, only integration metadata details are returned in response.

| Field            | Type                            | Description                                                                                                                                                                                                                                                             |
| ---------------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`             | `string`                        | The unique identifier of the integration record in the database. This is automatically generated.                                                                                                                                                                       |
| `environmentId`  | `string`                        | The unique identifier for the environment associated with this integration. This links to the Environment collection.                                                                                                                                                   |
| `organizationId` | `string`                        | The unique identifier for the organization that owns this integration. This links to the Organization collection.                                                                                                                                                       |
| `name`           | `string`                        | The name of the integration, which is used to identify it in the user interface.                                                                                                                                                                                        |
| `identifier`     | `string`                        | A unique string identifier for the integration, often used for API calls or internal references.                                                                                                                                                                        |
| `providerId`     | `string`                        | The identifier for the provider of the integration (e.g., "mailgun", "twilio").                                                                                                                                                                                         |
| `channel`        | `IntegrationResponseDtoChannel` | The channel type for the integration, which defines how it communicates (e.g., email, SMS).                                                                                                                                                                             |
| `credentials`    | `CredentialsDto`                | The credentials required for the integration to function, including API keys and other sensitive information.                                                                                                                                                           |
| `configurations` | `ConfigurationsDto`             | The configurations required for enabling the additional configurations of the integration.                                                                                                                                                                              |
| `active`         | `boolean`                       | Indicates whether the integration is currently active. An active integration will process events and messages.                                                                                                                                                          |
| `deleted`        | `boolean`                       | Indicates whether the integration has been marked as deleted (soft delete).                                                                                                                                                                                             |
| `deletedAt`      | `string`                        | The timestamp indicating when the integration was deleted. This is set when the integration is soft deleted.                                                                                                                                                            |
| `deletedBy`      | `string`                        | The identifier of the user who performed the deletion of this integration. Useful for audit trails.                                                                                                                                                                     |
| `primary`        | `boolean`                       | For email and SMS, the default integration when no conditioned integration is selected. The dashboard and the update API unset `primary` when you save `rules`. Creating the first active email or SMS integration can still set `primary` even if `rules` are present. |
| `conditions`     | `StepFilterDto[]`               | Legacy StepFilter conditions. Ignored when `rules` is also set. Prefer `rules` and the dashboard **Integration conditions** editor.                                                                                                                                     |
| `rules`          | `Record<string, unknown>`       | JSON Logic evaluated at send time to select this integration. Allowed variables are `context.*` and `subscriber.*`. Takes precedence over `conditions`. See [Integration conditions](/platform/integrations/integration-conditions).                                    |

### Credentials

Each integration has a set of credentials that are used to authenticate with the third party service. Checkout the provider documentation for more details on what credentials are required for each integration.

| Field                       | Type         | Description |
| --------------------------- | ------------ | ----------- |
| `apiKey`                    | `string`     |             |
| `user`                      | `string`     |             |
| `secretKey`                 | `string`     |             |
| `domain`                    | `string`     |             |
| `password`                  | `string`     |             |
| `host`                      | `string`     |             |
| `port`                      | `string`     |             |
| `secure`                    | `boolean`    |             |
| `region`                    | `string`     |             |
| `accountSid`                | `string`     |             |
| `messageProfileId`          | `string`     |             |
| `token`                     | `string`     |             |
| `from`                      | `string`     |             |
| `senderName`                | `string`     |             |
| `projectName`               | `string`     |             |
| `applicationId`             | `string`     |             |
| `clientId`                  | `string`     |             |
| `requireTls`                | `boolean`    |             |
| `ignoreTls`                 | `boolean`    |             |
| `tlsOptions`                | `TlsOptions` |             |
| `baseUrl`                   | `string`     |             |
| `webhookUrl`                | `string`     |             |
| `redirectUrl`               | `string`     |             |
| `hmac`                      | `boolean`    |             |
| `serviceAccount`            | `string`     |             |
| `ipPoolName`                | `string`     |             |
| `apiKeyRequestHeader`       | `string`     |             |
| `secretKeyRequestHeader`    | `string`     |             |
| `idPath`                    | `string`     |             |
| `datePath`                  | `string`     |             |
| `apiToken`                  | `string`     |             |
| `authenticateByToken`       | `boolean`    |             |
| `authenticationTokenKey`    | `string`     |             |
| `instanceId`                | `string`     |             |
| `alertUid`                  | `string`     |             |
| `title`                     | `string`     |             |
| `imageUrl`                  | `string`     |             |
| `state`                     | `string`     |             |
| `externalLink`              | `string`     |             |
| `channelId`                 | `string`     |             |
| `phoneNumberIdentification` | `string`     |             |
| `accessKey`                 | `string`     |             |
| `appSid`                    | `string`     |             |
| `senderId`                  | `string`     |             |
| `tenantId`                  | `string`     |             |
| `appIOBaseUrl`              | `string`     |             |

### ChannelTypeEnum

ChannelTypeEnum is used to specify the type of channel that the integration is used for. For example, if the integration is used for email, the channel type will be `email`.

```typescript theme={null}
ChannelTypeEnum {
  IN_APP = "in_app",
  EMAIL = "email",
  SMS = "sms",
  CHAT = "chat",
  PUSH = "push"
}
```
