Versioning Policy

Versioning Policy

Spacetime exposes multiple APIs: NBI, Model, Provisioning, Scheduling and more.

To each API definition it’s assigned an independent version number, in the shorthand form (v1alpha, v1, v2), to communicate to API clients:

To refer to a specific software release, capturing a defined set of features and bugfixes, please use the Spacetime Unified Version Number which is expressed in full SemVer format 14.12.1234566+buildinfo.

API Version negotiation

When multiple versions for the same API are supported, each version is accessible through a distinct endpoint, such as distinct subdomains. Example:

  • model-v0.CUSTOMER.spacetime.aalyria.com
  • model-v1alpha.CUSTOMER.spacetime.aalyria.com

For clients, this approach provides clear and predictable access to specific API versions.

For servers, the benefits include:

  • making explicit the version requested by the client
  • allow the release of new versions without disrupting existing infrastructure
  • easy monitoring and control of the traffic received by each version

In addition to using distinct subdomains, each API must also include its major version number in the gRPC package name (or URL path when using REST). Example:

  • gRPC package name: com.aalyria.spacetime.model.v1.MethodName
  • REST Path: /v1/resource/entity

This prevents the possibility that a client misconfiguration, or DNS error, can cause older clients to attempt to interact with incompatible API versions.