{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/carafe/_shared/latest--meta.schema.json",
  "x-lintel": {
    "source": "https://carafe.fm/schema/draft-02/meta.schema.json",
    "sourceSha256": "15b3908fc5f0688c2ee07f194cb1bd405795437e6080b239675278d9c1fe38a3"
  },
  "type": "object",
  "properties": {
    "about": {
      "type": "string",
      "minLength": 1,
      "errorMessage": "a simple html explainer providing instructions for bundle implementors"
    },
    "bookend": {
      "type": "string",
      "minLength": 2,
      "errorMessage": "a character sequence used before and after each merge field name as delimiters in the template"
    },
    "jsApiMethods": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "about": {
            "type": "string",
            "errorMessage": "a simple text explainer providing instructions for bundle implementors"
          },
          "parameters": {
            "type": "array",
            "errorMessage": "an array defining zero or more parameter names for the method"
          }
        },
        "required": [
          "about",
          "parameters"
        ],
        "errorMessage": "each optional jsApiMethod must specify about and parameters object"
      }
    },
    "category": {
      "type": "string",
      "minLength": 1,
      "errorMessage": "may be any string but please consider one of the standard options:Analysis,Calendar,Chart,Data Presentation,Date,Development,Hierarchy,Image Viewer,Map,Pivot,Progress Bar,Slider,Table,Text,Time,Tree,UI,Utiliy"
    },
    "creator": {
      "type": "string",
      "minLength": 1,
      "errorMessage": "the bundle creator"
    },
    "creatorAcknowlegements": {
      "type": "string",
      "errorMessage": "an optional plain text acknowlegement of contributors, etc. by the bundle creator"
    },
    "parentBundle": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "errorMessage": "the parent bundle name"
        },
        "version": {
          "type": "string",
          "pattern": "^((\\d+)\\.(\\d+)\\.(\\d+)?)$",
          "errorMessage": "parent bundle version must be MAJOR.MINOR.PATCH semver format"
        },
        "creator": {
          "type": "string",
          "minLength": 1,
          "errorMessage": "the parent bundle creator"
        }
      },
      "required": [
        "name",
        "version",
        "creator"
      ]
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "errorMessage": "a plain text description of the bundle"
    },
    "id": {
      "type": "string",
      "format": "uuid",
      "errorMessage": "id must be a valid UUID"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "errorMessage": "the bundle name"
    },
    "offlineCompatible": {
      "type": "boolean",
      "errorMessage": "boolean value indicating if the bundle creator has included any online dependencies"
    },
    "previewType": {
      "type": "string",
      "enum": [
        "jpg",
        "png"
      ],
      "errorMessage": "supported preview types are jpg and png"
    },
    "references": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "format": "uri",
        "errorMessage": "value must be a valid URI"
      }
    },
    "urlLocation": {
      "type": "string",
      "format": "uri",
      "errorMessage": "value must be a valid URI"
    },
    "vendors": {
      "type": "object",
      "additionalProperties": {
        "type": "object"
      }
    },
    "version": {
      "type": "string",
      "pattern": "^((\\d+)\\.(\\d+)\\.(\\d+)?)$",
      "errorMessage": "bundle version must be in MAJOR.MINOR.PATCH semver format"
    },
    "windowsTested": {
      "type": "boolean",
      "errorMessage": "boolean value indicating if the bundle creator has tested Windows compatibility"
    },
    "minimumFileMakerVersion": {
      "type": "number",
      "errorMessage": "if included the minimum FileMaker version must be a number"
    }
  },
  "required": [
    "about",
    "bookend",
    "category",
    "creator",
    "description",
    "id",
    "name",
    "offlineCompatible",
    "references",
    "version",
    "windowsTested"
  ]
}
