{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "additionalProperties": false,
    "description": "IO Information view for entire API",
    "properties": {
        "inputs": {
            "patternProperties": {
                "^[a-zA-Z0-9\\-_]+$": {
                    "additionalProperties": false,
                    "properties": {
                        "caps": {
                            "$schema": "http://json-schema.org/draft-04/schema#",
                            "additionalProperties": false,
                            "description": "Describes an input's capabilities",
                            "properties": {
                                "block_size": {
                                    "minimum": 1,
                                    "type": "integer"
                                },
                                "reordering": {
                                    "type": "boolean"
                                }
                            },
                            "required": [
                                "reordering",
                                "block_size"
                            ],
                            "title": "Input capabilities resource",
                            "type": "object"
                        },
                        "channels": {
                            "$schema": "http://json-schema.org/draft-04/schema#",
                            "description": "List of channels in an input",
                            "items": {
                                "properties": {
                                    "label": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "label"
                                ],
                                "type": "object"
                            },
                            "minItems": 1,
                            "title": "Input channel resource",
                            "type": "array"
                        },
                        "parent": {
                            "$schema": "http://json-schema.org/draft-04/schema#",
                            "additionalProperties": false,
                            "description": "Gives details of where media connected to an Input came from",
                            "properties": {
                                "id": {
                                    "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
                                    "type": [
                                        "string",
                                        "null"
                                    ]
                                },
                                "type": {
                                    "enum": [
                                        "source",
                                        "receiver",
                                        null
                                    ],
                                    "type": [
                                        "string",
                                        "null"
                                    ]
                                }
                            },
                            "required": [
                                "id",
                                "type"
                            ],
                            "title": "Input Parent Resource",
                            "type": "object"
                        },
                        "properties": {
                            "$schema": "http://json-schema.org/draft-04/schema#",
                            "description": "Properties of the input",
                            "properties": {
                                "description": {
                                    "description": "Human readable description of the input",
                                    "type": "string"
                                },
                                "name": {
                                    "description": "Human readable name for the input",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "name",
                                "description"
                            ],
                            "title": "Input properties resource",
                            "type": "object"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "outputs": {
            "patternProperties": {
                "^[a-zA-Z0-9\\-_]+$": {
                    "additionalProperties": false,
                    "properties": {
                        "caps": {
                            "$schema": "http://json-schema.org/draft-04/schema#",
                            "description": "Describes an output's capabilities",
                            "properties": {
                                "routable_inputs": {
                                    "anyOf": [
                                        {
                                            "items": {
                                                "pattern": "^[a-zA-Z0-9\\-_]+$",
                                                "type": [
                                                    "string",
                                                    "null"
                                                ]
                                            },
                                            "type": "array",
                                            "uniqueItems": true
                                        },
                                        {
                                            "type": "null"
                                        }
                                    ],
                                    "description": "List of Inputs that may be routed to this Output, including null if unrouted Output channels are allowed. This property MUST be set to null, if no such restrictions exist."
                                }
                            },
                            "required": [
                                "routable_inputs"
                            ],
                            "title": "Output capabilities resource",
                            "type": "object"
                        },
                        "channels": {
                            "$schema": "http://json-schema.org/draft-04/schema#",
                            "description": "List of channels in an output",
                            "items": {
                                "properties": {
                                    "label": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "label"
                                ],
                                "type": "object"
                            },
                            "minItems": 1,
                            "title": "Output channel resource",
                            "type": "array"
                        },
                        "properties": {
                            "$schema": "http://json-schema.org/draft-04/schema#",
                            "description": "Properties of the output",
                            "properties": {
                                "description": {
                                    "description": "Human readable description of the output",
                                    "type": "string"
                                },
                                "name": {
                                    "description": "Human readable name for the output",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "name",
                                "description"
                            ],
                            "title": "Output properties resource",
                            "type": "object"
                        },
                        "source_id": {
                            "$schema": "http://json-schema.org/draft-04/schema#",
                            "description": "Gives an output's source ID",
                            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
                            "title": "Output source ID resource",
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        }
    },
    "required": [
        "inputs",
        "outputs"
    ],
    "type": "object"
}
