{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "ATLAS pattern reference",
  "type": "object",
  "required": [
    "schema_version",
    "library_id",
    "library_version",
    "id",
    "key",
    "name",
    "english_name",
    "category",
    "usage",
    "accessibility",
    "implementation_prompt",
    "links"
  ],
  "properties": {
    "schema_version": {
      "const": "1.0"
    },
    "library_id": {
      "const": "uiux-atlas"
    },
    "library_version": {
      "type": "string"
    },
    "id": {
      "type": "integer",
      "minimum": 1
    },
    "key": {
      "type": "string",
      "pattern": "^urn:uiux-atlas:pattern:[0-9]{3}$"
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "english_name": {
      "type": "string"
    },
    "category": {
      "type": "string"
    },
    "usage": {
      "type": "string"
    },
    "accessibility": {
      "type": "string"
    },
    "responsive": {
      "type": "string"
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "implementation_prompt": {
      "type": "string",
      "minLength": 100
    },
    "links": {
      "type": "object",
      "required": [
        "html",
        "markdown",
        "json",
        "demo"
      ],
      "properties": {
        "html": {
          "type": "string"
        },
        "markdown": {
          "type": "string"
        },
        "json": {
          "type": "string"
        },
        "demo": {
          "type": "string"
        }
      }
    },
    "sample": {
      "type": "object",
      "required": [
        "synthetic",
        "columns",
        "rows"
      ],
      "properties": {
        "synthetic": {
          "const": true
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "array"
          }
        }
      }
    },
    "provenance": {
      "type": "object"
    }
  }
}