API Platform & Lifecycle · Contract-First Design

Reusable Schemas, Examples and Shared Components

Keep large specs consistent and maintainable.

Large APIs need shared building blocks: common schemas (Money, Problem, PageInfo), parameters (Limit, Cursor), responses (NotFound, RateLimited) and headers (RateLimit, Idempotency-Key). Keep them in a shared component library referenced with $ref across specs, bundle for publishing (Redocly CLI), and include realistic examples for every schema — they power docs, mocks and tests.

# shared/components.yaml
components:
  parameters:
    Limit: { name: limit, in: query, schema: { type: integer, minimum: 1, maximum: 100, default: 20 } }
    Cursor: { name: cursor, in: query, schema: { type: string } }
    IdempotencyKey: { name: Idempotency-Key, in: header, required: true, schema: { type: string, maxLength: 255 } }
  responses:
    RateLimited:
      description: Too many requests
      headers: { Retry-After: { schema: { type: integer } } }
      content: { application/problem+json: { schema: { $ref: "#/components/schemas/Problem" } } }
  schemas:
    Money:
      type: object
      required: [amount, currency]
      properties: { amount: { type: integer }, currency: { type: string, pattern: "^[A-Z]{3}$" } }
      examples: [{ amount: 1299, currency: EUR }]

# orders.yaml
parameters: [{ $ref: "../shared/components.yaml#/components/parameters/Limit" }]

# bundle: npx @redocly/cli bundle orders.yaml -o dist/orders.yaml

Common pitfalls

  • Copy-pasted schemas drifting apart.
  • Examples that don't validate against their schemas.
  • Monolithic 20,000-line spec files nobody can review.

Key points

  • Shared components library
  • Examples for everything
  • Split, then bundle for publishing

Further reading: Redocly CLI: bundle

Practice questions

Why should examples be validated in CI?

Answer

Invalid examples mislead consumers and break mock servers and generated tests; validating them keeps docs and mocks trustworthy.

What belongs in a shared components library?

Answer

Cross-API building blocks: error schema (Problem), money, pagination parameters and metadata, standard headers (idempotency, rate limits), and common responses.

Open in the app to mark lessons complete, take notes and track your progress.