Skip to content

Introduction to OpenAPI / Swagger

DodaTech Updated 2026-06-28 5 min read

In this tutorial, you will learn about Introduction to OpenAPI / Swagger. We cover key concepts, practical examples, and best practices to help you master this topic.

OpenAPI Specification (formerly Swagger) is the industry standard for describing REST APIs. An OpenAPI spec is a machine-readable contract that defines every endpoint, parameter, schema, and authentication method in your API.

What You'll Learn

What OpenAPI is, how it differs from earlier Swagger specifications, how to write an OpenAPI 3.1 YAML file, how to define endpoints with request and response schemas, and how to generate interactive documentation from your spec.

Why It Matters

An OpenAPI spec is the single source of truth for your API. From this one file, you can generate interactive docs with Swagger UI, produce client SDKs in 20+ languages, validate API requests and responses, and run automated tests against your implementation.

Real-World Use

The DodaTech Compression API uses OpenAPI 3.1 to define its file compression, decompression, and analysis endpoints. The spec generates the interactive playground at docs.dodatech.com, produces Python and JavaScript SDKs, and runs CI validation that catches mismatches between the spec and implementation before deployment.

OpenAPI Document Structure

flowchart TD
  A[OpenAPI Spec] --> B[Info]
  A --> C[Servers]
  A --> D[Paths]
  A --> E[Components]
  D --> F[Operations]
  F --> G[Parameters]
  F --> H[Request Body]
  F --> I[Responses]
  E --> J[Schemas]
  E --> K[Security Schemes]
  A:::current
  classDef current fill:#f90,color:#fff,stroke:#333,stroke-width:2px

Writing Your First OpenAPI Spec

An OpenAPI 3.1 spec starts with metadata, then defines servers, paths, and reusable components.

openapi: 3.1.0
info:
  title: DodaTech Compression API
  version: 2.0.0
  description: |
    Compress, decompress, and analyze files.
    All calls require Bearer token authentication.

servers:
  - url: https://api.dodatech.com/v2
    description: Production
  - url: https://sandbox.dodatech.com/v2
    description: Sandbox

Defining Paths and Operations

Each API endpoint is a path with one or more HTTP method operations.

paths:
  /files/compress:
    post:
      summary: Compress a file
      description: Upload or reference a file for compression.
      operationId: compressFile
      security:
        - BearerAuth: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required: [file, format]
              properties:
                file:
                  type: string
                  format: binary
                format:
                  type: string
                  enum: [zip, gzip, sevenz]
                  default: zip
      responses:
        "200":
          description: Compressed file returned
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        "413":
          description: File exceeds 500MB limit

Reusable Components

Define schemas and security schemes once in components, then reference them across paths.

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    Error:
      type: object
      required: [code, message]
      properties:
        code:
          type: string
          example: FILE_TOO_LARGE
        message:
          type: string
          example: File exceeds the 500MB limit
        docs_url:
          type: string
          format: uri

Generating Documentation from OpenAPI

Tools like Redoc and Swagger UI consume your spec and render beautiful, interactive documentation.

// Swagger UI setup for interactive docs
import SwaggerUI from "swagger-ui";

SwaggerUI({
  url: "/openapi.yaml",
  dom_id: "#swagger-ui",
  presets: [SwaggerUI.presets.apis, SwaggerUIStandalonePreset],
  layout: "StandaloneLayout",
  tryItOutEnabled: true,
});

Spec Validation in CI

Automate validation to catch spec errors before they reach production.

# Validate OpenAPI spec with Spectral
npm install -g @stoplight/spectral
spectral lint openapi.yaml

# Check for breaking changes between versions
npm run api-diff openapi-v1.yaml openapi-v2.yaml

Common Mistakes

1. Missing Required Fields

Omitting required, type, or description on parameters and schemas leaves the spec incomplete. Every field needs a type and clear description.

2. Inconsistent Naming

Mixing camelCase, snake_case, and kebab-case across the spec confuses developers. Choose a naming convention and enforce it with Spectral rules.

3. No Example Values

Schemas without example values make generated docs less useful. Add realistic examples to every field.

4. Overly Complex Schema Nesting

Nesting objects more than three levels deep makes the spec hard to read and generated docs hard to navigate. Use $ref references to flatten the structure.

5. Forgetting Error Responses

Defining only 200 responses leaves developers guessing about error formats. Document every error response with its schema.

6. Hardcoding Server URLs

Hardcoding different server URLs across paths makes environment switching difficult. Define all servers in the top-level servers array and use variables for environment-specific values.

7. Ignoring Security Schemes

Omitting the security section at the operation level means generated docs won't show authentication requirements. Define security schemes in components and apply them to each operation.

Practice Questions

1. What is an OpenAPI specification?

A machine-readable YAML or JSON file that describes every endpoint, parameter, schema, authentication method, and response format in a REST API.

2. How does OpenAPI improve documentation quality?

It provides a single source of truth that generates interactive docs, client SDKs, validation tests, and maintains consistency between code and documentation.

3. What is the difference between OpenAPI 3.0 and 3.1?

OpenAPI 3.1 aligns with JSON Schema 2020-12, supports full JSON Schema validation in request and response bodies, and provides better support for Webhooks and callbacks.

4. Why define reusable components in an OpenAPI spec?

Components like schemas and security schemes can be referenced from multiple paths using $ref. This reduces duplication and ensures consistency across all endpoint documentation.

5. Challenge: Write an OpenAPI 3.1 spec for a simple notes API with endpoints for creating, listing, updating, and deleting notes. Include authentication, error responses, and at least three reusable schemas.

FAQ

Is OpenAPI the same as Swagger?

OpenAPI is the specification name. Swagger is the original name for the spec and the brand for tools built by SmartBear. OpenAPI 3.x is the current spec version. Swagger UI and Swagger Editor remain popular tools.

Can I use OpenAPI for non-REST APIs?

OpenAPI is designed for REST APIs. For GraphQL APIs, use the GraphQL Schema Definition Language. For gRPC APIs, use protobuf definitions. Each protocol has its own documentation standard.

How do I version my OpenAPI spec?

Use the info.version field to track the spec version. Use separate spec files for each API version (v1, v2). Maintain backward compatibility within the same major version.

What tools validate OpenAPI specs?

Spectral enforces style rules and validates structure. Swagger Editor provides real-time validation. Redocly CLI lints specs for best practices. Most CI pipelines include at least Spectral.

Should I write the spec before or after the code?

Spec-first development: write the spec before implementing the endpoint. This ensures docs are accurate from day one and the spec serves as a contract that guides implementation.

Mini Project: OpenAPI Spec Generator

Create an OpenAPI 3.1 spec for a fictional API of your choice with at least five endpoints. Include authentication, pagination, error responses, and reusable component schemas. Validate the spec with Spectral and generate documentation with Redoc or Swagger UI.

What's Next

Now that you understand OpenAPI basics, explore OpenAPI Structure and Syntax to learn advanced spec features. Then study API Reference Documentation for designing developer-friendly reference pages.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro