{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/dolittle-artifacts/latest.json",
  "title": "Artifacts Configuration",
  "description": "The artifacts configuration",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/dolittle/DotNET.SDK/v5.0.0/Schemas/Artifacts.Configuration/artifacts.json",
    "sourceSha256": "7a2763be138851a7595415b64c5e9c35766096df9cd7018c0675ab5d1e2886ea",
    "fileMatch": [
      "**/.dolittle/artifacts.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "type": "object",
  "$defs": {
    "artifactsByTypeDefinition": {
      "description": "The artifacts by type definition",
      "type": "object",
      "properties": {
        "commands": {
          "description": "The command artifacts of a Feature",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/artifactDefinition"
          }
        },
        "events": {
          "description": "The event artifacts of a Feature",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/artifactDefinition"
          }
        },
        "eventSources": {
          "description": "The event source artifacts of a Feature",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/artifactDefinition"
          }
        },
        "readModels": {
          "description": "The read model artifacts of a Feature",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/artifactDefinition"
          }
        },
        "queries": {
          "description": "The query artifacts of a Feature",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/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"
      ]
    }
  },
  "additionalProperties": {
    "$ref": "#/$defs/artifactsByTypeDefinition"
  }
}
