{
  "id": "metadata.json",
  "$schema": "http://json-schema.org/draft-04/schema",
  "title": "The Grid metadata definition",
  "description": "",
  "type": [
    "object"
  ],
  "properties": {
    "@type": {
      "name": "@type",
      "type": "string",
      "description": "Schema.org type the item or block represents",
      "example": "Article"
    },
    "isBasedOnUrl": {
      "name": "isBasedOnUrl",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "format": "uri"
        }
      ],
      "description": "Source URL for the item or block",
      "example": "http://www.fastcolabs.com/3016289/how-an-arcane-coding-method-from-1970s-banking-software-could-save-the-sanity-of-web-develop"
    },
    "title": {
      "name": "title",
      "type": "string",
      "description": "Textual title for the entry"
    },
    "description": {
      "name": "description",
      "type": "string",
      "description": "Textual title for the entry"
    },
    "permalinkUrl": {
      "name": "permalinkUrl",
      "type": "string",
      "description": "Custom permalink path for the item",
      "example": "blog/my-cool-article.html"
    },
    "inLanguage": {
      "name": "inLanguage",
      "description": "Content language",
      "example": "en",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "minLength": 2
        }
      ]
    },
    "starred": {
      "type": "boolean",
      "description": "Indicates if an item should be shown on feed or not",
      "example": false
    },
    "emphasis": {
      "type": "number",
      "description": "How much emphasis an item has in some context. For example, we can say if an image has low emphasis (thumbnail, icon) or high emphasis level (a.k.a. \"Please, show this image bigger\"). Helps to reproduce a client - designer feedback cycle: show the client a layout and he can say if designer should increase emphasis or decrease it. That is why emphasis can be a negative value, in a range from -1.0 to 1.0.",
      "example": -1,
      "minimum": -1,
      "maximum": 1
    },
    "keywords": {
      "name": "keywords",
      "description": "Tags describing the content",
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string"
      },
      "example": [
        "design",
        "blogs"
      ]
    },
    "publisher": {
      "name": "publisher",
      "description": "Original publisher of the item or block",
      "type": "object",
      "properties": {
        "name": {
          "name": "name",
          "type": "string",
          "description": "Human-readable publisher name",
          "example": "Fast Company"
        },
        "domain": {
          "name": "domain",
          "description": "The publisher's domain name",
          "example": "www.fastcompany.com",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "base.json#/definitions/hostname"
            }
          ]
        },
        "url": {
          "name": "url",
          "description": "URL of the publisher's main page",
          "example": "http://www.fastcompany.com/",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "base.json#/definitions/url"
            }
          ]
        },
        "favicon": {
          "name": "favicon",
          "description": "URL of the publisher's favicon",
          "example": "http://www.fastcompany.com/favicon.ico",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "base.json#/definitions/url"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "via": {
      "name": "via",
      "description": "Publisher the item was discovered via",
      "type": "object",
      "properties": {
        "name": {
          "name": "name",
          "type": "string",
          "description": "Human-readable publisher name",
          "example": "Bergie Today"
        },
        "domain": {
          "name": "domain",
          "description": "The publisher's domain name",
          "example": "bergie.today",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "base.json#/definitions/hostname"
            }
          ]
        },
        "url": {
          "name": "url",
          "description": "Permalink URL the item was on or URL of the publisher's main page",
          "example": "https://bergie.today/",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "base.json#/definitions/url"
            }
          ]
        },
        "favicon": {
          "name": "favicon",
          "description": "URL of the publisher's favicon",
          "example": "https://bergie.today/favicon.ico",
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "base.json#/definitions/url"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "author": {
      "name": "author",
      "type": "array",
      "description": "Authors of the item or block",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "name": "name",
            "type": "string",
            "example": "Henri Bergius"
          },
          "url": {
            "description": "Author URL",
            "example": "http://bergie.iki.fi",
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "base.json#/definitions/url"
              }
            ]
          },
          "email": {
            "description": "Author email address",
            "example": "bergie@iki.fi",
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "base.json#/definitions/email"
              }
            ]
          },
          "avatar": {
            "description": "Author avatar image",
            "$ref": "media.json#/definitions/cover"
          }
        },
        "additionalProperties": false
      }
    },
    "coverPrefs": {
      "name": "coverPrefs",
      "description": "Image processing to allow on the cover. All default true.",
      "type": "object",
      "properties": {
        "filter": {
          "name": "filter",
          "type": "boolean",
          "description": "Allow image filtering",
          "example": true
        },
        "crop": {
          "name": "crop",
          "type": "boolean",
          "description": "Allow image cropping",
          "example": true
        },
        "overlay": {
          "name": "overlay",
          "type": "boolean",
          "description": "Allow image overlaying",
          "example": true
        }
      }
    },
    "geo": {
      "$ref": "base.json#/definitions/geo"
    },
    "address": {
      "name": "address",
      "type": "string",
      "description": "Location address",
      "example": "4242 Blue Street, San Francisco, CA"
    },
    "hasMap": {
      "$ref": "base.json#/definitions/url",
      "name": "hasMap",
      "description": "Map URL"
    },
    "dateCreated": {
      "description": "When the entity was created",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "format": "date-time"
        }
      ]
    },
    "dateModified": {
      "description": "When the entity was last modified",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "format": "date-time"
        }
      ]
    },
    "datePublished": {
      "description": "When the entity was last published",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "format": "date-time"
        }
      ]
    },
    "datePublishedOriginal": {
      "description": "When the entity was originally published",
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "format": "date-time"
        }
      ]
    }
  },
  "additionalProperties": true
}