crozier
Copyright 2026 Nick DeRobertis

This product includes both test fixtures and a vendored runtime derived from Fern
(https://github.com/fern-api/fern), which is licensed under the Apache License,
Version 2.0. A copy of that license is retained at licenses/fern-APACHE-2.0.txt.

Vendored runtime (shipped and redistributed as product):

  * assets/core/ is Fern's Python SDK runtime support library (HTTP client,
    pydantic utilities, serialization, SSE, request options). crozier embeds it
    and emits it verbatim into every generated SDK, exactly as Fern ships it into
    its own output. It is generator boilerplate, not derived from any OpenAPI
    document. The runtime is from fernapi/fern-python-sdk:5.20.0. Provenance and
    the statement of changes are in assets/README.md; the Python assets are
    comment-stripped as with the fixtures below.

  * assets/scaffolding/ is Fern 5.20.0's project scaffolding, including packaging,
    documentation, contribution guidance, default async clients, and generated
    tests. Project/package names, the SDK version, and worked examples use @@...@@
    placeholders that the emitter fills in. See assets/README.md.

Test fixtures (attribution and statement of changes, per Apache-2.0 §4(b), §4(c)):

  * Source: fern-api/fern, commit 3a471b03d4778f291849adc03bacfcd40340fc26.
  * Vendored under tests/fixtures/ are (a) OpenAPI source documents from Fern's
    test definitions and (b) the Python SDK output Fern's generator produced from
    them. These are used unmodified as source specs and as golden output that
    crozier is verified against.
  * The exhaustive fixture's expected output (tests/fixtures/exhaustive/expected/)
    was produced by running Fern's published Python generator image
    fernapi/fern-python-sdk:4.35.0 locally over the vendored exhaustive OpenAPI
    document (see scripts/generate-fern-fixture.sh), rather than copied from the
    fern repository. It is otherwise treated identically to the vendored output.
  * Change made to the vendored Python output: source-code comments were removed
    (a string-safe strip of `#` comments) so that generator-identifying comment
    text does not affect the byte-for-byte comparison. No other transformation is
    applied; the fixtures are otherwise Fern's output verbatim.
  * Fern's own API-definition files were intentionally NOT used. crozier consumes
    only the OpenAPI document.

Additional issue #77 real-world OpenAPI source specs:

  * PayPal Catalog Products API: PayPal's publisher-owned description at
    https://raw.githubusercontent.com/paypal/paypal-rest-api-specifications/90e8041ffe02d80c452d2b476bedd59a8d219bdc/openapi/catalogs_products_v1.json.
    The repository's LICENSE at that same commit grants Apache-2.0 redistribution;
    corpus row 138 records the immutable reference. Only Fern-generated output
    is vendored, with Python comments stripped as described above.

  * Prisma Cloud Alerts, Reports and Search Manager APIs: Palo Alto Networks'
    publisher-owned descriptions at
    https://raw.githubusercontent.com/PaloAltoNetworks/pan.dev/4e989cdd4bbda669dc73c0d3f5db90bb4989bee3/openapi-specs/cspm/Alerts.json,
    https://raw.githubusercontent.com/PaloAltoNetworks/pan.dev/4e989cdd4bbda669dc73c0d3f5db90bb4989bee3/openapi-specs/cspm/Reports.json and
    https://raw.githubusercontent.com/PaloAltoNetworks/pan.dev/4e989cdd4bbda669dc73c0d3f5db90bb4989bee3/openapi-specs/cspm/SearchManager.json.
    The repository's LICENSE at that same commit grants MIT redistribution;
    corpus rows 144 to 146 record the immutable reference. Only Fern-generated
    output is vendored, with Python comments stripped as described above.

  * ThriveCart API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/thrivecart.com/main/1.0.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 147 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * TrueForge API: TrueFoundry's publisher-owned description at
    https://raw.githubusercontent.com/truefoundry/trueforge/5adde289683b642203b06b39ca687e9d977ca7a5/docs/openapi.json.
    The repository's LICENSE at that same commit grants MIT redistribution;
    corpus row 148 records the immutable reference. Only Fern-generated output
    is vendored, with Python comments stripped as described above.

  * Fergus API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/fergus.com/fergus-api/v1/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 149 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Groupe PSA Connected Car B2B API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/groupe-psa.io/main/3.19.2/meta/import/input-entry.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 150 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Timely API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/timelyapp.com/main/V1/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 151 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * NextGen Enterprise API USCDI Routes: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/nextgen.com/main/1.0/meta/import/input-entry.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 152 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Auto Agent Protocol A2A HTTP+JSON binding: the publisher's description at
    https://raw.githubusercontent.com/auto-agent-protocol/auto-agent-protocol/5d31c27b11c36a018754f34830954d836a55afe5/releases/v1.0/artifacts/openapi-rest.yaml.
    The document's own info.license grants Apache-2.0 redistribution; corpus
    row 153 records the immutable reference. Only Fern-generated output is
    vendored, with Python comments stripped as described above.

  * Skool API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/skool.com/main/1.0.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 154 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Spendesk API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/spendesk.com/main/1.0.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 155 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Billie Direct API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/billie.io/main/2.0.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 156 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Alma Payments API (France): the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/alma_france_api/main/1.0.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 157 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Outreach API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/outreach.io/main/2.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 158 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Tally API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/tally.so/main/1.0.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 159 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Billie Direct API (jentic import entry): the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/billie.io/main/2.0.0/meta/import/input-entry.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 160 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Skool API (jentic import entry): the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/skool.com/main/1.0.0/meta/import/input-entry.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 161 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Timely API (jentic import entry): the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/timelyapp.com/main/V1/meta/import/input-entry.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 162 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Cradl API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/cradl.ai/main/2026-01-28T09%3A00%3A46Z/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 163 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Zulip REST API: the publisher's own description at
    https://raw.githubusercontent.com/zulip/zulip/6a82f40579f8adb9149aa0b04ff795c397baae73/zerver/openapi/zulip.yaml.
    The document's info.license and the repository's own LICENSE grant
    Apache-2.0 redistribution; corpus row 164 records the immutable reference.
    Only Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Zulip REST API (jentic import): the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/zulip.com/zulip/1.0.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 165 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Zulip REST API (jentic import entry): the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/zulip.com/zulip/1.0.0/meta/import/input-entry.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 166 records the immutable reference. Only
    Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Milvus RESTful API v2 (the v2.3.x reference): the publisher's own description at
    https://raw.githubusercontent.com/milvus-io/web-content/d3c35ec9b46dcc2befd205a87a785896d99ce332/API_Reference/milvus-restful/v2.3.x/Restful%20API%20v2.openapi.json.
    The repository's own LICENSE grants Apache-2.0 redistribution; corpus row 168 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * Milvus RESTful API (the v2.4.x reference): the publisher's own description at
    https://raw.githubusercontent.com/milvus-io/web-content/d3c35ec9b46dcc2befd205a87a785896d99ce332/API_Reference/milvus-restful/v2.4.x/openapi.json.
    The repository's own LICENSE grants Apache-2.0 redistribution; corpus row 169 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * Ramu Shogi API contract: the publisher's own description at
    https://raw.githubusercontent.com/SH11235/ramu-shogi/22504221b837d01c9366a5d6c8c6a9b88f9f782b/packages/api-contract/src/generated/openapi.json.
    The repository's own LICENSE grants GPL-3.0 redistribution; corpus row 170 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * LangChain Agent Protocol: the publisher's own description at
    https://raw.githubusercontent.com/langchain-ai/agent-protocol/fb81f3e27ee507557926ecf923d0f933a1c76d44/openapi.json.
    The repository's own LICENSE grants MIT redistribution; corpus row 172 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * HSE REST API: the publisher's own description at
    https://raw.githubusercontent.com/hse-project/hse/6d5207f88044a3bd9b3539260074395317e276d5/docs/openapi.json.
    The document's info.license grants Apache-2.0 redistribution; corpus row 173 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * Milvus vector operations (apifox export): the publisher's own description at
    https://raw.githubusercontent.com/milvus-io/web-content/d3c35ec9b46dcc2befd205a87a785896d99ce332/scripts/apifox-docs/meta/openapi/03-vector-operations.json.
    The repository's own LICENSE grants Apache-2.0 redistribution; corpus row 174 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * Mistle control-plane internal API v1: the publisher's own description at
    https://raw.githubusercontent.com/mistlehq/mistle/2b11ccefc658c5b707310d3cc471d5c5928554f3/apps/control-plane-api/openapi/control-plane.internal.v1.json.
    The repository's own LICENSE grants MIT redistribution; corpus row 176 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * o²S²PARC payments service: the publisher's own description at
    https://raw.githubusercontent.com/ITISFoundation/osparc-simcore/69b034b82f243b30953d025793c0f171fdb3c92e/services/payments/openapi.json.
    The repository's own LICENSE grants MIT redistribution; corpus row 177 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * HuaTuo node API v1: the publisher's own description at
    https://raw.githubusercontent.com/ccfos/huatuo/36175d6e91fdc7b79e818496e1587eb0ca79a18d/apis/v1/node/openapi.gen.json.
    The repository's own LICENSE grants Apache-2.0 redistribution; corpus row 178 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * HuaTuo server API v1: the publisher's own description at
    https://raw.githubusercontent.com/ccfos/huatuo/36175d6e91fdc7b79e818496e1587eb0ca79a18d/apis/v1/server/openapi.gen.json.
    The repository's own LICENSE grants Apache-2.0 redistribution; corpus row 179 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * VisKit Studio API: the publisher's own description at
    https://raw.githubusercontent.com/MyuriKanao/viskit-studio/58b149008088c837332b57353c0f6e1fe19bbe8d/packages/schemas/openapi.yaml.
    The repository's own LICENSE grants MIT redistribution; corpus row 167 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * CloudPDF contract API: the publisher's own description at
    https://raw.githubusercontent.com/embedpdf/embed-pdf-viewer/2516e2786ee894383220ecd436fbd248182ef444/cloudpdf/contract/openapi.json.
    The document's info.license grants Apache-2.0 redistribution; corpus row 171 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * NPQ registration API v3: the publisher's own description at
    https://raw.githubusercontent.com/DFE-Digital/npq-registration/17f95361371e9bb8c3f1e41c90f5e78bda069ce5/public/api/docs/v3/swagger.yaml.
    The repository's own LICENSE grants MIT redistribution; corpus row 175 records the immutable
    reference. Only Fern-generated output is vendored, with Python comments
    stripped as described above.

  * OpenLink OSDB REST API: the APIs.guru OpenAPI Directory's copy at
    https://raw.githubusercontent.com/APIs-guru/openapi-directory/f04b8d0bcd39c52e1cf3ad7a5fe744709832ae49/APIs/openlinksw.com/osdb/1.0.0/openapi.yaml.
    The document's info.license grants CC-BY-SA 3.0 redistribution, inside the
    aggregation's CC0-1.0 LICENSE; corpus row 191 records the immutable reference.
    Only Fern-generated output is vendored, with Python comments stripped as
    described above.

  * ZipTax API: the publisher's Node SDK repository's copy at
    https://raw.githubusercontent.com/ZipTax/ziptax-node/ac6cc26208ad2bdd594886ea323e4b0a5ffd8da0/docs/openapi.json.
    The repository's LICENSE at that same commit grants MIT redistribution;
    corpus row 192 records the immutable reference.
    Only Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Vonage (Nexmo) Messages API: the APIs.guru OpenAPI Directory's copy at
    https://raw.githubusercontent.com/APIs-guru/openapi-directory/f04b8d0bcd39c52e1cf3ad7a5fe744709832ae49/APIs/nexmo.com/messages-olympus/1.4.0/openapi.yaml.
    The aggregating repository's LICENSE at that same commit grants CC0-1.0
    redistribution; corpus row 193 records the immutable reference.
    Only Fern-generated output is vendored, with Python comments stripped as
    described above.

  * IBM Deep Search API: the DS4SD toolkit's copy at
    https://raw.githubusercontent.com/DS4SD/deepsearch-toolkit/be22375ecea319b495a11e27cd0308fdcda81ba1/tools/swagger-client-generator/openapi-ds-v2.json.
    The repository's LICENSE at that same commit grants MIT redistribution;
    corpus row 194 records the immutable reference.
    Only Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Mindee OCR API: the jentic-public-apis aggregation's copy at
    https://raw.githubusercontent.com/jentic/jentic-public-apis/eb9d12a2684b0fbcb5aecf51e8ae54dba0929743/apis/openapi/mindee.com/main/0.1.0/openapi.json.
    The aggregating repository's LICENSE.md at that same commit grants CC0-1.0
    redistribution; corpus row 195 records the immutable reference.
    Only Fern-generated output is vendored, with Python comments stripped as
    described above.

  * opencode server API: the OpenCodeUI web client's copy at
    https://raw.githubusercontent.com/lehhair/OpenCodeUI/8a6d4eae9424317f01e88f3819b14b24e57bab10/openapi_doc.json.
    The repository's LICENSE at that same commit grants GPL-3.0
    redistribution; corpus row 196 records the immutable reference.
    Only Fern-generated output is vendored, with Python comments stripped as
    described above.

  * Source: APIs.guru OpenAPI Directory (https://apis.guru/openapi-directory/),
    individual immutable API/version URLs listed in tests/fixtures/CORPUS.md.
  * Source specs for the issue #77 corpus are intentionally not vendored. The
    refresh script downloads them into the ignored .local/corpus cache, passes
    the cached file directly to Fern, and commits only Fern-generated expected
    output. The per-spec license name is retained in tests/fixtures/CORPUS.md
    beside each source URL.
  * Change made to downloaded source specs before generation: none. No schema
    transformation is applied.

Vendored font (documentation tooling only — not shipped in the crate or wheels):

  * screenshots/fonts/JetBrainsMono-Regular.ttf is JetBrains Mono, Copyright 2020
    The JetBrains Mono Project Authors, licensed under the SIL Open Font License,
    Version 1.1. A copy of that license is retained at screenshots/fonts/OFL.txt.
    It is embedded into the README's terminal screenshots (docs/screenshots/) to
    make them byte-reproducible for the screencomp visual-regression gate; it is
    excluded from the published crate (Cargo.toml `include`) and the PyPI wheels.

crozier's own Rust source is an independent, clean-room implementation: it does
not copy Fern's generator, it reproduces Fern's generated *output* format, which
is the explicit goal of this project. The one exception is the runtime library
under assets/core/ above, which is Fern's own code redistributed under Apache-2.0
with attribution (it is SDK runtime, not part of crozier's generator).
