{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://api-evangelist.github.io/bing-news/json-schema/news-article.json",
  "title": "NewsArticle",
  "description": "Defines a news article returned by the Bing News Search API.",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the article. Use this along with url to create a hyperlink."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "A URL to the news article."
    },
    "description": {
      "type": "string",
      "description": "A short description of the news article."
    },
    "datePublished": {
      "type": "string",
      "description": "The date and time that Bing discovered the article in YYYY-MM-DDTHH:MM:SS format.",
      "example": "2024-01-15T14:30:00"
    },
    "category": {
      "type": "string",
      "description": "The news category that the article belongs to. For example, Sports.",
      "examples": ["Sports", "Business", "Entertainment", "Health", "ScienceAndTechnology", "Politics", "World"]
    },
    "headline": {
      "type": "boolean",
      "description": "If true, the article is a headline. Included only for news category requests without a specific category specified."
    },
    "id": {
      "type": "string",
      "description": "An ID that uniquely identifies this article in the list of articles."
    },
    "image": {
      "type": "object",
      "description": "An image related to the news article. Contains only the thumbnail field in this context.",
      "properties": {
        "thumbnail": {
          "type": "object",
          "description": "A link to a thumbnail of the image.",
          "properties": {
            "contentUrl": {
              "type": "string",
              "format": "uri",
              "description": "The URL to the thumbnail image."
            },
            "height": {
              "type": "integer",
              "description": "The height of the thumbnail in pixels."
            },
            "width": {
              "type": "integer",
              "description": "The width of the thumbnail in pixels."
            }
          }
        }
      }
    },
    "provider": {
      "type": "array",
      "description": "A list of providers that ran the article.",
      "items": {
        "type": "object",
        "properties": {
          "_type": {
            "type": "string",
            "description": "Type hint."
          },
          "name": {
            "type": "string",
            "description": "The name of the news provider."
          }
        },
        "required": ["name"]
      }
    },
    "mentions": {
      "type": "array",
      "description": "A list of entities (places or persons) mentioned in the article.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the entity mentioned in the article."
          }
        },
        "required": ["name"]
      }
    },
    "clusteredArticles": {
      "type": "array",
      "description": "A list of related news articles.",
      "items": {
        "$ref": "#"
      }
    },
    "video": {
      "type": "object",
      "description": "A video that's related to the news article.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the video."
        },
        "thumbnailUrl": {
          "type": "string",
          "format": "uri",
          "description": "A URL to a thumbnail image of the video."
        },
        "embedHtml": {
          "type": "string",
          "description": "An iFrame that lets you embed and run the video in your webpage."
        },
        "motionThumbnailUrl": {
          "type": "string",
          "format": "uri",
          "description": "A URL to an animated thumbnail that shows a preview of the video."
        },
        "allowHttpsEmbed": {
          "type": "boolean",
          "description": "Whether you may embed the video on HTTPS pages."
        },
        "thumbnail": {
          "type": "object",
          "description": "The width and height of the thumbnail image.",
          "properties": {
            "height": {
              "type": "integer",
              "description": "The height in pixels."
            },
            "width": {
              "type": "integer",
              "description": "The width in pixels."
            }
          }
        }
      }
    },
    "contractualRules": {
      "type": "array",
      "description": "A list of rules that you must adhere to if you display the article. Only articles returned by Web Search API include contractual rules.",
      "items": {
        "type": "object"
      }
    }
  },
  "required": ["name", "url"]
}
