PingOne Platform APIs

Create Phone Delivery Settings (Syniverse channels)

 

POST {{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings

This example uses the phoneDeliverySettings endpoint to create a sender for sending notifications via Syniverse channels.

Note that the provider parameter must by set to CUSTOM_SYNIVERSE_CHANNELS.

Once the sender is created, send a PUT request to select the channel that should be used for sending the notifications.

Prerequisites

Refer to Notifications and Phone Delivery Settings for important overview information.

Request Model
Property Type Required?

authToken

String

Required

name

String

Required

provider

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
  "name": "Syniverse Channels notification sender",
  "authToken": "{{syniverseAuthToken}}",
  "provider": "CUSTOM_SYNIVERSE_CHANNELS"
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff '{{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
  "name": "Syniverse Channels notification sender",
  "authToken": "{{syniverseAuthToken}}",
  "provider": "CUSTOM_SYNIVERSE_CHANNELS"
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings")
{
  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"": ""Syniverse Channels notification sender""," + "\n" +
@"  ""authToken"": ""{{syniverseAuthToken}}""," + "\n" +
@"  ""provider"": ""CUSTOM_SYNIVERSE_CHANNELS""" + "\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}}/notificationsSettings/phoneDeliverySettings"
  method := "POST"

  payload := strings.NewReader(`{
  "name": "Syniverse Channels notification sender",
  "authToken": "{{syniverseAuthToken}}",
  "provider": "CUSTOM_SYNIVERSE_CHANNELS"
}`)

  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}}/notificationsSettings/phoneDeliverySettings HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
  "name": "Syniverse Channels notification sender",
  "authToken": "{{syniverseAuthToken}}",
  "provider": "CUSTOM_SYNIVERSE_CHANNELS"
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n  \"name\": \"Syniverse Channels notification sender\",\n  \"authToken\": \"{{syniverseAuthToken}}\",\n  \"provider\": \"CUSTOM_SYNIVERSE_CHANNELS\"\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings")
  .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}}/notificationsSettings/phoneDeliverySettings",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "Syniverse Channels notification sender",
    "authToken": "{{syniverseAuthToken}}",
    "provider": "CUSTOM_SYNIVERSE_CHANNELS"
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "Syniverse Channels notification sender",
    "authToken": "{{syniverseAuthToken}}",
    "provider": "CUSTOM_SYNIVERSE_CHANNELS"
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
import requests
import json

url = "{{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings"

payload = json.dumps({
  "name": "Syniverse Channels notification sender",
  "authToken": "{{syniverseAuthToken}}",
  "provider": "CUSTOM_SYNIVERSE_CHANNELS"
})
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}}/notificationsSettings/phoneDeliverySettings');
$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": "Syniverse Channels notification sender",\n  "authToken": "{{syniverseAuthToken}}",\n  "provider": "CUSTOM_SYNIVERSE_CHANNELS"\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}}/notificationsSettings/phoneDeliverySettings")

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": "Syniverse Channels notification sender",
  "authToken": "{{syniverseAuthToken}}",
  "provider": "CUSTOM_SYNIVERSE_CHANNELS"
})

response = http.request(request)
puts response.read_body
let parameters = "{\n  \"name\": \"Syniverse Channels notification sender\",\n  \"authToken\": \"{{syniverseAuthToken}}\",\n  \"provider\": \"CUSTOM_SYNIVERSE_CHANNELS\"\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/notificationsSettings/phoneDeliverySettings")!,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/notificationsSettings/phoneDeliverySettings/0d1f49b8-aab3-4181-b4e3-26a9290f314f"
        },
        "environment": {
            "href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        }
    },
    "id": "0d1f49b8-aab3-4181-b4e3-26a9290f314f",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "Syniverse Channels notification sender",
    "createdAt": "2026-03-10T08:32:37.546Z",
    "updatedAt": "2026-03-10T08:32:37.546Z",
    "provider": "CUSTOM_SYNIVERSE_CHANNELS",
    "channels": [
        {
            "selected": false,
            "available": true,
            "createdAt": "2026-03-10T08:32:38.824Z",
            "name": "Voice Channel",
            "priority": "NORMAL",
            "id": "GXq1CJDblpOpwKFKWI3kG1",
            "capabilities": [
                "VOICE"
            ]
        },
        {
            "selected": false,
            "available": true,
            "createdAt": "2026-03-10T08:32:38.975Z",
            "name": "SMS Channel",
            "priority": "NORMAL",
            "id": "cuOvbtxLJ9Wtv118vmXRi3",
            "capabilities": [
                "SMS"
            ]
        },
        {
            "selected": false,
            "available": true,
            "createdAt": "2026-03-10T08:32:39.374Z",
            "name": "Test Channel",
            "priority": "NORMAL",
            "id": "X9S8jjBwgdK4yy1E9pMWi2"
        }
    ],
    "deliveryConfigurationsExist": true,
    "smsTopicSubscription": {
        "subscribed": true,
        "startDateStr": "2026-03-10T08:30:49Z"
    },
    "voiceTopicSubscription": {
        "subscribed": true,
        "startDateStr": "2026-03-10T08:31:04Z"
    }
}