{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/powerpages-web-template-manifest/latest.json",
  "title": "Root Schema",
  "x-lintel": {
    "source": "https://www.schemastore.org/powerpages-web-template-manifest.json",
    "sourceSha256": "1b713f2e0580133178a495ce9b30aa9f0f3005ab55a0c7706d9f929aa338974f",
    "fileMatch": [
      ".powerpages-web-template-manifest"
    ]
  },
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "title": "type",
      "description": "The web template type. Use 'functional' for custom site components and 'layout' for custom layouts.",
      "enum": [
        "functional",
        "layout"
      ]
    },
    "displayName": {
      "type": "string",
      "description": "The display name of the web template",
      "examples": [
        "Card Template"
      ]
    },
    "description": {
      "type": "string",
      "description": "The description of the web template",
      "examples": [
        "renders the gallery card"
      ]
    },
    "tables": {
      "type": "array",
      "description": "An array of table logical names that are used in the web template",
      "items": {
        "type": "string"
      }
    },
    "params": {
      "type": "array",
      "title": "params",
      "description": "The editable properties of the web template. These will be customizable in Studio",
      "items": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "title": "id",
            "description": "The id of the param. This correlates with the liquid tag's key for this property",
            "examples": [
              "name",
              "count",
              "specifiedTable"
            ]
          },
          "displayName": {
            "type": "string",
            "description": "The label displayed when editing a property in Studio. If no displayName is given, the label will fallback on the id",
            "examples": [
              "Display name",
              "Items per row",
              "Selected table"
            ]
          },
          "description": {
            "type": "string",
            "description": "The description to be displayed in the tooltip when editing a property in Studio. If no description is given, no tooltip will be displayed",
            "examples": [
              "Main heading of the web template",
              "No of items to be displayed per row"
            ]
          },
          "type": {
            "type": "string",
            "description": "Used to specify a property that correlates to a table's logical name",
            "enum": [
              "table"
            ]
          }
        },
        "examples": [
          {
            "id": "name",
            "displayName": "Display name",
            "description": "Main heading of the web template"
          },
          {
            "id": "count",
            "displayName": "Items per row"
          },
          {
            "id": "specifiedTable",
            "type": "table",
            "displayName": "Select table"
          }
        ]
      },
      "examples": [
        [
          {
            "id": "name",
            "displayName": "Display name",
            "description": "Main heading of the web template"
          },
          {
            "id": "count",
            "displayName": "Items per row",
            "description": "No of items to be displayed per row"
          },
          {
            "id": "specifiedTable",
            "type": "table",
            "displayName": "Select table"
          }
        ]
      ]
    }
  },
  "required": [
    "type"
  ],
  "additionalProperties": false,
  "examples": [
    {
      "type": "functional",
      "displayName": "Card Template",
      "description": "renders the gallery card",
      "params": [
        {
          "id": "name",
          "displayName": "Display name",
          "description": "Main heading of the web template"
        },
        {
          "id": "count",
          "displayName": "Items per row",
          "description": "No of items to be displayed per row"
        },
        {
          "id": "paramTable",
          "type": "table",
          "displayName": "Select table"
        }
      ]
    }
  ]
}
