Create Notification Policy / Environment
POST {{apiPath}}/environments/{{envID}}/notificationsPolicies
When you use the POST {{apiPath}}/environments/{{envID}}/notificationsPolicies endpoint and specify ENVIRONMENT as the type along with the total field, a policy is created to limit the total number of notifications that can be sent to all users in the environment each day.
In this example, the countryLimit object is used to restrict the use of SMS and voice notifications to the United States and Canada, and the cooldownConfiguration object is included to specify the time that the user must wait before requesting another notification such as another OTP.
Note that if you include the optional cooldownConfiguration object, you must include each of the objects below it - sms, email, voice, and whatsApp - even if you don’t want to enable cooldown periods for each of the methods.
Prerequisites
-
Refer to Notifications and Notification Policies for important overview information.
Request Model
| Property | Type | Required? |
|---|---|---|
|
Object |
Optional |
|
Object |
Required |
|
Object |
Required |
|
Object |
Required |
|
Object |
Required |
|
Object |
Optional |
|
String |
Required/Optional |
|
Array |
Optional |
|
Array |
Required/Optional |
|
Boolean |
Optional |
|
String |
Required |
|
Array |
Required |
|
String |
Required |
|
Array |
Required |
|
Integer |
Required/Optional |
|
Integer |
Required/Optional |
|
Integer |
Required/Optional |
Refer to the Notification policies data model for full property descriptions.
Body
raw ( application/json )
{
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"cooldownConfiguration":{
"sms":{
"enabled":true,
"periods":[
{"duration":30,"timeUnit":"SECONDS"},
{"duration":2,"timeUnit":"MINUTES"},
{"duration":3,"timeUnit":"MINUTES"}
],
"resendLimit":5
},
"email":{
"enabled":true,
"periods":[
{"duration":30,"timeUnit":"SECONDS"},
{"duration":1,"timeUnit":"MINUTES"},
{"duration":2,"timeUnit":"MINUTES"}
],
"resendLimit":4
},
"voice":{
"enabled":true,
"periods":[
{"duration":40,"timeUnit":"SECONDS"},
{"duration":2,"timeUnit":"MINUTES"},
{"duration":4,"timeUnit":"MINUTES"}
],
"groupBy":"USER_ID",
"resendLimit":6
},
"whatsApp":{
"enabled":false
}
},
"default": false
}
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff '{{apiPath}}/environments/{{envID}}/notificationsPolicies' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"cooldownConfiguration":{
"sms":{
"enabled":true,
"periods":[
{"duration":30,"timeUnit":"SECONDS"},
{"duration":2,"timeUnit":"MINUTES"},
{"duration":3,"timeUnit":"MINUTES"}
],
"resendLimit":5
},
"email":{
"enabled":true,
"periods":[
{"duration":30,"timeUnit":"SECONDS"},
{"duration":1,"timeUnit":"MINUTES"},
{"duration":2,"timeUnit":"MINUTES"}
],
"resendLimit":4
},
"voice":{
"enabled":true,
"periods":[
{"duration":40,"timeUnit":"SECONDS"},
{"duration":2,"timeUnit":"MINUTES"},
{"duration":4,"timeUnit":"MINUTES"}
],
"groupBy":"USER_ID",
"resendLimit":6
},
"whatsApp":{
"enabled":false
}
},
"default": false
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/notificationsPolicies")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@" ""name"": ""Notification policy with environment limit and country limitation and notification cooldown periods""," + "\n" +
@" ""quotas"": [" + "\n" +
@" {" + "\n" +
@" ""type"": ""ENVIRONMENT""," + "\n" +
@" ""deliveryMethods"": [" + "\n" +
@" ""SMS""," + "\n" +
@" ""Voice""" + "\n" +
@" ]," + "\n" +
@" ""total"": 1000" + "\n" +
@" }" + "\n" +
@" ]," + "\n" +
@" ""countryLimit"": {" + "\n" +
@" ""type"": ""ALLOWED""," + "\n" +
@" ""deliveryMethods"": [" + "\n" +
@" ""SMS""," + "\n" +
@" ""Voice""" + "\n" +
@" ]," + "\n" +
@" ""countries"": [" + "\n" +
@" ""US""," + "\n" +
@" ""CA""" + "\n" +
@" ]" + "\n" +
@" }," + "\n" +
@" ""cooldownConfiguration"":{" + "\n" +
@" ""sms"":{" + "\n" +
@" ""enabled"":true," + "\n" +
@" ""periods"":[" + "\n" +
@" {""duration"":30,""timeUnit"":""SECONDS""}," + "\n" +
@" {""duration"":2,""timeUnit"":""MINUTES""}," + "\n" +
@" {""duration"":3,""timeUnit"":""MINUTES""}" + "\n" +
@" ]," + "\n" +
@" ""resendLimit"":5" + "\n" +
@" }," + "\n" +
@" ""email"":{" + "\n" +
@" ""enabled"":true," + "\n" +
@" ""periods"":[" + "\n" +
@" {""duration"":30,""timeUnit"":""SECONDS""}," + "\n" +
@" {""duration"":1,""timeUnit"":""MINUTES""}," + "\n" +
@" {""duration"":2,""timeUnit"":""MINUTES""}" + "\n" +
@" ]," + "\n" +
@" ""resendLimit"":4" + "\n" +
@" }," + "\n" +
@" ""voice"":{" + "\n" +
@" ""enabled"":true," + "\n" +
@" ""periods"":[" + "\n" +
@" {""duration"":40,""timeUnit"":""SECONDS""}," + "\n" +
@" {""duration"":2,""timeUnit"":""MINUTES""}," + "\n" +
@" {""duration"":4,""timeUnit"":""MINUTES""}" + "\n" +
@" ]," + "\n" +
@" ""groupBy"":""USER_ID""," + "\n" +
@" ""resendLimit"":6" + "\n" +
@" }," + "\n" +
@" ""whatsApp"":{" + "\n" +
@" ""enabled"":false" + "\n" +
@" }" + "\n" +
@" }," + "\n" +
@" ""default"": false" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{{apiPath}}/environments/{{envID}}/notificationsPolicies"
method := "POST"
payload := strings.NewReader(`{
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"cooldownConfiguration":{
"sms":{
"enabled":true,
"periods":[
{"duration":30,"timeUnit":"SECONDS"},
{"duration":2,"timeUnit":"MINUTES"},
{"duration":3,"timeUnit":"MINUTES"}
],
"resendLimit":5
},
"email":{
"enabled":true,
"periods":[
{"duration":30,"timeUnit":"SECONDS"},
{"duration":1,"timeUnit":"MINUTES"},
{"duration":2,"timeUnit":"MINUTES"}
],
"resendLimit":4
},
"voice":{
"enabled":true,
"periods":[
{"duration":40,"timeUnit":"SECONDS"},
{"duration":2,"timeUnit":"MINUTES"},
{"duration":4,"timeUnit":"MINUTES"}
],
"groupBy":"USER_ID",
"resendLimit":6
},
"whatsApp":{
"enabled":false
}
},
"default": false
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer {{accessToken}}")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
POST /environments/{{envID}}/notificationsPolicies HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}
{
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"cooldownConfiguration":{
"sms":{
"enabled":true,
"periods":[
{"duration":30,"timeUnit":"SECONDS"},
{"duration":2,"timeUnit":"MINUTES"},
{"duration":3,"timeUnit":"MINUTES"}
],
"resendLimit":5
},
"email":{
"enabled":true,
"periods":[
{"duration":30,"timeUnit":"SECONDS"},
{"duration":1,"timeUnit":"MINUTES"},
{"duration":2,"timeUnit":"MINUTES"}
],
"resendLimit":4
},
"voice":{
"enabled":true,
"periods":[
{"duration":40,"timeUnit":"SECONDS"},
{"duration":2,"timeUnit":"MINUTES"},
{"duration":4,"timeUnit":"MINUTES"}
],
"groupBy":"USER_ID",
"resendLimit":6
},
"whatsApp":{
"enabled":false
}
},
"default": false
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"name\": \"Notification policy with environment limit and country limitation and notification cooldown periods\",\n \"quotas\": [\n {\n \"type\": \"ENVIRONMENT\",\n \"deliveryMethods\": [\n \"SMS\",\n \"Voice\"\n ],\n \"total\": 1000\n }\n ],\n \"countryLimit\": {\n \"type\": \"ALLOWED\",\n \"deliveryMethods\": [\n \"SMS\",\n \"Voice\"\n ],\n \"countries\": [\n \"US\",\n \"CA\"\n ]\n },\n \"cooldownConfiguration\":{\n \"sms\":{\n \"enabled\":true,\n \"periods\":[\n {\"duration\":30,\"timeUnit\":\"SECONDS\"},\n {\"duration\":2,\"timeUnit\":\"MINUTES\"},\n {\"duration\":3,\"timeUnit\":\"MINUTES\"}\n ],\n \"resendLimit\":5\n },\n \"email\":{\n \"enabled\":true,\n \"periods\":[\n {\"duration\":30,\"timeUnit\":\"SECONDS\"},\n {\"duration\":1,\"timeUnit\":\"MINUTES\"},\n {\"duration\":2,\"timeUnit\":\"MINUTES\"}\n ],\n \"resendLimit\":4\n },\n \"voice\":{\n \"enabled\":true,\n \"periods\":[\n {\"duration\":40,\"timeUnit\":\"SECONDS\"},\n {\"duration\":2,\"timeUnit\":\"MINUTES\"},\n {\"duration\":4,\"timeUnit\":\"MINUTES\"}\n ],\n \"groupBy\":\"USER_ID\",\n \"resendLimit\":6\n },\n \"whatsApp\":{\n \"enabled\":false\n }\n },\n \"default\": false\n}");
Request request = new Request.Builder()
.url("{{apiPath}}/environments/{{envID}}/notificationsPolicies")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/environments/{{envID}}/notificationsPolicies",
"method": "POST",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer {{accessToken}}"
},
"data": JSON.stringify({
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"cooldownConfiguration": {
"sms": {
"enabled": true,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 3,
"timeUnit": "MINUTES"
}
],
"resendLimit": 5
},
"email": {
"enabled": true,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 1,
"timeUnit": "MINUTES"
},
{
"duration": 2,
"timeUnit": "MINUTES"
}
],
"resendLimit": 4
},
"voice": {
"enabled": true,
"periods": [
{
"duration": 40,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 4,
"timeUnit": "MINUTES"
}
],
"groupBy": "USER_ID",
"resendLimit": 6
},
"whatsApp": {
"enabled": false
}
},
"default": false
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'POST',
'url': '{{apiPath}}/environments/{{envID}}/notificationsPolicies',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
},
body: JSON.stringify({
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"cooldownConfiguration": {
"sms": {
"enabled": true,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 3,
"timeUnit": "MINUTES"
}
],
"resendLimit": 5
},
"email": {
"enabled": true,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 1,
"timeUnit": "MINUTES"
},
{
"duration": 2,
"timeUnit": "MINUTES"
}
],
"resendLimit": 4
},
"voice": {
"enabled": true,
"periods": [
{
"duration": 40,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 4,
"timeUnit": "MINUTES"
}
],
"groupBy": "USER_ID",
"resendLimit": 6
},
"whatsApp": {
"enabled": false
}
},
"default": false
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{{apiPath}}/environments/{{envID}}/notificationsPolicies"
payload = json.dumps({
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"cooldownConfiguration": {
"sms": {
"enabled": True,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 3,
"timeUnit": "MINUTES"
}
],
"resendLimit": 5
},
"email": {
"enabled": True,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 1,
"timeUnit": "MINUTES"
},
{
"duration": 2,
"timeUnit": "MINUTES"
}
],
"resendLimit": 4
},
"voice": {
"enabled": True,
"periods": [
{
"duration": 40,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 4,
"timeUnit": "MINUTES"
}
],
"groupBy": "USER_ID",
"resendLimit": 6
},
"whatsApp": {
"enabled": False
}
},
"default": False
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/environments/{{envID}}/notificationsPolicies');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n "name": "Notification policy with environment limit and country limitation and notification cooldown periods",\n "quotas": [\n {\n "type": "ENVIRONMENT",\n "deliveryMethods": [\n "SMS",\n "Voice"\n ],\n "total": 1000\n }\n ],\n "countryLimit": {\n "type": "ALLOWED",\n "deliveryMethods": [\n "SMS",\n "Voice"\n ],\n "countries": [\n "US",\n "CA"\n ]\n },\n "cooldownConfiguration":{\n "sms":{\n "enabled":true,\n "periods":[\n {"duration":30,"timeUnit":"SECONDS"},\n {"duration":2,"timeUnit":"MINUTES"},\n {"duration":3,"timeUnit":"MINUTES"}\n ],\n "resendLimit":5\n },\n "email":{\n "enabled":true,\n "periods":[\n {"duration":30,"timeUnit":"SECONDS"},\n {"duration":1,"timeUnit":"MINUTES"},\n {"duration":2,"timeUnit":"MINUTES"}\n ],\n "resendLimit":4\n },\n "voice":{\n "enabled":true,\n "periods":[\n {"duration":40,"timeUnit":"SECONDS"},\n {"duration":2,"timeUnit":"MINUTES"},\n {"duration":4,"timeUnit":"MINUTES"}\n ],\n "groupBy":"USER_ID",\n "resendLimit":6\n },\n "whatsApp":{\n "enabled":false\n }\n },\n "default": false\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
require "uri"
require "json"
require "net/http"
url = URI("{{apiPath}}/environments/{{envID}}/notificationsPolicies")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"cooldownConfiguration": {
"sms": {
"enabled": true,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 3,
"timeUnit": "MINUTES"
}
],
"resendLimit": 5
},
"email": {
"enabled": true,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 1,
"timeUnit": "MINUTES"
},
{
"duration": 2,
"timeUnit": "MINUTES"
}
],
"resendLimit": 4
},
"voice": {
"enabled": true,
"periods": [
{
"duration": 40,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 4,
"timeUnit": "MINUTES"
}
],
"groupBy": "USER_ID",
"resendLimit": 6
},
"whatsApp": {
"enabled": false
}
},
"default": false
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"name\": \"Notification policy with environment limit and country limitation and notification cooldown periods\",\n \"quotas\": [\n {\n \"type\": \"ENVIRONMENT\",\n \"deliveryMethods\": [\n \"SMS\",\n \"Voice\"\n ],\n \"total\": 1000\n }\n ],\n \"countryLimit\": {\n \"type\": \"ALLOWED\",\n \"deliveryMethods\": [\n \"SMS\",\n \"Voice\"\n ],\n \"countries\": [\n \"US\",\n \"CA\"\n ]\n },\n \"cooldownConfiguration\":{\n \"sms\":{\n \"enabled\":true,\n \"periods\":[\n {\"duration\":30,\"timeUnit\":\"SECONDS\"},\n {\"duration\":2,\"timeUnit\":\"MINUTES\"},\n {\"duration\":3,\"timeUnit\":\"MINUTES\"}\n ],\n \"resendLimit\":5\n },\n \"email\":{\n \"enabled\":true,\n \"periods\":[\n {\"duration\":30,\"timeUnit\":\"SECONDS\"},\n {\"duration\":1,\"timeUnit\":\"MINUTES\"},\n {\"duration\":2,\"timeUnit\":\"MINUTES\"}\n ],\n \"resendLimit\":4\n },\n \"voice\":{\n \"enabled\":true,\n \"periods\":[\n {\"duration\":40,\"timeUnit\":\"SECONDS\"},\n {\"duration\":2,\"timeUnit\":\"MINUTES\"},\n {\"duration\":4,\"timeUnit\":\"MINUTES\"}\n ],\n \"groupBy\":\"USER_ID\",\n \"resendLimit\":6\n },\n \"whatsApp\":{\n \"enabled\":false\n }\n },\n \"default\": false\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/notificationsPolicies")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")
request.httpMethod = "POST"
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}
task.resume()
Example Response
201 Created
{
"_links": {
"self": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/notificationsPolicies/fddf9546-8e61-4c40-8861-7e933b62ab39"
},
"environment": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
}
},
"id": "fddf9546-8e61-4c40-8861-7e933b62ab39",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"name": "Notification policy with environment limit and country limitation and notification cooldown periods",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"US",
"CA"
]
},
"updatedAt": "2025-03-30T11:54:29.323Z",
"createdAt": "2025-03-30T11:54:29.326Z",
"cooldownConfiguration": {
"sms": {
"enabled": true,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 3,
"timeUnit": "MINUTES"
}
],
"resendLimit": 5
},
"email": {
"enabled": true,
"periods": [
{
"duration": 30,
"timeUnit": "SECONDS"
},
{
"duration": 1,
"timeUnit": "MINUTES"
},
{
"duration": 2,
"timeUnit": "MINUTES"
}
],
"resendLimit": 4
},
"voice": {
"enabled": true,
"groupBy": "USER_ID",
"periods": [
{
"duration": 40,
"timeUnit": "SECONDS"
},
{
"duration": 2,
"timeUnit": "MINUTES"
},
{
"duration": 4,
"timeUnit": "MINUTES"
}
],
"resendLimit": 6
},
"whatsApp": {
"enabled": false
}
},
"default": false
}