In the context of an S2S
append or read session, an error that occurs after a 200 OK status will be a “terminal message” on the response stream. However, pre-flight errors are sent normally.Standard Errors
A standard error body has the following JSON form:| Code | HTTP Status | Retryable | Side Effect |
|---|---|---|---|
bad_header | 400 | No | No |
bad_path | 400 | No | No |
bad_query | 400 | No | No |
bad_json | 400 | No | No |
bad_proto | 400 | No | No |
bad_frame | 400 | No | No |
invalid | 422 | No | No |
permission_denied | 403 | No | No |
quota_exhausted | 403 | No | No |
basin_not_found | 404 | No | No |
stream_not_found | 404 | No | No |
access_token_not_found | 404 | No | No |
request_timeout | 408 | Yes | Maybe |
resource_already_exists | 409 | No | No |
basin_deletion_pending | 409 | No | No |
stream_deletion_pending | 409 | No | No |
transaction_conflict | 409 | Yes | No |
rate_limited | 429 | Yes | No |
other | 500 | Yes | Maybe |
storage | 500 | Yes | Maybe |
hot_server | 502 | Yes | No |
unavailable | 503 | Yes | No |
upstream_timeout | 504 | Yes | Maybe |
Structured Errors
Append Condition Failed (412)
Seeappend concurrency control for more context.
- Fencing Token Mismatch
- Sequence Number Mismatch
Starting Point Out of Range (416)
416 without a Range header? Unconventional, but the shoe fits.See the precise conditions under which this is returned in response to a read request.tail field indicates the current end position of the stream.
