{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "dolittle.io/schemas/DotNET.SDK/Artifacts.Configuration/artifacts.json",
    "title": "Artifacts Configuration",
    "description": "The artifacts configuration",
    "type": "object",
    "additionalProperties": {
        "$ref": "#/definitions/artifactsByTypeDefinition"
    },
    "definitions": {
        "artifactsByTypeDefinition": {
            "description": "The artifacts by type definition",
            "type": "object",
            "properties": {
                "commands": {
                    "description": "The command artifacts of a Feature",
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/artifactDefinition"
                    }
                },
                "events": {
                    "description": "The event artifacts of a Feature",
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/artifactDefinition"
                    }
                },
                "eventSources": {
                    "description": "The event source artifacts of a Feature",
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/artifactDefinition"
                    }
                },
                "readModels": {
                    "description": "The read model artifacts of a Feature",
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/artifactDefinition"
                    }
                },
                "queries": {
                    "description": "The query artifacts of a Feature",
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/artifactDefinition"
                    }
                }
            },
             "required": ["commands", "events", "eventSources", "readModels", "queries"]
        },
        "artifactDefinition": {
            "description": "The definition of an artifact",
            "type": "object",
            "properties": {
                "generation": {
                    "description": "The artifact generation",
                    "type": "number"
                },
                "type": {
                    "description": "The CLR Type represented by the artifact ",
                    "type": "string"
                }
            },
            "required": ["generation", "type"]
        }
    }
}