{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://markitect.dev/schemas/terminology-v1.json",
  "title": "Terminology Document Schema",
  "description": "Schema for validating terminology and glossary documents with consistent structure",
  "type": "object",
  "properties": {
    "headings": {
      "type": "object",
      "properties": {
        "level_1": {
          "type": "array",
          "description": "Main document title",
          "items": {
            "type": "object",
            "properties": {
              "content": {
                "type": "string",
                "pattern": ".*(Terminology|Glossary|Terms|Definitions).*"
              }
            }
          },
          "minItems": 1,
          "maxItems": 1
        },
        "level_2": {
          "type": "array",
          "description": "Category headings (Core Concepts, Document Types, etc.)",
          "items": {
            "type": "object",
            "properties": {
              "content": {
                "type": "string",
                "minLength": 1
              }
            }
          },
          "minItems": 1,
          "maxItems": 20
        },
        "level_3": {
          "type": "array",
          "description": "Individual term headings",
          "items": {
            "type": "object",
            "properties": {
              "content": {
                "type": "string",
                "minLength": 1,
                "description": "Term name - should be title case"
              }
            }
          },
          "minItems": 1
        }
      },
      "required": ["level_1", "level_2", "level_3"]
    },
    "paragraphs": {
      "type": "array",
      "description": "Content paragraphs including definitions and descriptions",
      "items": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "minLength": 10
          }
        }
      },
      "minItems": 3
    },
    "bold_text": {
      "type": "array",
      "description": "Bold text used for field labels (Definition, Synonyms, etc.)",
      "items": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "enum": [
              "Definition:",
              "Synonyms:",
              "Related Terms:",
              "Example:",
              "Examples:",
              "Use Cases:",
              "Usage:",
              "Format:",
              "Components:",
              "Steps:",
              "Tools:",
              "Levels:",
              "Status:",
              "Migration:",
              "Required:",
              "Recommended:",
              "Optional:",
              "Discouraged:",
              "Improper:"
            ]
          }
        }
      },
      "minItems": 1
    }
  },
  "required": ["headings", "paragraphs"],
  "x-markitect-sections": {
    "document_title": {
      "classification": "required",
      "heading_level": 1,
      "content_instruction": "Main title should include words like 'Terminology', 'Glossary', or 'Definitions'",
      "pattern": ".*(Terminology|Glossary|Terms|Definitions).*"
    },
    "category_sections": {
      "classification": "required",
      "heading_level": 2,
      "min_sections": 1,
      "content_instruction": "Organize terms into logical categories (e.g., Core Concepts, Document Types, Process Terms)"
    },
    "term_definitions": {
      "classification": "required",
      "heading_level": 3,
      "min_sections": 1,
      "content_instruction": "Each term should be a level 3 heading followed by its definition and optional metadata"
    }
  },
  "x-markitect-content-control": {
    "term_structure": {
      "required_components": [
        {
          "label": "Definition:",
          "type": "bold_text",
          "description": "Clear, concise definition of the term"
        }
      ],
      "optional_components": [
        {
          "label": "Synonyms:",
          "type": "bold_text",
          "description": "Alternative names or abbreviations"
        },
        {
          "label": "Related Terms:",
          "type": "bold_text",
          "description": "Links to related concepts"
        },
        {
          "label": "Example:",
          "type": "bold_text_or_code",
          "description": "Practical example demonstrating the term"
        },
        {
          "label": "Use Cases:",
          "type": "list",
          "description": "Common scenarios where term applies"
        }
      ],
      "content_quality": {
        "min_words_per_definition": 10,
        "max_words_per_definition": 200,
        "readability_target": "technical"
      },
      "content_instructions": [
        "Start each term with a level 3 heading containing the term name",
        "Follow immediately with 'Definition:' in bold",
        "Provide a clear, self-contained definition",
        "Add optional fields (Synonyms, Related Terms, Examples) as needed",
        "Use consistent formatting across all terms",
        "Group related terms under category headings (level 2)"
      ]
    },
    "definition_pattern": {
      "description": "Each definition should follow: Term heading (###) → Definition: (bold) → Definition text",
      "validation": {
        "heading_level_3_followed_by": "bold_text_starting_with_Definition",
        "definition_length": {
          "min_words": 10,
          "max_words": 200
        }
      }
    },
    "deprecated_terms": {
      "classification": "optional",
      "heading_level": 2,
      "content_instruction": "Optional section for deprecated terms with migration guidance",
      "required_fields": [
        "Status: DEPRECATED",
        "Migration:"
      ]
    }
  },
  "x-markitect-validation-rules": {
    "term_count": {
      "min": 3,
      "recommended_min": 10,
      "description": "Terminology document should define at least 3 terms, 10+ recommended"
    },
    "category_balance": {
      "description": "Each category should have at least 2 terms",
      "min_terms_per_category": 2
    },
    "definition_quality": {
      "all_terms_must_have_definition": true,
      "definition_must_follow_term_heading": true,
      "definition_min_words": 10
    },
    "consistency": {
      "use_consistent_field_labels": true,
      "maintain_heading_hierarchy": true
    }
  }
}
