{
  "$id": "https://json.schemastore.org/powerpages-web-template-manifest.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "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"
        }
      ]
    }
  ],
  "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"],
  "title": "Root Schema",
  "type": "object"
}