apiversion

package
v2.21.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 29, 2025 License: AGPL-3.0 Imports: 4 Imported by: 0

Documentation

Overview

Package apiversion provides an API version type that can be used to validate compatibility between two API versions.

NOTE: API VERSIONS ARE NOT SEMANTIC VERSIONS.

API versions are represented as major.minor where major and minor are both positive integers.

API versions are not directly tied to a specific release of the software. Instead, they are used to represent the capabilities of the server. For example, a server that supports API version 1.2 should be able to handle requests from clients that support API version 1.0, 1.1, or 1.2. However, a server that supports API version 2.0 is not required to handle requests from clients that support API version 1.x. Clients may need to negotiate with the server to determine the highest supported API version.

When making a change to the API, use the following rules to determine the next API version:

  1. If the change is backward-compatible, increment the minor version. Examples of backward-compatible changes include adding new fields to a response or adding new endpoints.
  2. If the change is not backward-compatible, increment the major version. Examples of non-backward-compatible changes include removing or renaming fields.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Parse

func Parse(version string) (major int, minor int, err error)

Parse parses a valid major.minor version string into (major, minor). Both major and minor must be valid integers separated by a period '.'.

Types

type APIVersion

type APIVersion struct {
	// contains filtered or unexported fields
}

func New

func New(maj, minor int) *APIVersion

New returns an *APIVersion with the given major.minor and additional supported major versions.

func (*APIVersion) String

func (v *APIVersion) String() string

func (*APIVersion) Validate

func (v *APIVersion) Validate(version string) error

Validate validates the given version against the given constraints: A given major.minor version is valid iff:

  1. The requested major version is contained within v.supportedMajors
  2. If the requested major version is the 'current major', then the requested minor version must be less than or equal to the supported minor version.

For example, given majors {1, 2} and minor 2, then: - 0.x is not supported, - 1.x is supported, - 2.0, 2.1, and 2.2 are supported, - 2.3+ is not supported.

func (*APIVersion) WithBackwardCompat

func (v *APIVersion) WithBackwardCompat(majs ...int) *APIVersion

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL