Nordic Financial News · Schema
ArticleDetail
CompanyFinancial NewsNordicMarket DataFinancial CalendarMCPNews API
JSON Schema
{
"$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-article-detail-schema.json",
"title": "ArticleDetail",
"x-generated": "2026-10-09",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/nordic-financial-news-openapi.yml#/components/schemas/ArticleDetail",
"allOf": [
{
"$ref": "#/$defs/ArticleSummary"
},
{
"type": "object",
"properties": {
"source_title": {
"type": "string",
"description": "Original article title in source language"
},
"summary": {
"type": "string",
"description": "AI-generated English summary of the article: a machine translation and paraphrase of the source text, not verbatim."
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "When the article was last updated (ISO 8601)"
},
"story_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "IDs of published stories covering this article, if any"
},
"companies": {
"type": "array",
"description": "Companies mentioned in this article, primary company first",
"items": {
"type": "object",
"required": [
"id",
"name",
"is_primary",
"association_tier"
],
"properties": {
"id": {
"type": "string",
"description": "Unique company identifier"
},
"name": {
"type": "string",
"description": "Company name"
},
"ticker": {
"type": [
"string",
"null"
],
"description": "Primary stock ticker"
},
"is_primary": {
"type": "boolean",
"description": "Whether this company is the primary subject of the article"
},
"association_tier": {
"type": "string",
"enum": [
"principal",
"peripheral"
],
"description": "How the company relates to the article. `principal` (subject, partner, investor, competitor) is the default set; `peripheral` (source, advisor, passing mention) appears only when `include_peripheral=true`. Always present."
}
}
}
},
"key_points": {
"type": "array",
"items": {
"type": "string"
},
"description": "Key points from the article. Machine-generated English paraphrases of statements in the source article, not verbatim quotations."
}
}
}
],
"$defs": {
"ArticleSummary": {
"type": "object",
"required": [
"id",
"title",
"published_at",
"updated_at",
"article_url",
"content_type",
"category",
"source",
"company_ids",
"country"
],
"properties": {
"id": {
"type": "string",
"description": "Unique article identifier"
},
"title": {
"type": "string",
"description": "Article title in English. Machine-translated when the source article is not in English."
},
"article_url": {
"type": "string",
"description": "Link to the original article"
},
"content_type": {
"type": "string",
"description": "Type of article content",
"enum": [
"news",
"analysis",
"press_release",
"market_commentary",
"market_news",
"trading_halt",
"trading_event",
"other"
]
},
"published_at": {
"type": "string",
"format": "date-time",
"description": "When the article was published by its source (ISO 8601). This is editorial time, not the time the article reached this API. Use it to filter by when news happened, never to track what is new to you."
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "When this record last changed (ISO 8601). This is the clock incremental sync runs on. It only ever moves forward, unlike published_at. To sync: pass your last completed sync time as `updated_after`, drain every page via `pagination.next_cursor`, and only then advance your stored timestamp."
},
"category": {
"type": "object",
"description": "Article category",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"source": {
"type": "object",
"description": "The news source that published this article",
"properties": {
"id": {
"type": "string",
"description": "Unique source identifier"
},
"name": {
"type": "string"
},
"domain": {
"type": "string"
},
"source_type": {
"type": "string",
"enum": [
"news_publication",
"wire_service",
"press_release",
"government",
"trade_publication",
"blog",
"stock_exchange",
"research"
]
}
}
},
"company_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "IDs of companies mentioned in the article"
},
"country": {
"type": [
"string",
"null"
],
"description": "Country code (ISO 3166-1 alpha-2)"
},
"event_id": {
"type": [
"string",
"null"
],
"description": "ID of the event this article belongs to. Null when the article has not been assigned to an event yet. An event that has since been merged or removed still answers `GET /events/{id}` with a tombstone rather than a 404."
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/nordic-financial-news-article-detail"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.