Domain
An error the schema declares for this operation, such as OutOfStock. It arrives with a type and its data.
Why it happens
- The resolver threw one of the errors listed in the operation's
throws. The error'stypeis its name in the schema, anddataholds its fields. - Over a REST binding, the problem's
typeends with that name, for example/errors/OutOfStock. The API you are calling defines it: look it up in that API's schema.
What to do
- Handle it in the client by name:
e.is("OutOfStock")in TypeScript, or the generated sealed class on the JVM. - A resolver may only throw errors the operation declares. Any other becomes
internal, so add it tothrowsfirst.
What it looks like
Inside a batch, the operation's frame carries it:
json
{
"id": 1,
"error": {
"code": "domain",
"type": "OutOfStock",
"data": {
"bookId": "b1",
"available": 1
},
"message": "Only 1 left"
},
"fin": true
}retryable appears only where it differs from the code's default, which is the one at the top of this page.
When the whole request is refused over HTTP, the answer is a problem document:
json
{
"type": "https://eddyboutros.github.io/rayfold/errors/OutOfStock",
"title": "OutOfStock",
"status": 422,
"detail": "Only 1 left",
"code": "domain",
"data": {
"bookId": "b1",
"available": 1
}
}See also all error types and the errors chapter of the specification.