{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/text2confl-config/latest.json",
  "title": "text2confl.yml configuration file",
  "description": "Configuration parameters for <https://github.com/zeldigas/text2confl>",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/zeldigas/text2confl/refs/heads/master/docs/config.schema.json",
    "sourceSha256": "1932b2af8667a6b0c8f77572dab9dda70a4180293f96ab9ca552f3ccd0f75f89",
    "fileMatch": [
      "**/.text2confl.yaml",
      "**/.text2confl.yml",
      "**/text2confl.yaml",
      "**/text2confl.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "server": {
      "type": "string",
      "description": "Confluence server URL. Must be <https://<site>>.atlassian.net/wiki for Confluence Cloud"
    },
    "confluence-cloud": {
      "type": "boolean",
      "description": "Enables API V2 usage. `true` for Confluence Cloud by default. Specify only if you want to explicitly disable it for some reason"
    },
    "space": {
      "type": "string",
      "description": "Confluence space key where pages uploaded"
    },
    "default-parent-id": {
      "type": "string",
      "description": "Default parent page ID for root level pages. Takes precedence over default parent page title"
    },
    "default-parent": {
      "type": "string",
      "description": "Default parent page title for root level pages"
    },
    "remove-orphans": {
      "type": "string",
      "enum": [
        "none",
        "managed",
        "all"
      ],
      "default": "managed",
      "description": "Cleanup strategy for orphaned pages"
    },
    "notify-watchers": {
      "type": "boolean",
      "default": true,
      "description": "Whether to notify page watchers on updates"
    },
    "title-prefix": {
      "type": "string",
      "default": "",
      "description": "Prefix to add to all page titles"
    },
    "title-postfix": {
      "type": "string",
      "default": "",
      "description": "Postfix to add to all page titles"
    },
    "editor-version": {
      "type": "string",
      "enum": [
        "v1",
        "v2"
      ],
      "description": "Editor version to use. If not specified, set to v1 for Confluence Server and to v2 for Confluence Cloud"
    },
    "modification-check": {
      "type": "string",
      "enum": [
        "hash",
        "content"
      ],
      "default": "hash",
      "description": "Method to detect page modifications"
    },
    "docs-location": {
      "type": "string",
      "description": "Url - location of documentation files. When specified, implicitly sets `add-autogenerated-note` to `true` as default value"
    },
    "add-autogenerated-note": {
      "type": "boolean",
      "description": "Whether to add autogenerated note to pages at the top of the page"
    },
    "autogenerated-note": {
      "type": "string",
      "description": "Custom autogenerated note text in Confluence Storage format"
    },
    "auto-fix-content-tags": {
      "type": "boolean",
      "default": false,
      "description": "Whether to automatically fix converted content to make tag properly ordered"
    },
    "tenant": {
      "type": "string",
      "description": "Tenant identifier for multi-tenant setups"
    },
    "code-blocks": {
      "$ref": "#/$defs/CodeBlockParams"
    },
    "markdown": {
      "$ref": "#/$defs/MarkdownParams"
    },
    "asciidoc": {
      "$ref": "#/$defs/AsciidocParams"
    },
    "client": {
      "$ref": "#/$defs/HttpClientParams"
    }
  },
  "$defs": {
    "CodeBlockParams": {
      "type": "object",
      "description": "Configuration for code block processing",
      "properties": {
        "default-language": {
          "type": "string",
          "description": "Default language for code blocks without explicit language tag"
        },
        "extra-mapping": {
          "type": "object",
          "description": "Additional mappings for language aliases. Use when to map language tags to values known by Confluence",
          "patternProperties": {
            ".+": {
              "type": "string"
            }
          }
        },
        "collapse-with-expand": {
          "type": "boolean",
          "description": "Whether to wrap collapsible code blocks into expand macro. Activated by default for Confluence Cloud since code blocks in v2 editor does not support collapsing"
        }
      },
      "additionalProperties": false
    },
    "MarkdownParams": {
      "type": "object",
      "description": "Configuration for Markdown processing",
      "properties": {
        "any-macro": {
          "type": "boolean",
          "description": "Allow any Confluence macro in [SIMPLEMACRO ...] format. If no enabled macros explicitly configured, implicitly set to true"
        },
        "enabled-macros": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of explicitly enabled Confluence macros in [SIMPLEMACRO ...] format"
        },
        "emoji": {
          "type": "boolean",
          "default": true,
          "description": "Enable emoji support"
        },
        "diagrams": {
          "$ref": "#/$defs/MarkdownDiagramParameters"
        },
        "auto-links": {
          "type": "boolean",
          "default": true,
          "description": "Enable automatic link detection"
        },
        "tables": {
          "$ref": "#/$defs/TablesConfiguration"
        },
        "typography": {
          "$ref": "#/$defs/TypographyConfiguration"
        }
      },
      "additionalProperties": false
    },
    "MarkdownDiagramParameters": {
      "type": "object",
      "description": "Configuration for diagram generation in Markdown",
      "properties": {
        "temp-dir": {
          "type": "boolean",
          "default": false,
          "description": "Use temporary directory for diagram generation"
        },
        "base-dir": {
          "type": "string",
          "default": ".diagrams",
          "description": "Base directory for diagram files, relative to documentation directory"
        },
        "mermaid": {
          "$ref": "#/$defs/MermaidDiagramsConfiguration"
        },
        "plantuml": {
          "$ref": "#/$defs/PlantUmlDiagramsConfiguration"
        },
        "kroki": {
          "$ref": "#/$defs/KrokiDiagramsConfiguration"
        }
      },
      "additionalProperties": false
    },
    "AsciidocParams": {
      "type": "object",
      "description": "Configuration for AsciiDoc processing",
      "properties": {
        "gems": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [],
          "description": "Ruby gems to load for AsciiDoc processing"
        },
        "diagrams": {
          "type": "string",
          "enum": [
            "none",
            "diagrams",
            "kroki"
          ],
          "default": "Diagrams",
          "description": "Diagram support mode for AsciiDoc. `none` disables diagram rendering"
        },
        "bundled-macros": {
          "type": "boolean",
          "default": true,
          "description": "Load bundled AsciiDoc macros: `status`, `user`, `confl_macro`"
        },
        "attributes": {
          "type": "object",
          "description": "AsciiDoc attributes to pass to the processor for all pages",
          "default": {},
          "additionalProperties": true
        },
        "temp-dir": {
          "type": "boolean",
          "default": false,
          "description": "Use temporary directory for AsciiDoc processing instead of base-dir"
        },
        "base-dir": {
          "type": "string",
          "default": ".asciidoc",
          "description": "Base directory for AsciiDoc internal files and generated diagrams. Relative to docs directory"
        },
        "kroki": {
          "$ref": "#/$defs/KrokiDiagramsParameters"
        }
      },
      "additionalProperties": false
    },
    "KrokiDiagramsParameters": {
      "type": "object",
      "description": "Parameters for Kroki diagram service",
      "properties": {
        "server": {
          "type": "string",
          "format": "uri",
          "default": "https://kroki.io",
          "description": "Kroki server URL"
        },
        "fetch": {
          "type": "boolean",
          "default": true,
          "description": "Whether to fetch diagrams from Kroki server and upload them as attachments instead of using links"
        },
        "default-format": {
          "type": "string",
          "description": "Default output format for Kroki diagrams"
        }
      },
      "additionalProperties": false
    },
    "TablesConfiguration": {
      "type": "object",
      "description": "Configuration for table processing",
      "properties": {
        "column-spans": {
          "type": "boolean",
          "default": true,
          "description": "Enable column spans in tables"
        },
        "discard-extra-columns": {
          "type": "boolean",
          "default": true,
          "description": "Discard extra columns that don't fit the table structure"
        },
        "append-missing-columns": {
          "type": "boolean",
          "default": true,
          "description": "Append missing columns to match table structure"
        },
        "header-separator-column-match": {
          "type": "boolean",
          "default": true,
          "description": "Match header separator columns"
        }
      },
      "additionalProperties": false
    },
    "TypographyConfiguration": {
      "type": "object",
      "description": "Configuration for typography processing",
      "properties": {
        "quotes": {
          "type": "boolean",
          "default": false,
          "description": "Enable smart quotes conversion"
        },
        "smarts": {
          "type": "boolean",
          "default": true,
          "description": "Enable smart typography features"
        }
      },
      "additionalProperties": false
    },
    "MermaidDiagramsConfiguration": {
      "type": "object",
      "description": "Configuration for Mermaid diagram generation",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable Mermaid diagram generation"
        },
        "default-format": {
          "type": "string",
          "default": "png",
          "enum": [
            "png",
            "svg"
          ],
          "description": "Default output format for Mermaid diagrams"
        },
        "executable": {
          "type": "string",
          "default": "mmdc",
          "description": "Path to Mermaid executable"
        },
        "config-file": {
          "type": "string",
          "description": "Path to Mermaid configuration file."
        },
        "css-file": {
          "type": "string",
          "description": "Path to CSS file for Mermaid diagrams"
        },
        "puppeeter-config": {
          "type": "string",
          "description": "Path to Puppeteer configuration file"
        }
      },
      "additionalProperties": false
    },
    "PlantUmlDiagramsConfiguration": {
      "type": "object",
      "description": "Configuration for PlantUML diagram generation",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable PlantUML diagram generation"
        },
        "executable": {
          "type": "string",
          "default": "plantuml",
          "description": "Path to PlantUML executable"
        },
        "default-format": {
          "type": "string",
          "default": "png",
          "enum": [
            "svg",
            "png",
            "eps"
          ],
          "description": "Default output format for PlantUML diagrams"
        }
      },
      "additionalProperties": false
    },
    "KrokiDiagramsConfiguration": {
      "type": "object",
      "description": "Configuration for Kroki diagram generation",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": true,
          "description": "Enable Kroki diagram generation"
        },
        "server": {
          "type": "string",
          "format": "uri",
          "default": "https://kroki.io",
          "description": "Kroki server URL"
        },
        "default-format": {
          "type": "string",
          "default": "png",
          "enum": [
            "png",
            "svg"
          ],
          "description": "Default output format for Kroki diagrams"
        }
      },
      "additionalProperties": false
    },
    "HttpClientParams": {
      "type": "object",
      "description": "Parameters for http client",
      "properties": {
        "skip-ssl": {
          "type": "boolean",
          "default": false,
          "description": "Skip SSL certificate verification"
        },
        "requests-per-seconds": {
          "type": "number",
          "description": "Activates requests rate limiting when provided. Use if requests rate is throttled by server"
        },
        "retry-on-too-many-requests": {
          "type": "boolean",
          "default": true,
          "description": "Retry requests when server returns 429 or 503 status codes"
        }
      }
    }
  }
}
