Detalhes do pacote

@scalar/openapi-types

scalar1.2mMIT0.3.4

Modern OpenAPI types

openapi, scalar, swagger, typescript

readme (leia-me)

Scalar OpenAPI Types

CI Contributors GitHub License Discord

Modern OpenAPI parser written in TypeScript, with support for Swagger 2.0, OpenAPI 3.0 and OpenAPI 3.1

Installation

npm add @scalar/openapi-types

Usage

import type { OpenAPI } from '@scalar/openapi-types'

const file: OpenAPI.Document = {
  openapi: '3.1.0',
  info: {
    title: 'Hello World',
    version: '1.0.0',
  },
  paths: {},
}

Zod Schemas

Experimental: This package exposes OpenAPI-compliant Zod schemas for all OpenAPI object types. You can use them to parse user input safely with Zod.

import { OpenApiObjectSchema } from '@scalar/openapi-types/schemas/3.1/unprocessed'

OpenApiObjectSchema.parse({
  // This will be omitted:
  invalidAttribute: 123,
  // Those will pass:
  openapi: '3.1.1',
  info: {
    title: 'Example API',
    version: '1.0'
  },
  paths: {
    '/example': {
      get: {
        description: 'My example operation',
      }
    }
  },
})

What’s “unprocessed”? It’s for the content of a “raw” OpenAPI document, that might still contain $refs (references).

We also provide Zod schemas for processed OpenAPI documents, where the $refs are resolved already:

// Impport the Zod Schema without the $ref property:
import { OpenApiObjectSchema } from '@scalar/openapi-types/schemas/3.1/processed'

OpenApiObjectSchema.parse({
  // …
})

Extend the Zod schemas

While you can absolutely use the Zod schemas directly, you can also extend and compose them.

Here is a basic example to add an extension on the top level:

import { OpenApiObjectSchema } from '@scalar/openapi-types/schemas/3.1/unprocessed'
import { XScalarIconSchema } from '@scalar/openapi-types/schemas/extensions'

const MyCustomSchema = OpenApiObjectSchema
  // Add the `x-scalar-icon` OpenAPI extension
  .merge(
    XScalarIconSchema
  )
  // Add a custom property
  .extend({
    'x-customProperty': z.boolean().optional(),
  })

This will get a little bit more complex when you want to add a property to something that’s deeply nested:

import { OpenApiObjectSchema } from '@scalar/openapi-types/schemas/3.1/unprocessed'
import { XScalarIconSchema } from '@scalar/openapi-types/schemas/extensions'

const MyCustomSchema = OpenApiObjectSchema
  .extend({
    // Overwrite the Schema
    'info': InfoObjectSchema.extend({
      // Add a custom property
      'x-customProperty': z.boolean().optional(),
    }),
  })

Community

We are API nerds. You too? Let’s chat on Discord: https://discord.gg/scalar

License

The source code in this repository is licensed under MIT.

changelog (log de mudanças)

@scalar/openapi-types

0.3.4

Patch Changes

  • 533469b: refactor: decouple request code block from the state (not in use yet)

0.3.3

Patch Changes

  • 221e35f: feat: added webhooks

0.3.2

Patch Changes

  • 05c22c7: chore: removed enum from http methods

0.3.1

Patch Changes

  • 4440949: chore: bumping packages

0.3.0

Minor Changes

  • 483ca93: chore: require Node 20 (or above)

0.2.3

Patch Changes

  • cb9428c: Support additional query parameters for the OAuth authorization request (prompt, audience, anything), and handle OAuth authorization denials

0.2.2

Patch Changes

  • 8c7bad8: chore: move build tooling to esbuild

0.2.1

Patch Changes

  • fa8ed84: feat: custom OpenAPI extension to add SDK setup instructions

0.2.0

Minor Changes

  • e62e677: feat: OpenAPI-compliant Zod Schemas

Patch Changes

  • 82f16a5: feat: add more Zod schemas for OpenAPI extensions

0.1.9

Patch Changes

  • c10bbf5: chore: code style

0.1.8

Patch Changes

  • e350f23: chore: code style

0.1.7

Patch Changes

  • f9bf5f1: feat(api-reference): implement rendering of patternProperties

0.1.6

Patch Changes

  • 13333e6: feat: add http methods

0.1.5

Patch Changes

  • a607115: feat: add openapi 3.0.4 and openapi 3.1.1

0.1.4

Patch Changes

  • 2b540b9: Include 3.0.3 in allowed OpenApiV3 versions

0.1.3

Patch Changes

  • 8759e7f: chore: use build tooling scripts

0.1.2

Patch Changes

  • e911047: Add default exports

0.1.1

Patch Changes

  • dc9aff2: feat: expose HeadersObject

0.1.0

Minor Changes

  • b4f9f97: feat: new @scalar/openapi-types package

0.0.1

Patch Changes

  • a8db3b0: feat(openapi-types): add openapi-types package with temporary old parser types