Changelog
Protocol and documentation changes, per release. Maintained by hand, newest first.
Unreleased
- New query
asset.stream-offer, which starts a WebRTC stream of a url asset to one viewer. The video goes directly from the player to the viewer, the gateway only carries the handshake. See Streaming a url asset. - New requests
asset.stream-resizeandasset.stream-stop, which change the size of a running stream and stop it. - New error code 716: the player already streams to its maximum number of viewers (
maxUrlStreams, default 4). - The C# SDK exposes OfferUrlAssetStreamAsync, ResizeUrlAssetStreamAsync and StopUrlAssetStreamAsync.
- The C# SDK exposes AnimateAssetRectAsync. Every asset request method also has a ByUuid variant, for example ShowAssetByUuidAsync, which addresses the asset by its uuid instead of its integrationId.
2026-09-25
scene.changeacceptssceneIndexas a third way to address the scene, next touuidandintegrationId. The screensaver scene is index 0, the other scenes count from 1 in story order, skipping the screensaver. The C# SDK exposes ChangeSceneByIndexAsync.- The Scene model carries
sceneIndex, visible instory.dataandscene.status, andscene.changingandscene.changedcarry thesceneIndexof the scene they identify.
2026-09-15
- New request
asset.change-url, which loads another page in a url asset for the rest of the scene. The authored url stays the asset's home, soasset.backandasset.homestill return to it, and leaving the scene loads it again. - New event
asset.url-changed, published whenever the page a url asset shows changes, carrying the page that loaded. Besidesasset.change-urlit also coversasset.back,asset.forwardandasset.home, the navigation panel, and a visitor following a link.
2026-08-26
- New event
instance.state-changed, published on every playback state change and carrying the new state. The C# SDK exposes WaitForInstanceStateChangedAsync to wait for a specific state. - New events
screensaver.enteredandscreensaver.exited, published when a scene change moves the player into or out of the screensaver scene. - New events
interaction.down,interaction.drag,interaction.longpress, andinteraction.up, reporting visitor touches with the pressed asset, position, and touch id. - New event
scene.changing, published when a scene change starts, before the transition runs. - New events
asset.looped(a looping video or sound wrapped around) andasset.completed(a non-looping video or sound reached its end and stopped). scene.changedandscene.changingcarry the cause of the change and the pressed asset or fired trigger that caused it.asset.shownandasset.hiddencarry the cause of the change the same way.story.startedandstory.stoppedcarry the version of the story that is playing.
2026-08-24
- The C# SDK message types moved from the TSS.Play.Shared.* namespaces to TSS.Gateway.Sdk.Models, TSS.Gateway.Sdk.Events, and TSS.Gateway.Sdk.Requests. Breaking for SDK package consumers: update your using directives when upgrading.
- InstanceHeartbeatEvent no longer carries the ip and apiPort fields; the player's removed local HTTP API was their only use. The field numbers are reserved.
2026-08-21
asset.volume-changednow carries AssetVolumeChangedEvent instead of AssetVolumeChangeRequest. The event message was already defined, nothing published it.- The wire format is unchanged for existing consumers, both messages use the same field numbers and types.
- The event now also carries
uuid. It was previously left empty because the request message wrapsuuidandintegrationIdin aoneof. - The C# SDK method
WaitForAssetVolumeChangedAsyncreturns AssetVolumeChangedEvent instead of AssetEvent.
2026-08-14
- Initial documentation set: getting started, concepts, routing, authentication, requests, events, queries, best practices, and feature requests.
- Documents the protocol as currently on
latest: 36 requests, 18 events, 8 queries.