Some errors are not JSON. They come from request parsing, before Shriek
looks at your credential, and are plain text:
Status
Cause
Example body
400
The body is not valid JSON, or a query value has the wrong type
Failed to deserialize query string: since: invalid digit found in string
413
Body larger than 64 KiB
Failed to buffer the request body: length limit exceeded
415
Body sent without Content-Type: application/json
Expected request with `Content-Type: application/json`
422
Body is JSON but a field is missing, empty, too long or not an allowed value
Failed to deserialize the JSON body into the target type: severity: unknown variant `error`, expected one of `info`, `warn`, `critical` at line 1 column 60
A rule the parser doesn’t check: period_secs under 60, detail over 4096 bytes, an incident id over 256 bytes, or a tenant or service in the path that isn’t valid.
401
No credential, or one Shriek can’t verify.
403
A valid credential that isn’t connected to a tenant. Also the edge’s rate limit; see below.
404
A heartbeat for, or publishing, a source that isn’t registered; retiring a source that was never registered; or resolving an incident that isn’t open.
413, 415, 422
Parsing errors; see above.
500
Something failed inside Shriek. Your alert may or may not have been recorded; read the feed before you retry, or accept a duplicate.
503
Shriek couldn’t check your token: it couldn’t reach ChirpAuth, or its record of which client belongs to which tenant. Nothing was recorded; retry with backoff.
Per IP address. More than 2,000 requests from one IP address in
5 minutes are blocked at the edge with 403, until the rate falls. That
response is not Shriek’s JSON.