Tournament Data Service (TDS) Partner Events v0 0.3.0

Partner-facing event contract for tournament lifecycle events.

Events are partner-visible change notifications. They help consumers decide when to refresh state from the Partner API; the API remains the source of truth after an event is received.

The initial v0 series event surface is intentionally smaller than the full series lifecycle state model. It is not a complete state-transition log. It only exposes stable, externally meaningful milestones that are currently part of the public partner event model. Other series changes, including cancellation, postponement, suspension, or resumption, remain discoverable through Partner API reads until they are promoted to explicit public event types in a future contract addition.

Operational delivery uses a single Pub/Sub topic, tds-events, for the partner event stream. Consumers route messages by event_type. The ordering group key is aggregate_id; for the current series events this is the series ID. Ordering is therefore scoped to one series and is not a global ordering guarantee.

Documented event types:

Series Started

Event name: series.started

Emitted when a series enters the live state.

Payload model: SeriesStartedEvent

Series Completed

Event name: series.completed

Emitted when a series reaches its completed state.

Payload model: SeriesCompletedEvent

Versioning:

  • Event type names (series.started, series.completed) are stable.
  • Each event payload carries an event_version field that gates payload schema evolution. Both events are currently at "2.0" after aligning SeriesSnapshot with the current Partner API series shape: topology IDs and venue_id replace older venue, publication, and progression_links fields. Additive, backward-compatible changes bump the minor component; breaking payload changes bump the major component.
  • New event types for additional lifecycle cases are contract additions, not new versions of the existing event types.

Draft visibility:

  • Partner series.* events are not emitted while a series is in the DRAFT lifecycle state. A series only becomes visible to partners once it transitions out of DRAFT (typically to SCHEDULED). Subscribers will not receive any partner event referencing a series whose current state is DRAFT, including before snapshots captured from a DRAFT predecessor.
  • #tournaments

Operations

  • SEND tds-events

    Sends the partner-visible series lifecycle events.

    Operation IDsendSeriesEvents
    • #tournaments

    Accepts one of the following messages:

    • #0Series Started

      Emitted when a series starts.

      Message IDseriesStarted
      objectuid: urn:tds:partner-events:schema:series-started-event

      Examples

    • #1Series Completed

      Emitted when a series is completed.

      Message IDseriesCompleted
      objectuid: urn:tds:partner-events:schema:series-completed-event

      Examples

Messages

  • #1Series Started

    Emitted when a series starts.

    Message IDseriesStarted
    objectuid: urn:tds:partner-events:schema:series-started-event
  • #2Series Completed

    Emitted when a series is completed.

    Message IDseriesCompleted
    objectuid: urn:tds:partner-events:schema:series-completed-event

Schemas

  • objectuid: urn:tds:partner-events:schema:series-started-event
  • objectuid: urn:tds:partner-events:schema:series-completed-event
  • objectuid: urn:tds:partner-events:schema:series-snapshot

    Snapshot of Series state. Carried as the post-event snapshot (data) and as the prior before snapshot on every partner series event so consumers can diff state transitions without additional lookups. Mirrors the partner-facing Series resource shape used by the current Partner API. archived_at is intentionally not part of this snapshot.

  • stringuid: urn:tds:partner-events:schema:series-changed-field

    Canonical snake_case name of a Series field that can appear in the changed_fields list on partner series events. Enum order matches the deterministic iteration order used by the publisher when building the list.

  • stringuid: urn:tds:partner-events:schema:series-lifecycle-state

    Lifecycle states permitted by the initial partner series event snapshot schema. This is an intentionally limited public event subset, not the full canonical API lifecycle enum.

  • objectuid: urn:tds:partner-events:schema:series-format

    Competitive format of the series. Mirrors openapi/v1/common/formats.yaml#/SeriesFormat.

  • oneOfuid: urn:tds:partner-events:schema:result-visibility-override

    Optional per-series override for result visibility. Null when no override is set. Mirrors openapi/v1/common/formats.yaml#/ResultVisibilityOverride.

  • objectuid: urn:tds:partner-events:schema:result-visibility-policy