/streams sequence / lastEventId

Regarding the /streams endpoint: is the sequence / lastEventId common to all or individual to each Type?

Specifically I’m consuming both notifications and protocol states, so I need to know if I need to keep track of one Id for each or there is a unified Id across all?

sealed class ClientStreamPackage

data class ClientHeartbeat(val tick: Long) : ClientStreamPackage()
data class ClientClear(val boolean: Boolean) : ClientStreamPackage()
data class ClientMessage(val message: String) : ClientStreamPackage()
data class ClientStreamProtocolState(
    val sequence: Long,
    val commandId: UUID,
    val payload: ClientProtocolState,
) : ClientStreamPackage()

data class ClientStreamNotification(
    val sequence: Long,
    val payload: ClientNotification,
) : ClientStreamPackage()

data class ClientStreamCommand(
    val sequence: Long,
    val payload: ClientCommand,
) : ClientStreamPackage()

data class ClientStreamPrototype(
    val sequence: Long,
    val prototype: ClientPrototype,
) : ClientStreamPackage()

I think I’ve answered my own question - all the ids are independent (see the redacted stream output below).

But this gives rise to another more important question - given that you can only pass one Last-Event-ID to the /streams (all) endpoint how does that affect things? (Regardless of the answer it seems like this is a bug to me - but I can test this too, so I’ll post another comment)

id:10
event:command

id:20
event:state

event:tick
data:{"payloadType":"tick","tick":1734697044769}

id:11
event:command

id:12
event:command

id:21
event:state

id:22
event:state

id:23
event:state

id:3
event:notify

id:4
event:notify

event:tick
data:{"payloadType":"tick","tick":1734697045772}

id:13
event:command

From my testing it seems like it affects every stream :frowning:

Yes, both of observations are true: the streams/all is an aggregation of the other streams.

I agree with you, using the lastEventId does not really make sense for the streams/all endpoint. (not sure how one could fix that though: only by removing the input for this particular endpoint.) … :person_shrugging:

Yip, either remove the Last-Event-Id param for all streams or add one for all the stream types.

Taking my specific scenario into account here’s why I needed to think about it:

I wasn’t sure if I needed 2 listeners, one for notifications and one for states, or just one would suffice, for all. Turns out I need 2.

Hope that helps anyone facing this question in the future :slight_smile: