StreamAware On-Air REST API
by IMAX
Livemonitor API

Introduction

Welcome to the reference for the SSIMWAVE Livemonitor REST API!

Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs. We currently provide our documentation in the form of an OpenAPI 3.0 document.

If you’re interested in integrating your app or software platform with SSIMWAVE, you’ll need to contact us at sales@ssimwave.com

The base address of the API is https://${LIVEMONITOR HOST}/api/v1. The API provides a set of endpoints, each with its own unique path. To access data through the API, an application must obtain an access token and permission to access the data.

Note: By using this API, you accept the SSIMWAVE Terms of Service.

Authentication

The Livemonitor authentication server supports the Resource Owner Credential Grant flow of the OAuth2 specification to exchange a user’s SSIMWAVE username and password for an access token.

A POST request is made to /auth/token with grant_type set to password, and the Authorization header set with the client_id and client_secret.

curl GET "http://${Livemonitor host}/" -H "Authorization: Bearer ${token}"

This token must be provided in requests made to the Livemonitor API for authorization.The POST /auth/token endpoint accepts requests containing form-encoded (default) or JSON payloads.

Request Example(form-encoded)

curl -k -X POST "https://${AUTH_HOST}/auth/token" -d grant_type=password -d username=test -d password=test

Request Example (JSON)

curl -k -X POST "https://${AUTH_HOST}/auth/token" -H "Content-Type: application/json" -d '{"grant_type":"password","username":"test","password":"test"}'

Response Example

{  
    "token_type": "Bearer",
    "expires_in": 3600,
    "access_token": "eyJhbGciOiJIUJ9.eyJ1c2VyIjp7Im9pZ...G1pbiIsImRpcL2F1dGgifQ.kJH_sZTgdx9YeK43ms9BCB7870",
    "refresh_token":"eyJwcm90ZWN0ZWQiOipSmthWElpTENKc...STQycUJtMlFIU3ZUbHBKc1Z6WmcifQ=="
}

NOTE: You should only make this call once and store the returned token securely. You should not make this call high-frequency interval.

Operations
Probes
GET /probes
POST /probes
POST /probes/delete
POST /probes/start
POST /probes/stop
GET /probes/{probeId}
PATCH /probes/{probeId}
DELETE /probes/{probeId}
POST /probes/{probeId}/start
POST /probes/{probeId}/stop
List Probes
GET /probes

Request parameters

id
array of probeId optional

Unique identifier(s) of the Probes

service
string optional

Service to which the Probes belong

monitoringGroup
array of string optional

Monitoring Group(s) to which the Probes belong

topologyLevels
array of string optional

Topology Levels of the Probes

adminStatus
probeStatus optional

Admin status of the Probes

operStatus
probeOperStatus optional

Operational status of the Probes

applicationNode
array of string optional

Application Node

Responses

200 200

Probes retrieved successfully

Body
application/json
Object
data
Array of Probe
400 400

Bad Request

401 401

Unauthorized

403 403

Forbidden

Create Probe
POST /probes

Request body

application/json
Array of Probe
Min items: 1

Responses

201 201

Probe successfully created

Body
application/json
Object
data
Array of Probe
400 400

Bad Request

401 401

Unauthorized

403 403

Forbidden

Delete Probes
POST /probes/delete

Request body

application/json

Responses

204 204

Probes deleted successfully

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Start Probes
POST /probes/start

Request body

application/json

Responses

204 204

Probes started successfully

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Stop Probes
POST /probes/stop

Request body

application/json

Responses

204 204

Probes stopped successfully

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Retrieve Probe
GET /probes/{probeId}

Path variables

probeId
probeId required

Responses

200 200

OK

Body
application/json
Object
data
400 400

Bad Request

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Update Probe
PATCH /probes/{probeId}

Path variables

probeId
probeId required

Request body

application/json
Object
topologyLevels
alertTemplate
string

Name of the Alert Template that should be used

alignment
string

Whether temporal alignment should be attempted for Full-reference streams

Enumeration:
disabled
enabled

Responses

204 204

Probe updated successfully

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Delete Probe
DELETE /probes/{probeId}

Path variables

probeId
probeId required

Responses

204 204

Probe deleted successfully

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Start Probe
POST /probes/{probeId}/start

Path variables

probeId
probeId required

Responses

204 204

Probe started successfully

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Stop Probe
POST /probes/{probeId}/stop

Path variables

probeId
probeId required

Responses

204 204

Probe stopped successfully

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Topology
GET /topology
GET /topology/{topologyLevel}
Get Topology Levels
GET /topology

Request parameters

name
string optional

Topology name to filter on. Partial matches are supported.

Responses

200 200

Topology Levels retrieved successfully

Body
application/json
Object
data
Array of topology
400 400

Bad Request

401 401

Unauthorized

403 403

Forbidden

Retrieve Topology
GET /topology/{topologyLevel}

Path variables

topologyLevel
topologyLevel required

Request parameters

name
string optional

Topology name to filter on. Partial matches are supported.

Responses

200 200

OK

Body
application/json
Object
data
400 400

Bad Request

401 401

Unauthorized

403 403

Forbidden

404 404

Not Found

Type Definitions
Probe
Object
service
string required

Service to which this Probe belongs

Min length: 1
Max length: 53
Pattern: ^[a-zA-Z0-9()!._ -]+$
topologyLevels
topologyLevels required
alertTemplate
string

Name of the Alert Template that should be used

alignment
string

Whether temporal alignment should be attempted for Full-reference streams

Enumeration:
disabled
enabled
monitoringGroup
string required

Name of the Monitoring Group to which this Probe belongs

Min length: 1
Max length: 55
Pattern: ^[a-zA-Z0-9._ -]+$
adminStatus
operStatus
applicationNode
string

Application Node on which this Probe should be run. Required for SMPTE 2022, HDMI, and SDI streams.

streams
Array of Stream

Streams that should be analyzed by this Probe. The file stream type is not included by default and requires extra licensing.

Min items: 1
Unique items: YES
serviceType
string

Probe resolution format

createdAt
string date-time

Date-time when this Probe was created

lastModifiedAt
string date-time

Date-time when this Probe was last modified (including change of admin status)

error
string

Description of the current runtime error impacting this probe, if any

baseStream

Configuration and metadata properties common to all streams.

Object
name
string

Name for this Stream

Min length: 1
Max length: 55
Pattern: ^[a-zA-Z0-9._ -]+$
type
string required

Type of Stream

Enumeration:
multicast
smpte-2022
smpte-2110
hls
mpeg-dash
sdi
hdmi
file
zixi
srt
monitoringPoint
string required

Name of the point in the delivery chain to be monitored

Min length: 1
Max length: 55
Example:
SRC
monitoringPointDescription
string

Description of the point in the delivery chain to be monitored

Example:
SRC
device
string

Name of the device used to calculate SSIMPLUS Viewer Score (for full reference streams)

Enumeration:
tv
tablet
smartphone
computermonitor
laptop
ssimpluscore
svsThreshold
integer

SSIMPLUS Viewer Score threshold for this stream

Min: 0
Max: 100
fileStream
All of
Object
type
string required

Type of Stream

Enumeration:
file
fileUrl
string uri required

URL of the Transport Stream file

Pattern: ^[fF][iI][lL][eE]:
Example:
file:/var/streams/test.ts
Types: Stream
hdmiStream
All of
Object
type
string required

Type of Stream

Enumeration:
hdmi
hardwareType
unknown required

Type of HDMI Capture hardware installed on the Application Node

portNumber
integer required

Index of the HDMI capture port on the Application Node

Min: 0
Max: 7
hdmiEdidResolution
string

The maximum supported resolution for the HDMI capture card port

Enumeration:
Default
UHD
FHD
HD
SD
Types: Stream
hlsStream
All of
Object
type
string required

Type of Stream

Enumeration:
hls
manifestUrl
string uri required

HLS Manifest URL

Example:
http://hls.example.com/manifest.m3u8
bandwidth
integer required

Bandwidth of the variant to be monitored (in bps)

variantIndex
integer required

Index (within the manifest) of the variant to be monitored

resolution
string

Resolution, as defined in the manifest

Types: Stream
mpegDashStream
All of
Object
type
string required

Type of Stream

Enumeration:
mpeg-dash
manifestUrl
string uri required

MPEG-DASH Manifest URL

Example:
http://dash.example.com/manifest.mpd
videoId
string required

Video Representation ID, as defined in the manifest

audioId
string

Audio Representation ID, as defined in the manifest

resolution
string

Resolution, as defined in the manifest

Types: Stream
multicastStream
All of
Object
type
string required

Type of Stream

Enumeration:
multicast
groupIp
string ipv4 required

UDP Multicast Group Address

Example:
235.0.0.1
sourceIp
string ipv4

Source Address

Example:
192.168.100.100
port
integer required

UDP Destination Port

Min: 1
Max: 65,535
pid
integer

Program PID

Min: 2
Max: 8,190
programNumber
integer

Extracted Stream Program Number. To have this field populated, it needs to be enabled in the configuration file.

Min: 2
Max: 8,190
Types: Stream
probeId
One of
string
Pattern: ^[0-9]+$
integer
probeIds

List of unique probe identifiers.

Array of probeId
Min items: 1
probeOperStatus
string
Enumeration:
stopped
running
error
Methods: List Probes
Types: Probe
probeStatus
string
Enumeration:
stopped
running
Methods: List Probes
Types: Probe
sdiStream
All of
Object
type
string required

Type of Stream

Enumeration:
sdi
slotNumber
integer required

Index of SDI capture card on the Application Node

Min: 0
Max: 99
hardwareType
string required

Type of SDI Capture hardware installed on the Application Node

Enumeration:
decklink
audioChannels
integer

Number of audio channels. Required if hardwareType is decklink

Enumeration:
2
8
Types: Stream
smpte2022Stream
All of
Object
type
string required

Type of Stream

Enumeration:
smpte-2022
groupIp
string ipv4 required

UDP Multicast Group Address

Example:
235.0.0.1
sourceIp
string ipv4

Source Address

Example:
192.168.100.100
port
integer required

UDP Destination Port

Min: 1
Max: 65,535
Types: Stream
smpte2110Stream
All of
Object
type
string required

Type of Stream

Enumeration:
smpte-2110
sdpProviderType
string required

SDP Provider Type

Enumeration:
IS-05
URL
sdpUrl
string required

URL to SDP File or Connection API Sender endpoint

Pattern: (^(https?:\/\/|\/)(?:www\.|(?!www))?[^\s])
Example:
https://10.221.10.4/x-nmos/connection/v1.1/single/senders/1e1c78ae-1dd2-11b2-8044-cc988b8696a2
video
One of

Video Stream Selector

Object
sdpMediaId
string required

Media ID attribute, as defined in the SDP

Example:
primary
rtpSynchronizationSourceId
integer
Object
sdpIndex
integer required

Index of the media definition in the SDP

rtpSynchronizationSourceId
integer
Types: Stream
srtStream
All of
Object
type
string required

Type of Stream

Enumeration:
srt
host
string hostname

The source hostname or IP address of the stream

port
integer required

The destination port the analyzer will listen on.

Min: 0
Max: 65,535
mode
string required

The connection mode

Enumeration:
caller
listener
rendezvous
bandwidthOverhead
number

The bandwidth overhead is a percentage based in part on the quality of the network over which the analyzer is running on.

Min: 0
Max: 100
latency
integer

Receiver delay (in milliseconds) to absorb bursts of missed packet retransmissions

Min: 20
Max: 8,000
localPort
integer

The locally bound port for SRT streams configured in Rendezvous mode.

Min: 1
Max: 65,535
Types: Stream
topology
Object
id
integer required
Min: 1
name
string required
host
string hostname
Example:
127.0.0.1
href
string uri required
Example:
https://127.0.0.1/api/v1/toplogyLevels/region1/market1
topologyLevels
topologyLevels required
children
topology required
metrics
Object required
totalServices
integer
Min: 0
Max: 999,999
criticalServices
integer
Min: 0
Max: 999,999
warningServices
integer
Min: 0
Max: 999,999
impactedServicesPercent
integer
Min: 0
Max: 999,999
topologyLevel
One of
string uri-reference
integer
topologyLevels

Point in the Site Topology where this Probe exists, represented using hierarchical labels

Array
Min items: 1
string
Min length: 1
Max length: 55
Pattern: ^[a-zA-Z0-9._ -]+$
Methods: Update Probe
Types: Probe topology
zixiStream
All of
Object
type
string required

Type of Stream

Enumeration:
zixi
host
string hostname required

The source hostname or IP address of the stream

port
integer required

The connection port of the host

Min: 0
Max: 65,535
streamId
string required

The input stream name as it is defined in the Zixi Broadcaster (source).

latency
integer

The latency for the connected input stream

Types: Stream