You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This repository contains details of this AMWA Specification, including core models, transports, event types and a late joiners API.
3
+
This repository contains details of this AMWA Specification, including message types, event types, core models, transports, rest api and measurement units guidelines.
4
4
5
5
## Getting started
6
6
7
7
Readers are advised to be familiar with:
8
+
8
9
* The JT-NM Reference Architecture (http://jt-nm.org/)
9
10
* The [overview of Networked Media Open Specifications](https://amwa-tv.github.io/nmos)
11
+
* The [NMOS Discovery and Registration Specification](https://github.com/AMWA-TV/nmos-discovery-registration) (IS-04)
12
+
* The [NMOS Connection Management Specification](https://github.com/AMWA-TV/nmos-device-connection-management) (IS-05)
10
13
11
-
Readers should read the [documentation](docs/) in this repository.
14
+
Readers should read the [documentation](docs/) in this repository, and the [APIs](APIs/), which are written in RAML.
12
15
13
16
HTML renders of this repo will be made available through [GitHub Pages](https://amwa-tv.github.io/nmos-event-tally)
14
17
@@ -18,8 +21,11 @@ It is recommended that the tagged releases are used as a reference for developme
18
21
19
22
Each version of the specification is available under a v<#MAJOR>.<#MINOR> tag such as 'v1.0'. Once a specification has been released, any updates to its documentation and schemas which do not modify the specification will be made available via a v<#MAJOR>.<#MINOR>.<#UPDATE> tag such as 'v1.0.1'.
20
23
24
+
## Contents
21
25
22
26
* README.md -- This file
23
-
*[docs](docs/) -- Documentation
27
+
*[docs/](docs/) -- Documentation
28
+
*[APIs/](APIs/) -- API descriptions
29
+
*[examples/](examples/) -- Example JSON requests, responses and event messages
24
30
*[LICENSE](LICENSE) -- Licenses for software and text documents
Copy file name to clipboardExpand all lines: docs/2.0. Message types.md
+20-7Lines changed: 20 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,9 +19,11 @@ These are the supported message types:
19
19
* connection_lost (only used by MQTT connections)
20
20
* health (only used by WebSocket connections)
21
21
22
+
For clarity, all MQTT message types are sent using the same MQTT topic defined through the transport parameter `broker_topic`.
23
+
22
24
### 1.1. The state message type
23
25
24
-
The `state` message type will always be sent when the emitter changes state and issues a new event or in a response to a query state request to the [Event & Tally REST API](6.0.%20Event_and_tally_rest_api.md).
26
+
The `state` message type will always be sent when the emitter changes state and issues a new event or in a response to a query state request to the [Event & Tally REST API](6.0.%20Event%20and%20tally%20rest%20api.md).
25
27
These will be the predominant message types being sent in an Event & Tally system.
26
28
27
29
The message structure shall have the following items:
@@ -63,7 +66,9 @@ The `"action_timestamp"` represents the timestamp at which an event should be tr
63
66
64
67
The `"action_timestamp"` is not intended to be associated with delays of more than a few seconds, not for example to allow events scheduled in the future, it allows synchronisation of events in complex workflows.
65
68
66
-
The payload depends on the associated event_type (see [Event types](3.0.%20Event_types.md)).
69
+
The payload depends on the associated event_type (see [Event types](3.0.%20Event%20types.md)).
70
+
71
+
The `flow_id` will _NOT_ be included in the response to a rest apy query state because the state is held by the source which has no dependency on a flow. It will, however, appear when being sent through one of the two specified transports because it will pass from the source through a flow and out on the network through the sender.
The `health` message will only be sent on a WebSocket connection as a response to a `health` command see [Websocket transport](5.2.%20Transport%20-%20Websocket.md).
146
159
147
-
The recommendation for receivers is to detect missing `health` responses (no `health` response is sent back within 5 seconds) and after 2 consecutive missed `health` responses either attempt to reconnect to the WebSocket and re-initialise the subscriptions list or park the subscription and update the IS-04 model in the registry.
160
+
The recommendation for receivers is to detect missing `health` responses (no `health` response is sent back within 5 seconds) and after a 12 seconds timeout (two consecutive missed `health` responses plus 2 seconds to allow for latencies) either attempt to reconnect to the WebSocket and re-initialise the subscriptions list or park the subscription and update the IS-04 model in the registry.
148
161
149
162
The message structure shall have the following items:
Copy file name to clipboardExpand all lines: docs/3.0. Event types.md
+11-6Lines changed: 11 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ These are the supported event types:
16
16
* enum
17
17
* object (out of scope for version 1.0 of this specification)
18
18
19
-
The types are identified by the corresponding values in the event_type field in an event message and the NMOS source. When additional restrictions are applied to an event type, the *type definition object* will be provided using the Event & Tally REST API (see [Event & Tally REST API](6.0.%20Event_and_tally_rest_api.md)). The type definition object will always define the type of the `value` field and can define restrictions on the value.
19
+
The types are identified by the corresponding values in the event_type field in an event message and the NMOS source. When additional restrictions are applied to an event type, the *type definition object* will be provided using the Event & Tally REST API (see [Event & Tally REST API](6.0.%20Event%20and%20tally%20rest%20api.md)). The type definition object will always define the type of the `value` field and can define restrictions on the value.
20
20
21
21
## 2. Base types
22
22
@@ -143,7 +143,7 @@ In the case where a unit of measure is specified for the number type, the event
143
143
144
144
The definition of the units of measure is out of scope of this specification but the SI system of units is highly recommended.
145
145
146
-
The recommended strategy for naming measurement units can be read in the [Measurement units guidelines](7.0.%20Measurement_units_guidelines.md) section.
146
+
The recommended strategy for naming measurement units can be read in the [Measurement units guidelines](7.0.%20Measurement%20units%20guidelines.md) section.
147
147
148
148
#### _Example_:
149
149
@@ -291,7 +291,7 @@ _Type definition_:
291
291
An on/off switch with a bit of added metadata.
292
292
293
293
_Event Type_:
294
-
`bool/enum/OnOff`
294
+
`boolean/enum/OnOff`
295
295
296
296
_Payload_:
297
297
@@ -386,16 +386,21 @@ Sources `"event_type"` field always needs to have an exact specific event type (
386
386
387
387
Receivers `"event_types"` field can have a specific event type or may have a derived partial event type using a wildcard (`*`).
388
388
389
-
A wildcard (`*`) can only be used at the end of an event_type definition.
389
+
A wildcard (`*`) must replace a whole word and can only be used at the end of an event_type definition.
390
390
391
-
More details about NMOS resources in the section [Core models](4.0.%20Core_models.md).
391
+
More details about NMOS resources in the section [Core models](4.0.%20Core%20models.md).
392
392
393
393
The wildcard allows a smart receiver to advertise a wider capability with a specific category above. This is useful information when building a user interface which handles connection management but also matches capabilities between senders and receivers.
394
394
395
395
An example of a receiver which may use a wildcard could be a smart software gauge which can auto-calibrate. This could advertise its capability as `number/*`.
396
396
397
397
Another example could be for a temperature receiver which supports any measurement unit. This could advertise its capability as `number/Temperature/*`.
398
398
399
-
Finally a temperature receiver which only supports degrees Celsius would advertise its capability as `number/Temperature/C`.
399
+
A third example could be that of a temperature receiver which only supports degrees Celsius. It would advertise its capability as `number/Temperature/C`.
400
+
401
+
The following examples are invalid uses for a wildcard:
0 commit comments