Skip to main content

A simple but powerful toolkit for Companies House OpenAPI (Swagger 2.0) specifications.

Project description

companies-house-codegen

mkdocs ruff mypy

A simple but powerful toolkit for downloading, compressing and formatting Companies House OpenAPI (Swagger 2.0) specifications.

Introduction

Companies House is an executive agency of the Department for Business and Trade, a department of the British Government. This official UK agency is responsible for incorperating and dissolving companies, and maintaining a register of information of limited companies (and some other companies) under the Companies Act and related legislation to be made available for public access.

Companies House hosts a JSON REST API called the Companies House API, which makes it possible for software developers to create application to retrieve information from Companies House's database (e.g. searching and retrieving public company data), as well as, interact with Companies House's database (e.g. manipulating company information, givem you have authority to do so). The full documentation for Companies House API can be found at the Companies House Developer Hub.

Unfortunately, the Companies House API does not come with an official SDK. Fortunately, the API is documented fully defined in OpenAPI (specifically Swagger 2.0) specifications - an open source standard for defining APIs. Since OpenAPI is industry standard there are many tools that exist that produce high quality SDKs from OpenAPI definitions. For example, Cloudflare, OpenAI, Anthropic and many define their SDKs in OpenAPI3 and generate them using Stainless. Unfortunately, these definitions are distributed amongst many files (i.e. the API is broken down into several smaller API products, with the Companies House Public Data API product by itself being distributed over 22 files!). Moreover, these definitions contain various errors that make them unusable.

This small, configurable and simple tool fetches the OpenAPI for Companies House API, formats them to fix errors found in them.

Installation

companies-house-codegen requires Python 3.8+ and typing-extensions. You may also, optionally, install pydantic for typesafety.

PIP (VCS Support)

[pip] is the default package installer for Python, enabling easy installation and management of packages from the Python Package Index (PyPI) via the command line.

pip install git+https://github.com/MMurape/companies-house-codegen.git@main

[!TIP] See pip's documentation VCS Support for more infomation. Note, that most modern package managers also come with VCS support similar to pip.

(Manual) Git Clone Installation

Alternatively you can install this package using the following steps:

  1. Clone this repository

  2. After clone this repository, the run the following command:

    cd companies-house-codegen # change directory to this repository
    
  3. Install the package using package manager of your choice:

    pip install .
    

Usage

This toolkit can either be used as a command-line interface - companies-house-codegen - or as a python module - companies_house_codegen.

For more information on command-line interface see: API Reference.

For more information on command-line interface see: CLI Reference.

Example: Download Companies House Public Data API and convert it to OpenAPI 3.0.1

As a simple example of usage, here is how you could download the OpenAPI (Swagger 2.0) specification for Companies House Public Data API and convert it to OpenAPI 3.0.1.

Using the CLI

# Download Companies House Public Data API and convert it to OpenAPI 3.0.1
companies-house-codegen -i https://developer-specs.company-information.service.gov.uk/api.ch.gov.uk-specifications/swagger-2.0/spec/swagger.json --zip public_data_api_openapi.yml --openapi

Using the library

from companies_house_codegen.codegen import download_openapi
from companies_house_codegen.utils import mapping_representer
import yaml
from yaml import CDumper

public_data_api_openapi = download_openapi('https://developer-specs.company-information.service.gov.uk/api.ch.gov.uk-specifications/swagger-2.0/spec/swagger.json')
with open('public_data_api_openapi.yml', 'w') as f:
    # yaml does not know how to dump special an Mappings like OrderedDict.
    CDumper.add_representer(OrderedDict, mapping_representer)
    yaml.dump(m, f, indent=2, sort_keys=False, Dumper=CDumper) # save yaml

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

companies_house_codegen-0.1.0.tar.gz (108.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

companies_house_codegen-0.1.0-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file companies_house_codegen-0.1.0.tar.gz.

File metadata

File hashes

Hashes for companies_house_codegen-0.1.0.tar.gz
Algorithm Hash digest
SHA256 435055f06672c1af137fa0afd0dd6ead9a771bd2be2d0ef3ea0cdb72d9d301e4
MD5 cacabfda15c309264c514c3606e4f56d
BLAKE2b-256 241efd84d6389d4bf76964e14682f55e5fe9dd06ca25c7e4fc75ac84a953abe6

See more details on using hashes here.

File details

Details for the file companies_house_codegen-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for companies_house_codegen-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52107e4d843ac3deeaf3ca16dc5760b58e055cb47ccad712fdc3fe40bdea8c87
MD5 4aa3471c2e1fa9f4d569155ec0ca1237
BLAKE2b-256 ac3d4680237707fe8b0f14d81ade5467e5b0b47d312dd388733ab7f28454fd85

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page