CompanyReport
Everything `registry-mcp` knows about one registered entity. This is the single most important shape in the project. It is returned verbatim by ``GET /v1/{country}/company/{id}`` and by the MCP tool ``lookup_company``. A registry module fills what its national register publishes and leaves the rest ``None``. Nothing here is Norway-specific; ``registries/no/`` maps Enhetsregisteret's fields onto it (see ``NORBIZ_SPEC.md`` §3).
Properties
| Name | Type | Description |
|---|---|---|
| country | string | ISO-3166-1 alpha-2, upper-case, e.g. 'NO'. |
| registry | string | Registry slug, e.g. 'brreg'. |
| id | string | Canonical national identifier, digits/letters only, no spaces or dots. |
| id_formatted | object | The identifier as a local would write it, e.g. '923 609 016'. |
| id_scheme | object | Name of the identifier scheme, e.g. 'organisasjonsnummer'. |
| euid | object | European Unique Identifier (EUID, Commission Implementing Regulation (EU) 2021/1042 Article 9), where the register publishes one, e.g. Finland's 'FIFPRO.0112038-9'. None for a register that does not ( |
| name | string | Current registered name. |
| previous_names | array | Former registered names, newest first. |
| legal_form_code | object | National legal-form code, e.g. 'AS', 'ASA', 'ENK'. |
| legal_form | object | English label, e.g. 'Private limited company'. |
| legal_form_local | object | Local label, e.g. 'Aksjeselskap'. |
| limited_liability | object | True when owners are not personally liable for debts. |
| has_board_duty | object | True when this legal form must have a registered board. |
| has_annual_accounts_duty | object | True when this legal form must file annual accounts with the state. |
| status | object | Normalised lifecycle status. |
| status_detail | object | One sentence in English explaining the status and the flag it came from. |
| is_active | boolean | Convenience mirror of `status == active`, so agents need no enum table. |
| registered_at | object | Date first entered in the central register. |
| founded_at | object | Incorporation / foundation date. |
| business_register_registered_at | object | Date entered in the commercial/business register, where that is separate. |
| bankruptcy_date | object | Date bankruptcy was opened. |
| deregistered_at | object | Date the entity was deleted from the register. |
| vat_registered | object | Registered for VAT (Norway: Merverdiavgiftsregisteret). |
| vat_registered_at | object | Date of VAT registration. |
| vat_number | object | VAT identifier if it differs from `id` (Norway: id + 'MVA'). |
| in_business_register | object | Listed in the commercial register (Norway: Foretaksregisteret). |
| registers | object | Other national sub-registers this entity is or is not in, keyed by a lower-case slug, e.g. {'stiftelsesregisteret': false}. |
| employees | object | Registered number of employees. None = not reported. |
| employees_reported | object | Whether the registry holds an employee figure at all (distinguishes 0 from unknown). |
| industry_codes | array | Industry classifications, primary first. |
| sector_code | object | Institutional sector code. |
| sector | object | Institutional sector description. |
| purpose | object | Statutory purpose / objects clause, joined into one string. |
| activity | object | Free-text description of actual activity. |
| share_capital | object | Registered share capital. |
| share_capital_currency | object | ISO-4217 code for `share_capital`. |
| business_address | object | Visiting/registered office. |
| postal_address | object | Postal address. |
| website | object | Website as registered. |
| object | Contact email as registered. | |
| phone | object | Contact phone as registered. |
| advertising_protected | object | Whether the register marks this entity as protected against direct-marketing use (Danish CVR-loven § 19 'reklamebeskyttelse', Swedish 'reklamspärr'). True: the register marks it. False: the register p |
| parent_id | object | Identifier of the parent/owning entity, if any. |
| is_subunit | boolean | True when this record is a branch/sub-unit, not a legal entity. |
| in_group | object | Part of a corporate group. |
| last_annual_accounts_year | object | Most recent financial year for which accounts were filed. |
| published_deadlines | array | Filing dates the upstream register publishes for this entity itself, carried verbatim. Empty for a register that publishes none — most of them. This is the input `Registry.deadlines(report, today)` ne |
| lei | object | This entity's Legal Entity Identifier record, from GLEIF — not a national register (D-026(c), D-045(e)). `None` unless `lei` was passed in `include=[...]` — and, even then, `None` if that fetch failed |
| parents | object | Corporate parents from GLEIF Level 2 — accounting consolidation, not shareholding (see `ParentBlock`'s own docstring). `None` unless `parents` was passed in `include=[...]` — and, even then, `None` if |
| charges | object | Registered charges (mortgages / security interests) against this entity. `None` unless `charges` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which atta |
| filings | object | What this entity has filed with its register, and when. `None` unless `filings` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which attachment and why). |
| insolvency | object | Insolvency proceedings the register publishes against this entity. `None` unless `insolvency` was passed in `include=[...]`, or that fetch failed. A *present* block with `cases: []` means the register |
| financials | object | Key figures from this entity's filed annual accounts. `None` unless `financials` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which attachment and why). |
| peppol | object | Whether this entity can be reached over the Peppol e-invoicing network. `None` unless `peppol` was passed in `include=[...]` — and, even then, `None` only if the attachment could not be built at all ( |
| confidence | number | How sure we are this record is the entity the caller meant (D-005). |
| confidence_basis | object | Why that confidence, e.g. 'exact identifier lookup'. |
| cached | boolean | True when served from our cache rather than a live fetch. |
| fetched_at | object | UTC timestamp of the live fetch this record came from. |
| source | object | Human-readable source name, e.g. 'Enhetsregisteret (brreg.no)'. |
| source_url | object | Direct URL of the upstream record, for citation. |
| license | object | Licence of the upstream data, e.g. 'NLOD 2.0'. |
| notes | array | Caveats an agent should surface to the user, plain English, one per item. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/foretak-dev/json-schema/foretak-dev-company-report-schema.json",
"title": "CompanyReport",
"description": "Everything `registry-mcp` knows about one registered entity.\n\nThis is the single most important shape in the project. It is returned\nverbatim by ``GET /v1/{country}/company/{id}`` and by the MCP tool\n``lookup_company``.\n\nA registry module fills what its national register publishes and leaves the\nrest ``None``. Nothing here is Norway-specific; ``registries/no/`` maps\nEnhetsregisteret's fields onto it (see ``NORBIZ_SPEC.md`` §3).",
"x-generated": "2026-11-08",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/foretak-dev-openapi.yml#/components/schemas/CompanyReport",
"properties": {
"country": {
"type": "string",
"title": "Country",
"description": "ISO-3166-1 alpha-2, upper-case, e.g. 'NO'."
},
"registry": {
"type": "string",
"title": "Registry",
"description": "Registry slug, e.g. 'brreg'."
},
"id": {
"type": "string",
"title": "Id",
"description": "Canonical national identifier, digits/letters only, no spaces or dots."
},
"id_formatted": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Id Formatted",
"description": "The identifier as a local would write it, e.g. '923 609 016'."
},
"id_scheme": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Id Scheme",
"description": "Name of the identifier scheme, e.g. 'organisasjonsnummer'."
},
"euid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Euid",
"description": "European Unique Identifier (EUID, Commission Implementing Regulation (EU) 2021/1042 Article 9), where the register publishes one, e.g. Finland's 'FIFPRO.0112038-9'. None for a register that does not (today: all of ours). Three traps: (1) this is not the LEI — the EUID is register-issued, mandatory in the EU and free, the LEI is voluntary, global, LOU-issued and fee-bearing; an entity may carry both, one or neither. (2) 'EUid' also names the EU Digital Identity wallet, a personal credential unrelated to company registers. (3) it is not stable across a register reorganisation, since it encodes the register of origin (e.g. France's RNE replacing the RCS in 2023). Carried verbatim from the register; never constructed from parts."
},
"name": {
"type": "string",
"title": "Name",
"description": "Current registered name."
},
"previous_names": {
"items": {
"type": "string"
},
"type": "array",
"title": "Previous Names",
"description": "Former registered names, newest first."
},
"legal_form_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Form Code",
"description": "National legal-form code, e.g. 'AS', 'ASA', 'ENK'."
},
"legal_form": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Form",
"description": "English label, e.g. 'Private limited company'."
},
"legal_form_local": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Form Local",
"description": "Local label, e.g. 'Aksjeselskap'."
},
"limited_liability": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Limited Liability",
"description": "True when owners are not personally liable for debts."
},
"has_board_duty": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Has Board Duty",
"description": "True when this legal form must have a registered board."
},
"has_annual_accounts_duty": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Has Annual Accounts Duty",
"description": "True when this legal form must file annual accounts with the state."
},
"status": {
"$ref": "#/$defs/CompanyStatus",
"description": "Normalised lifecycle status.",
"default": "unknown"
},
"status_detail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status Detail",
"description": "One sentence in English explaining the status and the flag it came from."
},
"is_active": {
"type": "boolean",
"title": "Is Active",
"description": "Convenience mirror of `status == active`, so agents need no enum table.",
"default": false
},
"registered_at": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registered At",
"description": "Date first entered in the central register."
},
"founded_at": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Founded At",
"description": "Incorporation / foundation date."
},
"business_register_registered_at": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Business Register Registered At",
"description": "Date entered in the commercial/business register, where that is separate."
},
"bankruptcy_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Bankruptcy Date",
"description": "Date bankruptcy was opened."
},
"deregistered_at": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Deregistered At",
"description": "Date the entity was deleted from the register."
},
"vat_registered": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Vat Registered",
"description": "Registered for VAT (Norway: Merverdiavgiftsregisteret)."
},
"vat_registered_at": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Vat Registered At",
"description": "Date of VAT registration."
},
"vat_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Vat Number",
"description": "VAT identifier if it differs from `id` (Norway: id + 'MVA')."
},
"in_business_register": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "In Business Register",
"description": "Listed in the commercial register (Norway: Foretaksregisteret)."
},
"registers": {
"additionalProperties": {
"type": "boolean"
},
"type": "object",
"title": "Registers",
"description": "Other national sub-registers this entity is or is not in, keyed by a lower-case slug, e.g. {'stiftelsesregisteret': false}."
},
"employees": {
"anyOf": [
{
"type": "integer",
"minimum": 0.0
},
{
"type": "null"
}
],
"title": "Employees",
"description": "Registered number of employees. None = not reported."
},
"employees_reported": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Employees Reported",
"description": "Whether the registry holds an employee figure at all (distinguishes 0 from unknown)."
},
"industry_codes": {
"items": {
"$ref": "#/$defs/IndustryCode"
},
"type": "array",
"title": "Industry Codes",
"description": "Industry classifications, primary first."
},
"sector_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sector Code",
"description": "Institutional sector code."
},
"sector": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sector",
"description": "Institutional sector description."
},
"purpose": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Purpose",
"description": "Statutory purpose / objects clause, joined into one string."
},
"activity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Activity",
"description": "Free-text description of actual activity."
},
"share_capital": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Share Capital",
"description": "Registered share capital."
},
"share_capital_currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Share Capital Currency",
"description": "ISO-4217 code for `share_capital`."
},
"business_address": {
"anyOf": [
{
"$ref": "#/$defs/Address"
},
{
"type": "null"
}
],
"description": "Visiting/registered office."
},
"postal_address": {
"anyOf": [
{
"$ref": "#/$defs/Address"
},
{
"type": "null"
}
],
"description": "Postal address."
},
"website": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Website",
"description": "Website as registered."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Email",
"description": "Contact email as registered."
},
"phone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Phone",
"description": "Contact phone as registered."
},
"advertising_protected": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Advertising Protected",
"description": "Whether the register marks this entity as protected against direct-marketing use (Danish CVR-loven § 19 'reklamebeskyttelse', Swedish 'reklamspärr'). True: the register marks it. False: the register publishes such a flag for this entity and it is not set. None: this register publishes no such flag at all — the default, and it must never default to False, since False asserts a claim about a register that made none. When True, a country module must also append a `notes` entry containing the phrase 'direct marketing' (case-insensitive) stating the protection — that phrase is the contract this model enforces (see the validator below) — because the marking is a legal condition of passing this record's contact details on, and it must travel with them."
},
"parent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Parent Id",
"description": "Identifier of the parent/owning entity, if any."
},
"is_subunit": {
"type": "boolean",
"title": "Is Subunit",
"description": "True when this record is a branch/sub-unit, not a legal entity.",
"default": false
},
"in_group": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "In Group",
"description": "Part of a corporate group."
},
"last_annual_accounts_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Last Annual Accounts Year",
"description": "Most recent financial year for which accounts were filed."
},
"published_deadlines": {
"items": {
"$ref": "#/$defs/PublishedDeadline"
},
"type": "array",
"title": "Published Deadlines",
"description": "Filing dates the upstream register publishes for this entity itself, carried verbatim. Empty for a register that publishes none — most of them. This is the input `Registry.deadlines(report, today)` needs to prefer the register's own figure over any calculation (DECISIONS.md D-018), and it is what keeps that method the pure function of (report, today) its contract promises."
},
"lei": {
"anyOf": [
{
"$ref": "#/$defs/LeiRecord"
},
{
"type": "null"
}
],
"description": "This entity's Legal Entity Identifier record, from GLEIF — not a national register (D-026(c), D-045(e)). `None` unless `lei` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for why). A country that declares this attachment (`CountryInfo.supported_includes`) returns a *present* block even for an entity GLEIF holds no LEI for: `LeiRecord.lei` is `None` inside it, which is a real answer, never the same as this field being absent (D-011). Declared by default by every country whose identifiers cannot be a natural person's (`Registry.universal_includes`) — Sweden does not declare it, because GLEIF is a third-party host queried by identifier in a URL query string."
},
"parents": {
"anyOf": [
{
"$ref": "#/$defs/ParentBlock"
},
{
"type": "null"
}
],
"description": "Corporate parents from GLEIF Level 2 — accounting consolidation, not shareholding (see `ParentBlock`'s own docstring). `None` unless `parents` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for why). A country that declares this attachment returns a *present* block even for an entity GLEIF holds no LEI for at all, with `direct` and `ultimate` both `None`: GLEIF cannot hold Level 2 for an entity it has no Level 1 for, and that is the answer, not an absence (D-011). Declared by default by every country whose identifiers cannot be a natural person's (`Registry.universal_includes`, alongside `lei`) — Sweden does not declare it, for the same reason it does not declare `lei`."
},
"charges": {
"anyOf": [
{
"$ref": "#/$defs/ChargeBlock"
},
{
"type": "null"
}
],
"description": "Registered charges (mortgages / security interests) against this entity. `None` unless `charges` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which attachment and why). A country that declares this attachment (`CountryInfo.supported_includes`) returns a *present* block with an empty `charges` list for an entity that genuinely has none — the two states never collapse into each other (D-011, D-042(d))."
},
"filings": {
"anyOf": [
{
"$ref": "#/$defs/FilingHistory"
},
{
"type": "null"
}
],
"description": "What this entity has filed with its register, and when. `None` unless `filings` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which attachment and why). Scope differs by country because each register publishes a different subset, and the block's own `notes` says which: Companies House the whole filing history, Bolagsverket the filed annual reports, Regnskapsregisteret the filed annual accounts. A *present* block with `documents: []` means the register lists none — never the same as absent (D-011, D-042(d))."
},
"insolvency": {
"anyOf": [
{
"$ref": "#/$defs/InsolvencyBlock"
},
{
"type": "null"
}
],
"description": "Insolvency proceedings the register publishes against this entity. `None` unless `insolvency` was passed in `include=[...]`, or that fetch failed. A *present* block with `cases: []` means the register publishes no case, which for Companies House is the normal answer for a solvent company — and is not evidence the entity exists, since that register answers the same way for a number never issued. Read `InsolvencyCase.is_liquidation` with its own caveat: a members' voluntary liquidation is a solvent wind-up."
},
"financials": {
"anyOf": [
{
"$ref": "#/$defs/FinancialSummary"
},
{
"type": "null"
}
],
"description": "Key figures from this entity's filed annual accounts. `None` unless `financials` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which attachment and why). Norway returns a *present* block with `periods: []` for an entity Regnskapsregisteret holds no filed accounts for. Sweden instead returns *no block at all*, plus a report-level `notes` sentence naming the reason, because Bolagsverket's digital annual-report channel holds nothing for that entity — a fact about the company, not about the country (D-042(d)(3), `tasks/T55.md`). Norway and Sweden today: Norway's arrive in the register's own open key-figures feed, Sweden's are read out of the entity's own filed annual report. Britain does not declare this attachment because the accounts of the companies that matter are filed on paper or as PDF ahead of the 1 April 2028 machine-readable mandate — a fact about the register's own population, not a parser this project has declined to write (D-043(i), D-047(f))."
},
"peppol": {
"anyOf": [
{
"$ref": "#/$defs/PeppolParticipant"
},
{
"type": "null"
}
],
"description": "Whether this entity can be reached over the Peppol e-invoicing network. `None` unless `peppol` was passed in `include=[...]` — and, even then, `None` only if the attachment could not be built at all (see `notes` for why). A country that declares this attachment returns a **present** block even when the network could not be reached: `PeppolParticipant.registered` carries the three-state answer (`true`/`false`/`null`) and `PeppolParticipant.participant_id` is always populated, because that is the key a caller needs to ask elsewhere regardless (D-011, D-029(c)). Norway only, today (D-046(h)): the participant identifier needs a country's own ISO 6523 ICD and the answer's provenance is a different SMP per participant, neither of which generalises to `Registry.universal_includes` yet."
},
"confidence": {
"type": "number",
"maximum": 1.0,
"minimum": 0.0,
"title": "Confidence",
"description": "How sure we are this record is the entity the caller meant (D-005).",
"default": 1.0
},
"confidence_basis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Confidence Basis",
"description": "Why that confidence, e.g. 'exact identifier lookup'."
},
"cached": {
"type": "boolean",
"title": "Cached",
"description": "True when served from our cache rather than a live fetch.",
"default": false
},
"fetched_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Fetched At",
"description": "UTC timestamp of the live fetch this record came from."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source",
"description": "Human-readable source name, e.g. 'Enhetsregisteret (brreg.no)'."
},
"source_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source Url",
"description": "Direct URL of the upstream record, for citation."
},
"license": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "License",
"description": "Licence of the upstream data, e.g. 'NLOD 2.0'."
},
"notes": {
"items": {
"type": "string"
},
"type": "array",
"title": "Notes",
"description": "Caveats an agent should surface to the user, plain English, one per item."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"country",
"registry",
"id",
"name"
],
"$defs": {
"Address": {
"properties": {
"lines": {
"items": {
"type": "string"
},
"type": "array",
"title": "Lines",
"description": "Street or PO-box lines exactly as the registry supplies them."
},
"postal_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postal Code",
"description": "Postal / ZIP code."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"description": "Post town."
},
"municipality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Municipality",
"description": "Municipality name."
},
"municipality_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Municipality Code",
"description": "National municipality code, if the registry has one."
},
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country Code",
"description": "ISO-3166-1 alpha-2 country code of the address itself."
},
"country_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country Name",
"description": "Country name as registered."
}
},
"additionalProperties": false,
"type": "object",
"title": "Address",
"description": "A postal or visiting address, flattened to something an LLM can read.\n\n``lines`` keeps the registry's own street/box lines in order; the rest are\nparsed components where the registry provides them."
},
"BalanceSheet": {
"properties": {
"fixed_assets": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Fixed Assets",
"description": "Fixed assets at period end (`sumAnleggsmidler`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f))."
},
"current_assets": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Current Assets",
"description": "Current assets at period end (`sumOmloepsmidler`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f))."
},
"total_assets": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Total Assets",
"description": "Total assets at period end (`sumEiendeler`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f)). One of only three fields present on every one of 573 observed filings. Compare with `total_equity_and_liabilities` (DECISIONS.md D-043(e)): the two disagree on 27 of 358 filings, and this block's own `notes` names the gap when they do; neither figure is edited, reconciled or dropped."
},
"paid_in_equity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Paid In Equity",
"description": "Paid-in equity at period end (`sumInnskuttEgenkaptial` — the register's own spelling, not a typo in this field's description). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f))."
},
"retained_equity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Retained Equity",
"description": "Retained equity at period end (`sumOpptjentEgenkapital`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f))."
},
"equity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Equity",
"description": "Total equity at period end (`sumEgenkapital`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f))."
},
"non_current_liabilities": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Non Current Liabilities",
"description": "Non-current liabilities at period end (`sumLangsiktigGjeld`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f))."
},
"current_liabilities": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Current Liabilities",
"description": "Current liabilities at period end (`sumKortsiktigGjeld`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f))."
},
"liabilities": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Liabilities",
"description": "Total liabilities at period end (`sumGjeld`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f)). Carried exactly as the register states it, including negative: DECISIONS.md D-043(e) records real filings with a negative `sumGjeld` (e.g. -108,837), which is a filing the register relayed without validating, not a company fact this field corrects."
},
"total_equity_and_liabilities": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Total Equity And Liabilities",
"description": "Total equity and liabilities at period end (`sumEgenkapitalGjeld`). `None` means the register did not publish this line for this filing — never zero. The register is inconsistent about when it states an explicit zero for an absent figure versus omitting the line entirely, so this field's absence is not evidence the true value is zero, and a stated zero is not evidence the register omits the line elsewhere (DECISIONS.md D-043(f)). One of only three fields present on every one of 573 observed filings. See `total_assets` for the reconciliation note the two together can trigger."
}
},
"additionalProperties": false,
"type": "object",
"title": "BalanceSheet",
"description": "Stocks at the period's last instant — Regnskapsregisteret's\n``eiendeler`` and ``egenkapitalGjeld``, the other of the two sub-objects on\na :class:`FinancialPeriod` (D-043(c)). See :class:`IncomeStatement` for why\nthe two are separate models rather than one flat one.\n\nEvery field is `None` or a whole-unit figure in :attr:`FinancialPeriod.currency`\n— never both `None` and zero at once, and never inferred from the other\n(D-043(f)). **No field here is a ratio or a verdict** — an equity ratio, a\ncurrent ratio and every similar derived figure are declined by D-043(e): the\nregister's own `total_assets` and `total_equity_and_liabilities` disagree\non 27 of 358 filings (7.5%), so a ratio built from this block would be a\nratio of two numbers the register itself does not vouch for jointly. The\none comparison this project makes is a `notes` sentence, never a
# --- truncated at 32 KB (117 KB total) ---
# Full source: https://artifacts.apis.io/foretak-dev/json-schema/foretak-dev-company-report-schema.json
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
curl "https://apis.io/api/v1/json-schemas/foretak-dev-company-report"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.