{
  "type": "object",
  "defaultProperties": [
    "name",
    "type",
    "url"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name",
      "description": "The name of the item."
    },
    "description": {
      "type": "string",
      "title": "Description",
      "description": "The description of the item."
    },
    "info": {
      "type": "array",
      "title": "Info",
      "description": "The array of section titles and contents for display in the layer info panel.\nIn future this may replace 'description' above - this list should not contain\nsections named 'description' or 'Description' if the 'description' property\nis also set as both will be displayed.\nThe object is of the form {name:string, content:string}.\nContent will be rendered as Markdown with HTML.",
      "format": "tabs",
      "items": {
        "type": "object",
        "title": "Info",
        "headerTemplate": "{{ self.name }}",
        "defaultProperties": [
          "name",
          "content"
        ],
        "required": [
          "name",
          "content"
        ],
        "additionalProperties": false,
        "properties": {
          "name": {
            "title": "Section name",
            "type": "string"
          },
          "content": {
            "title": "Content",
            "type": "string",
            "format": "textarea",
            "options": {
              "expand_height": true
            }
          }
        }
      }
    },
    "infoSectionOrder": {
      "type": "array",
      "title": "Info section order",
      "description": "The array of section titles definining the display order of info sections.  If this property\nis not defined, CatalogItemInfoViewModel.infoSectionOrder is used.",
      "format": "tabs",
      "items": {
        "type": "string"
      }
    },
    "isUserSupplied": {
      "type": "boolean",
      "title": "Is user supplied",
      "description": "A value indicating whether this member was supplied by the user rather than loaded from one of the\nTerria's initSources.  User-supplied members must be serialized completely when, for example,\nserializing enabled members for sharing.",
      "format": "checkbox"
    },
    "isPromoted": {
      "type": "boolean",
      "title": "Is promoted",
      "description": "A value indicating whether this item is kept above other non-promoted items.",
      "format": "checkbox"
    },
    "isHidden": {
      "type": "boolean",
      "title": "Is hidden",
      "description": "A value indicating whether this item is hidden from the catalog.  This\nproperty is observable.",
      "format": "checkbox"
    },
    "initialMessage": {
      "type": "object",
      "title": "Initial message",
      "description": "A message object that is presented to the user when an item or group is initially clicked\nThe object is of the form {title:string, content:string, key: string}."
    },
    "cacheDuration": {
      "type": "string",
      "title": "Cache duration",
      "description": "The cache duration to use for proxied URLs for this catalog member.  If undefined, proxied URLs are effectively cachable\nforever.  The duration is expressed as a Varnish-like duration string, such as '1d' (one day) or '10000s' (ten thousand seconds)."
    },
    "forceProxy": {
      "type": "boolean",
      "title": "Force proxy",
      "description": "Gets or sets whether or not this member should be forced to use a proxy.\nThis property is not observable.",
      "format": "checkbox"
    },
    "customProperties": {
      "type": "object",
      "title": "Custom properties",
      "description": "The dictionary of custom item properties."
    },
    "id": {
      "type": "string",
      "title": "ID",
      "description": "A unique id for this member, that is stable across renames and moves."
    },
    "shareKeys": {
      "type": "array",
      "title": "Share keys",
      "description": "An array of all possible keys that can be used to match to this catalog member when specified in a share link -\nused for maintaining backwards compatibility when adding or changing CatalogMember's id.",
      "format": "tabs",
      "items": {
        "type": "string"
      }
    }
  }
}