Head stream
bucketpathstringrequiredBucket ID.
streampathstringrequiredStream ID within the bucket.
Stream-IncarnationheaderstringOptional precondition: the stream's incarnation token, as a previous response's Stream-Incarnation header returned it. The HEAD answers 200 only if the stream is still that incarnation; otherwise 412, with the current token in Stream-Incarnation. Without the header, the request behaves exactly as described here. A malformed value answers 400. See Stream-Incarnation.
Response
| Status | Meaning |
|---|---|
200 | Stream found. |
307 | In a cluster, this node could not answer as the stream's group leader. Location is the same request on the leader. |
404 | Stream not found or expired. |
412 | Stream-Incarnation did not match. The response's Stream-Incarnation is the current token. |
503 | The group has no known leader, or the leader could not confirm its leadership in time. Retry after Retry-After. |
HEAD is linearizable: the leader confirms with a majority of voters that it still leads before it answers, so the response reflects every append acknowledged before the request started. See Durability and consistency.
Response headers include:
| Header | Description |
|---|---|
Content-Type | The stream's content type. |
Stream-Next-Offset | The stream's tail: the offset the next append starts at. |
Stream-Closed | Present and true if the stream is closed. |
Stream-Retained-Offset | The earliest offset still readable. Reads below it answer 410 Gone. Before any retention advance, it is the start of the stream. |
Stream-Snapshot-Offset | The offset of the latest snapshot. Absent when the stream has no snapshot. Read the snapshot with GET …/snapshot/{offset}. |
Stream-Snapshot-Digest | The digest of the latest snapshot's content type and body, as its publish returned it. Present with Stream-Snapshot-Offset. |
Stream-Incarnation | An opaque token for this incarnation of the stream. It changes when the stream is deleted and recreated at the same URL; compare it only for equality. |
Ursula-Protocol | 2. Present on every answer to a HEAD, 404, 307 and 503 included. See Server metadata. |
Ursula-Cluster-Id | The deployment that served the request, as server.cluster_id names it. Present on every answer to a HEAD. A different id means another deployment, not a new history of the stream. |
Ursula-Max-Request-Bytes | The largest request body any request to the stream may carry: 33554432 (32 MiB) from a node, lowered by a gateway with a smaller limit. A larger request answers 413. A larger snapshot goes up in parts. See Server metadata. |
Ursula-Max-Snapshot-Bytes | The largest snapshot the node accepts in parts: 1073741824 (1 GiB), in at most 4,096 parts. Present only on a node with a cold backend. A gateway passes it unchanged: each part is a request under its own limit. |
Stream-TTL | The configured TTL in seconds (if a TTL was set). This is the sliding window length, not the time remaining. HEAD does not renew it. |
Stream-Expires-At | Expiration timestamp (if set). |
Cache-Control | no-store. |
Stream-Cold-Hot-Start-Offset | Diagnostic and unstable: may change or disappear in any release. Data below this offset has been flushed to cold storage. |
curl -I http://127.0.0.1:4437/demo/hello