Eckari · Schema

company_uk_filings_output

Contains public sector information licensed under the Open Government Licence v3.0 (Companies House).

Company RecordsLegal EntitiesDomain DataWeatherLocationReal-World Data

Properties

Name Type Description
company_number string
query object The resolved inputs, echoed because page.total depends on the category filter and the item shape depends on detail.
filing_history_status stringnull The register's own statement about this company's filing history, passed through unchanged (e.g. filing-history-available). It qualifies a short or empty list: without it, 'no filings match this filte
is_filing_history_available booleannull Derived; true when filing_history_status is exactly filing-history-available (the only value the register enumerates), false when it reports some other status, and null when it omits the member — the
items array The register's own filing order, passed through unchanged — reverse chronological (most recent first) in practice. Eckari applies no sort of its own and guarantees no ordering; sort on date yourself i
page object
View JSON Schema on GitHub

JSON Schema

eckari-com-company-uk-filings-output-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/eckari-com/json-schema/eckari-com-company-uk-filings-output-schema.json",
  "title": "company_uk_filings_output",
  "description": "Contains public sector information licensed under the Open Government Licence v3.0 (Companies House).",
  "x-generated": "2026-11-06",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/eckari-com-openapi.json#/components/schemas/company_uk_filings_output",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "company_number",
    "query",
    "filing_history_status",
    "is_filing_history_available",
    "items",
    "page"
  ],
  "properties": {
    "company_number": {
      "type": "string"
    },
    "query": {
      "type": "object",
      "description": "The resolved inputs, echoed because page.total depends on the category filter and the item shape depends on detail.",
      "additionalProperties": false,
      "required": [
        "category",
        "detail"
      ],
      "properties": {
        "category": {
          "type": [
            "string",
            "null"
          ],
          "description": "The category filter actually applied (the normalised input value), or null when none was applied."
        },
        "detail": {
          "type": "string",
          "enum": [
            "summary",
            "full"
          ]
        }
      }
    },
    "filing_history_status": {
      "type": [
        "string",
        "null"
      ],
      "description": "The register's own statement about this company's filing history, passed through unchanged (e.g. filing-history-available). It qualifies a short or empty list: without it, 'no filings match this filter' and 'the register holds no filing history for this company' look identical. Null when the register omits it."
    },
    "is_filing_history_available": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Derived; true when filing_history_status is exactly filing-history-available (the only value the register enumerates), false when it reports some other status, and null when it omits the member — the register did not say, which is never reported as 'not available'."
    },
    "items": {
      "type": "array",
      "description": "The register's own filing order, passed through unchanged — reverse chronological (most recent first) in practice. Eckari applies no sort of its own and guarantees no ordering; sort on date yourself if your logic depends on it.",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "transaction_id",
          "date",
          "category",
          "type",
          "description",
          "description_source",
          "annotations",
          "has_document",
          "document_url"
        ],
        "properties": {
          "transaction_id": {
            "type": "string",
            "description": "The register's identifier for this filing; it appears in document_url."
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "Date the filing was processed by the register."
          },
          "category": {
            "type": "string"
          },
          "subcategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "description": "Register filing type code (e.g. AA, CS01, AP01, TM01)."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description of the filing, rendered from the Companies House filing_history_descriptions enumeration with the register's own description_values merged in (e.g. \"Confirmation statement made on 2026-06-18 with no updates\"). Never invented: an unrecognised key is rendered as a readable form of the key itself and flagged by description_source. Registrar annotations are NOT merged into this text — read annotations[] as well to see everything the register shows for the filing."
          },
          "description_source": {
            "type": "string",
            "enum": [
              "enumeration",
              "fallback"
            ],
            "description": "\"enumeration\" when the register's description key matched the published Companies House enumeration; \"fallback\" when it did not and the key itself (or the register's own free text) was made readable."
          },
          "description_key": {
            "type": "string",
            "description": "Raw register description key for the filing (e.g. capital-return-purchase-own-shares), stable for machine matching. Returned only when detail=full."
          },
          "description_values": {
            "type": [
              "object",
              "null"
            ],
            "description": "Placeholder values supplied by the register for the description template (dates, officer names, addresses, capital figures). Passed through unmodified; null when the register supplies none. Returned only when detail=full — `description` already carries them merged in."
          },
          "annotations": {
            "type": "array",
            "description": "Registrar annotations attached to this filing, verbatim and in register order; empty when there are none. The register renders them beneath the filing's own description (e.g. \"Purchase of own shares. ANNOTATION Clarification …\"), so a consumer reading description alone is not reading what the register says about the filing. Annotations are the registrar's after-the-fact clarifications and corrections.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "annotation",
                "date",
                "description"
              ],
              "properties": {
                "annotation": {
                  "type": "string",
                  "description": "The annotation text as published by the register."
                },
                "date": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date",
                  "description": "The date the annotation was added, as a date. The register publishes it as a midnight timestamp; only the date part is a fact, so only the date is returned. Null when the register omits it."
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The register's own description key for the annotation entry (e.g. annotation). Null when the register omits it."
                }
              }
            }
          },
          "pages": {
            "type": [
              "integer",
              "null"
            ]
          },
          "paper_filed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "has_document": {
            "type": "boolean",
            "description": "Derived; true when the register exposes document metadata for this filing, meaning a filed image exists on the Companies House document service. document_url is then the address to fetch it from."
          },
          "document_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri",
            "description": "Derived; the Companies House public register URL for the filed document (https://find-and-update.company-information.service.gov.uk/company/{company_number}/filing-history/{transaction_id}/document?format=pdf). Null exactly when has_document is false. Eckari does not proxy, host or charge for the document itself; fetching it is a separate, free request to Companies House under the same OGL terms."
          }
        }
      }
    },
    "page": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "limit",
        "offset",
        "returned",
        "total",
        "has_more",
        "next_offset"
      ],
      "properties": {
        "limit": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The page size applied (the requested limit, default 5)."
        },
        "offset": {
          "type": "integer",
          "description": "The register index this page started at (the requested offset)."
        },
        "returned": {
          "type": "integer",
          "description": "Number of filings in this response."
        },
        "total": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Register-wide count of filings for the applied category filter — read it together with query.category, which is why the filter is echoed. Never a count of this page."
        },
        "has_more": {
          "type": "boolean",
          "description": "Authoritative end-of-list signal; true when further filings remain beyond this page for the applied filter."
        },
        "next_offset": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The offset to request next. Null exactly when has_more is false."
        }
      }
    }
  }
}

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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/eckari-com-company-uk-filings-output"
All schemas
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.