# Integration schema Model API Reference (Integrations) (/api-reference/integrations/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).

<TypeTable
  name="Integration"
  type={{
"id": {
  "description": "The unique identifier of the integration record in the database. This is automatically generated.",
  "type": "string"
},
"environmentId": {
  "description": "The unique identifier for the environment associated with this integration. This links to the Environment collection.",
  "type": "string"
},
"organizationId": {
  "description": "The unique identifier for the organization that owns this integration. This links to the Organization collection.",
  "type": "string"
},
"name": {
  "description": "The name of the integration, which is used to identify it in the user interface.",
  "type": "string"
},
"identifier": {
  "description": "A unique string identifier for the integration, often used for API calls or internal references.",
  "type": "string"
},
"providerId": {
  "description": "The identifier for the provider of the integration (e.g., \"mailgun\", \"twilio\").",
  "type": "string"
},
"channel": {
  "description": "The channel type for the integration, which defines how it communicates (e.g., email, SMS).",
  "type": "IntegrationResponseDtoChannel"
},
"credentials": {
  "description": "The credentials required for the integration to function, including API keys and other sensitive information.",
  "type": "CredentialsDto"
},
"configurations": {
  "description": "The configurations required for enabling the additional configurations of the integration.",
  "type": "ConfigurationsDto"
},
"active": {
  "description": "Indicates whether the integration is currently active. An active integration will process events and messages.",
  "type": "boolean"
},
"deleted": {
  "description": "Indicates whether the integration has been marked as deleted (soft delete).",
  "type": "boolean"
},
"deletedAt": {
  "description": "The timestamp indicating when the integration was deleted. This is set when the integration is soft deleted.",
  "type": "string"
},
"deletedBy": {
  "description": "The identifier of the user who performed the deletion of this integration. Useful for audit trails.",
  "type": "string"
},
"primary": {
  "description": "Indicates whether this integration is marked as primary. A primary integration is often the default choice for processing.",
  "type": "boolean"
},
"conditions": {
  "description": "An array of conditions associated with the integration that may influence its behavior or processing logic.",
  "type": "StepFilterDto[]"
}
}}
/>

### 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.

<TypeTable
  name="Credentials"
  type={{
"apiKey": {
  "description": "",
  "type": "string"
},
"user": {
  "description": "",
  "type": "string"
},
"secretKey": {
  "description": "",
  "type": "string"
},
"domain": {
  "description": "",
  "type": "string"
},
"password": {
  "description": "",
  "type": "string"
},
"host": {
  "description": "",
  "type": "string"
},
"port": {
  "description": "",
  "type": "string"
},
"secure": {
  "description": "",
  "type": "boolean"
},
"region": {
  "description": "",
  "type": "string"
},
"accountSid": {
  "description": "",
  "type": "string"
},
"messageProfileId": {
  "description": "",
  "type": "string"
},
"token": {
  "description": "",
  "type": "string"
},
"from": {
  "description": "",
  "type": "string"
},
"senderName": {
  "description": "",
  "type": "string"
},
"projectName": {
  "description": "",
  "type": "string"
},
"applicationId": {
  "description": "",
  "type": "string"
},
"clientId": {
  "description": "",
  "type": "string"
},
"requireTls": {
  "description": "",
  "type": "boolean"
},
"ignoreTls": {
  "description": "",
  "type": "boolean"
},
"tlsOptions": {
  "description": "",
  "type": "TlsOptions"
},
"baseUrl": {
  "description": "",
  "type": "string"
},
"webhookUrl": {
  "description": "",
  "type": "string"
},
"redirectUrl": {
  "description": "",
  "type": "string"
},
"hmac": {
  "description": "",
  "type": "boolean"
},
"serviceAccount": {
  "description": "",
  "type": "string"
},
"ipPoolName": {
  "description": "",
  "type": "string"
},
"apiKeyRequestHeader": {
  "description": "",
  "type": "string"
},
"secretKeyRequestHeader": {
  "description": "",
  "type": "string"
},
"idPath": {
  "description": "",
  "type": "string"
},
"datePath": {
  "description": "",
  "type": "string"
},
"apiToken": {
  "description": "",
  "type": "string"
},
"authenticateByToken": {
  "description": "",
  "type": "boolean"
},
"authenticationTokenKey": {
  "description": "",
  "type": "string"
},
"instanceId": {
  "description": "",
  "type": "string"
},
"alertUid": {
  "description": "",
  "type": "string"
},
"title": {
  "description": "",
  "type": "string"
},
"imageUrl": {
  "description": "",
  "type": "string"
},
"state": {
  "description": "",
  "type": "string"
},
"externalLink": {
  "description": "",
  "type": "string"
},
"channelId": {
  "description": "",
  "type": "string"
},
"phoneNumberIdentification": {
  "description": "",
  "type": "string"
},
"accessKey": {
  "description": "",
  "type": "string"
},
"appSid": {
  "description": "",
  "type": "string"
},
"senderId": {
  "description": "",
  "type": "string"
},
"tenantId": {
  "description": "",
  "type": "string"
},
"appIOBaseUrl": {
  "description": "",
  "type": "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
ChannelTypeEnum {
  IN_APP = "in_app",
  EMAIL = "email",
  SMS = "sms",
  CHAT = "chat",
  PUSH = "push"
}
```
