{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/doctave/refs/heads/main/json-schema/doctave-site-schema.json",
  "title": "Doctave Site",
  "description": "A documentation site managed on the Doctave docs-as-code platform, representing a collection of pages, configuration, and deployment settings.",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the documentation site."
    },
    "name": {
      "type": "string",
      "description": "Display name of the documentation site."
    },
    "slug": {
      "type": "string",
      "description": "URL-friendly slug for the site.",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    },
    "description": {
      "type": "string",
      "description": "A brief description of the documentation site."
    },
    "customDomain": {
      "type": "string",
      "format": "hostname",
      "description": "Custom domain configured for the site."
    },
    "repository": {
      "type": "string",
      "format": "uri",
      "description": "Source repository URL for the documentation content."
    },
    "branch": {
      "type": "string",
      "description": "Git branch used for building the site.",
      "default": "main"
    },
    "visibility": {
      "type": "string",
      "enum": ["public", "private"],
      "description": "Whether the site is publicly accessible or private."
    },
    "navigation": {
      "type": "array",
      "description": "Ordered list of navigation items defining the site structure.",
      "items": {
        "$ref": "#/$defs/NavigationItem"
      }
    },
    "theme": {
      "type": "object",
      "description": "Theme and branding configuration for the site.",
      "properties": {
        "primaryColor": {
          "type": "string",
          "description": "Primary brand color in hex format.",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "logo": {
          "type": "string",
          "format": "uri",
          "description": "URL to the site logo image."
        },
        "favicon": {
          "type": "string",
          "format": "uri",
          "description": "URL to the site favicon."
        }
      }
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp when the site was created."
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp when the site was last updated."
    }
  },
  "required": ["id", "name", "slug"],
  "$defs": {
    "NavigationItem": {
      "type": "object",
      "description": "A navigation entry representing a page or section in the site hierarchy.",
      "properties": {
        "title": {
          "type": "string",
          "description": "Display title of the navigation item."
        },
        "path": {
          "type": "string",
          "description": "URL path for the navigation item."
        },
        "children": {
          "type": "array",
          "description": "Nested navigation items for sub-sections.",
          "items": {
            "$ref": "#/$defs/NavigationItem"
          }
        }
      },
      "required": ["title"]
    }
  }
}
