> ## Documentation Index
> Fetch the complete documentation index at: https://docs.novu.co/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, [SendGrid](/platform/integrations/email/sendgrid) is an email integration and [twilio](/platform/integrations/sms/twilio) is an 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. Create and update accept `context.*`, `subscriber.*`, and the listed `workflow.*` fields (`workflowId`, `name`, `description`, `tags`, `severity`). Payload variables cannot be written; already-saved `payload.*` rules still evaluate at send time. 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"
}
```


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