aid: versioning name: Versioning kind: topic description: >- An index and topic collection covering API versioning patterns, schema evolution, and breaking-change detection across the API lifecycle. API versioning communicates change to consumers, while schema versioning and diff tooling makes those changes explicit, reviewable, and reversible. This collection brings together versioning approaches like SemVer and CalVer, registry-driven schema evolution platforms (Apollo, Buf, Apicurio, Confluent Schema Registry), spec-diff tools (oasdiff, Optic, Bump.sh, GraphQL Inspector), API documentation versioning (Stoplight, Scalar, Bump.sh), versioning headers and sunsetting practices (Stripe API Versioning, Sunset Header), and dependency-versioning automation (Dependabot, Renovate, Conventional Commits). type: Index image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/apis-json-logo.jpg tags: - API Versioning - SemVer - CalVer - Schema Evolution - Breaking Change - Deprecation - Schema Registry - Spec Diff - Conventional Commits - Sunset Header url: >- https://raw.githubusercontent.com/api-evangelist/versioning/refs/heads/main/apis.yml created: '2026-05-19' modified: '2026-05-19' specificationVersion: '0.19' apis: [] network: - name: Apicurio url: https://raw.githubusercontent.com/api-evangelist/apicurio/refs/heads/main/apis.yml - name: Apollo GraphQL url: https://raw.githubusercontent.com/api-evangelist/apollo-graphql/refs/heads/main/apis.yml - name: Axway url: https://raw.githubusercontent.com/api-evangelist/axway/refs/heads/main/apis.yml - name: Beamer url: https://raw.githubusercontent.com/api-evangelist/beamer/refs/heads/main/apis.yml - name: Buf url: https://raw.githubusercontent.com/api-evangelist/buf/refs/heads/main/apis.yml - name: Bump.sh url: https://raw.githubusercontent.com/api-evangelist/bump-sh/refs/heads/main/apis.yml - name: Changelog url: https://raw.githubusercontent.com/api-evangelist/changelog/refs/heads/main/apis.yml - name: CHANGELOG.md (Keep a Changelog) url: https://raw.githubusercontent.com/api-evangelist/changelog-md/refs/heads/main/apis.yml - name: Confluent url: https://raw.githubusercontent.com/api-evangelist/confluent-the-data-streaming-platform/refs/heads/main/apis.yml - name: Dapr url: https://raw.githubusercontent.com/api-evangelist/dapr/refs/heads/main/apis.yml - name: Dependabot.yml url: https://raw.githubusercontent.com/api-evangelist/dependabot-yml/refs/heads/main/apis.yml - name: GitHub url: https://raw.githubusercontent.com/api-evangelist/github/refs/heads/main/apis.yml - name: GitLab url: https://raw.githubusercontent.com/api-evangelist/gitlab/refs/heads/main/apis.yml - name: LaunchNotes url: https://raw.githubusercontent.com/api-evangelist/launchnotes/refs/heads/main/apis.yml - name: Liblab url: https://raw.githubusercontent.com/api-evangelist/liblab/refs/heads/main/apis.yml - name: Oasdiff url: https://raw.githubusercontent.com/api-evangelist/oasdiff/refs/heads/main/apis.yml - name: Optic url: https://raw.githubusercontent.com/api-evangelist/optic/refs/heads/main/apis.yml - name: Redpanda url: https://raw.githubusercontent.com/api-evangelist/redpanda/refs/heads/main/apis.yml - name: Renovate url: https://raw.githubusercontent.com/api-evangelist/renovate-json/refs/heads/main/apis.yml - name: Scalar url: https://raw.githubusercontent.com/api-evangelist/scalar/refs/heads/main/apis.yml - name: Schema Evolution url: https://raw.githubusercontent.com/api-evangelist/schema-evolution/refs/heads/main/apis.yml - name: Sentry url: https://raw.githubusercontent.com/api-evangelist/sentry/refs/heads/main/apis.yml - name: Spectral url: https://raw.githubusercontent.com/api-evangelist/spectral/refs/heads/main/apis.yml - name: Stoplight url: https://raw.githubusercontent.com/api-evangelist/stoplight/refs/heads/main/apis.yml - name: Stripe url: https://raw.githubusercontent.com/api-evangelist/stripe/refs/heads/main/apis.yml - name: Sunset Header url: https://raw.githubusercontent.com/api-evangelist/sunset-header/refs/heads/main/apis.yml - name: Versioning Protocols url: https://raw.githubusercontent.com/api-evangelist/versioning-protocols/refs/heads/main/apis.yml common: - type: Portal url: https://apievangelist.com - type: GitHubOrganization url: https://github.com/api-evangelist - type: Features data: - name: Semantic and Calendar Versioning description: Established conventions like SemVer (MAJOR.MINOR.PATCH) and CalVer (YYYY.MM) give API and library producers a shared vocabulary for communicating compatibility and release cadence to consumers. - name: Breaking Change Detection description: Spec-diff tools like oasdiff, openapi-diff, Optic, and GraphQL Inspector compare two versions of an API specification and classify changes as breaking, non-breaking, or unclassified before they ship to production. - name: Schema Registries and Evolution description: Platforms like Apicurio, Confluent Schema Registry, Buf Schema Registry, and Apollo GraphOS track every version of a schema, enforce compatibility rules (backward, forward, full), and prevent incompatible deploys. - name: API Version Headers and Date-Based Versioning description: Providers like Stripe and GitHub pin requests to a version via a header or date string, allowing the platform to ship new API behavior without breaking existing integrations. - name: Deprecation and Sunsetting description: The Deprecation and Sunset HTTP headers (RFC 8594 / RFC 9745) and platform-level deprecation policies give consumers structured advance notice that an endpoint or version is going away. - name: Documentation and Changelog Versioning description: Tools like Bump.sh, Stoplight, Scalar, LaunchNotes, and Keep a Changelog publish per-version API references and human-readable release notes alongside the underlying spec or code change. - name: Conventional Commits and Release Automation description: The Conventional Commits specification encodes change type (feat, fix, BREAKING CHANGE) directly in commit messages so that SemVer bumps and changelogs can be generated automatically. - name: Dependency Version Management description: Bots like Dependabot and Renovate continuously open pull requests to upgrade dependencies, respecting SemVer ranges and surfacing breaking changes upstream. - type: UseCases data: - name: Pre-Merge Breaking Change Gate description: Run oasdiff or Optic in CI on every pull request that touches the OpenAPI spec and block the merge if breaking changes are introduced without an explicit major version bump. - name: Date-Pinned API Versions description: Issue per-account or per-request API versions (e.g. Stripe's 2024-04-10 versioning) so customer integrations remain stable while the platform iterates rapidly behind the scenes. - name: Schema Registry Compatibility Enforcement description: Producers and consumers of Kafka, gRPC, or GraphQL schemas register every revision in Apicurio, Confluent, Buf, or Apollo and the registry refuses incompatible changes at publish time. - name: Multi-Version API Documentation description: Publish v1, v2, and v3 documentation simultaneously through Bump.sh, Stoplight, or Scalar so consumers on older versions still have authoritative reference material. - name: Deprecation and Sunset Notification description: Emit Deprecation and Sunset HTTP headers from deprecated endpoints, then track consumer migration through analytics before fully removing the version. - name: Automated SemVer Release description: Use Conventional Commits plus tools like semantic-release to compute the next SemVer version, generate a changelog, tag the repo, and publish a release entirely from commit history. - name: Continuous Dependency Upgrades description: Configure Dependabot or Renovate to open weekly PRs for dependency upgrades, with SemVer-aware grouping and automatic merge for non-breaking patches. - name: API Changelog and Release Notes description: Publish a structured changelog through LaunchNotes, Beamer, or Keep a Changelog conventions so consumers can review what changed in every API release. - type: Integrations data: - name: Oasdiff description: Open-source CLI and library that compares two OpenAPI specifications and classifies every change as breaking or non-breaking, with rule-level configuration. - name: Optic description: API change-management platform that captures real traffic, generates OpenAPI, and gates pull requests on breaking changes against the existing spec. - name: Bump.sh description: API documentation and changelog platform that publishes per-version OpenAPI and AsyncAPI references and surfaces diffs between releases. - name: Buf description: Buf Schema Registry and CLI for Protocol Buffers, with first-class breaking-change detection and lint rules across proto versions. - name: Apollo GraphQL description: Apollo GraphOS schema registry and Apollo Studio check every proposed GraphQL schema change against operations from real clients before publication. - name: Apicurio description: Open-source schema registry from Red Hat for Avro, JSON Schema, OpenAPI, AsyncAPI, and Protobuf, with pluggable compatibility rules. - name: Stripe description: Stripe's date-based API versioning model pins every integration to a release date and provides a Versioning Stripe API reference for upgrading between versions. - name: Dependabot description: GitHub-native dependency-update automation that opens PRs for upgrades, respecting SemVer ranges and security advisories. - name: Renovate description: Configurable dependency upgrade bot with SemVer-aware grouping, scheduling, and automerge across npm, Maven, Docker, and many other ecosystems. - name: Sunset Header description: Standard HTTP response header (RFC 8594) for communicating the date at which a resource will become unavailable, used together with Deprecation (RFC 9745). maintainers: - FN: Kin Lane email: kin@apievangelist.com humanURL: https://apievangelist.com