{
    "additionalProperties": {
        "$ref": "#/definitions/property"
    },
    "definitions": {
        "address": {
            "properties": {
                "address1": {
                    "type": "string"
                },
                "address2": {
                    "type": "string"
                },
                "addressStripped": {
                    "type": "string"
                },
                "city": {
                    "type": "string"
                }
            }
        },
        "noTypeWithExample": {
            "example": {
                "age": 30,
                "firstName": "John",
                "lastName": "Doe"
            }
        },
        "noTypeWithExamples": {
            "examples": [
                {
                    "age": 30,
                    "firstName": "John",
                    "lastName": "Doe"
                },
                {
                    "age": null,
                    "firstName": "Sarah",
                    "gender": "F",
                    "lastName": "Connor"
                }
            ]
        },
        "property": {
            "oneOf": [
                {
                    "$ref": "#/definitions/scalar"
                },
                {
                    "$ref": "#/definitions/table"
                }
            ]
        },
        "propertyOctet": {
            "additionalProperties": false,
            "properties": {
                "type": {
                    "const": "octet"
                },
                "value": {
                    "type": "string"
                }
            },
            "required": [
                "type",
                "value"
            ],
            "type": "object"
        },
        "refOrSchema": {
            "oneOf": [
                {
                    "$ref": "#/definitions/reference"
                },
                {
                    "$ref": "#/definitions/schema"
                }
            ]
        },
        "reference": {
            "properties": {
                "$ref": {
                    "$ref": "#/definitions/referenceObject"
                }
            },
            "required": [
                "$ref"
            ],
            "type": "object"
        },
        "referenceObject": {
            "format": "uri-reference",
            "type": "string"
        },
        "scalar": {
            "additionalProperties": false,
            "properties": {
                "type": {
                    "$ref": "#/definitions/stringedType"
                },
                "value": {
                    "type": "string"
                }
            },
            "required": [
                "type",
                "value"
            ],
            "type": "object"
        },
        "schema": {
            "type": "object",
            "x-go-type": "map[string]interface{}"
        },
        "shortStr": {
            "additionalProperties": false,
            "properties": {
                "type": {
                    "const": "shortstr"
                },
                "value": {
                    "type": "string"
                }
            },
            "required": [
                "type",
                "value"
            ],
            "type": "object"
        },
        "stringedType": {
            "enum": [
                "bit",
                "octet",
                "short",
                "long",
                "longlong",
                "shortstr",
                "longstr",
                "timestamp"
            ],
            "type": "string"
        },
        "table": {
            "additionalProperties": false,
            "properties": {
                "type": {
                    "const": "table"
                },
                "value": {
                    "additionalProperties": {
                        "$ref": "#/definitions/property"
                    },
                    "type": "object"
                }
            },
            "required": [
                "type",
                "value"
            ],
            "type": "object"
        },
        "timestamp": {
            "additionalProperties": false,
            "properties": {
                "type": {
                    "const": "timestamp"
                },
                "value": {
                    "type": "string"
                }
            },
            "required": [
                "type",
                "value"
            ],
            "type": "object"
        }
    },
    "patternProperties": {
        "^x-": {}
    },
    "properties": {
        "address": {
            "$ref": "#/definitions/address"
        },
        "app-id": {
            "$ref": "#/definitions/shortStr",
            "description": "creating application id"
        },
        "content-encoding": {
            "$ref": "#/definitions/shortStr",
            "description": "MIME content encoding"
        },
        "content-type": {
            "$ref": "#/definitions/shortStr",
            "description": "MIME content type"
        },
        "correlation-id": {
            "$ref": "#/definitions/shortStr",
            "description": "application correlation identifier"
        },
        "delivery-mode": {
            "$ref": "#/definitions/propertyOctet",
            "description": "non-persistent (1) or persistent (2)"
        },
        "expiration": {
            "$ref": "#/definitions/shortStr",
            "description": "message expiration specification"
        },
        "headers": {
            "$ref": "#/definitions/table",
            "description": "message header field table"
        },
        "message-id": {
            "$ref": "#/definitions/shortStr",
            "description": "application message identifier"
        },
        "noTypeWithExample": {
            "$ref": "#/definitions/noTypeWithExample"
        },
        "noTypeWithExamples": {
            "$ref": "#/definitions/noTypeWithExamples"
        },
        "priority": {
            "$ref": "#/definitions/propertyOctet",
            "description": "message priority, 0 to 9"
        },
        "refOrSchema": {
            "$ref": "#/definitions/refOrSchema"
        },
        "reply-to": {
            "$ref": "#/definitions/shortStr",
            "description": "address to reply to"
        },
        "timestamp": {
            "$ref": "#/definitions/timestamp",
            "description": "message timestamp"
        },
        "type": {
            "$ref": "#/definitions/shortStr",
            "description": "message type name"
        },
        "user-id": {
            "$ref": "#/definitions/shortStr",
            "description": "creating user id"
        }
    },
    "type": "object"
}