{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "dolittle.io/schemas/Runtime/Events/event-horizons.json",
    "title": "Event Horizons Configuration",
    "description": "The event horizons configuration",
    "type": "array",
    "items": {
        "$ref": "#/definitions/eventHorizonConfiguration"
    },
    "definitions": {
        "eventHorizonConfiguration": {
            "description": "The configuration of an event horizon",
            "type": "object",
            "properties": {
                "application": {
                    "description": "The application id of the application which the bounded context you want to communicate belongs to",
                    "type": "string"
                },
                "boundedContext": {
                    "description": "The bounded context id you wish to penetrate to",
                    "type": "string"
                },
                "url": {
                    "description": "The url where the other bounded context's event horizon lives",
                    "type": "string",
                    "format": "uri-reference"
                },
                "events": {
                    "description": "An array of event artifacts that this bounded context is interested in",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/artifact"
                    }
                }
            },
            "required": [
                "application",
                "boundedContext",
                "url",
                "events"
            ]
        },
        "artifact": {
            "$comment": "Should become it's own schema file'",
            "description": "The configuration of an artifact",
            "properties": {
                "id": {
                    "description": "The artifact id",
                    "type": "string"
                },
                "generation": {
                    "description": "The artifact generation",
                    "type": "number"
                }
            },
            "required": [
                "id",
                "generation"
            ]
        }
    }
}