OpenAPI2Code

Examples

Real output from the current generator, not hand-written approximations — every snippet below came out of an actual openapi2code pull run. Paste any of these specs into the playground yourself to see the rest of each target.

A model with a reference, an array, and an enum

Pet references Category and Tag, holds an array of strings, and has an inline enum field — the shapes that show up in almost every real API.

Pet:
  type: object
  required: [name, photoUrls]
  properties:
    id: { type: integer }
    name: { type: string }
    category: { $ref: '#/components/schemas/Category' }
    tags: { type: array, items: { $ref: '#/components/schemas/Tag' } }
    photoUrls: { type: array, items: { type: string } }
    status: { type: string, enum: [available, pending, sold] }

allOf composition

Dog is composed from Animal plus its own breed field. TypeScript renders this as extends; every other target flattens it into one flat type or struct, since none of them model inheritance the way TS interfaces do.

Dog:
  allOf:
    - $ref: '#/components/schemas/Animal'
    - type: object
      required: [breed]
      properties:
        breed: { type: string }
TypeScript
Swift

oneOf and circular references

TypeScript and Zod render oneOf as a real union. The mobile targets don't yet (see the playground for the current target list) — rather than generate something subtly wrong, they skip the field with an explanatory comment. A self-referential type like TreeNode works everywhere; Swift renders it as a class instead of a struct specifically for cyclic models, since a Swift struct can't contain itself.

StringOrNumber:
  oneOf:
    - type: string
    - type: number

TreeNode:
  type: object
  required: [value]
  properties:
    value: { type: string }
    children: { type: array, items: { $ref: '#/components/schemas/TreeNode' } }
TypeScript — oneOf becomes a union
Swift — oneOf is skipped, not guessed at
TypeScript — TreeNode
Swift — TreeNode becomes a class (cyclic)
Open the editor