rsmp_schema 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yaml +1 -1
  3. data/.tool-versions +1 -1
  4. data/Gemfile.lock +24 -22
  5. data/examples/validate.rb +1 -1
  6. data/lib/rsmp_schema/version.rb +1 -1
  7. data/rsmp_schema.gemspec +5 -5
  8. data/schemas/core/3.2/alarm_suspended_resumed.json +2 -2
  9. data/schemas/tlc/1.2/statuses/S0006.json +3 -3
  10. data/schemas/tlc/1.2/sxl.yaml +4 -4
  11. data/schemas/tlc/1.2.1/alarms/A0001.json +3 -0
  12. data/schemas/tlc/1.2.1/alarms/A0002.json +3 -0
  13. data/schemas/tlc/1.2.1/alarms/A0003.json +3 -0
  14. data/schemas/tlc/1.2.1/alarms/A0004.json +3 -0
  15. data/schemas/tlc/1.2.1/alarms/A0005.json +3 -0
  16. data/schemas/tlc/1.2.1/alarms/A0006.json +3 -0
  17. data/schemas/tlc/1.2.1/alarms/A0007.json +59 -0
  18. data/schemas/tlc/1.2.1/alarms/A0008.json +61 -0
  19. data/schemas/tlc/1.2.1/alarms/A0009.json +3 -0
  20. data/schemas/tlc/1.2.1/alarms/A0010.json +3 -0
  21. data/schemas/tlc/1.2.1/alarms/A0101.json +3 -0
  22. data/schemas/tlc/1.2.1/alarms/A0201.json +60 -0
  23. data/schemas/tlc/1.2.1/alarms/A0202.json +60 -0
  24. data/schemas/tlc/1.2.1/alarms/A0301.json +132 -0
  25. data/schemas/tlc/1.2.1/alarms/A0302.json +158 -0
  26. data/schemas/tlc/1.2.1/alarms/A0303.json +132 -0
  27. data/schemas/tlc/1.2.1/alarms/A0304.json +158 -0
  28. data/schemas/tlc/1.2.1/alarms/alarms.json +286 -0
  29. data/schemas/tlc/1.2.1/commands/M0001.json +138 -0
  30. data/schemas/tlc/1.2.1/commands/M0002.json +112 -0
  31. data/schemas/tlc/1.2.1/commands/M0003.json +112 -0
  32. data/schemas/tlc/1.2.1/commands/M0004.json +85 -0
  33. data/schemas/tlc/1.2.1/commands/M0005.json +112 -0
  34. data/schemas/tlc/1.2.1/commands/M0006.json +112 -0
  35. data/schemas/tlc/1.2.1/commands/M0007.json +85 -0
  36. data/schemas/tlc/1.2.1/commands/M0008.json +112 -0
  37. data/schemas/tlc/1.2.1/commands/M0010.json +85 -0
  38. data/schemas/tlc/1.2.1/commands/M0011.json +85 -0
  39. data/schemas/tlc/1.2.1/commands/M0012.json +79 -0
  40. data/schemas/tlc/1.2.1/commands/M0013.json +79 -0
  41. data/schemas/tlc/1.2.1/commands/M0014.json +106 -0
  42. data/schemas/tlc/1.2.1/commands/M0015.json +112 -0
  43. data/schemas/tlc/1.2.1/commands/M0016.json +79 -0
  44. data/schemas/tlc/1.2.1/commands/M0017.json +79 -0
  45. data/schemas/tlc/1.2.1/commands/M0018.json +112 -0
  46. data/schemas/tlc/1.2.1/commands/M0019.json +139 -0
  47. data/schemas/tlc/1.2.1/commands/M0020.json +139 -0
  48. data/schemas/tlc/1.2.1/commands/M0021.json +79 -0
  49. data/schemas/tlc/1.2.1/commands/M0022.json +355 -0
  50. data/schemas/tlc/1.2.1/commands/M0023.json +85 -0
  51. data/schemas/tlc/1.2.1/commands/M0103.json +103 -0
  52. data/schemas/tlc/1.2.1/commands/M0104.json +220 -0
  53. data/schemas/tlc/1.2.1/commands/command_requests.json +7 -0
  54. data/schemas/tlc/1.2.1/commands/command_responses.json +7 -0
  55. data/schemas/tlc/1.2.1/commands/commands.json +398 -0
  56. data/schemas/tlc/1.2.1/rsmp.json +73 -0
  57. data/schemas/tlc/1.2.1/statuses/S0001.json +137 -0
  58. data/schemas/tlc/1.2.1/statuses/S0002.json +55 -0
  59. data/schemas/tlc/1.2.1/statuses/S0003.json +55 -0
  60. data/schemas/tlc/1.2.1/statuses/S0004.json +55 -0
  61. data/schemas/tlc/1.2.1/statuses/S0005.json +112 -0
  62. data/schemas/tlc/1.2.1/statuses/S0006.json +88 -0
  63. data/schemas/tlc/1.2.1/statuses/S0007.json +116 -0
  64. data/schemas/tlc/1.2.1/statuses/S0008.json +116 -0
  65. data/schemas/tlc/1.2.1/statuses/S0009.json +116 -0
  66. data/schemas/tlc/1.2.1/statuses/S0010.json +116 -0
  67. data/schemas/tlc/1.2.1/statuses/S0011.json +116 -0
  68. data/schemas/tlc/1.2.1/statuses/S0012.json +116 -0
  69. data/schemas/tlc/1.2.1/statuses/S0013.json +88 -0
  70. data/schemas/tlc/1.2.1/statuses/S0014.json +90 -0
  71. data/schemas/tlc/1.2.1/statuses/S0015.json +90 -0
  72. data/schemas/tlc/1.2.1/statuses/S0016.json +61 -0
  73. data/schemas/tlc/1.2.1/statuses/S0017.json +61 -0
  74. data/schemas/tlc/1.2.1/statuses/S0018.json +61 -0
  75. data/schemas/tlc/1.2.1/statuses/S0019.json +61 -0
  76. data/schemas/tlc/1.2.1/statuses/S0020.json +88 -0
  77. data/schemas/tlc/1.2.1/statuses/S0021.json +56 -0
  78. data/schemas/tlc/1.2.1/statuses/S0022.json +55 -0
  79. data/schemas/tlc/1.2.1/statuses/S0023.json +56 -0
  80. data/schemas/tlc/1.2.1/statuses/S0024.json +56 -0
  81. data/schemas/tlc/1.2.1/statuses/S0025.json +250 -0
  82. data/schemas/tlc/1.2.1/statuses/S0026.json +55 -0
  83. data/schemas/tlc/1.2.1/statuses/S0027.json +55 -0
  84. data/schemas/tlc/1.2.1/statuses/S0028.json +55 -0
  85. data/schemas/tlc/1.2.1/statuses/S0029.json +55 -0
  86. data/schemas/tlc/1.2.1/statuses/S0030.json +55 -0
  87. data/schemas/tlc/1.2.1/statuses/S0031.json +55 -0
  88. data/schemas/tlc/1.2.1/statuses/S0032.json +116 -0
  89. data/schemas/tlc/1.2.1/statuses/S0033.json +114 -0
  90. data/schemas/tlc/1.2.1/statuses/S0034.json +61 -0
  91. data/schemas/tlc/1.2.1/statuses/S0035.json +74 -0
  92. data/schemas/tlc/1.2.1/statuses/S0091.json +65 -0
  93. data/schemas/tlc/1.2.1/statuses/S0092.json +65 -0
  94. data/schemas/tlc/1.2.1/statuses/S0095.json +55 -0
  95. data/schemas/tlc/1.2.1/statuses/S0096.json +196 -0
  96. data/schemas/tlc/1.2.1/statuses/S0097.json +82 -0
  97. data/schemas/tlc/1.2.1/statuses/S0098.json +103 -0
  98. data/schemas/tlc/1.2.1/statuses/S0201.json +88 -0
  99. data/schemas/tlc/1.2.1/statuses/S0202.json +88 -0
  100. data/schemas/tlc/1.2.1/statuses/S0203.json +88 -0
  101. data/schemas/tlc/1.2.1/statuses/S0204.json +304 -0
  102. data/schemas/tlc/1.2.1/statuses/S0205.json +88 -0
  103. data/schemas/tlc/1.2.1/statuses/S0206.json +88 -0
  104. data/schemas/tlc/1.2.1/statuses/S0207.json +88 -0
  105. data/schemas/tlc/1.2.1/statuses/S0208.json +304 -0
  106. data/schemas/tlc/1.2.1/statuses/statuses.json +786 -0
  107. data/schemas/tlc/1.2.1/sxl.yaml +2109 -0
  108. metadata +110 -13
@@ -0,0 +1,90 @@
1
+ {
2
+ "description" : "Current time plan.\nThe current time plan (signal program) used in the controller. There may be 1-255 predefined time plans.\nThe time plan (signal program) may change signal timings, cycle time, control strategy and much more. Typical usage is is scenario based control where change of program is used to change priority etc.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "source",
9
+ "status"
10
+ ]
11
+ }
12
+ }
13
+ },
14
+ {
15
+ "if" : {
16
+ "required" : [
17
+ "q"
18
+ ],
19
+ "properties" : {
20
+ "q" : {
21
+ "const" : "undefined"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "s" : {
27
+ "type" : "null"
28
+ }
29
+ },
30
+ "else" : {
31
+ "allOf" : [
32
+ {
33
+ "if" : {
34
+ "required" : [
35
+ "n"
36
+ ],
37
+ "properties" : {
38
+ "n" : {
39
+ "const" : "status"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "allOf" : [
47
+ {
48
+ "description" : "Current time plan"
49
+ },
50
+ {
51
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "if" : {
60
+ "required" : [
61
+ "n"
62
+ ],
63
+ "properties" : {
64
+ "n" : {
65
+ "const" : "source"
66
+ }
67
+ }
68
+ },
69
+ "then" : {
70
+ "properties" : {
71
+ "s" : {
72
+ "description" : "Source of the status change",
73
+ "type" : "string",
74
+ "enum" : [
75
+ "calendar_clock",
76
+ "control_block",
77
+ "forced",
78
+ "operator_panel",
79
+ "other",
80
+ "startup"
81
+ ]
82
+ }
83
+ }
84
+ }
85
+ }
86
+ ]
87
+ }
88
+ }
89
+ ]
90
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "description" : "Current traffic situation.\nThe current traffic situation used in the controller.\nUsed for area-based control where the M0003 command can be sent to a master traffic light controller about which predefined traffic situation to use (1-255).\nTraffic situation is a concept used to divide multiple TLC's into areas and sub-areas. The traffic situation gives the possibility to change the TLC sub-area dynamically depending on the time of day and the traffic flow. Depending on the traffic situation each TLC selects the time plan dynamically.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "source",
9
+ "status"
10
+ ]
11
+ }
12
+ }
13
+ },
14
+ {
15
+ "if" : {
16
+ "required" : [
17
+ "q"
18
+ ],
19
+ "properties" : {
20
+ "q" : {
21
+ "const" : "undefined"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "s" : {
27
+ "type" : "null"
28
+ }
29
+ },
30
+ "else" : {
31
+ "allOf" : [
32
+ {
33
+ "if" : {
34
+ "required" : [
35
+ "n"
36
+ ],
37
+ "properties" : {
38
+ "n" : {
39
+ "const" : "status"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "allOf" : [
47
+ {
48
+ "description" : "Current traffic situation"
49
+ },
50
+ {
51
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "if" : {
60
+ "required" : [
61
+ "n"
62
+ ],
63
+ "properties" : {
64
+ "n" : {
65
+ "const" : "source"
66
+ }
67
+ }
68
+ },
69
+ "then" : {
70
+ "properties" : {
71
+ "s" : {
72
+ "description" : "Source of the status change",
73
+ "type" : "string",
74
+ "enum" : [
75
+ "calendar_clock",
76
+ "control_block",
77
+ "forced",
78
+ "operator_panel",
79
+ "other",
80
+ "startup"
81
+ ]
82
+ }
83
+ }
84
+ }
85
+ }
86
+ ]
87
+ }
88
+ }
89
+ ]
90
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "description" : "Number of detector logics.\nCan be used by the management system to check the number of detector logics configured in the controller.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "number"
9
+ ]
10
+ }
11
+ }
12
+ },
13
+ {
14
+ "if" : {
15
+ "required" : [
16
+ "q"
17
+ ],
18
+ "properties" : {
19
+ "q" : {
20
+ "const" : "undefined"
21
+ }
22
+ }
23
+ },
24
+ "then" : {
25
+ "s" : {
26
+ "type" : "null"
27
+ }
28
+ },
29
+ "else" : {
30
+ "allOf" : [
31
+ {
32
+ "if" : {
33
+ "required" : [
34
+ "n"
35
+ ],
36
+ "properties" : {
37
+ "n" : {
38
+ "const" : "number"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "allOf" : [
46
+ {
47
+ "description" : "Number of detector logics"
48
+ },
49
+ {
50
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ ]
61
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "description" : "Number of signal groups.\nCan be used for the management system to check the number of signal groups configured in the controller.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "number"
9
+ ]
10
+ }
11
+ }
12
+ },
13
+ {
14
+ "if" : {
15
+ "required" : [
16
+ "q"
17
+ ],
18
+ "properties" : {
19
+ "q" : {
20
+ "const" : "undefined"
21
+ }
22
+ }
23
+ },
24
+ "then" : {
25
+ "s" : {
26
+ "type" : "null"
27
+ }
28
+ },
29
+ "else" : {
30
+ "allOf" : [
31
+ {
32
+ "if" : {
33
+ "required" : [
34
+ "n"
35
+ ],
36
+ "properties" : {
37
+ "n" : {
38
+ "const" : "number"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "allOf" : [
46
+ {
47
+ "description" : "Number of signal groups"
48
+ },
49
+ {
50
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ ]
61
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "description" : "Number of time plans\nCan be used for the management system to check the number of time plans configured in the controller.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "number"
9
+ ]
10
+ }
11
+ }
12
+ },
13
+ {
14
+ "if" : {
15
+ "required" : [
16
+ "q"
17
+ ],
18
+ "properties" : {
19
+ "q" : {
20
+ "const" : "undefined"
21
+ }
22
+ }
23
+ },
24
+ "then" : {
25
+ "s" : {
26
+ "type" : "null"
27
+ }
28
+ },
29
+ "else" : {
30
+ "allOf" : [
31
+ {
32
+ "if" : {
33
+ "required" : [
34
+ "n"
35
+ ],
36
+ "properties" : {
37
+ "n" : {
38
+ "const" : "number"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "allOf" : [
46
+ {
47
+ "description" : "Number of time plans (depreciated)"
48
+ },
49
+ {
50
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ ]
61
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "description" : "Number of traffic situations.\nCan be used for the management system to check the number of traffic situations configured in the controller.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "number"
9
+ ]
10
+ }
11
+ }
12
+ },
13
+ {
14
+ "if" : {
15
+ "required" : [
16
+ "q"
17
+ ],
18
+ "properties" : {
19
+ "q" : {
20
+ "const" : "undefined"
21
+ }
22
+ }
23
+ },
24
+ "then" : {
25
+ "s" : {
26
+ "type" : "null"
27
+ }
28
+ },
29
+ "else" : {
30
+ "allOf" : [
31
+ {
32
+ "if" : {
33
+ "required" : [
34
+ "n"
35
+ ],
36
+ "properties" : {
37
+ "n" : {
38
+ "const" : "number"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "allOf" : [
46
+ {
47
+ "description" : "Number of traffic situations"
48
+ },
49
+ {
50
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer"
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ }
60
+ ]
61
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "description" : "Control mode.\nCan be used for the management system to check the current control mode (startup, normal, standby, failure, test).\nPlease note that all values in this status uses comma-separated lists - one value for each intersection, e.g. \"1,2\" and \"startup,control\"",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "controlmode",
9
+ "intersection"
10
+ ]
11
+ }
12
+ }
13
+ },
14
+ {
15
+ "if" : {
16
+ "required" : [
17
+ "q"
18
+ ],
19
+ "properties" : {
20
+ "q" : {
21
+ "const" : "undefined"
22
+ }
23
+ }
24
+ },
25
+ "then" : {
26
+ "s" : {
27
+ "type" : "null"
28
+ }
29
+ },
30
+ "else" : {
31
+ "allOf" : [
32
+ {
33
+ "if" : {
34
+ "required" : [
35
+ "n"
36
+ ],
37
+ "properties" : {
38
+ "n" : {
39
+ "const" : "intersection"
40
+ }
41
+ }
42
+ },
43
+ "then" : {
44
+ "properties" : {
45
+ "s" : {
46
+ "allOf" : [
47
+ {
48
+ "description" : "Comma separated list of intersections which the status relates to, e.g. “1,2”.\nUse “0” for all intersections of the TLC."
49
+ },
50
+ {
51
+ "$ref" : "../../../core/3.1.2/definitions.json#/integer_list"
52
+ }
53
+ ]
54
+ }
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "if" : {
60
+ "required" : [
61
+ "n"
62
+ ],
63
+ "properties" : {
64
+ "n" : {
65
+ "const" : "controlmode"
66
+ }
67
+ }
68
+ },
69
+ "then" : {
70
+ "properties" : {
71
+ "s" : {
72
+ "allOf" : [
73
+ {
74
+ "pattern" : "(?-mix:^(startup|control|standby|failure|test)(?:,(startup|control|standby|failure|test))*$)"
75
+ },
76
+ {
77
+ "$ref" : "../../../core/3.1.2/definitions.json#/string_list"
78
+ }
79
+ ]
80
+ }
81
+ }
82
+ }
83
+ }
84
+ ]
85
+ }
86
+ }
87
+ ]
88
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "description" : "Manually set detector logic.\nProvides status of detector logic (1-255) regarding if they are either forced to true or false.\nCan be used to connect RSMP compatible detection equipment to the traffic light controller. Can also be used for prioritization.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "detectorlogics"
9
+ ]
10
+ }
11
+ }
12
+ },
13
+ {
14
+ "if" : {
15
+ "required" : [
16
+ "q"
17
+ ],
18
+ "properties" : {
19
+ "q" : {
20
+ "const" : "undefined"
21
+ }
22
+ }
23
+ },
24
+ "then" : {
25
+ "s" : {
26
+ "type" : "null"
27
+ }
28
+ },
29
+ "else" : {
30
+ "allOf" : [
31
+ {
32
+ "if" : {
33
+ "required" : [
34
+ "n"
35
+ ],
36
+ "properties" : {
37
+ "n" : {
38
+ "const" : "detectorlogics"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "description" : "Manually set detector logic as text field.\nEach character represent the state in consecutive order,\nwhere the leftmost character starts with detector logic 1.\n0 : Detector logic not manually set\n1 : Detector logic manually set\n- : Detector logic is undefined/does not exist",
46
+ "type" : "string",
47
+ "pattern" : "^[01]*$"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ ]
56
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "description" : "List of time plans.\nProvides a list of the configured time plans which is possible to use. This status was added due to status S0018 only provided the total number of time plans and not which were possible to use with M0002.\nCan be used for the management system to check the number of time plans configured in the controller.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "status"
9
+ ]
10
+ }
11
+ }
12
+ },
13
+ {
14
+ "if" : {
15
+ "required" : [
16
+ "q"
17
+ ],
18
+ "properties" : {
19
+ "q" : {
20
+ "const" : "undefined"
21
+ }
22
+ }
23
+ },
24
+ "then" : {
25
+ "s" : {
26
+ "type" : "null"
27
+ }
28
+ },
29
+ "else" : {
30
+ "allOf" : [
31
+ {
32
+ "if" : {
33
+ "required" : [
34
+ "n"
35
+ ],
36
+ "properties" : {
37
+ "n" : {
38
+ "const" : "status"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "description" : "Comma separated list of configured time plans. E.g. \"1,2,3,5\"",
46
+ "type" : "string"
47
+ }
48
+ }
49
+ }
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "description" : "Dynamic bands.\nProvides a list of all defined dynamic bands. Dynamic bands moves start of signal groups in the cycle and changes the signal timings.\nA typical usage of dynamic bands is scenario based control where changing of signal timings is used for optimal traffic flow.",
3
+ "allOf" : [
4
+ {
5
+ "properties" : {
6
+ "n" : {
7
+ "enum" : [
8
+ "status"
9
+ ]
10
+ }
11
+ }
12
+ },
13
+ {
14
+ "if" : {
15
+ "required" : [
16
+ "q"
17
+ ],
18
+ "properties" : {
19
+ "q" : {
20
+ "const" : "undefined"
21
+ }
22
+ }
23
+ },
24
+ "then" : {
25
+ "s" : {
26
+ "type" : "null"
27
+ }
28
+ },
29
+ "else" : {
30
+ "allOf" : [
31
+ {
32
+ "if" : {
33
+ "required" : [
34
+ "n"
35
+ ],
36
+ "properties" : {
37
+ "n" : {
38
+ "const" : "status"
39
+ }
40
+ }
41
+ },
42
+ "then" : {
43
+ "properties" : {
44
+ "s" : {
45
+ "description" : "Dynamic bands.\nEach dynamic band are written as pp-dd-ee where:\npp=Time plan\ndd=Dynamic band number (from 1-10)\nee=Extension in seconds in this band\n\nEach dynamic band is separated with a comma.\n\nE.g.\npp-dd-ee,pp-dd-ee",
46
+ "type" : "string",
47
+ "pattern" : "(^$)|(^(?<item>(\\d{1,2})\\-\\d{1,2}-\\d{1,2})(,\\g<item>)*$)"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ ]
53
+ }
54
+ }
55
+ ]
56
+ }