APIs: Common Keys
←APIs · Index↑ · APIs - Client Side Implementation Notes→
A number of common keys are used within NMOS APIs. Their definitions, semantics and permitted values are described below.
Version
Core resources such as Sources, Flows, Nodes etc. include a version
attribute. As properties of a given Flow or similar will change over its lifetime, the version identifies the instant at which this change took place. For example, if a vision mix transition occurred which resulted in a change to the parents
which make up a particular Flow, the version
is modified to reflect the wall clock instant at which this change occurred.
version
is a nanosecond TAI timestamp represented as a string of the format: <seconds>:<nanoseconds
. Note the :
as opposed to a .
, indicating that the value 1439299836:10
is interpreted as 1439299836 seconds and 10 nanoseconds.
Combining the version with the resource’s ID attribute creates a hash which can be used to uniquely identify a particular variant of a Source, Flow or similar.
Label
Freeform human readable string to be used within user interfaces.
Description
Freeform human readable string to be used within user interfaces.
Format
A URN describing the data format of a video, audio or data flow.
Permitted Value | Valid From API Version |
---|---|
urn:x-nmos:format:video |
v1.0 |
urn:x-nmos:format:audio |
v1.0 |
urn:x-nmos:format:data |
v1.0 |
urn:x-nmos:format:mux |
v1.1 |
See Use of URNs below for additional requirements regarding their handling.
Transport
A URN describing the protocol used to send data (video, audio, data etc.) over a network.
Note: From v1.3 onwards, permitted transport types are not versioned and are instead defined via the NMOS Parameter Registers. Prior to v1.3, the following table applies.
Permitted Value | Valid From API Version |
---|---|
urn:x-nmos:transport:rtp |
v1.0 |
urn:x-nmos:transport:rtp.mcast |
v1.0 |
urn:x-nmos:transport:rtp.ucast |
v1.0 |
urn:x-nmos:transport:dash |
v1.0 |
For example, an RTP Transmitter sending to a multicast group uses the transport urn:x-nmos:transport:rtp.mcast
, but a receiver supporting both unicast and multicast presents the transport urn:x-nmos:transport:rtp
to indicate its less restrictive state.
See Use of URNs below for additional requirements regarding their handling.
Tags
A set of keys and values providing a means to filter resources based on particular categorisations. Each tag has a single key, but MAY have multiple values. Each tags SHOULD be interpreted using the comparison of a single key value pair, with the comparison being case-insensitive following the Unicode Simple Case Folding specification.
Example: Tags Format
{
"tags": {
"location": ["Salford", "Media City"],
"studio": ["HQ1"],
"recording": ["The Voice UK"]
}
}
Type (Devices)
A URN describing the role which a Device has within the production environment (such as camera, mixer, tally light etc.).
Note: From v1.3 onwards, permitted device types are not versioned and are instead defined via the NMOS Parameter Registers. Prior to v1.3, the following table applies.
Permitted Value | Valid From API Version |
---|---|
urn:x-nmos:device:generic |
v1.0 |
urn:x-nmos:device:pipeline |
v1.0 |
See Use of URNs below for additional requirements regarding their handling.
Use of URNs
All Uniform Resource Names (URNs) specified within the scope of the NMOS specifications MUST use the namespace urn:x-nmos:
. Manufacturers MAY use their own namespaces to indicate values of URN which are not currently defined within the NMOS namespace.
NMOS specification URNs use the following construction:
<URN-base>[.<subclassification>][/<version>]
where:
- the URN base is a sequence of one or more names delimited by
:
characters, beginning with the namespaceurn:x-nmos:
. - the optional subclassification is the portion of the URN which follows the first occurrence of a
.
prior to any/
character. By convention, URNs which beginurn:x-nmos:
will never include a further:
after the first occurrence of a.
. - the optional version is the portion of the URN which follows the first occurrence of a
/
, up to and including the remainder of the URN. By convention, URNs which beginurn:x-nmos:
will format the version asv<MAJOR>.<MINOR>
and SHOULD be handled as specified in APIs.
A subclassification is more constrained than its URN base. For example, the URN base urn:x-nmos:transport:rtp
above has two subclassifications of ucast
and mcast
.
Further subclassifications might be defined for a URN base in the future.
Versioned URNs will be used to indicate specification versions.
For example, the URN urn:x-nmos:control:sr-ctrl/v1.0
can be separated into a base urn:x-nmos:control:sr-ctrl
and version v1.0
.
API clients MUST be tolerant to URNs which have not yet been defined, but which might be added in later API versions.