A versioned corpus of real-world API specs used to test
morphic, a spec-to-SDK compiler. Morphic
parses specs (OpenAPI today; Swagger, GraphQL, protobuf, and TypeSpec planned)
into a spec-agnostic Intermediate Representation (IR). This repo holds spec
fixtures — and eventually their expected IR output — independent of morphic's
own internal testdata/ golden fixtures, so morphic's tooling and CI can pull
in a growing, external corpus.
One directory per spec format at the repo root, then one per spec version, then one per API:
openapi/
v3.0/
v3.1/
petstore/
spec.yaml
v3.2/
Each API directory holds spec_file and, once available, expected_ir_file
(e.g. spec.yaml + spec-ir.json). IR golden files are omitted for now —
morphic's IR format is still evolving, so hand-written or generated goldens
would go stale immediately. Spec files keep their original serialization
format (YAML or JSON) rather than being normalized to one.
APIs split across multiple spec documents use numbered files instead:
spec-1.yml, spec-2.yml, with matching spec-1-ir.json, spec-2-ir.json
once IR goldens are added.
Only OpenAPI v3.x is in scope for now.
lint.yml(push, PR): validates every file underopenapi/**—yamllintfor YAML syntax,jqfor JSON syntax, andopenapi spec validate(the same OpenAPI parser morphic itself depends on) for structural OpenAPI validity.release.yml(push tomain): bundles every spec-type directory intomorphic-test-assets-<commit-sha>.tar.gzand publishes it as a GitHub Release tagged with the full commit SHA. One release per commit onmain.
There's no semantic version — each release is tagged with the exact commit SHA it was built from. Consumers pin to a specific SHA/release rather than a version range.