Notifications API (Reference) v1.0.0
Notifications API reference.
You are viewing REST API documentation. This documentation is auto-generated from a swagger specification which itself is generated from annotations in the source code of the project. It is possible that this documentation includes bugs and that code samples are incomplete or wrong.
Authentication
- API Key (jwtBearerToken)
- Parameter Name: Authorization, in: header. Authentication and authorization using a valid JWT token
Notifications (Application-wide)
List Notifications
GET /api/notifications/?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f HTTP/1.1
Accept: application/json
Base paths: /api/notifications
Retrieves notification statuses filtered by application, type, channel and status.
Required authorization: ROLE_SUPERVISOR or ROLE_AGENT
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| applicationId | query | string | true | Unique application identifier |
| pageSize | query | integer(int64) | false | Page size - number of items per page |
| pageNumber | query | integer(int64) | false | Page number - 1-based page index |
| sortOrder | query | string | false | Sort order - ascending or descending |
| sortField | query | string | false | Field to use for sorting |
| type | query | array[string] | false | Types filters the notification types. |
| channel | query | array[string] | false | Channels filters the notification channels. |
| status | query | array[string] | false | Statuses filters the notification statuses. |
| from | query | string(date-time) | false | From defines the start of the search window. |
| to | query | string(date-time) | false | To defines the end of the search window. |
Detailed descriptions
type: Types filters the notification types. Possible values: CREATE, UPDATE, RESCHEDULE, REASSIGN, ROOM, REMINDER, CANCELLED, FOLLOW_UP, IN_PROGRESS, COMPLETED, FAILED, NO_SHOW, PARTICIPANT_ADDED, PARTICIPANT_REMOVED, PARTICIPANT_UPDATED, INTERACTION_UPDATED. Accepts repeated query params (recommended) or comma-separated values.
channel: Channels filters the notification channels. Possible values: EMAIL, SMS, WEBHOOKS. Values are case-insensitive. Accepts repeated query params (recommended) or comma-separated values.
status: Statuses filters the notification statuses. Possible values: DELIVERED, FAILED, INITIALIZED, PENDING, CANCELLED. Values are case-insensitive.
Enumerated Values
| Parameter | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | ListApplicationNotificationsResponsePaged |
| 401 | Unauthorized | Unauthorized. | None |
| 403 | Forbidden | Forbidden. | None |
| 500 | Internal Server Error | Internal Server Error. | None |
Examples
200 Response
{
"content": [
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": true,
"channel": "EMAIL",
"createdAt": "2024-06-01T09:00:00Z",
"errorMessage": "rejected by provider",
"id": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"message": "Queued for delivery",
"nextPollAt": "2024-06-01T09:01:30Z",
"nextRetryAt": "2024-06-01T09:02:00Z",
"offset": "PT30M",
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"type": "REMINDER",
"updatedAt": "2024-06-01T09:01:00Z"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/notifications/?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/notifications/", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/notifications/',
params={
'applicationId': 'bf8215e5-a39e-490a-a0e2-07df6a3d8c1f'},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/notifications/',
params: {
'applicationId' => 'string'}, headers: headers
p JSON.parse(result)
Get Notification Poll Properties
GET /api/notifications/applications/{id}/poll HTTP/1.1
Accept: application/json
Base paths: /api/notifications
Retrieves the polling configuration used for notification delivery.
Required authorization: ROLE_ADMIN
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Unique application identifier |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | NotificationPollProperties |
| 401 | Unauthorized | Unauthorized. | None |
| 403 | Forbidden | Forbidden. | None |
| 500 | Internal Server Error | Internal Server Error. | None |
Examples
200 Response
{
"properties": {
"property1": {
"source": "string",
"value": "string"
},
"property2": {
"source": "string",
"value": "string"
}
}
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/notifications/applications/{id}/poll \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/notifications/applications/{id}/poll", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/applications/{id}/poll', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/applications/{id}/poll");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/notifications/applications/{id}/poll',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/notifications/applications/{id}/poll',
params: {}, headers: headers
p JSON.parse(result)
List Notification Events
GET /api/notifications/events?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f HTTP/1.1
Accept: application/json
Base paths: /api/notifications
Retrieves notification events filtered by application, type, channel and status.
Required authorization: ROLE_SUPERVISOR or ROLE_AGENT
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| applicationId | query | string | true | Unique application identifier |
| pageSize | query | integer(int64) | false | Page size - number of items per page |
| pageNumber | query | integer(int64) | false | Page number - 1-based page index |
| sortOrder | query | string | false | Sort order - ascending or descending |
| sortField | query | string | false | Field to use for sorting |
| type | query | array[string] | false | Types filters the notification types. |
| channel | query | array[string] | false | Channels filters the notification channels. |
| status | query | array[string] | false | Statuses filters the notification statuses. |
| from | query | string(date-time) | false | From defines the start of the search window. |
| to | query | string(date-time) | false | To defines the end of the search window. |
Detailed descriptions
type: Types filters the notification types. Possible values: CREATE, UPDATE, RESCHEDULE, REASSIGN, ROOM, REMINDER, CANCELLED, FOLLOW_UP, IN_PROGRESS, COMPLETED, FAILED, NO_SHOW, PARTICIPANT_ADDED, PARTICIPANT_REMOVED, PARTICIPANT_UPDATED, INTERACTION_UPDATED. Accepts repeated query params (recommended) or comma-separated values.
channel: Channels filters the notification channels. Possible values: EMAIL, SMS, WEBHOOKS. Values are case-insensitive. Accepts repeated query params (recommended) or comma-separated values.
status: Statuses filters the notification statuses. Possible values: DELIVERED, FAILED, INITIALIZED, PENDING, CANCELLED. Values are case-insensitive.
Enumerated Values
| Parameter | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | ListApplicationNotificationEventsResponsePaged |
| 401 | Unauthorized | Unauthorized. | None |
| 403 | Forbidden | Forbidden. | None |
| 500 | Internal Server Error | Internal Server Error. | None |
Examples
200 Response
{
"content": [
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"channel": "EMAIL",
"conversationId": "conv-3d2f4a",
"errorMessage": "rejected by provider",
"id": "7c3b1ad6-2e55-4c8f-9f2d-8ca9e78f1a0e",
"message": "Queued for delivery",
"messageId": "msg-07f1e",
"nextPollAt": "2024-06-01T09:01:30Z",
"offset": "PT30M",
"pollAttempts": 1,
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"statusId": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"timestamp": "2024-06-01T09:00:30Z",
"type": "REMINDER"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/notifications/events?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/notifications/events", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/events?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/events?applicationId=bf8215e5-a39e-490a-a0e2-07df6a3d8c1f");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/notifications/events',
params={
'applicationId': 'bf8215e5-a39e-490a-a0e2-07df6a3d8c1f'},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/notifications/events',
params: {
'applicationId' => 'string'}, headers: headers
p JSON.parse(result)
Get Webhook Notification Types
GET /api/notifications/webhooks/types HTTP/1.1
Accept: application/json
Base paths: /api/notifications
Retrieves the supported webhook notification types.
Required authorization: ROLE_SUPERVISOR or ROLE_AGENT
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | WebhookNotificationTypesResponse carries the list of supported webhook notification types. | WebhookNotificationTypes |
| 401 | Unauthorized | Unauthorized. Authorization information is missing or invalid. | None |
| 403 | Forbidden | Forbidden. Access to the requested resource or operation is forbidden. | None |
| 500 | Internal Server Error | Internal Server Error. An unexpected error occurred, preventing the successful processing of the request. | None |
Examples
200 Response
{
"types": [
"string"
]
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X GET /api/notifications/webhooks/types \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("GET", "/api/notifications/webhooks/types", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/webhooks/types', {
method: 'GET',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/webhooks/types");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.get(
'/api/notifications/webhooks/types',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.get '/api/notifications/webhooks/types',
params: {}, headers: headers
p JSON.parse(result)
Retry Notification
PUT /api/notifications/{id}/retry HTTP/1.1
Accept: application/json
Base paths: /api/notifications
Retries a failed or pending notification.
Required authorization: ROLE_SUPERVISOR or ROLE_AGENT
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Unique notification status identifier |
Responses
Overview
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | NotificationStatusResponse documents the payload returned when a notification status is updated. | NotificationStatus |
| 400 | Bad Request | Bad request. | None |
| 401 | Unauthorized | Unauthorized. | None |
| 403 | Forbidden | Forbidden. | None |
| 404 | Not Found | StatusNotFound. | None |
| 500 | Internal Server Error | Internal Server Error. | None |
Examples
200 Response
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": true,
"channel": "EMAIL",
"createdAt": "2024-06-01T09:00:00Z",
"errorMessage": "rejected by provider",
"id": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"message": "Queued for delivery",
"nextPollAt": "2024-06-01T09:01:30Z",
"nextRetryAt": "2024-06-01T09:02:00Z",
"offset": "PT30M",
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"type": "REMINDER",
"updatedAt": "2024-06-01T09:01:00Z"
}
To perform this operation, you must be authenticated by means of one of the following methods: jwtBearerToken
Code samples
- Shell
- Go
- Node
- Java
- Python
- Ruby
curl -X PUT /api/notifications/{id}/retry \
-H 'Accept: application/json' \ -H 'Authorization: API_KEY'
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"API_KEY"},
}
var body []byte
// body = ...
req, err := http.NewRequest("PUT", "/api/notifications/{id}/retry", bytes.NewBuffer(body))
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept': 'application/json', 'Authorization': 'API_KEY'
}
fetch('/api/notifications/{id}/retry', {
method: 'PUT',
headers
})
.then(r => r.json())
.then((body) => {
console.log(body)
})
// This sample needs improvement.
URL obj = new URL("/api/notifications/{id}/retry");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'API_KEY'
}
r = requests.put(
'/api/notifications/{id}/retry',
params={},
headers = headers)
print r.json()
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'API_KEY'
}
result = RestClient.put '/api/notifications/{id}/retry',
params: {}, headers: headers
p JSON.parse(result)
Schemas
ListApplicationNotificationEventsResponsePaged
{
"content": [
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"channel": "EMAIL",
"conversationId": "conv-3d2f4a",
"errorMessage": "rejected by provider",
"id": "7c3b1ad6-2e55-4c8f-9f2d-8ca9e78f1a0e",
"message": "Queued for delivery",
"messageId": "msg-07f1e",
"nextPollAt": "2024-06-01T09:01:30Z",
"offset": "PT30M",
"pollAttempts": 1,
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"statusId": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"timestamp": "2024-06-01T09:00:30Z",
"type": "REMINDER"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| content | [NotificationEvent] | false | none | none |
| pageCount | integer(int64) | false | none | Number of pages for the provided page size |
| pageNumber | integer(int64) | false | none | Page number - 1-based page index |
| pageSize | integer(int64) | false | none | Page size - number of items per page |
| sortField | string | false | none | Field to use for sorting |
| sortOrder | string | false | none | Sort order - ascending or descending |
| total | integer(int64) | false | none | Total number of entities in the result set |
Enumerated Values
| Property | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
ListApplicationNotificationsResponsePaged
{
"content": [
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": true,
"channel": "EMAIL",
"createdAt": "2024-06-01T09:00:00Z",
"errorMessage": "rejected by provider",
"id": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"message": "Queued for delivery",
"nextPollAt": "2024-06-01T09:01:30Z",
"nextRetryAt": "2024-06-01T09:02:00Z",
"offset": "PT30M",
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"type": "REMINDER",
"updatedAt": "2024-06-01T09:01:00Z"
}
],
"pageCount": 4,
"pageNumber": 1,
"pageSize": 25,
"sortField": "name",
"sortOrder": "asc",
"total": 100
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| content | [NotificationStatus] | false | none | none |
| pageCount | integer(int64) | false | none | Number of pages for the provided page size |
| pageNumber | integer(int64) | false | none | Page number - 1-based page index |
| pageSize | integer(int64) | false | none | Page size - number of items per page |
| sortField | string | false | none | Field to use for sorting |
| sortOrder | string | false | none | Sort order - ascending or descending |
| total | integer(int64) | false | none | Total number of entities in the result set |
Enumerated Values
| Property | Value |
|---|---|
| sortOrder | asc |
| sortOrder | desc |
NotificationEvent
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"channel": "EMAIL",
"conversationId": "conv-3d2f4a",
"errorMessage": "rejected by provider",
"id": "7c3b1ad6-2e55-4c8f-9f2d-8ca9e78f1a0e",
"message": "Queued for delivery",
"messageId": "msg-07f1e",
"nextPollAt": "2024-06-01T09:01:30Z",
"offset": "PT30M",
"pollAttempts": 1,
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"statusId": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"timestamp": "2024-06-01T09:00:30Z",
"type": "REMINDER"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| appointmentId | string | false | none | Associated appointment ID |
| channel | string | false | none | Email, SMS, Webhook |
| conversationId | string | false | none | Provider conversation ID |
| errorMessage | string | false | none | Error details on failure |
| id | string | false | none | Unique event ID |
| message | string | false | none | Human readable status reason |
| messageId | string | false | none | Provider message ID |
| nextPollAt | string(date-time) | false | none | Next provider poll time (while pending/submitted) |
| offset | string | false | none | ISO8601 duration (e.g. PT30M) |
| pollAttempts | integer(int64) | false | none | Provider polls made |
| providerStatus | string | false | none | Raw provider state |
| recipient | NotificationRecipient | false | none | none |
| retryCount | integer(int64) | false | none | Number of delivery attempts |
| scheduledFor | string(date-time) | false | none | Timestamp when delivery is due (only for scheduled types). |
| status | NotificationState | false | none | none |
| statusId | string | false | none | Linked notification status ID |
| timestamp | string(date-time) | false | none | Event time |
| type | string | false | none | Reminder, Follow-up, Create, Reschedule |
NotificationPollProperties
{
"properties": {
"property1": {
"source": "string",
"value": "string"
},
"property2": {
"source": "string",
"value": "string"
}
}
}
NotificationPollProperties exposes notification polling configuration for a specific application. When the application does not override a property the service returns the system default and marks the source accordingly.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| properties | object | false | none | none |
| » additionalProperties | PollProperty | false | none | PollProperty describes a single notification polling setting along with its origin source. |
NotificationRecipient
{
"displayName": "string",
"reasonCode": "string",
"type": "string"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| displayName | string | false | none | DisplayName is a human-friendly label of the recipient; when not available, mapping sets "-". |
| reasonCode | RecipientReasonCode | false | none | none |
| type | RecipientType | false | none | none |
NotificationState
"string"
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | none |
NotificationStatus
{
"appointmentId": "2fd76778-6392-4faa-a84e-9e02d059af21",
"canRetry": true,
"channel": "EMAIL",
"createdAt": "2024-06-01T09:00:00Z",
"errorMessage": "rejected by provider",
"id": "d3f9e4a2-9c3b-4f1a-bc0a-0ef8c4a9f9a1",
"message": "Queued for delivery",
"nextPollAt": "2024-06-01T09:01:30Z",
"nextRetryAt": "2024-06-01T09:02:00Z",
"offset": "PT30M",
"providerStatus": "QUEUED",
"recipient": {
"displayName": "string",
"reasonCode": "string",
"type": "string"
},
"retryCount": 1,
"scheduledFor": "2024-06-01T08:30:00Z",
"status": "string",
"type": "REMINDER",
"updatedAt": "2024-06-01T09:01:00Z"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| appointmentId | string | false | none | Associated appointment ID |
| canRetry | boolean | false | none | Whether manual retry is allowed |
| channel | string | false | none | Email, SMS, Webhook |
| createdAt | string(date-time) | false | none | Creation timestamp |
| errorMessage | string | false | none | Error details on failure |
| id | string | false | none | Unique notification status ID |
| message | string | false | none | Human readable status reason |
| nextPollAt | string(date-time) | false | none | Next provider poll time (while pending/submitted) |
| nextRetryAt | string(date-time) | false | none | Time of the next automatic retry (when applicable) |
| offset | string | false | none | ISO8601 duration (e.g. PT30M) |
| providerStatus | string | false | none | Raw provider-native state (last-known) |
| recipient | NotificationRecipient | false | none | none |
| retryCount | integer(int64) | false | none | Number of delivery attempts |
| scheduledFor | string(date-time) | false | none | Timestamp when delivery is due (only for scheduled types). |
| status | NotificationState | false | none | none |
| type | string | false | none | Reminder, Follow-up, Create, Reschedule, etc. |
| updatedAt | string(date-time) | false | none | Timestamp of last attempt |
PollProperty
{
"source": "string",
"value": "string"
}
PollProperty describes a single notification polling setting along with its origin source.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| source | string | false | none | Source indicates where the value originates from. |
| value | string | false | none | Value holds the configured value for the property. |
RecipientReasonCode
"string"
Example values: PDM_EXPIRED, NOT_FOUND, SYSTEM_ERROR.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Example values: PDM_EXPIRED, NOT_FOUND, SYSTEM_ERROR. | string | false | none | none |
RecipientType
"string"
Allowed values: CUSTOMER, AGENT, SYSTEM.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Allowed values: CUSTOMER, AGENT, SYSTEM. | string | false | none | none |
WebhookNotificationTypes
{
"types": [
"string"
]
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| types | [string] | false | none | Supported webhook notification types. |