{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://socialcrawl.dev/schemas/news-article.json",
  "title": "SocialCrawl News article",
  "description": "Canonical unified news article object returned by every SocialCrawl endpoint with the NewsArticleList archetype. Nullability is expressed via JSON Schema 2020-12 type arrays. Generated from the Zod schema in packages/social-api/src/schemas/canonical.ts.",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Stable article ID (hash of the url)"
    },
    "title": {
      "type": [
        "string",
        "null"
      ],
      "description": "Article headline"
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Direct URL to the article"
    },
    "source": {
      "type": [
        "string",
        "null"
      ],
      "description": "Publishing outlet name (falls back to the domain)"
    },
    "domain": {
      "type": [
        "string",
        "null"
      ],
      "description": "Host domain of the article"
    },
    "snippet": {
      "type": [
        "string",
        "null"
      ],
      "description": "Article excerpt (news_search items only; null on top_stories)"
    },
    "image_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Thumbnail image URL"
    },
    "published_at": {
      "type": [
        "string",
        "integer",
        "null"
      ],
      "description": "Absolute UTC publish time"
    },
    "rank": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Result rank (news_search items only; null on top_stories)"
    },
    "placement": {
      "type": [
        "string",
        "null"
      ],
      "description": "Source list: \"news_search\" or \"top_stories\""
    }
  },
  "additionalProperties": true
}
