Skip to content

Versioning & stability

There is no version number in the URL. The schema evolves additively, and the live schema (via open introspection) is always the source of truth.

What is stable

  • Existing types, fields, and arguments keep their meaning. They are not renamed or removed within Phase 1.
  • Error codes at extensions.code (Errors) are part of the contract.
  • A field documented as nullable (e.g. coverUrl) may start returning a value where it returned null - this is additive and non-breaking.

What can change without notice

  • New types, fields, arguments, and enum members may be added at any time.
  • Opaque values - playbackUrl, coverUrl, and id - may change in format. Use them as returned; never parse or hardcode them.
  • Human-readable error messages may be reworded (the codes stay stable).

Client obligations

Build clients that tolerate additive change:

  • Select only the fields you use. Do not assume the full object shape.
  • Tolerate unknown enum values. Map any EpisodeStatus/StreamStatus you do not recognize to a safe default (treat as not-playable) rather than crashing. See Types.
  • Treat opaque values as opaque. Never parse playbackUrl, coverUrl, or id.
  • Branch on extensions.code, not on message.
  • Check status before playback - a non-null playbackUrl does not mean playable. See Playback & images.

Current scope (Phase 1)

Phase 1 is a public, read-only Content API:

  • Read-only - there are no mutations.
  • Content is property → brands → seasons → episodes, plus curated live streams (UNLIMITED streams only in Phase 1).
  • App-key management and content curation happen out of band, run by the Hope.Cloud team.