First go at a JSON schema for the MQTT data feed.

This commit is contained in:
Jonathan Naylor
2022-12-28 18:08:31 +00:00
parent 2f761603bc
commit a27cf0bd19

138
schema.json Normal file
View File

@@ -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"}
}
}