diff --git a/schema.json b/schema.json new file mode 100644 index 0000000..4bca3a0 --- /dev/null +++ b/schema.json @@ -0,0 +1,138 @@ +{ + "$defs" : { + "dstar_callsign": {"type": "string", "minLength": 8, "maxLength": 8}, + "dstar_extension": {"type": "string", "minLength": 4, "maxLength": 4}, + "ysf_callsign": {"type": "string", "minLength": 10, "maxLength": 10}, + "m17_callsign": {"type": "string", "minLength": 9, "maxLength": 9}, + "dmr_id": {"type": "integer", "minimum": 1, "maximum": 16777215}, + "p25_id": {"type": "integer", "minimum": 1, "maximum": 65535}, + "nxdn_id": {"type": "integer", "minimum": 1, "maximum": 65535}, + "id_type": {"enum": ["group", "individual"]}, + "source": {"enum": ["rf", "network"]}, + "action": {"enum": ["start", "end", "lost"]}, + "duration": {"type": "number", "minimum": 0.0}, + "loss": {"type": "number", "minimum": 0.0}, + "ber": {"type": "number", "minimum": 0.0}, + "rssi": {"type": "number"}, + "timestamp": {"type": "string" } + }, + + "MMDVM" : { + "type": "object", + "timestamp": {"$ref": "#/$defs/timestamp"}, + "description": {"type": "string"}, + "required": {"timestamp", "description"} + }, + + "D-Star" : { + "type": "object", + "timestamp": {"$ref": "#/$defs/timestamp"}, + "source_callsign": {"$ref": "#/$defs/dstar_callsign"}, + "source_ext": {"$ref": "#/$defs/dstar_extension"}, + "destination_callsign": {"$ref": "#/$defs/dstar_callsign"}, + "source": {"$ref": "#/$defs/source"}, + "action": {"$ref": "#/$defs/action"}, + "duration": {"$ref": "#/$defs/duration"}, + "loss": {"$ref": "#/$defs/loss"}, + "ber": {"$ref": "#/$defs/ber"}, + "rssi": { + "min_rssi": {"$ref": "#/$defs/rssi"}, + "max_rssi": {"$ref": "#/$defs/rssi"}, + "ave_rssi": {"$ref": "#/$defs/rssi"} + }, + "required": {"timestamp", "source_callsign", "source_ext", "destination_callsign", "source", "action"} + }, + + "DMR" : { + "type": "object", + "timestamp": {"$ref": "#/$defs/timestamp"}, + "source_id": {"$ref": "#/$defs/dmr_id"}, + "destination_id": {"$ref": "#/$defs/dmr_id"}, + "destination_type": {"$ref": "#/$defs/id_type"}, + "source": {"$ref": "#/$defs/source"}, + "action": {"$ref": "#/$defs/action"}, + "duration": {"$ref": "#/$defs/duration"}, + "loss": {"$ref": "#/$defs/loss"}, + "ber": {"$ref": "#/$defs/ber"}, + "rssi": { + "min_rssi": {"$ref": "#/$defs/rssi"}, + "max_rssi": {"$ref": "#/$defs/rssi"}, + "ave_rssi": {"$ref": "#/$defs/rssi"} + }, + "required": {"timestamp", "source_id", "destination_id", "destination_type", "source", "action"} + }, + + "SystemFusion" : { + "type": "object", + "timestamp": {"$ref": "#/$defs/timestamp"}, + "source_callsign": {"$ref": "#/$defs/ysf_callsign"}, + "destination_callsign": {"$ref": "#/$defs/ysf_callsign"}, + "source": {"$ref": "#/$defs/source"}, + "action": {"$ref": "#/$defs/action"}, + "duration": {"$ref": "#/$defs/duration"}, + "loss": {"$ref": "#/$defs/loss"}, + "ber": {"$ref": "#/$defs/ber"}, + "rssi": { + "min_rssi": {"$ref": "#/$defs/rssi"}, + "max_rssi": {"$ref": "#/$defs/rssi"}, + "ave_rssi": {"$ref": "#/$defs/rssi"} + }, + "required": {"timestamp", "source_callsign", "destination_callsign", "source", "action"} + }, + + "P25" : { + "type": "object", + "timestamp": {"$ref": "#/$defs/timestamp"}, + "source_id": {"$ref": "#/$defs/dmr_id"}, + "destination_id": {"$ref": "#/$defs/p25_id"}, + "destination_type": {"$ref": "#/$defs/id_type"}, + "source": {"$ref": "#/$defs/source"}, + "action": {"$ref": "#/$defs/action"}, + "duration": {"$ref": "#/$defs/duration"}, + "loss": {"$ref": "#/$defs/loss"}, + "ber": {"$ref": "#/$defs/ber"}, + "rssi": { + "min_rssi": {"$ref": "#/$defs/rssi"}, + "max_rssi": {"$ref": "#/$defs/rssi"}, + "ave_rssi": {"$ref": "#/$defs/rssi"} + }, + "required": {"timestamp", "source_id", "destination_id", "destination_type", "source", "action"} + }, + + "NXDN" : { + "type": "object", + "timestamp": {"$ref": "#/$defs/timestamp"}, + "source_id": {"$ref": "#/$defs/nxdn_id"}, + "destination_id": {"$ref": "#/$defs/nxdn_id"}, + "destination_type": {"$ref": "#/$defs/id_type"}, + "source": {"$ref": "#/$defs/source"}, + "action": {"$ref": "#/$defs/action"}, + "duration": {"$ref": "#/$defs/duration"}, + "loss": {"$ref": "#/$defs/loss"}, + "ber": {"$ref": "#/$defs/ber"}, + "rssi": { + "min_rssi": {"$ref": "#/$defs/rssi"}, + "max_rssi": {"$ref": "#/$defs/rssi"}, + "ave_rssi": {"$ref": "#/$defs/rssi"} + }, + "required": {"timestamp", "source_id", "destination_id", "destination_type", "source", "action"} + }, + + "M17" : { + "type": "object", + "timestamp": {"$ref": "#/$defs/timestamp"}, + "source_callsign": {"$ref": "#/$defs/m17_callsign"}, + "destination_callsign": {"$ref": "#/$defs/m17_callsign"}, + "source": {"$ref": "#/$defs/source"}, + "action": {"$ref": "#/$defs/action"}, + "duration": {"$ref": "#/$defs/duration"}, + "loss": {"$ref": "#/$defs/loss"}, + "ber": {"$ref": "#/$defs/ber"}, + "rssi": { + "min_rssi": {"$ref": "#/$defs/rssi"}, + "max_rssi": {"$ref": "#/$defs/rssi"}, + "ave_rssi": {"$ref": "#/$defs/rssi"} + }, + "required": {"timestamp", "source_callsign", "destination_callsign", "source", "action"} + } +}