---
title: Create Notification Policy / Environment
description: When you use the POST {{apiPath}}/v1/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.
component: pingone-api
page_id: pingone-api:platform:notifications/notification-policies/create_env_notification_policy_total
canonical_url: https://developer.pingidentity.com/pingone-api/platform/notifications/notification-policies/create_env_notification_policy_total.html
section_ids:
  prerequisites: Prerequisites
  headers: Headers
  body: Body
  example-request: Example Request
  example-response: Example Response
---

# Create Notification Policy / Environment

##

```none
POST {{apiPath}}/v1/environments/{{envID}}/notificationsPolicies
```

When you use the `POST {{apiPath}}/v1/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](../../notifications.html) and [Notification Policies](../notification-policies.html) for important overview information.

> **Collapse: Request Model**
>
> | Property                         | Type    | Required?         |
> | -------------------------------- | ------- | ----------------- |
> | `cooldownConfiguration`          | Object  | Optional          |
> | `cooldownConfiguration.sms`      | Object  | Required          |
> | `cooldownConfiguration.email`    | Object  | Required          |
> | `cooldownConfiguration.voice`    | Object  | Required          |
> | `cooldownConfiguration.whatsApp` | Object  | Required          |
> | `countryLimit`                   | Object  | Optional          |
> | `countryLimit.type`              | String  | Required/Optional |
> | `countryLimit.deliveryMethods`   | Array   | Optional          |
> | `countryLimit.countries`         | Array   | Required/Optional |
> | `default`                        | Boolean | Optional          |
> | `name`                           | String  | Required          |
> | `quotas`                         | Array   | Required          |
> | `quotas[].type`                  | String  | Required          |
> | `quotas[].deliveryMethods`       | Array   | Required          |
> | `quotas[].total`                 | Integer | Required/Optional |
> | `quotas[].claimed`               | Integer | Required/Optional |
> | `quotas[].unclaimed`             | Integer | Required/Optional |
>
> Refer to the [Notification policies data model](../notification-policies.html) for full property descriptions.

### Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

### Body

raw ( application/json )

```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

```shell
curl --location --globoff '{{apiPath}}/v1/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
}'
```

```csharp
var options = new RestClientOptions("{{apiPath}}/v1/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);
```

```golang
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io"
)

func main() {

  url := "{{apiPath}}/v1/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))
}
```

```http
POST /v1/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
}
```

```java
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}}/v1/environments/{{envID}}/notificationsPolicies")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
```

```javascript
var settings = {
  "url": "{{apiPath}}/v1/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);
});
```

```javascript
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{apiPath}}/v1/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);
});
```

```python
import requests
import json

url = "{{apiPath}}/v1/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
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/v1/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();
}
```

```ruby
require "uri"
require "json"
require "net/http"

url = URI("{{apiPath}}/v1/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
```

```swift
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}}/v1/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

```json
{
    "_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
}
```
