Summary

HTTP REST control of disguise Designer's show transport subsystem: load set lists/tracks, control playback (play/stop/loop/return), seek (frame, time, timecode, section, tag, note, track), and adjust per-transport brightness and volume. Base URL path prefix /api/session/transport.

The Designer API introduction specifies HTTP port 80. The port is configurable in d3Manager if it conflicts with another service.

Transport

protocols:
  - http
addressing:
  base_url: http://{designer-host}:80/api/session/transport
auth:
  type: none  # inferred: no auth procedure in source

Traits

- queryable       # inferred from GET endpoints (activetransport, annotations, setlists, tracks, transports)
- routable        # inferred from per-transport playmode/section/track targeting
- levelable       # inferred from brightness and volume endpoints

Actions

- id: get_active_transport
  label: Get Active Transport
  kind: query
  command: "GET /api/session/transport/activetransport"
  params: []

- id: get_annotations
  label: Get Annotations
  kind: query
  command: "GET /api/session/transport/annotations?uid={uid}&name={name}"
  params:
    - name: uid
      type: integer
      description: Track UID (uint64)
    - name: name
      type: string
      description: Track name

- id: set_brightness
  label: Set Brightness
  kind: action
  command: "POST /api/session/transport/brightness"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, brightness: number}

- id: set_engaged
  label: Set Engaged Status
  kind: action
  command: "POST /api/session/transport/engaged"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, engaged: boolean}

- id: goto_frame
  label: Jump to Frame
  kind: action
  command: "POST /api/session/transport/gotoframe"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, frame: integer, playmode: string}

- id: goto_next_section
  label: Jump to Next Section
  kind: action
  command: "POST /api/session/transport/gotonextsection"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, playmode: string}

- id: goto_next_track
  label: Jump to Next Track
  kind: action
  command: "POST /api/session/transport/gotonexttrack"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, playmode: string}

- id: goto_note
  label: Jump to Note
  kind: action
  command: "POST /api/session/transport/gotonote"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, note: string, playmode: string}

- id: goto_prev_section
  label: Jump to Previous Section
  kind: action
  command: "POST /api/session/transport/gotoprevsection"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, playmode: string}

- id: goto_prev_track
  label: Jump to Previous Track
  kind: action
  command: "POST /api/session/transport/gotoprevtrack"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, playmode: string}

- id: goto_section
  label: Jump to Section
  kind: action
  command: "POST /api/session/transport/gotosection"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, section: string, playmode: string}

- id: goto_tag
  label: Jump to Tag
  kind: action
  command: "POST /api/session/transport/gototag"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, type: string, value: string, allowGlobalJump: boolean, playmode: string}

- id: goto_time
  label: Jump to Time
  kind: action
  command: "POST /api/session/transport/gototime"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, time: integer, playmode: string}

- id: goto_timecode
  label: Jump to Timecode
  kind: action
  command: "POST /api/session/transport/gototimecode"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, timecode: string, ignoreTags: boolean, playmode: string}

- id: goto_track
  label: Jump to Track
  kind: action
  command: "POST /api/session/transport/gototrack"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, track: {uid, name}, playmode: string}

- id: play
  label: Play Transport
  kind: action
  command: "POST /api/session/transport/play"
  params:
    - name: transports
      type: array
      description: Array of {uid: string, name: string}

- id: play_loop_section
  label: Loop Section
  kind: action
  command: "POST /api/session/transport/playloopsection"
  params:
    - name: transports
      type: array
      description: Array of {uid: string, name: string}

- id: play_section
  label: Play Section to End
  kind: action
  command: "POST /api/session/transport/playsection"
  params:
    - name: transports
      type: array
      description: Array of {uid: string, name: string}

- id: return_to_start
  label: Return to Start
  kind: action
  command: "POST /api/session/transport/returntostart"
  params:
    - name: transports
      type: array
      description: Array of {uid: string, name: string}

- id: get_setlists
  label: List SetLists
  kind: query
  command: "GET /api/session/transport/setlists"
  params: []

- id: stop
  label: Stop Transport
  kind: action
  command: "POST /api/session/transport/stop"
  params:
    - name: transports
      type: array
      description: Array of {uid: string, name: string}

- id: get_tracks
  label: List Tracks
  kind: query
  command: "GET /api/session/transport/tracks"
  params: []

- id: get_transports
  label: List Transports
  kind: query
  command: "GET /api/session/transport/transports"
  params: []

- id: set_volume
  label: Set Volume
  kind: action
  command: "POST /api/session/transport/volume"
  params:
    - name: transports
      type: array
      description: Array of {transport: {uid, name}, volume: number}

Feedbacks

- id: transport_state
  type: object
  description: Returned by GET /activetransport (in `result`) and GET /transports (in top-level `transports` array). Includes engaged (bool), volume (number), brightness (number), playmode (string), currentTrack (object), receivingTimecode (bool), setList (object with tracks array)
- id: multitransport_info
  type: object
  description: Returned by GET /transports in top-level `multitransports` array. Fields: uid, name, engaged (bool), transports (array of member transport references)
- id: playmode
  type: enum
  values: ["play", "loop section", "play to end of section"]
  description: Playmode strings as documented verbatim in source ('play' via POST /play, 'loop section' via POST /playloopsection, 'play to end of section' via POST /playsection)
- id: track_info
  type: object
  description: Returned by /tracks and inside setList. Fields: uid, name, length (number), crossfade (string)
- id: annotations
  type: object
  description: Returned by /annotations. Fields: notes [{time, text}], tags [{time, type, value}], sections [{time, index}]
- id: status
  type: object
  description: All responses include status {code: int, message: string, details: array}. code 0 indicates success per documented examples

Variables

Events

<!-- UNRESOLVED: source documents only request/response polling; no unsolicited event/notification mechanism described -->

Macros

<!-- UNRESOLVED: source describes individual endpoints, not multi-step sequences -->

Safety

confirmation_required_for: []
interlocks: []
<!-- UNRESOLVED: no safety warnings, interlocks, or power-on sequencing in source -->

Notes

Source is the vendor-documented Transport API only. The wider Designer control surface (timeline composition, render nodes, video routing) is not covered. All endpoints expect JSON bodies wrapped in transports: [] (most POSTs) or top-level arrays. Status envelope code: 0 indicates success per documented examples.

GET /activetransport returns the transport selected in the d3State bar; if a multitransport is selected, it returns all sub-transports of that multitransport. GET /transports returns both transports and multitransports top-level arrays (not under result).


Upgrade pass done. All 24 source endpoints already in spec — none deleted, IDs preserved. Added: `multitransport_info` feedback, verbatim playmode strings, response-shape notes (activetransport multitransport behavior, /transports top-level keys).

## Provenance

```yaml
source_domains: []
source_urls: []
retrieved_at: 2026-08-31T11:10:14.229Z
last_checked_at: 2026-08-31T11:10:14.229Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-08-31T11:10:14.229Z
matched_actions: 24
action_count: 24
confidence: medium
summary: "All 24 spec action endpoints are present verbatim in the source with matching URLs and ports; no extra source commands remain. (4 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "source documents only request/response polling; no unsolicited event/notification mechanism described"
- "source describes individual endpoints, not multi-step sequences"
- "no safety warnings, interlocks, or power-on sequencing in source"
- "base URL/port for the Designer HTTP service not stated in source (path prefix `/api/session/transport` documented, host:port left blank); firmware version compatibility not stated; auth (none inferred) not explicitly stated by vendor; playmode string after POST /stop not documented"
- "model-specific source not located"
```

---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0