summaryrefslogtreecommitdiff
path: root/doc/protocol.md
blob: 9c4718d2a7918e72a44ea7b27a1cc60240afbcf9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Messages
========

init
----

All fields except "version" are optional. The values in this message are treated as
defaults which will be used if the corresponding value is missing in subsequent
update messages.

{
  "version": 2,
  "SourceHubUuid": "f7df89b4-171e-4b2f-a8a4-e58ac99e5dc5",
  "SourceHubUpdateId": 23,
  "ForwardHubUuid": "b041315e-5039-4c75-81e8-9fd42250b011",
  "ForwardHubUpdateId": 42,
  "hostname": "myhostname",
  "stream": { "content": "av-orig", "format": "flash", "quality": "medium" },
  "tags": [ "elevate", "2014", "discourse" ]
}


data-update
-----------

All values which have been defined by the init message are optional. In any case the
values from data updates override values from init. Stateless interfaces will not use
init messages and therefore all values must be defined here.
"SourceHubUuid", "SourceHubUpdateId", "ForwardHubUuid", "ForwardHubUpdateId",
"user-agent", "bytes-received", "tags" and "clients" might be omitted and are treated
as an empty string, 0 or empty array respectively.
The start-time will be processesd and stored with millisecond precision.

{
  "version": 2,
  "SourceHubUuid": "f7df89b4-171e-4b2f-a8a4-e58ac99e5dc5",
  "SourceHubUpdateId": 23,
  "ForwardHubUuid": "b041315e-5039-4c75-81e8-9fd42250b011",
  "ForwardHubUpdateId": 42,
  "hostname": "myhostname",
  "stream": { "content": "av-orig", "format": "flash", "quality": "medium" },
  "tags": [ "elevate", "2014", "discourse" ]
  "start-time": "2014-08-03T12:34:56.123Z",
  "duration-ms": 5000,
  "data": {
    "clients": [
       { "ip": "127.0.0.1", "port": 1234, "bytes-sent": 12094, "user-agent": "Mozilla Version 28", .... },
        .....
    ],
    "client-count": 12,
    "bytes-received": 12345,
    "bytes-sent": 921734098,
     ....
  }
}

In addition to the user-agent string a client entry may have the following geo-info
fields (all of which might be omitted):

    "country"  .........  the name of the country
    "country-code2"  ...  the 2-letter country code
    "region"  ..........  the name of the region
    "region-code"  .....  the 2-letter code for the region as defined by the
                          MaxMind GeoIP2 database
    "city"  ............  the name of the city
    "latitude"  ........  latitude in ° as float value
    "longitude"  .......  longitude in ° as float value