{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "https://www.omg.org/spec/DDS-JSON/20190601/dds-json_data_samples.schema",
    "title": "DDS-JSON: Building Block Data Samples",
    "description": "This schema defines the syntax to represent DDS Data Samples and Sample Information.",
    "definitions": {
        "boolean": {
            "type": "boolean"
        },
        "byte": {
            "type": "integer",
            "minimum": 0,
            "maximum": 255
        },
        "int8": {
            "type": "integer",
            "minimum": -127,
            "maximum": 128
        },
        "uint8": {
            "type": "integer",
            "minimum": 0,
            "maximum": 255
        },
        "int16": {
            "type": "integer",
            "minimum": -32768,
            "maximum": 32767
        },
        "uint16": {
            "type": "integer",
            "minimum": 0,
            "maximum": 65535
        },
        "int32": {
            "type": "integer",
            "minimum": -2147483648,
            "maximum": 2147483647
        },
        "uint32": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
        },
        "int64": {
            "oneOf": [
                {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                },
                {
                    "type": "string"
                }
            ]
        },
        "uint64": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
        },
        "float32": {
            "type": "number"
        },
        "float64": {
            "type": "number"
        },
        "float128": {
            "type": "string"
        },
        "char8": {
            "type": "string"
        },
        "char16": {
            "type": "string"
        },
        "string": {
            "type": "string"
        },
        "wstring": {
            "type": "string"
        },
        "bitmask": {
            "type": "integer"
        },
        "time": {
            "properties": {
                "sec": {
                    "type": "integer",
                    "minimum": 0
                },
                "nanosec": {
                    "type": "integer",
                    "maximum": 1000000000
                }
            }
        },
        "instanceHandle": {
            "type": "string"
        },
        "instanceStateKind": {
            "type": "string",
            "enum": [
                "ALIVE",
                "NOT_ALIVE_DISPOSED",
                "NOT_ALIVE_NO_WRITERS"
            ]
        },
        "sampleStateKind": {
            "type": "string",
            "enum": [
                "READ",
                "NOT_READ"
            ]
        },
        "viewStateKind": {
            "type": "string",
            "enum": [
                "NEW",
                "NOT_NEW"
            ]
        },
        "sampleInfo": {
            "properties": {
                "source_timestamp": {
                    "$ref": "#/definitions/time"
                },
                "valid_data": {
                    "type": "boolean"
                },
                "instance_handle": {
                    "$ref": "#/definitions/instanceHandle"
                },
                "publication_handle": {
                    "$ref": "#/definitions/instanceHandle"
                },
                "instance_state": {
                    "$ref": "#/definitions/instanceStateKind"
                },
                "sample_state": {
                    "$ref": "#/definitions/sampleStateKind"
                },
                "view_state": {
                    "$ref": "#/definitions/viewStateKind"
                },
                "disposed_generation_count": {
                    "$ref": "#/definitions/int32"
                },
                "no_writers_generation_count": {
                    "$ref": "#/definitions/int32"
                },
                "sample_rank": {
                    "$ref": "#/definitions/int32"
                },
                "generation_rank": {
                    "$ref": "#/definitions/int32"
                },
                "absolute_generation_rank": {
                    "$ref": "#/definitions/int32"
                }
            }
        },
        "sampleData": {
            "type": "object"
        },
        "sampleType": {
            "properties": {
                "info": {
                    "$ref": "#/definitions/sampleInfo"
                },
                "data": {
                    "$ref": "#/definitions/sampleData"
                }
            }
        },
        "sampleSeq": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/sampleType"
            },
            "additionalItems": false
        }
    },
    "$ref": "#/definitions/sampleType"
}