protodef
Version:
A simple yet powerful way to define binary protocols
98 lines (97 loc) • 2.35 kB
JSON
{
"title": "datatype tests",
"type": "array",
"uniqueItems": true,
"definitions":{
"datatype_test":{
"oneOf":[
{"$ref" : "#/definitions/test_simple_datatype"},
{"$ref": "#/definitions/test_complex_datatype"}
]
},
"test_simple_datatype":{
"title": "test simple datatype",
"type": "object",
"properties": {
"type": {
"type": "string"
},
"values": {"$ref" : "#/definitions/test_values"}
},
"required": [
"type",
"values"
],
"additionalProperties": false
},
"test_complex_datatype":{
"title": "test simple datatype",
"type": "object",
"properties": {
"type": {
"type": "string"
},
"subtypes": {
"type":"array",
"items":{
"title": "subtype test",
"type": "object",
"properties": {
"description":{
"type":"string"
},
"vars": { "type": "array" },
"type": {
"type": ["object","array"]
},
"values": {"$ref" : "#/definitions/test_values"}
},
"required": [
"description",
"type",
"values"
],
"additionalProperties": false
}
}
},
"required": [
"type",
"subtypes"
],
"additionalProperties": false
},
"test_values":{
"type":"array",
"items":{
"title": "test value",
"type": "object",
"properties": {
"description": {
"type":"string"
},
"vars": { "type": "array" },
"value": {
"type":[ "array", "boolean", "integer", "null", "number", "object", "string" ]
},
"buffer":{
"type":"array",
"additionalItems":false,
"items":{
"type":"string",
"pattern": "^0x[0-9a-fA-F]{2}$"
}
}
},
"required": [
"value",
"buffer"
],
"additionalProperties": false
},
"additionalItems":false
}
},
"items" : {"$ref" : "#/definitions/datatype_test"},
"additionalItems":false
}