> For the complete documentation index, see [llms.txt](https://docs.soda.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.soda.io/reference/soda-apis/rest-api/notification-rules.md).

# Notification Rules

Soda Cloud API Notification Rule Endpoints

## List notification integrations

> This endpoint allows you to list the notification integrations in your organization.\
> \
> Includes enabled and disabled Slack, Microsoft Teams and webhook integrations; activating and reactivating integrations are excluded.\
> \
> Integrations with notifications disabled are included. Results are ordered by type, name (unnamed first), then ID.\
> \
> Channels are configured Slack channels; this endpoint does not refresh channels or contact providers.\
> \
> Empty and out-of-range pages return an empty content list.\
> \
> This GET is a paginated API that uses the following parameters to request specific details:\
> \
> \- \`size\`: Supply an integer value between 10 and 1000, inclusive. The default value is 10.\
> \
> \- \`page\`: Supply an integer value. The default value is 0.\
> \
> \## Authentication\
> \
> User authentication required: \`true\`\
> \
> This endpoint accepts authentication via API keys in the \`Basic\` authentication header, or a pre-authenticated token in HTTP cookie \`token\`. Cookie sessions extend automatically on each request.\
> \
> \## Tags\
> \
> \`Notification Rules\`\
> \
> \## Rate limiting\
> \
> 60 requests/60 seconds

```json
{"openapi":"3.1.0","info":{"title":"Soda Cloud API v4","version":"v1"},"tags":[{"description":"Soda Cloud API Notification Rule Endpoints","name":"Notification Rules"}],"servers":[{"description":"Cloud EU","url":"https://cloud.soda.io"},{"description":"Cloud US","url":"https://cloud.us.soda.io"}],"security":[{"basicAuthApiKey":[]},{"cookieToken":[]}],"components":{"securitySchemes":{"basicAuthApiKey":{"scheme":"basic","type":"http"},"cookieToken":{"in":"cookie","name":"token","type":"apiKey"}},"schemas":{"PublicApiListNotificationIntegrationsResponse":{"type":"object","properties":{"content":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/PublicApiNotificationIntegrationDTO"}},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int32"},"totalPages":{"type":"integer","format":"int32"}},"required":["content","first","last","number","size","totalElements","totalPages"]},"PublicApiNotificationIntegrationDTO":{"type":"object","properties":{"channels":{"type":"array","description":"Configured Slack channels usable as notification-rule integrationChannel values. Empty for other providers or when no channels are configured; channels are not refreshed by this endpoint.","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"notificationsEnabled":{"type":"boolean","description":"Whether the notification capability is enabled, independently of the integration status."},"status":{"type":"object","$ref":"#/components/schemas/NotificationIntegrationStatusDTO"},"type":{"type":"object","$ref":"#/components/schemas/NotificationIntegrationTypeDTO"}},"required":["channels","id","notificationsEnabled","status","type"]},"NotificationIntegrationStatusDTO":{"type":"string","enum":["enabled","disabled"]},"NotificationIntegrationTypeDTO":{"type":"string","enum":["slack","microsoftTeams","webhook"]},"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/notificationIntegrations":{"get":{"description":"This endpoint allows you to list the notification integrations in your organization.\n\nIncludes enabled and disabled Slack, Microsoft Teams and webhook integrations; activating and reactivating integrations are excluded.\n\nIntegrations with notifications disabled are included. Results are ordered by type, name (unnamed first), then ID.\n\nChannels are configured Slack channels; this endpoint does not refresh channels or contact providers.\n\nEmpty and out-of-range pages return an empty content list.\n\nThis GET is a paginated API that uses the following parameters to request specific details:\n\n- `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10.\n\n- `page`: Supply an integer value. The default value is 0.\n\n## Authentication\n\nUser authentication required: `true`\n\nThis endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.\n\n## Tags\n\n`Notification Rules`\n\n## Rate limiting\n\n60 requests/60 seconds","operationId":"GET/api/v1/notificationIntegrations","parameters":[{"in":"query","name":"page","schema":{"type":"integer","format":"int32"}},{"in":"query","name":"size","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/PublicApiListNotificationIntegrationsResponse"}}},"description":"Successful response"},"400":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request"},"401":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"429":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too many requests"},"500":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"List notification integrations","tags":["Notification Rules"]}}}}
```

## List notification rules

> This endpoint allows you to list the notification rules in your organization.\
> \
> This GET is a paginated API that uses the following parameters to request specific details:\
> \
> \- \`size\`: Supply an integer value between 10 and 1000, inclusive. The default value is 10.\
> \
> \- \`page\`: Supply an integer value. The default value is 0.\
> \
> \## Authentication\
> \
> User authentication required: \`true\`\
> \
> This endpoint accepts authentication via API keys in the \`Basic\` authentication header, or a pre-authenticated token in HTTP cookie \`token\`. Cookie sessions extend automatically on each request.\
> \
> \## Tags\
> \
> \`Notification Rules\`\
> \
> \## Rate limiting\
> \
> 60 requests/60 seconds

```json
{"openapi":"3.1.0","info":{"title":"Soda Cloud API v4","version":"v1"},"tags":[{"description":"Soda Cloud API Notification Rule Endpoints","name":"Notification Rules"}],"servers":[{"description":"Cloud EU","url":"https://cloud.soda.io"},{"description":"Cloud US","url":"https://cloud.us.soda.io"}],"security":[{"basicAuthApiKey":[]},{"cookieToken":[]}],"components":{"securitySchemes":{"basicAuthApiKey":{"scheme":"basic","type":"http"},"cookieToken":{"in":"cookie","name":"token","type":"apiKey"}},"schemas":{"PublicApiListNotificationRulesResponse":{"type":"object","properties":{"content":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/PublicApiNotificationRuleDTO"}},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int32"},"totalPages":{"type":"integer","format":"int32"}},"required":["content","first","last","number","size","totalElements","totalPages"]},"PublicApiNotificationRuleDTO":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"customization":{"type":"object","$ref":"#/components/schemas/NotificationCustomizationDTO"},"filter":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"},"id":{"type":"string"},"isDefault":{"type":"boolean"},"lastTriggeredAt":{"type":"string","format":"date-time"},"name":{"type":"string"},"ownerId":{"type":"string"},"recipients":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationRecipientDTO"}},"ruleType":{"type":"object","$ref":"#/components/schemas/PublicApiRuleTypeDTO"},"status":{"type":"object","$ref":"#/components/schemas/NotificationRuleStatusDTO"},"updatedAt":{"type":"string","format":"date-time"}}},"NotificationCustomizationDTO":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"object","$ref":"#/components/schemas/NotificationCustomizationTypeDTO"}},"required":["type"]},"NotificationCustomizationTypeDTO":{"type":"string","enum":["rich","minimal","matchedChecks"]},"NotificationFilterDTO":{"type":"object","properties":{"caseInsensitive":{"type":"boolean"},"expression":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"},"expressions":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"}},"field":{"type":"object","$ref":"#/components/schemas/NotificationFilterFieldDTO"},"type":{"type":"object","$ref":"#/components/schemas/NotificationFilterTypeDTO"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}},"required":["type"]},"NotificationFilterFieldDTO":{"type":"object","properties":{"attributeName":{"type":"string"},"field":{"type":"object","$ref":"#/components/schemas/NotificationFilterFieldTypeDTO"}},"required":["field"]},"NotificationFilterFieldTypeDTO":{"type":"string","enum":["datasourceId","datasourceLabel","datasetId","datasetLabel","datasetOwnerId","datasetTags","checkId","checkName","checkOwnerId","columnId","metricType","contractScopeKey","datasetResourceAttribute","checkResourceAttribute"]},"NotificationFilterTypeDTO":{"type":"string","enum":["equals","contains","in","and","or","not"]},"NotificationRecipientDTO":{"type":"object","properties":{"customRoleId":{"type":"string"},"email":{"type":"string"},"integrationChannel":{"type":"string"},"integrationId":{"type":"string"},"role":{"type":"object","$ref":"#/components/schemas/NotificationRecipientRoleDTO"},"triggers":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationRecipientTriggerDTO"}},"type":{"type":"object","$ref":"#/components/schemas/NotificationRecipientTypeDTO"},"userGroupId":{"type":"string"},"userId":{"type":"string"}},"required":["triggers","type"]},"NotificationRecipientRoleDTO":{"type":"string","enum":["datasetOwner","monitorOwner"]},"NotificationRecipientTriggerDTO":{"type":"object","properties":{"level":{"type":"object","$ref":"#/components/schemas/NotificationLevelDTO"},"scanState":{"type":"object","$ref":"#/components/schemas/NotificationScanStateDTO"},"type":{"type":"object","$ref":"#/components/schemas/NotificationTriggerTypeDTO"}},"required":["type"]},"NotificationLevelDTO":{"type":"string","enum":["info","warning","critical","not_evaluated"]},"NotificationScanStateDTO":{"type":"string","enum":["failed","timedOut","canceled","completedWithErrors"]},"NotificationTriggerTypeDTO":{"type":"string","enum":["testResultLevel","scanState"]},"NotificationRecipientTypeDTO":{"type":"string","enum":["email","user","userGroup","integration","resourceRole","customRole"]},"PublicApiRuleTypeDTO":{"type":"string","enum":["check","monitor"]},"NotificationRuleStatusDTO":{"type":"string","enum":["active","paused"]},"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/notificationRules":{"get":{"description":"This endpoint allows you to list the notification rules in your organization.\n\nThis GET is a paginated API that uses the following parameters to request specific details:\n\n- `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10.\n\n- `page`: Supply an integer value. The default value is 0.\n\n## Authentication\n\nUser authentication required: `true`\n\nThis endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.\n\n## Tags\n\n`Notification Rules`\n\n## Rate limiting\n\n60 requests/60 seconds","operationId":"GET/api/v1/notificationRules","parameters":[{"in":"query","name":"page","schema":{"type":"integer","format":"int32"}},{"in":"query","name":"size","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/PublicApiListNotificationRulesResponse"}}},"description":"Successful response"},"400":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request"},"401":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"429":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too many requests"},"500":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"List notification rules","tags":["Notification Rules"]}}}}
```

## Create a notification rule

> Creates a notification rule with the provided filter and recipients.\
> \
> The filter is a simplified expression tree (and/or/not/equals/contains/in) over check and monitor attributes; recipients can be users, user groups, emails, integrations, or roles.\
> \
> Set \`caseInsensitive\` to true on an equals or contains filter over \`datasourceLabel\`, \`datasetLabel\` or \`checkName\` to ignore letter case, the way Soda Cloud's own text filters do. On any other filter type or field, the flag is rejected with a 400 error.\
> \
> \## Authentication\
> \
> User authentication required: \`true\`\
> \
> This endpoint accepts authentication via API keys in the \`Basic\` authentication header, or a pre-authenticated token in HTTP cookie \`token\`. Cookie sessions extend automatically on each request.\
> \
> \## Authorization\
> \
> Users must have global role permission MANAGE\_NOTIFICATION\_RULES to execute this call.\
> \
> \## Tags\
> \
> \`Notification Rules\`\
> \
> \## Rate limiting\
> \
> 10 requests/60 seconds

```json
{"openapi":"3.1.0","info":{"title":"Soda Cloud API v4","version":"v1"},"tags":[{"description":"Soda Cloud API Notification Rule Endpoints","name":"Notification Rules"}],"servers":[{"description":"Cloud EU","url":"https://cloud.soda.io"},{"description":"Cloud US","url":"https://cloud.us.soda.io"}],"security":[{"basicAuthApiKey":[]},{"cookieToken":[]}],"components":{"securitySchemes":{"basicAuthApiKey":{"scheme":"basic","type":"http"},"cookieToken":{"in":"cookie","name":"token","type":"apiKey"}},"schemas":{"PublicApiNotificationRuleRequestDTO":{"type":"object","properties":{"customization":{"type":"object","$ref":"#/components/schemas/NotificationCustomizationDTO"},"filter":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"},"name":{"type":"string"},"recipients":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationRecipientDTO"}},"ruleType":{"type":"object","$ref":"#/components/schemas/PublicApiRuleTypeDTO"},"status":{"type":"object","$ref":"#/components/schemas/NotificationRuleStatusDTO"}},"required":["name","recipients","ruleType"]},"NotificationCustomizationDTO":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"object","$ref":"#/components/schemas/NotificationCustomizationTypeDTO"}},"required":["type"]},"NotificationCustomizationTypeDTO":{"type":"string","enum":["rich","minimal","matchedChecks"]},"NotificationFilterDTO":{"type":"object","properties":{"caseInsensitive":{"type":"boolean"},"expression":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"},"expressions":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"}},"field":{"type":"object","$ref":"#/components/schemas/NotificationFilterFieldDTO"},"type":{"type":"object","$ref":"#/components/schemas/NotificationFilterTypeDTO"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}},"required":["type"]},"NotificationFilterFieldDTO":{"type":"object","properties":{"attributeName":{"type":"string"},"field":{"type":"object","$ref":"#/components/schemas/NotificationFilterFieldTypeDTO"}},"required":["field"]},"NotificationFilterFieldTypeDTO":{"type":"string","enum":["datasourceId","datasourceLabel","datasetId","datasetLabel","datasetOwnerId","datasetTags","checkId","checkName","checkOwnerId","columnId","metricType","contractScopeKey","datasetResourceAttribute","checkResourceAttribute"]},"NotificationFilterTypeDTO":{"type":"string","enum":["equals","contains","in","and","or","not"]},"NotificationRecipientDTO":{"type":"object","properties":{"customRoleId":{"type":"string"},"email":{"type":"string"},"integrationChannel":{"type":"string"},"integrationId":{"type":"string"},"role":{"type":"object","$ref":"#/components/schemas/NotificationRecipientRoleDTO"},"triggers":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationRecipientTriggerDTO"}},"type":{"type":"object","$ref":"#/components/schemas/NotificationRecipientTypeDTO"},"userGroupId":{"type":"string"},"userId":{"type":"string"}},"required":["triggers","type"]},"NotificationRecipientRoleDTO":{"type":"string","enum":["datasetOwner","monitorOwner"]},"NotificationRecipientTriggerDTO":{"type":"object","properties":{"level":{"type":"object","$ref":"#/components/schemas/NotificationLevelDTO"},"scanState":{"type":"object","$ref":"#/components/schemas/NotificationScanStateDTO"},"type":{"type":"object","$ref":"#/components/schemas/NotificationTriggerTypeDTO"}},"required":["type"]},"NotificationLevelDTO":{"type":"string","enum":["info","warning","critical","not_evaluated"]},"NotificationScanStateDTO":{"type":"string","enum":["failed","timedOut","canceled","completedWithErrors"]},"NotificationTriggerTypeDTO":{"type":"string","enum":["testResultLevel","scanState"]},"NotificationRecipientTypeDTO":{"type":"string","enum":["email","user","userGroup","integration","resourceRole","customRole"]},"PublicApiRuleTypeDTO":{"type":"string","enum":["check","monitor"]},"NotificationRuleStatusDTO":{"type":"string","enum":["active","paused"]},"PublicApiNotificationRuleDTO":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"customization":{"type":"object","$ref":"#/components/schemas/NotificationCustomizationDTO"},"filter":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"},"id":{"type":"string"},"isDefault":{"type":"boolean"},"lastTriggeredAt":{"type":"string","format":"date-time"},"name":{"type":"string"},"ownerId":{"type":"string"},"recipients":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationRecipientDTO"}},"ruleType":{"type":"object","$ref":"#/components/schemas/PublicApiRuleTypeDTO"},"status":{"type":"object","$ref":"#/components/schemas/NotificationRuleStatusDTO"},"updatedAt":{"type":"string","format":"date-time"}}},"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/notificationRules":{"post":{"description":"Creates a notification rule with the provided filter and recipients.\n\nThe filter is a simplified expression tree (and/or/not/equals/contains/in) over check and monitor attributes; recipients can be users, user groups, emails, integrations, or roles.\n\nSet `caseInsensitive` to true on an equals or contains filter over `datasourceLabel`, `datasetLabel` or `checkName` to ignore letter case, the way Soda Cloud's own text filters do. On any other filter type or field, the flag is rejected with a 400 error.\n\n## Authentication\n\nUser authentication required: `true`\n\nThis endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.\n\n## Authorization\n\nUsers must have global role permission MANAGE_NOTIFICATION_RULES to execute this call.\n\n## Tags\n\n`Notification Rules`\n\n## Rate limiting\n\n10 requests/60 seconds","operationId":"POST/api/v1/notificationRules","requestBody":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/PublicApiNotificationRuleRequestDTO"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/PublicApiNotificationRuleDTO"}}},"description":"Successful response"},"400":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request"},"401":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"429":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too many requests"},"500":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"Create a notification rule","tags":["Notification Rules"]}}}}
```

## Update a notification rule

> Updates a notification rule. This is a full replacement: the rule's name, type, filter, recipients, status, and customization are all set from the request body.\
> \
> The filter uses the same grammar and the same \`caseInsensitive\` flag as the create endpoint.\
> \
> \## Authentication\
> \
> User authentication required: \`true\`\
> \
> This endpoint accepts authentication via API keys in the \`Basic\` authentication header, or a pre-authenticated token in HTTP cookie \`token\`. Cookie sessions extend automatically on each request.\
> \
> \## Authorization\
> \
> Users must have global role permission MANAGE\_NOTIFICATION\_RULES to execute this call.\
> \
> \## Tags\
> \
> \`Notification Rules\`\
> \
> \## Rate limiting\
> \
> 10 requests/60 seconds

```json
{"openapi":"3.1.0","info":{"title":"Soda Cloud API v4","version":"v1"},"tags":[{"description":"Soda Cloud API Notification Rule Endpoints","name":"Notification Rules"}],"servers":[{"description":"Cloud EU","url":"https://cloud.soda.io"},{"description":"Cloud US","url":"https://cloud.us.soda.io"}],"security":[{"basicAuthApiKey":[]},{"cookieToken":[]}],"components":{"securitySchemes":{"basicAuthApiKey":{"scheme":"basic","type":"http"},"cookieToken":{"in":"cookie","name":"token","type":"apiKey"}},"schemas":{"PublicApiNotificationRuleRequestDTO":{"type":"object","properties":{"customization":{"type":"object","$ref":"#/components/schemas/NotificationCustomizationDTO"},"filter":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"},"name":{"type":"string"},"recipients":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationRecipientDTO"}},"ruleType":{"type":"object","$ref":"#/components/schemas/PublicApiRuleTypeDTO"},"status":{"type":"object","$ref":"#/components/schemas/NotificationRuleStatusDTO"}},"required":["name","recipients","ruleType"]},"NotificationCustomizationDTO":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"object","$ref":"#/components/schemas/NotificationCustomizationTypeDTO"}},"required":["type"]},"NotificationCustomizationTypeDTO":{"type":"string","enum":["rich","minimal","matchedChecks"]},"NotificationFilterDTO":{"type":"object","properties":{"caseInsensitive":{"type":"boolean"},"expression":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"},"expressions":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"}},"field":{"type":"object","$ref":"#/components/schemas/NotificationFilterFieldDTO"},"type":{"type":"object","$ref":"#/components/schemas/NotificationFilterTypeDTO"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}},"required":["type"]},"NotificationFilterFieldDTO":{"type":"object","properties":{"attributeName":{"type":"string"},"field":{"type":"object","$ref":"#/components/schemas/NotificationFilterFieldTypeDTO"}},"required":["field"]},"NotificationFilterFieldTypeDTO":{"type":"string","enum":["datasourceId","datasourceLabel","datasetId","datasetLabel","datasetOwnerId","datasetTags","checkId","checkName","checkOwnerId","columnId","metricType","contractScopeKey","datasetResourceAttribute","checkResourceAttribute"]},"NotificationFilterTypeDTO":{"type":"string","enum":["equals","contains","in","and","or","not"]},"NotificationRecipientDTO":{"type":"object","properties":{"customRoleId":{"type":"string"},"email":{"type":"string"},"integrationChannel":{"type":"string"},"integrationId":{"type":"string"},"role":{"type":"object","$ref":"#/components/schemas/NotificationRecipientRoleDTO"},"triggers":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationRecipientTriggerDTO"}},"type":{"type":"object","$ref":"#/components/schemas/NotificationRecipientTypeDTO"},"userGroupId":{"type":"string"},"userId":{"type":"string"}},"required":["triggers","type"]},"NotificationRecipientRoleDTO":{"type":"string","enum":["datasetOwner","monitorOwner"]},"NotificationRecipientTriggerDTO":{"type":"object","properties":{"level":{"type":"object","$ref":"#/components/schemas/NotificationLevelDTO"},"scanState":{"type":"object","$ref":"#/components/schemas/NotificationScanStateDTO"},"type":{"type":"object","$ref":"#/components/schemas/NotificationTriggerTypeDTO"}},"required":["type"]},"NotificationLevelDTO":{"type":"string","enum":["info","warning","critical","not_evaluated"]},"NotificationScanStateDTO":{"type":"string","enum":["failed","timedOut","canceled","completedWithErrors"]},"NotificationTriggerTypeDTO":{"type":"string","enum":["testResultLevel","scanState"]},"NotificationRecipientTypeDTO":{"type":"string","enum":["email","user","userGroup","integration","resourceRole","customRole"]},"PublicApiRuleTypeDTO":{"type":"string","enum":["check","monitor"]},"NotificationRuleStatusDTO":{"type":"string","enum":["active","paused"]},"PublicApiNotificationRuleDTO":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"customization":{"type":"object","$ref":"#/components/schemas/NotificationCustomizationDTO"},"filter":{"type":"object","$ref":"#/components/schemas/NotificationFilterDTO"},"id":{"type":"string"},"isDefault":{"type":"boolean"},"lastTriggeredAt":{"type":"string","format":"date-time"},"name":{"type":"string"},"ownerId":{"type":"string"},"recipients":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/NotificationRecipientDTO"}},"ruleType":{"type":"object","$ref":"#/components/schemas/PublicApiRuleTypeDTO"},"status":{"type":"object","$ref":"#/components/schemas/NotificationRuleStatusDTO"},"updatedAt":{"type":"string","format":"date-time"}}},"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/notificationRules/{notificationRuleId}":{"post":{"description":"Updates a notification rule. This is a full replacement: the rule's name, type, filter, recipients, status, and customization are all set from the request body.\n\nThe filter uses the same grammar and the same `caseInsensitive` flag as the create endpoint.\n\n## Authentication\n\nUser authentication required: `true`\n\nThis endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.\n\n## Authorization\n\nUsers must have global role permission MANAGE_NOTIFICATION_RULES to execute this call.\n\n## Tags\n\n`Notification Rules`\n\n## Rate limiting\n\n10 requests/60 seconds","operationId":"POST/api/v1/notificationRules/{notificationRuleId}","parameters":[{"in":"path","name":"notificationRuleId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/PublicApiNotificationRuleRequestDTO"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/PublicApiNotificationRuleDTO"}}},"description":"Successful response"},"400":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request"},"401":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"429":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too many requests"},"500":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"Update a notification rule","tags":["Notification Rules"]}}}}
```

## Delete a notification rule

> Schedules a notification rule for deletion. Deletion is processed asynchronously.\
> \
> \## Authentication\
> \
> User authentication required: \`true\`\
> \
> This endpoint accepts authentication via API keys in the \`Basic\` authentication header, or a pre-authenticated token in HTTP cookie \`token\`. Cookie sessions extend automatically on each request.\
> \
> \## Authorization\
> \
> Users must have global role permission MANAGE\_NOTIFICATION\_RULES to execute this call.\
> \
> \## Tags\
> \
> \`Notification Rules\`\
> \
> \## Rate limiting\
> \
> 10 requests/60 seconds

```json
{"openapi":"3.1.0","info":{"title":"Soda Cloud API v4","version":"v1"},"tags":[{"description":"Soda Cloud API Notification Rule Endpoints","name":"Notification Rules"}],"servers":[{"description":"Cloud EU","url":"https://cloud.soda.io"},{"description":"Cloud US","url":"https://cloud.us.soda.io"}],"security":[{"basicAuthApiKey":[]},{"cookieToken":[]}],"components":{"securitySchemes":{"basicAuthApiKey":{"scheme":"basic","type":"http"},"cookieToken":{"in":"cookie","name":"token","type":"apiKey"}},"schemas":{"PublicApiDeleteNotificationRuleResponse":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"ErrorResponse":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"paths":{"/api/v1/notificationRules/{notificationRuleId}":{"delete":{"description":"Schedules a notification rule for deletion. Deletion is processed asynchronously.\n\n## Authentication\n\nUser authentication required: `true`\n\nThis endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.\n\n## Authorization\n\nUsers must have global role permission MANAGE_NOTIFICATION_RULES to execute this call.\n\n## Tags\n\n`Notification Rules`\n\n## Rate limiting\n\n10 requests/60 seconds","operationId":"DELETE/api/v1/notificationRules/{notificationRuleId}","parameters":[{"in":"path","name":"notificationRuleId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/PublicApiDeleteNotificationRuleResponse"}}},"description":"Successful response"},"400":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request"},"401":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"429":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too many requests"},"500":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error"}},"summary":"Delete a notification rule","tags":["Notification Rules"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.soda.io/reference/soda-apis/rest-api/notification-rules.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
