The three numbers

  • MAJOR — breaking change. Existing client code will not work without modification.
  • MINOR — new backwards-compatible functionality. Existing clients are unaffected.
  • PATCH — backwards-compatible bug fix.

What counts as a breaking change in an API

  • Removing or renaming an endpoint.
  • Removing or renaming a request/response field.
  • Changing a field type (string → integer).
  • Changing HTTP method for an endpoint.
  • Adding a new required request field.

What is NOT a breaking change

  • Adding a new optional request field (with a default).
  • Adding a new response field (clients must ignore unknown fields).
  • Adding a new endpoint.
  • Reducing response time.

Pre-release versions

1.0.0-alpha.1, 1.0.0-beta.2, 1.0.0-rc.1 — communicate stability expectations. Pin to exact versions in production; ranges are fine in development.