{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/nordic-financial-news/main/json-schema/nordic-financial-news-calendar-event-summary-schema.json", "title": "CalendarEventSummary", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/nordic-financial-news-openapi.yml#/components/schemas/CalendarEventSummary", "type": "object", "required": [ "id", "title", "event_type", "status", "scheduled_at", "company_id" ], "properties": { "id": { "type": "string", "description": "Unique calendar event identifier" }, "title": { "type": "string", "description": "Event title as reported by the issuer or exchange" }, "description": { "type": [ "string", "null" ], "description": "Optional long-form description" }, "event_type": { "type": "string", "description": "The kind of calendar event", "enum": [ "earnings_report", "earnings_call", "agm", "egm", "dividend", "capital_markets_day", "trading_update", "conference_presentation", "ma_announcement", "ma_offer_deadline", "ma_completion", "listing", "delisting" ] }, "status": { "type": "string", "description": "Event lifecycle status. `scheduled` is upcoming; `published` means the event has occurred (events flip ~2 days after their date); `cancelled` means the issuer withdrew it. List endpoints return `scheduled` + `published` and exclude `cancelled` by default. Pass the `status` query parameter to filter (e.g. `status=cancelled`).", "enum": [ "scheduled", "published", "cancelled" ] }, "date_precision": { "type": "string", "description": "Granularity of `scheduled_at`. `exact` = timestamp known; `day` = date only; `month` = only the month is known. Consumers that need a date should still use `scheduled_at` (set to a representative point inside the window).", "enum": [ "exact", "day", "month" ] }, "fiscal_period": { "type": [ "string", "null" ], "description": "Fiscal period slug (required for report-type events, e.g. `q3_2026`, `fy_2025`). For a split fiscal year the year is the one in which the fiscal year ends (2025/26 → `fy_2026`)." }, "scheduled_at": { "type": "string", "format": "date-time", "description": "Scheduled date/time in UTC (ISO 8601). For the local calendar date use `local_time` instead: a day-precision event is stored at local midnight, so its UTC instant falls on the previous day for ahead-of-UTC (Nordic) zones." }, "timezone": { "type": "string", "description": "The issuer's IANA timezone, used to interpret `scheduled_at`. Resolved from the source article, falling back to the company's country zone." }, "local_time": { "type": "string", "format": "date-time", "description": "`scheduled_at` rendered in the issuer's `timezone` (ISO 8601 with offset). Use this for the correct local date/time. Its date is right even for day-precision events." }, "scheduled_at_changed_at": { "type": [ "string", "null" ], "format": "date-time", "description": "When `scheduled_at` last changed. Useful for change-feed consumers tracking date moves." }, "source_article_id": { "type": [ "string", "null" ], "description": "ID of the article the event was extracted from. `null` when the article is not retrievable (not live, or removed), or when the event was first found on a company website. If a company website later supplied the date, this still names the original article, and `source` names the website. Best-effort: on the free plan it may reference an article your plan can't fetch (premium source or outside the age window)." }, "source": { "type": [ "object", "null" ], "description": "Who published the current date. `article` is a news article or company announcement. `company_website` is the issuer's own investor relations calendar. `null` when our editors set the date.", "properties": { "type": { "type": "string", "enum": [ "article", "company_website" ] }, "name": { "type": [ "string", "null" ], "description": "The publisher: the outlet that carried the article, or the issuer's investor relations site. `null` when the article is no longer available." }, "url": { "type": [ "string", "null" ], "description": "The investor relations calendar page, for `company_website`. `null` for `article`." }, "article_id": { "type": [ "string", "null" ], "description": "ID of the article, for `article`. Matches `source_article_id`. `null` when the article is no longer available, and for `company_website`." } } }, "company_id": { "type": "string", "description": "ID of the company this event relates to" }, "company": { "type": [ "object", "null" ], "description": "The issuer this event belongs to, inlined so a calendar can be rendered without a lookup per row. `id` is the same value as `company_id`. `null` only when the issuer is not published by this API.", "properties": { "id": { "type": "string", "description": "Unique company identifier" }, "name": { "type": "string", "description": "Company name" }, "ticker": { "type": [ "string", "null" ], "description": "Primary stock ticker. `null` for an unlisted issuer." } } }, "country": { "type": [ "string", "null" ], "description": "Country ISO 3166-1 alpha-2 code" }, "dividend": { "type": [ "object", "null" ], "description": "Dividend lifecycle dates. `null` for non-dividend events. `scheduled_at` follows the priority ex-date > record-date > payment-date, whichever is explicitly stated.", "properties": { "ex_date": { "type": [ "string", "null" ], "description": "Ex-dividend date (YYYY-MM-DD). The market-event anchor: share price drops on this day." }, "record_date": { "type": [ "string", "null" ], "description": "Record date (YYYY-MM-DD). Holders of record on this date receive the dividend." }, "payment_date": { "type": [ "string", "null" ], "description": "Payment date (YYYY-MM-DD). When the cash is distributed to shareholders." }, "declaration_date": { "type": [ "string", "null" ], "description": "Declaration / announcement date (YYYY-MM-DD). Metadata only, never used as the calendar anchor." }, "kind": { "type": "string", "enum": [ "ordinary", "special" ], "description": "Tranche type. `ordinary` for the recurring/regular dividend; `special` for an extra/bonus/one-off dividend. When an issuer proposes both for the same date, they are returned as two separate events." } } }, "updated_at": { "type": "string", "format": "date-time", "description": "When the event was last updated (ISO 8601). Use with `updated_after` for polling" } } }