Create Notification Policy / Environment (using custom providers)
POST {{apiPath}}/environments/{{envID}}/notificationsPolicies
This example uses the {{apiPath}}/environments/{{envID}}/notificationsPolicies endpoint to create an environment-level notification policy that:
-
Limits the total number of notifications that can be sent to all users in the environment each day.
-
Uses the
countryLimitobject to restrict the use of SMS and voice notifications to specific countries. -
Uses the
providerConfigurationobject to specify the provider fallback order to use for the custom providers that were defined, based on country and authentication method (SMS and Voice). Note that in addition to any country-specific orders specified, theproviderConfiguration.conditionsarray must contain a fallback order without thecountriesarray in the object. This order is used for all countries that were not specified in one of the other fallback orders defined.
Prerequisites
-
Refer to Notifications and Notification Policies for important overview information.
Request Model
| Property | Type | Required? |
|---|---|---|
|
Boolean |
Optional |
|
Object |
Optional |
|
String |
Optional |
|
Array |
Optional |
|
Array |
Optional |
|
String |
Required |
|
Object |
Optional |
|
Array |
Optional |
|
Array |
Optional |
|
Array |
Optional |
|
Array |
Optional |
|
String |
Optional |
|
Array |
Required |
|
String |
Required |
|
Array |
Required |
|
Integer |
Required |
Refer to the Notification policies data model for full property descriptions.
Body
raw ( application/json )
{
"name": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type" : "ENVIRONMENT",
"deliveryMethods" : [
"Email"
],
"total" : 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"CA",
"SE",
"JP"
]
},
"providerConfiguration" : {
"conditions" : [
{
"deliveryMethods" : [ "VOICE", "SMS" ],
"countries" : [
"CA"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID-3}}"
}
]
},
{
"deliveryMethods" : [
"VOICE",
"SMS"
],
"countries" : [
"SE"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods" : [
"VOICE",
"SMS"
],
"countries" : [
"JP"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods" : [
"SMS"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
}
]
},
"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": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type" : "ENVIRONMENT",
"deliveryMethods" : [
"Email"
],
"total" : 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"CA",
"SE",
"JP"
]
},
"providerConfiguration" : {
"conditions" : [
{
"deliveryMethods" : [ "VOICE", "SMS" ],
"countries" : [
"CA"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID-3}}"
}
]
},
{
"deliveryMethods" : [
"VOICE",
"SMS"
],
"countries" : [
"SE"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods" : [
"VOICE",
"SMS"
],
"countries" : [
"JP"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods" : [
"SMS"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
}
]
},
"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"": ""Environment-level notification policy with country limitation and custom provider preference""," + "\n" +
@" ""quotas"": [" + "\n" +
@" {" + "\n" +
@" ""type"": ""ENVIRONMENT""," + "\n" +
@" ""deliveryMethods"": [" + "\n" +
@" ""SMS""," + "\n" +
@" ""Voice""" + "\n" +
@" ]," + "\n" +
@" ""total"": 1000" + "\n" +
@" }, " + "\n" +
@" {" + "\n" +
@" ""type"" : ""ENVIRONMENT""," + "\n" +
@" ""deliveryMethods"" : [" + "\n" +
@" ""Email""" + "\n" +
@" ]," + "\n" +
@" ""total"" : 100" + "\n" +
@" }" + "\n" +
@" ]," + "\n" +
@" ""countryLimit"": {" + "\n" +
@" ""type"": ""ALLOWED""," + "\n" +
@" ""deliveryMethods"": [" + "\n" +
@" ""SMS""," + "\n" +
@" ""Voice""" + "\n" +
@" ]," + "\n" +
@" ""countries"": [" + "\n" +
@" ""CA""," + "\n" +
@" ""SE""," + "\n" +
@" ""JP""" + "\n" +
@" ]" + "\n" +
@" }," + "\n" +
@" ""providerConfiguration"" : {" + "\n" +
@" ""conditions"" : [ " + "\n" +
@" {" + "\n" +
@" ""deliveryMethods"" : [ ""VOICE"", ""SMS"" ]," + "\n" +
@" ""countries"" : [" + "\n" +
@" ""CA""" + "\n" +
@" ]," + "\n" +
@" ""fallbackChain"" : [ " + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID}}""" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID-2}}""" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID-3}}""" + "\n" +
@" }" + "\n" +
@" ]" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""deliveryMethods"" : [" + "\n" +
@" ""VOICE""," + "\n" +
@" ""SMS""" + "\n" +
@" ]," + "\n" +
@" ""countries"" : [" + "\n" +
@" ""SE""" + "\n" +
@" ]," + "\n" +
@" ""fallbackChain"" : [" + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID-3}}""" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID-2}}""" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID}}""" + "\n" +
@" }" + "\n" +
@" ]" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""deliveryMethods"" : [" + "\n" +
@" ""VOICE""," + "\n" +
@" ""SMS""" + "\n" +
@" ]," + "\n" +
@" ""countries"" : [" + "\n" +
@" ""JP""" + "\n" +
@" ]," + "\n" +
@" ""fallbackChain"" : [" + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID-2}}""" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID-3}}""" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID}}""" + "\n" +
@" }" + "\n" +
@" ]" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""deliveryMethods"" : [" + "\n" +
@" ""SMS""" + "\n" +
@" ]," + "\n" +
@" ""fallbackChain"" : [" + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID-3}}""" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID-2}}""" + "\n" +
@" }," + "\n" +
@" {" + "\n" +
@" ""id"" : ""{{fallbackChainID}}""" + "\n" +
@" }" + "\n" +
@" ]" + "\n" +
@" }" + "\n" +
@" ]" + "\n" +
@" }," + "\n" +
@" ""default"": false" + "\n" +
@"}" + "\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": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type" : "ENVIRONMENT",
"deliveryMethods" : [
"Email"
],
"total" : 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"CA",
"SE",
"JP"
]
},
"providerConfiguration" : {
"conditions" : [
{
"deliveryMethods" : [ "VOICE", "SMS" ],
"countries" : [
"CA"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID-3}}"
}
]
},
{
"deliveryMethods" : [
"VOICE",
"SMS"
],
"countries" : [
"SE"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods" : [
"VOICE",
"SMS"
],
"countries" : [
"JP"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods" : [
"SMS"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
}
]
},
"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": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type" : "ENVIRONMENT",
"deliveryMethods" : [
"Email"
],
"total" : 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"CA",
"SE",
"JP"
]
},
"providerConfiguration" : {
"conditions" : [
{
"deliveryMethods" : [ "VOICE", "SMS" ],
"countries" : [
"CA"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID-3}}"
}
]
},
{
"deliveryMethods" : [
"VOICE",
"SMS"
],
"countries" : [
"SE"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods" : [
"VOICE",
"SMS"
],
"countries" : [
"JP"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods" : [
"SMS"
],
"fallbackChain" : [
{
"id" : "{{fallbackChainID-3}}"
},
{
"id" : "{{fallbackChainID-2}}"
},
{
"id" : "{{fallbackChainID}}"
}
]
}
]
},
"default": false
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"name\": \"Environment-level notification policy with country limitation and custom provider preference\",\n \"quotas\": [\n {\n \"type\": \"ENVIRONMENT\",\n \"deliveryMethods\": [\n \"SMS\",\n \"Voice\"\n ],\n \"total\": 1000\n }, \n {\n \"type\" : \"ENVIRONMENT\",\n \"deliveryMethods\" : [\n \"Email\"\n ],\n \"total\" : 100\n }\n ],\n \"countryLimit\": {\n \"type\": \"ALLOWED\",\n \"deliveryMethods\": [\n \"SMS\",\n \"Voice\"\n ],\n \"countries\": [\n \"CA\",\n \"SE\",\n \"JP\"\n ]\n },\n \"providerConfiguration\" : {\n \"conditions\" : [ \n {\n \"deliveryMethods\" : [ \"VOICE\", \"SMS\" ],\n \"countries\" : [\n \"CA\"\n ],\n \"fallbackChain\" : [ \n {\n \"id\" : \"{{fallbackChainID}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-2}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-3}}\"\n }\n ]\n },\n {\n \"deliveryMethods\" : [\n \"VOICE\",\n \"SMS\"\n ],\n \"countries\" : [\n \"SE\"\n ],\n \"fallbackChain\" : [\n {\n \"id\" : \"{{fallbackChainID-3}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-2}}\"\n },\n {\n \"id\" : \"{{fallbackChainID}}\"\n }\n ]\n },\n {\n \"deliveryMethods\" : [\n \"VOICE\",\n \"SMS\"\n ],\n \"countries\" : [\n \"JP\"\n ],\n \"fallbackChain\" : [\n {\n \"id\" : \"{{fallbackChainID-2}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-3}}\"\n },\n {\n \"id\" : \"{{fallbackChainID}}\"\n }\n ]\n },\n {\n \"deliveryMethods\" : [\n \"SMS\"\n ],\n \"fallbackChain\" : [\n {\n \"id\" : \"{{fallbackChainID-3}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-2}}\"\n },\n {\n \"id\" : \"{{fallbackChainID}}\"\n }\n ]\n }\n ]\n },\n \"default\": false\n}\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": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"Email"
],
"total": 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"CA",
"SE",
"JP"
]
},
"providerConfiguration": {
"conditions": [
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"CA"
],
"fallbackChain": [
{
"id": "{{fallbackChainID}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID-3}}"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"SE"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"JP"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods": [
"SMS"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID}}"
}
]
}
]
},
"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": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"Email"
],
"total": 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"CA",
"SE",
"JP"
]
},
"providerConfiguration": {
"conditions": [
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"CA"
],
"fallbackChain": [
{
"id": "{{fallbackChainID}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID-3}}"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"SE"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"JP"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods": [
"SMS"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID}}"
}
]
}
]
},
"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": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"Email"
],
"total": 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"CA",
"SE",
"JP"
]
},
"providerConfiguration": {
"conditions": [
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"CA"
],
"fallbackChain": [
{
"id": "{{fallbackChainID}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID-3}}"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"SE"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"JP"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods": [
"SMS"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID}}"
}
]
}
]
},
"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": "Environment-level notification policy with country limitation and custom provider preference",\n "quotas": [\n {\n "type": "ENVIRONMENT",\n "deliveryMethods": [\n "SMS",\n "Voice"\n ],\n "total": 1000\n }, \n {\n "type" : "ENVIRONMENT",\n "deliveryMethods" : [\n "Email"\n ],\n "total" : 100\n }\n ],\n "countryLimit": {\n "type": "ALLOWED",\n "deliveryMethods": [\n "SMS",\n "Voice"\n ],\n "countries": [\n "CA",\n "SE",\n "JP"\n ]\n },\n "providerConfiguration" : {\n "conditions" : [ \n {\n "deliveryMethods" : [ "VOICE", "SMS" ],\n "countries" : [\n "CA"\n ],\n "fallbackChain" : [ \n {\n "id" : "{{fallbackChainID}}"\n },\n {\n "id" : "{{fallbackChainID-2}}"\n },\n {\n "id" : "{{fallbackChainID-3}}"\n }\n ]\n },\n {\n "deliveryMethods" : [\n "VOICE",\n "SMS"\n ],\n "countries" : [\n "SE"\n ],\n "fallbackChain" : [\n {\n "id" : "{{fallbackChainID-3}}"\n },\n {\n "id" : "{{fallbackChainID-2}}"\n },\n {\n "id" : "{{fallbackChainID}}"\n }\n ]\n },\n {\n "deliveryMethods" : [\n "VOICE",\n "SMS"\n ],\n "countries" : [\n "JP"\n ],\n "fallbackChain" : [\n {\n "id" : "{{fallbackChainID-2}}"\n },\n {\n "id" : "{{fallbackChainID-3}}"\n },\n {\n "id" : "{{fallbackChainID}}"\n }\n ]\n },\n {\n "deliveryMethods" : [\n "SMS"\n ],\n "fallbackChain" : [\n {\n "id" : "{{fallbackChainID-3}}"\n },\n {\n "id" : "{{fallbackChainID-2}}"\n },\n {\n "id" : "{{fallbackChainID}}"\n }\n ]\n }\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": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"Email"
],
"total": 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"CA",
"SE",
"JP"
]
},
"providerConfiguration": {
"conditions": [
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"CA"
],
"fallbackChain": [
{
"id": "{{fallbackChainID}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID-3}}"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"SE"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"JP"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID}}"
}
]
},
{
"deliveryMethods": [
"SMS"
],
"fallbackChain": [
{
"id": "{{fallbackChainID-3}}"
},
{
"id": "{{fallbackChainID-2}}"
},
{
"id": "{{fallbackChainID}}"
}
]
}
]
},
"default": false
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"name\": \"Environment-level notification policy with country limitation and custom provider preference\",\n \"quotas\": [\n {\n \"type\": \"ENVIRONMENT\",\n \"deliveryMethods\": [\n \"SMS\",\n \"Voice\"\n ],\n \"total\": 1000\n }, \n {\n \"type\" : \"ENVIRONMENT\",\n \"deliveryMethods\" : [\n \"Email\"\n ],\n \"total\" : 100\n }\n ],\n \"countryLimit\": {\n \"type\": \"ALLOWED\",\n \"deliveryMethods\": [\n \"SMS\",\n \"Voice\"\n ],\n \"countries\": [\n \"CA\",\n \"SE\",\n \"JP\"\n ]\n },\n \"providerConfiguration\" : {\n \"conditions\" : [ \n {\n \"deliveryMethods\" : [ \"VOICE\", \"SMS\" ],\n \"countries\" : [\n \"CA\"\n ],\n \"fallbackChain\" : [ \n {\n \"id\" : \"{{fallbackChainID}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-2}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-3}}\"\n }\n ]\n },\n {\n \"deliveryMethods\" : [\n \"VOICE\",\n \"SMS\"\n ],\n \"countries\" : [\n \"SE\"\n ],\n \"fallbackChain\" : [\n {\n \"id\" : \"{{fallbackChainID-3}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-2}}\"\n },\n {\n \"id\" : \"{{fallbackChainID}}\"\n }\n ]\n },\n {\n \"deliveryMethods\" : [\n \"VOICE\",\n \"SMS\"\n ],\n \"countries\" : [\n \"JP\"\n ],\n \"fallbackChain\" : [\n {\n \"id\" : \"{{fallbackChainID-2}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-3}}\"\n },\n {\n \"id\" : \"{{fallbackChainID}}\"\n }\n ]\n },\n {\n \"deliveryMethods\" : [\n \"SMS\"\n ],\n \"fallbackChain\" : [\n {\n \"id\" : \"{{fallbackChainID-3}}\"\n },\n {\n \"id\" : \"{{fallbackChainID-2}}\"\n },\n {\n \"id\" : \"{{fallbackChainID}}\"\n }\n ]\n }\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/5b9d2230-ce20-4407-a4dc-45b536e7f302"
},
"environment": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
}
},
"id": "5b9d2230-ce20-4407-a4dc-45b536e7f302",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"name": "Environment-level notification policy with country limitation and custom provider preference",
"quotas": [
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"SMS",
"Voice"
],
"total": 1000
},
{
"type": "ENVIRONMENT",
"deliveryMethods": [
"Email"
],
"total": 100
}
],
"countryLimit": {
"type": "ALLOWED",
"deliveryMethods": [
"SMS",
"Voice"
],
"countries": [
"SE",
"JP",
"CA"
]
},
"updatedAt": "2025-01-15T10:17:07.554Z",
"createdAt": "2025-01-15T10:17:07.572Z",
"providerConfiguration": {
"conditions": [
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"CA"
],
"fallbackChain": [
{
"id": "bd237e31-c920-406e-bb50-0f083b24f1e3"
},
{
"id": "8e17615d-0c23-4295-abfb-0e503bd4a22c"
},
{
"id": "fdbe47fe-24f9-41f6-91bc-9aff48e41c8e"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"SE"
],
"fallbackChain": [
{
"id": "8e17615d-0c23-4295-abfb-0e503bd4a22c"
},
{
"id": "fdbe47fe-24f9-41f6-91bc-9aff48e41c8e"
},
{
"id": "bd237e31-c920-406e-bb50-0f083b24f1e3"
}
]
},
{
"deliveryMethods": [
"VOICE",
"SMS"
],
"countries": [
"JP"
],
"fallbackChain": [
{
"id": "fdbe47fe-24f9-41f6-91bc-9aff48e41c8e"
},
{
"id": "8e17615d-0c23-4295-abfb-0e503bd4a22c"
},
{
"id": "bd237e31-c920-406e-bb50-0f083b24f1e3"
}
]
},
{
"deliveryMethods": [
"SMS"
],
"fallbackChain": [
{
"id": "8e17615d-0c23-4295-abfb-0e503bd4a22c"
},
{
"id": "fdbe47fe-24f9-41f6-91bc-9aff48e41c8e"
},
{
"id": "bd237e31-c920-406e-bb50-0f083b24f1e3"
}
]
}
]
},
"default": false
}