{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/changelogging/latest.json",
  "title": "changelogging",
  "description": "changelogging configuration file.",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/nekitdev/changelogging/main/changelogging.schema.json",
    "sourceSha256": "2f2dc0f83447d7e570fecbb26598b5d0d14c78861cf6b95ded6e06557631fc1c",
    "fileMatch": [
      "**/changelogging.toml"
    ],
    "parsers": [
      "toml"
    ]
  },
  "type": "object",
  "properties": {
    "context": {
      "$ref": "#/$defs/Context"
    },
    "paths": {
      "$ref": "#/$defs/Paths"
    },
    "start": {
      "$ref": "#/$defs/Start",
      "default": "<!-- changelogging: start -->"
    },
    "levels": {
      "$ref": "#/$defs/Levels"
    },
    "indents": {
      "$ref": "#/$defs/Indents"
    },
    "formats": {
      "$ref": "#/$defs/Formats"
    },
    "wrap": {
      "$ref": "#/$defs/Wrap",
      "default": 100
    },
    "order": {
      "$ref": "#/$defs/Order",
      "default": [
        "security",
        "feature",
        "change",
        "fix",
        "deprecation",
        "removal",
        "internal"
      ]
    },
    "types": {
      "$ref": "#/$defs/Types",
      "default": {
        "security": "Security",
        "feature": "Features",
        "change": "Changes",
        "fix": "Fixes",
        "deprecation": "Deprecations",
        "removal": "Removals",
        "internal": "Internal"
      }
    }
  },
  "required": [
    "context"
  ],
  "$defs": {
    "Context": {
      "title": "Context",
      "description": "Represents contexts of projects.",
      "type": "object",
      "required": [
        "name",
        "version",
        "url"
      ],
      "properties": {
        "name": {
          "description": "The name of the project.",
          "$ref": "#/$defs/NonEmptyString"
        },
        "version": {
          "description": "The version of the project.",
          "$ref": "#/$defs/NonEmptyString"
        },
        "url": {
          "description": "The URL of the project.",
          "$ref": "#/$defs/NonEmptyString"
        }
      },
      "additionalProperties": false
    },
    "Paths": {
      "title": "Paths",
      "description": "Specifies locations of fragments and the changelog.",
      "type": "object",
      "properties": {
        "directory": {
          "description": "The directory containing fragments.",
          "$ref": "#/$defs/NonEmptyString",
          "default": "changes"
        },
        "output": {
          "description": "The file containing the changelog.",
          "$ref": "#/$defs/NonEmptyString",
          "default": "CHANGELOG.md"
        }
      },
      "additionalProperties": false
    },
    "NonEmptyString": {
      "type": "string",
      "minLength": 1
    },
    "Start": {
      "description": "Marks the location in the changelog to start writing entries after.",
      "$ref": "#/$defs/NonEmptyString"
    },
    "Level": {
      "type": "integer",
      "minimum": 1
    },
    "Levels": {
      "title": "Levels",
      "description": "Defines which heading levels to use.",
      "type": "object",
      "properties": {
        "entry": {
          "description": "The heading level of the entry title.",
          "$ref": "#/$defs/Level",
          "default": 2
        },
        "section": {
          "description": "The heading level of individual sections.",
          "$ref": "#/$defs/Level",
          "default": 3
        }
      },
      "additionalProperties": false
    },
    "Character": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1
    },
    "Indents": {
      "title": "Indents",
      "description": "Specifies which characters to use for indenting.",
      "type": "object",
      "properties": {
        "heading": {
          "description": "The character to use for headings.",
          "$ref": "#/$defs/Character",
          "default": "#"
        },
        "bullet": {
          "description": "The character to use for indenting.",
          "$ref": "#/$defs/Character",
          "default": "-"
        }
      },
      "additionalProperties": false
    },
    "Formats": {
      "title": "Formats",
      "description": "Defines formats to use for rendering entry titles and fragments.",
      "type": "object",
      "properties": {
        "title": {
          "description": "The format used for rendering entry titles.",
          "$ref": "#/$defs/NonEmptyString",
          "default": "{{version}} ({{date}})"
        },
        "fragment": {
          "description": "The format used for rendering fragments.",
          "$ref": "#/$defs/NonEmptyString",
          "default": "{{content}} (#{{id}})"
        }
      },
      "additionalProperties": false
    },
    "Wrap": {
      "type": "integer",
      "minimum": 1
    },
    "Order": {
      "description": "Defines which types to include, and in what order.",
      "type": "array",
      "items": {
        "description": "The type to include.",
        "$ref": "#/$defs/NonEmptyString"
      }
    },
    "Types": {
      "title": "Types",
      "description": "Maps types to their titles.",
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^.+$": {
          "$ref": "#/$defs/NonEmptyString"
        }
      }
    }
  },
  "additionalProperties": false
}
