xref: /openbmc/phosphor-power/phosphor-regulators/schema/config_schema.json (revision 0dbce5689e08edcd242ae33eee3500ffa4407a80)
1dcb4b3b3SBob King{
2dcb4b3b3SBob King    "$schema": "http://json-schema.org/schema#",
3dcb4b3b3SBob King    "title": "JSON schema for the phosphor-regulators config file",
4dcb4b3b3SBob King    "$id": "https://github.com/openbmc/phosphor-power/tree/master/phosphor-regulators/schema/config_schema.json",
5dcb4b3b3SBob King    "description": "This schema describes the JSON format for the phosphor-regulators configuration file.",
6dcb4b3b3SBob King    "type": "object",
7*0dbce568SPatrick Williams    "properties": {
84dc9a300SShawn McCarney        "comments": { "$ref": "#/definitions/comments" },
94dc9a300SShawn McCarney        "rules": { "$ref": "#/definitions/rules" },
104dc9a300SShawn McCarney        "chassis": { "$ref": "#/definitions/chassis" }
11dcb4b3b3SBob King    },
12dcb4b3b3SBob King    "required": ["chassis"],
13dcb4b3b3SBob King    "additionalProperties": false,
14*0dbce568SPatrick Williams    "definitions": {
15*0dbce568SPatrick Williams        "rule": {
16dcb4b3b3SBob King            "type": "object",
17*0dbce568SPatrick Williams            "properties": {
18dcb4b3b3SBob King                "comments": { "$ref": "#/definitions/comments" },
19dcb4b3b3SBob King                "id": { "$ref": "#/definitions/id" },
20dcb4b3b3SBob King                "actions": { "$ref": "#/definitions/actions" }
21dcb4b3b3SBob King            },
22dcb4b3b3SBob King            "required": ["id", "actions"],
23dcb4b3b3SBob King            "additionalProperties": false
24dcb4b3b3SBob King        },
254dc9a300SShawn McCarney
26*0dbce568SPatrick Williams        "rules": {
274dc9a300SShawn McCarney            "type": "array",
284dc9a300SShawn McCarney            "items": { "$ref": "#/definitions/rule" },
29dcb4b3b3SBob King            "minItems": 1
30dcb4b3b3SBob King        },
31dcb4b3b3SBob King
32*0dbce568SPatrick Williams        "comments": {
33dcb4b3b3SBob King            "type": "array",
344dc9a300SShawn McCarney            "items": { "type": "string" },
35dcb4b3b3SBob King            "minItems": 1
36dcb4b3b3SBob King        },
37dcb4b3b3SBob King
38*0dbce568SPatrick Williams        "id": {
39dcb4b3b3SBob King            "type": "string",
40dcb4b3b3SBob King            "pattern": "^[A-Za-z0-9_]+$"
41dcb4b3b3SBob King        },
42dcb4b3b3SBob King
43*0dbce568SPatrick Williams        "action": {
44dcb4b3b3SBob King            "type": "object",
45*0dbce568SPatrick Williams            "properties": {
46dcb4b3b3SBob King                "comments": { "$ref": "#/definitions/comments" },
47dcb4b3b3SBob King                "and": { "$ref": "#/definitions/actions" },
48*0dbce568SPatrick Williams                "compare_presence": {
49*0dbce568SPatrick Williams                    "$ref": "#/definitions/compare_presence"
50*0dbce568SPatrick Williams                },
51dcb4b3b3SBob King                "compare_vpd": { "$ref": "#/definitions/compare_vpd" },
52*0dbce568SPatrick Williams                "i2c_capture_bytes": {
53*0dbce568SPatrick Williams                    "$ref": "#/definitions/i2c_capture_bytes"
54*0dbce568SPatrick Williams                },
55dcb4b3b3SBob King                "i2c_compare_bit": { "$ref": "#/definitions/i2c_bit" },
56dcb4b3b3SBob King                "i2c_compare_byte": { "$ref": "#/definitions/i2c_byte" },
57dcb4b3b3SBob King                "i2c_compare_bytes": { "$ref": "#/definitions/i2c_bytes" },
58dcb4b3b3SBob King                "i2c_write_bit": { "$ref": "#/definitions/i2c_bit" },
59dcb4b3b3SBob King                "i2c_write_byte": { "$ref": "#/definitions/i2c_byte" },
60dcb4b3b3SBob King                "i2c_write_bytes": { "$ref": "#/definitions/i2c_bytes" },
61dcb4b3b3SBob King                "if": { "$ref": "#/definitions/if" },
62846dde5dSShawn McCarney                "log_phase_fault": { "$ref": "#/definitions/log_phase_fault" },
63dcb4b3b3SBob King                "not": { "$ref": "#/definitions/action" },
64dcb4b3b3SBob King                "or": { "$ref": "#/definitions/actions" },
65*0dbce568SPatrick Williams                "pmbus_read_sensor": {
66*0dbce568SPatrick Williams                    "$ref": "#/definitions/pmbus_read_sensor"
67*0dbce568SPatrick Williams                },
68*0dbce568SPatrick Williams                "pmbus_write_vout_command": {
69*0dbce568SPatrick Williams                    "$ref": "#/definitions/pmbus_write_vout_command"
70*0dbce568SPatrick Williams                },
71dcb4b3b3SBob King                "run_rule": { "$ref": "#/definitions/id" },
72dcb4b3b3SBob King                "set_device": { "$ref": "#/definitions/id" }
73dcb4b3b3SBob King            },
74dcb4b3b3SBob King            "additionalProperties": false,
75dcb4b3b3SBob King            "oneOf": [
76dcb4b3b3SBob King                { "required": ["and"] },
77dcb4b3b3SBob King                { "required": ["compare_presence"] },
78dcb4b3b3SBob King                { "required": ["compare_vpd"] },
79846dde5dSShawn McCarney                { "required": ["i2c_capture_bytes"] },
80dcb4b3b3SBob King                { "required": ["i2c_compare_bit"] },
81dcb4b3b3SBob King                { "required": ["i2c_compare_byte"] },
82dcb4b3b3SBob King                { "required": ["i2c_compare_bytes"] },
83dcb4b3b3SBob King                { "required": ["i2c_write_bit"] },
84dcb4b3b3SBob King                { "required": ["i2c_write_byte"] },
85dcb4b3b3SBob King                { "required": ["i2c_write_bytes"] },
86dcb4b3b3SBob King                { "required": ["if"] },
87846dde5dSShawn McCarney                { "required": ["log_phase_fault"] },
88dcb4b3b3SBob King                { "required": ["not"] },
89dcb4b3b3SBob King                { "required": ["or"] },
90dcb4b3b3SBob King                { "required": ["pmbus_write_vout_command"] },
91dcb4b3b3SBob King                { "required": ["pmbus_read_sensor"] },
92dcb4b3b3SBob King                { "required": ["run_rule"] },
93dcb4b3b3SBob King                { "required": ["set_device"] }
94dcb4b3b3SBob King            ]
95dcb4b3b3SBob King        },
96dcb4b3b3SBob King
97*0dbce568SPatrick Williams        "actions": {
98dcb4b3b3SBob King            "type": "array",
99dcb4b3b3SBob King            "items": { "$ref": "#/definitions/action" },
100dcb4b3b3SBob King            "minItems": 1
101dcb4b3b3SBob King        },
102dcb4b3b3SBob King
103*0dbce568SPatrick Williams        "compare_presence": {
104dcb4b3b3SBob King            "type": "object",
105*0dbce568SPatrick Williams            "properties": {
106ecbeeea7SShawn McCarney                "fru": { "$ref": "#/definitions/inventory_path" },
107dcb4b3b3SBob King                "value": { "$ref": "#/definitions/boolean_value" }
108dcb4b3b3SBob King            },
109dcb4b3b3SBob King            "required": ["fru", "value"],
110dcb4b3b3SBob King            "additionalProperties": false
111dcb4b3b3SBob King        },
112dcb4b3b3SBob King
113*0dbce568SPatrick Williams        "inventory_path": {
114dcb4b3b3SBob King            "type": "string",
115dcb4b3b3SBob King            "minLength": 1
116dcb4b3b3SBob King        },
117dcb4b3b3SBob King
118*0dbce568SPatrick Williams        "boolean_value": {
119dcb4b3b3SBob King            "type": "boolean"
120dcb4b3b3SBob King        },
121dcb4b3b3SBob King
122*0dbce568SPatrick Williams        "compare_vpd": {
123dcb4b3b3SBob King            "type": "object",
124*0dbce568SPatrick Williams            "properties": {
125ecbeeea7SShawn McCarney                "fru": { "$ref": "#/definitions/inventory_path" },
126dcb4b3b3SBob King                "keyword": { "$ref": "#/definitions/keyword" },
127aacc2aafSMatt Spinler                "value": { "$ref": "#/definitions/string_value" },
128a2a830b1SShawn McCarney                "byte_values": { "$ref": "#/definitions/byte_values_min0" }
129dcb4b3b3SBob King            },
130aacc2aafSMatt Spinler            "required": ["fru", "keyword"],
131aacc2aafSMatt Spinler            "oneOf": [
132aacc2aafSMatt Spinler                { "required": ["value"] },
133aacc2aafSMatt Spinler                { "required": ["byte_values"] }
134aacc2aafSMatt Spinler            ],
135dcb4b3b3SBob King            "additionalProperties": false
136dcb4b3b3SBob King        },
137dcb4b3b3SBob King
138*0dbce568SPatrick Williams        "keyword": {
139dcb4b3b3SBob King            "type": "string",
140aacc2aafSMatt Spinler            "enum": ["CCIN", "Manufacturer", "Model", "PartNumber", "HW"]
141dcb4b3b3SBob King        },
142dcb4b3b3SBob King
143*0dbce568SPatrick Williams        "string_value": {
144dcb4b3b3SBob King            "type": "string"
145dcb4b3b3SBob King        },
146dcb4b3b3SBob King
147*0dbce568SPatrick Williams        "i2c_capture_bytes": {
148846dde5dSShawn McCarney            "type": "object",
149*0dbce568SPatrick Williams            "properties": {
150846dde5dSShawn McCarney                "register": { "$ref": "#/definitions/register" },
151846dde5dSShawn McCarney                "count": { "$ref": "#/definitions/byte_count" }
152846dde5dSShawn McCarney            },
153846dde5dSShawn McCarney            "required": ["register", "count"],
154846dde5dSShawn McCarney            "additionalProperties": false
155846dde5dSShawn McCarney        },
156846dde5dSShawn McCarney
157*0dbce568SPatrick Williams        "i2c_bit": {
158dcb4b3b3SBob King            "type": "object",
159*0dbce568SPatrick Williams            "properties": {
160dcb4b3b3SBob King                "register": { "$ref": "#/definitions/register" },
161dcb4b3b3SBob King                "position": { "$ref": "#/definitions/position" },
162dcb4b3b3SBob King                "value": { "$ref": "#/definitions/bit_value" }
163dcb4b3b3SBob King            },
164dcb4b3b3SBob King            "required": ["register", "position", "value"],
165dcb4b3b3SBob King            "additionalProperties": false
166dcb4b3b3SBob King        },
167dcb4b3b3SBob King
168*0dbce568SPatrick Williams        "register": {
169dcb4b3b3SBob King            "type": "string",
170dcb4b3b3SBob King            "pattern": "^0x[0-9A-Fa-f]{2}$"
171dcb4b3b3SBob King        },
172dcb4b3b3SBob King
173*0dbce568SPatrick Williams        "position": {
174dcb4b3b3SBob King            "type": "integer",
175dcb4b3b3SBob King            "minimum": 0,
176dcb4b3b3SBob King            "maximum": 7
177dcb4b3b3SBob King        },
178dcb4b3b3SBob King
179*0dbce568SPatrick Williams        "bit_value": {
180dcb4b3b3SBob King            "type": "integer",
181dcb4b3b3SBob King            "minimum": 0,
182dcb4b3b3SBob King            "maximum": 1
183dcb4b3b3SBob King        },
184dcb4b3b3SBob King
185*0dbce568SPatrick Williams        "i2c_byte": {
186dcb4b3b3SBob King            "type": "object",
187*0dbce568SPatrick Williams            "properties": {
188dcb4b3b3SBob King                "register": { "$ref": "#/definitions/register" },
189dcb4b3b3SBob King                "value": { "$ref": "#/definitions/byte_value" },
190dcb4b3b3SBob King                "mask": { "$ref": "#/definitions/byte_mask" }
191dcb4b3b3SBob King            },
192dcb4b3b3SBob King            "required": ["register", "value"],
193dcb4b3b3SBob King            "additionalProperties": false
194dcb4b3b3SBob King        },
195dcb4b3b3SBob King
196*0dbce568SPatrick Williams        "byte_value": {
197dcb4b3b3SBob King            "type": "string",
198dcb4b3b3SBob King            "pattern": "^0x[0-9A-Fa-f]{2}$"
199dcb4b3b3SBob King        },
200dcb4b3b3SBob King
201*0dbce568SPatrick Williams        "byte_mask": {
202dcb4b3b3SBob King            "type": "string",
203dcb4b3b3SBob King            "pattern": "^0x[0-9A-Fa-f]{2}$"
204dcb4b3b3SBob King        },
205dcb4b3b3SBob King
206*0dbce568SPatrick Williams        "byte_count": {
207846dde5dSShawn McCarney            "type": "integer",
208846dde5dSShawn McCarney            "minimum": 1
209846dde5dSShawn McCarney        },
210846dde5dSShawn McCarney
211*0dbce568SPatrick Williams        "i2c_bytes": {
212dcb4b3b3SBob King            "type": "object",
213*0dbce568SPatrick Williams            "properties": {
214dcb4b3b3SBob King                "register": { "$ref": "#/definitions/register" },
215a2a830b1SShawn McCarney                "values": { "$ref": "#/definitions/byte_values" },
216a2a830b1SShawn McCarney                "masks": { "$ref": "#/definitions/byte_masks" }
217dcb4b3b3SBob King            },
218dcb4b3b3SBob King            "required": ["register", "values"],
219dcb4b3b3SBob King            "additionalProperties": false
220dcb4b3b3SBob King        },
221dcb4b3b3SBob King
222*0dbce568SPatrick Williams        "byte_values": {
223dcb4b3b3SBob King            "type": "array",
224dcb4b3b3SBob King            "items": { "$ref": "#/definitions/byte_value" },
225dcb4b3b3SBob King            "minItems": 1
226dcb4b3b3SBob King        },
227dcb4b3b3SBob King
228*0dbce568SPatrick Williams        "byte_values_min0": {
229a2a830b1SShawn McCarney            "type": "array",
230a2a830b1SShawn McCarney            "items": { "$ref": "#/definitions/byte_value" },
231a2a830b1SShawn McCarney            "minItems": 0
232a2a830b1SShawn McCarney        },
233a2a830b1SShawn McCarney
234*0dbce568SPatrick Williams        "byte_masks": {
235dcb4b3b3SBob King            "type": "array",
236dcb4b3b3SBob King            "items": { "$ref": "#/definitions/byte_mask" },
237dcb4b3b3SBob King            "minItems": 1
238dcb4b3b3SBob King        },
239dcb4b3b3SBob King
240*0dbce568SPatrick Williams        "if": {
241dcb4b3b3SBob King            "type": "object",
242*0dbce568SPatrick Williams            "properties": {
243dcb4b3b3SBob King                "condition": { "$ref": "#/definitions/action" },
244dcb4b3b3SBob King                "then": { "$ref": "#/definitions/actions" },
245dcb4b3b3SBob King                "else": { "$ref": "#/definitions/actions" }
246dcb4b3b3SBob King            },
247dcb4b3b3SBob King            "required": ["condition", "then"],
248dcb4b3b3SBob King            "additionalProperties": false
249dcb4b3b3SBob King        },
250dcb4b3b3SBob King
251*0dbce568SPatrick Williams        "log_phase_fault": {
252846dde5dSShawn McCarney            "type": "object",
253*0dbce568SPatrick Williams            "properties": {
254846dde5dSShawn McCarney                "type": { "$ref": "#/definitions/phase_fault_type" }
255846dde5dSShawn McCarney            },
256846dde5dSShawn McCarney            "required": ["type"],
257846dde5dSShawn McCarney            "additionalProperties": false
258846dde5dSShawn McCarney        },
259846dde5dSShawn McCarney
260*0dbce568SPatrick Williams        "phase_fault_type": {
261846dde5dSShawn McCarney            "type": "string",
262846dde5dSShawn McCarney            "enum": ["n+1", "n"]
263846dde5dSShawn McCarney        },
264846dde5dSShawn McCarney
265*0dbce568SPatrick Williams        "pmbus_write_vout_command": {
266dcb4b3b3SBob King            "type": "object",
267*0dbce568SPatrick Williams            "properties": {
268dcb4b3b3SBob King                "volts": { "$ref": "#/definitions/volts" },
269dcb4b3b3SBob King                "format": { "$ref": "#/definitions/write_vout_format" },
270dcb4b3b3SBob King                "exponent": { "$ref": "#/definitions/exponent" },
271dcb4b3b3SBob King                "is_verified": { "$ref": "#/definitions/is_verified" }
272dcb4b3b3SBob King            },
273dcb4b3b3SBob King            "required": ["format"],
274dcb4b3b3SBob King            "additionalProperties": false
275dcb4b3b3SBob King        },
276dcb4b3b3SBob King
277*0dbce568SPatrick Williams        "volts": {
278dcb4b3b3SBob King            "type": "number"
279dcb4b3b3SBob King        },
280dcb4b3b3SBob King
281*0dbce568SPatrick Williams        "write_vout_format": {
282dcb4b3b3SBob King            "type": "string",
283dcb4b3b3SBob King            "enum": ["linear"]
284dcb4b3b3SBob King        },
285dcb4b3b3SBob King
286*0dbce568SPatrick Williams        "exponent": {
287dcb4b3b3SBob King            "type": "integer"
288dcb4b3b3SBob King        },
289dcb4b3b3SBob King
290*0dbce568SPatrick Williams        "is_verified": {
291dcb4b3b3SBob King            "type": "boolean"
292dcb4b3b3SBob King        },
293dcb4b3b3SBob King
294*0dbce568SPatrick Williams        "pmbus_read_sensor": {
295dcb4b3b3SBob King            "type": "object",
296*0dbce568SPatrick Williams            "properties": {
297dcb4b3b3SBob King                "type": { "$ref": "#/definitions/pmbus_read_sensor_type" },
298*0dbce568SPatrick Williams                "command": {
299*0dbce568SPatrick Williams                    "$ref": "#/definitions/pmbus_read_sensor_command"
300*0dbce568SPatrick Williams                },
301dcb4b3b3SBob King                "format": { "$ref": "#/definitions/read_sensor_format" },
302dcb4b3b3SBob King                "exponent": { "$ref": "#/definitions/exponent" }
303dcb4b3b3SBob King            },
304dcb4b3b3SBob King            "required": ["type", "command", "format"],
305dcb4b3b3SBob King            "additionalProperties": false
306dcb4b3b3SBob King        },
307dcb4b3b3SBob King
308*0dbce568SPatrick Williams        "pmbus_read_sensor_type": {
309dcb4b3b3SBob King            "type": "string",
310*0dbce568SPatrick Williams            "enum": [
311*0dbce568SPatrick Williams                "iout",
312*0dbce568SPatrick Williams                "iout_peak",
313*0dbce568SPatrick Williams                "iout_valley",
314*0dbce568SPatrick Williams                "pout",
315*0dbce568SPatrick Williams                "temperature",
316*0dbce568SPatrick Williams                "temperature_peak",
317*0dbce568SPatrick Williams                "vout",
318*0dbce568SPatrick Williams                "vout_peak",
319*0dbce568SPatrick Williams                "vout_valley"
320*0dbce568SPatrick Williams            ]
321dcb4b3b3SBob King        },
322dcb4b3b3SBob King
323*0dbce568SPatrick Williams        "pmbus_read_sensor_command": {
324dcb4b3b3SBob King            "type": "string",
325dcb4b3b3SBob King            "pattern": "^0x[0-9a-fA-F]{2}$"
326dcb4b3b3SBob King        },
327dcb4b3b3SBob King
328*0dbce568SPatrick Williams        "read_sensor_format": {
329dcb4b3b3SBob King            "type": "string",
330dcb4b3b3SBob King            "enum": ["linear_11", "linear_16"]
331dcb4b3b3SBob King        },
332dcb4b3b3SBob King
333*0dbce568SPatrick Williams        "chassis_object": {
334dcb4b3b3SBob King            "type": "object",
335*0dbce568SPatrick Williams            "properties": {
336dcb4b3b3SBob King                "comments": { "$ref": "#/definitions/comments" },
337dcb4b3b3SBob King                "number": { "$ref": "#/definitions/number" },
338ecbeeea7SShawn McCarney                "inventory_path": { "$ref": "#/definitions/inventory_path" },
339dcb4b3b3SBob King                "devices": { "$ref": "#/definitions/devices" }
340dcb4b3b3SBob King            },
3414c88a4c2SShawn McCarney            "required": ["number", "inventory_path"],
342dcb4b3b3SBob King            "additionalProperties": false
343dcb4b3b3SBob King        },
3444dc9a300SShawn McCarney
345*0dbce568SPatrick Williams        "chassis": {
3464dc9a300SShawn McCarney            "type": "array",
3474dc9a300SShawn McCarney            "items": { "$ref": "#/definitions/chassis_object" },
348dcb4b3b3SBob King            "minItems": 1
349dcb4b3b3SBob King        },
350dcb4b3b3SBob King
351*0dbce568SPatrick Williams        "number": {
352dcb4b3b3SBob King            "type": "integer",
353dcb4b3b3SBob King            "minimum": 1
354dcb4b3b3SBob King        },
355dcb4b3b3SBob King
356*0dbce568SPatrick Williams        "device": {
357dcb4b3b3SBob King            "type": "object",
358*0dbce568SPatrick Williams            "properties": {
359dcb4b3b3SBob King                "comments": { "$ref": "#/definitions/comments" },
360dcb4b3b3SBob King                "id": { "$ref": "#/definitions/id" },
361dcb4b3b3SBob King                "is_regulator": { "$ref": "#/definitions/is_regulator" },
362ecbeeea7SShawn McCarney                "fru": { "$ref": "#/definitions/inventory_path" },
363dcb4b3b3SBob King                "i2c_interface": { "$ref": "#/definitions/i2c_interface" },
364*0dbce568SPatrick Williams                "presence_detection": {
365*0dbce568SPatrick Williams                    "$ref": "#/definitions/presence_detection"
366*0dbce568SPatrick Williams                },
367dcb4b3b3SBob King                "configuration": { "$ref": "#/definitions/configuration" },
368*0dbce568SPatrick Williams                "phase_fault_detection": {
369*0dbce568SPatrick Williams                    "$ref": "#/definitions/phase_fault_detection"
370*0dbce568SPatrick Williams                },
371dcb4b3b3SBob King                "rails": { "$ref": "#/definitions/rails" }
372dcb4b3b3SBob King            },
373dcb4b3b3SBob King            "required": ["id", "is_regulator", "fru", "i2c_interface"],
374*0dbce568SPatrick Williams            "if": {
375dcb4b3b3SBob King                "properties": { "is_regulator": { "const": false } }
376dcb4b3b3SBob King            },
377*0dbce568SPatrick Williams            "then": {
378846dde5dSShawn McCarney                "not": {
379846dde5dSShawn McCarney                    "anyOf": [
380846dde5dSShawn McCarney                        { "required": ["phase_fault_detection"] },
381846dde5dSShawn McCarney                        { "required": ["rails"] }
382846dde5dSShawn McCarney                    ]
383846dde5dSShawn McCarney                }
384dcb4b3b3SBob King            },
385dcb4b3b3SBob King            "additionalProperties": false
386dcb4b3b3SBob King        },
3874dc9a300SShawn McCarney
388*0dbce568SPatrick Williams        "devices": {
3894dc9a300SShawn McCarney            "type": "array",
3904dc9a300SShawn McCarney            "items": { "$ref": "#/definitions/device" },
391dcb4b3b3SBob King            "minItems": 1
392dcb4b3b3SBob King        },
393dcb4b3b3SBob King
394*0dbce568SPatrick Williams        "is_regulator": {
395dcb4b3b3SBob King            "type": "boolean"
396dcb4b3b3SBob King        },
397dcb4b3b3SBob King
398*0dbce568SPatrick Williams        "i2c_interface": {
399dcb4b3b3SBob King            "type": "object",
400*0dbce568SPatrick Williams            "properties": {
401dcb4b3b3SBob King                "bus": { "$ref": "#/definitions/bus" },
402dcb4b3b3SBob King                "address": { "$ref": "#/definitions/address" }
403dcb4b3b3SBob King            },
404dcb4b3b3SBob King            "required": ["bus", "address"],
405dcb4b3b3SBob King            "additionalProperties": false
406dcb4b3b3SBob King        },
407dcb4b3b3SBob King
408*0dbce568SPatrick Williams        "bus": {
409dcb4b3b3SBob King            "type": "integer",
410dcb4b3b3SBob King            "minimum": 0
411dcb4b3b3SBob King        },
412dcb4b3b3SBob King
413*0dbce568SPatrick Williams        "address": {
414dcb4b3b3SBob King            "type": "string",
415dcb4b3b3SBob King            "pattern": "^0x[0-9A-Fa-f]{2}$"
416dcb4b3b3SBob King        },
417dcb4b3b3SBob King
418*0dbce568SPatrick Williams        "presence_detection": {
419dcb4b3b3SBob King            "type": "object",
420*0dbce568SPatrick Williams            "properties": {
421dcb4b3b3SBob King                "comments": { "$ref": "#/definitions/comments" },
422dcb4b3b3SBob King                "rule_id": { "$ref": "#/definitions/id" },
423dcb4b3b3SBob King                "actions": { "$ref": "#/definitions/actions" }
424dcb4b3b3SBob King            },
425dcb4b3b3SBob King            "additionalProperties": false,
426*0dbce568SPatrick Williams            "oneOf": [{ "required": ["rule_id"] }, { "required": ["actions"] }]
427dcb4b3b3SBob King        },
428dcb4b3b3SBob King
429*0dbce568SPatrick Williams        "configuration": {
430dcb4b3b3SBob King            "type": "object",
431*0dbce568SPatrick Williams            "properties": {
432dcb4b3b3SBob King                "comments": { "$ref": "#/definitions/comments" },
433dcb4b3b3SBob King                "volts": { "$ref": "#/definitions/volts" },
434dcb4b3b3SBob King                "rule_id": { "$ref": "#/definitions/id" },
435dcb4b3b3SBob King                "actions": { "$ref": "#/definitions/actions" }
436dcb4b3b3SBob King            },
437dcb4b3b3SBob King            "additionalProperties": false,
438*0dbce568SPatrick Williams            "oneOf": [{ "required": ["rule_id"] }, { "required": ["actions"] }]
439dcb4b3b3SBob King        },
440dcb4b3b3SBob King
441*0dbce568SPatrick Williams        "phase_fault_detection": {
442846dde5dSShawn McCarney            "type": "object",
443*0dbce568SPatrick Williams            "properties": {
444846dde5dSShawn McCarney                "comments": { "$ref": "#/definitions/comments" },
445846dde5dSShawn McCarney                "device_id": { "$ref": "#/definitions/id" },
446846dde5dSShawn McCarney                "rule_id": { "$ref": "#/definitions/id" },
447846dde5dSShawn McCarney                "actions": { "$ref": "#/definitions/actions" }
448846dde5dSShawn McCarney            },
449846dde5dSShawn McCarney            "additionalProperties": false,
450*0dbce568SPatrick Williams            "oneOf": [{ "required": ["rule_id"] }, { "required": ["actions"] }]
451846dde5dSShawn McCarney        },
452846dde5dSShawn McCarney
453*0dbce568SPatrick Williams        "rail": {
454dcb4b3b3SBob King            "type": "object",
455*0dbce568SPatrick Williams            "properties": {
456dcb4b3b3SBob King                "comments": { "$ref": "#/definitions/comments" },
457dcb4b3b3SBob King                "id": { "$ref": "#/definitions/id" },
458dcb4b3b3SBob King                "configuration": { "$ref": "#/definitions/configuration" },
459*0dbce568SPatrick Williams                "sensor_monitoring": {
460*0dbce568SPatrick Williams                    "$ref": "#/definitions/sensor_monitoring"
461*0dbce568SPatrick Williams                }
462dcb4b3b3SBob King            },
463dcb4b3b3SBob King            "required": ["id"],
464dcb4b3b3SBob King            "additionalProperties": false
465dcb4b3b3SBob King        },
466dcb4b3b3SBob King
467*0dbce568SPatrick Williams        "rails": {
468dcb4b3b3SBob King            "type": "array",
469dcb4b3b3SBob King            "items": { "$ref": "#/definitions/rail" },
470dcb4b3b3SBob King            "minItems": 1
471dcb4b3b3SBob King        },
472dcb4b3b3SBob King
473*0dbce568SPatrick Williams        "sensor_monitoring": {
474dcb4b3b3SBob King            "type": "object",
475*0dbce568SPatrick Williams            "properties": {
476dcb4b3b3SBob King                "comments": { "$ref": "#/definitions/comments" },
477dcb4b3b3SBob King                "rule_id": { "$ref": "#/definitions/id" },
478dcb4b3b3SBob King                "actions": { "$ref": "#/definitions/actions" }
479dcb4b3b3SBob King            },
480dcb4b3b3SBob King            "additionalProperties": false,
481*0dbce568SPatrick Williams            "oneOf": [{ "required": ["rule_id"] }, { "required": ["actions"] }]
482dcb4b3b3SBob King        }
483dcb4b3b3SBob King    }
484dcb4b3b3SBob King}
485