Retrieves a MessagePage resource.
const url = 'https://api.facteur.local/inboxes/example/messages';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.facteur.local/inboxes/example/messages \ --header 'Authorization: Bearer <token>'Retrieves a MessagePage resource.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”MessagePage identifier
Query Parameters
Section titled “Query Parameters”The size of the page: 50 by default, 200 at most; a larger one is brought down to 200.
The nextCursor of the previous page; absent for the first one.
Responses
Section titled “Responses”MessagePage resource
A page of messages and the cursor of the next one.
object
A message an inbox received, or the trace of one it refused.
object
The real attachments of the message, kept or not, by name then identifier; an embedded image is not one (see inlines). Absent on a refused message. Download a kept one with downloadAttachment, by its identifier: the response never says where the bytes are.
object
sha256: then the sha256 of the decoded bytes, in hexadecimal.
The type the sender declared, which nothing checked against the bytes.
As the sender wrote it: data, never a path.
Why the bytes were not kept; only on an attachment that was not.
Of the decoded bytes.
Whether the bytes were kept, so whether there is something to download. It is reason being absent.
Every code the ingester found, the best candidate first. Absent on a refused message.
What the connection knew, in the read of one message and in a search of the public API: null when the ingester knew nothing, and each fact null when it did not know it, never an empty string. A refused message keeps it.
object
Named, such as TLS 1.3, never a number.
How long the ingester took to accept it, in milliseconds.
Why the message was refused; only on a quota_exceeded message, which carries nothing derived. One of PLAN_QUOTA_EXCEEDED, INBOX_QUOTA_EXCEEDED, WORKSPACE_QUOTA_EXCEEDED, OVERAGE_CAP_REACHED, DAILY_SPIKE_CAP, SUBSCRIPTION_SUSPENDED; a code a later version of the ingester writes is said as it is.
When the retention of the plan removes the message, or null when it does not expire.
The values the extractors of the inbox found, by key. Absent on a refused message.
object
The display name of the sender, when the message gave one. Absent on a refused message.
The headers of the message, names in lower case; in the read of one message and in a search of the public API. Absent on a refused message.
object
In the read of one message and in a search of the public API; absent from the list of an inbox and from the search of app. Absent on a refused message.
The inbox that received it.
The images embedded in the body, such as a signature logo: the parts the message declared inline. They are not attachments (never counted among them, never found by a search) and carry no link. Absent on a refused message.
object
What the cid: of the HTML body names.
The links of the message, in order of appearance, the HTML part first. Absent on a refused message.
The one-time code the ingester extracted, null when there is none. Absent on a refused message.
The size of the message as received, in bytes; 0 on a message that was refused, whose content was not kept.
The state of the message. Read it before anything derived from the body.
Absent on a refused message; null when there is none.
In the read of one message and in a search of the public API; absent from the list of an inbox and from the search of app. Absent on a refused message.
The channel that carried it.
Send it back as cursor to read the next page; null on the last page.
Example
{ "messages": [ { "attachments": [ { "reason": "PERFORMANCE_MODE" } ], "status": "received", "type": "email" } ]}No key, or a key that is refused. WWW-Authenticate says where to read how to present one.
A refusal, as RFC 9457 application/problem+json with the code of the register. A code adds the members its rule needs (retryAfter, permission…), so more members than these may come.
object
The stable code of the refusal. It never changes once shipped.
English prose for the person who reads the answer. It may be reworded: branch on code.
The HTTP status.
The name of the HTTP status.
The address of the problem: /errors/<code>.
On a body that fails validation, one entry per field.
object
Example
{ "code": "BAD_REQUEST", "status": 404, "title": "Not Found", "type": "/errors/INBOX_NOT_FOUND", "violations": [ { "code": "BAD_REQUEST" } ]}The key does not hold the permission of the operation, or the operation refuses every key.
A refusal, as RFC 9457 application/problem+json with the code of the register. A code adds the members its rule needs (retryAfter, permission…), so more members than these may come.
object
The stable code of the refusal. It never changes once shipped.
English prose for the person who reads the answer. It may be reworded: branch on code.
The HTTP status.
The name of the HTTP status.
The address of the problem: /errors/<code>.
On a body that fails validation, one entry per field.
object
Example
{ "code": "BAD_REQUEST", "status": 404, "title": "Not Found", "type": "/errors/INBOX_NOT_FOUND", "violations": [ { "code": "BAD_REQUEST" } ]}There is none of this identifier in the reach of the key. The answer is the same for another organization or a workspace the key does not name.
A refusal, as RFC 9457 application/problem+json with the code of the register. A code adds the members its rule needs (retryAfter, permission…), so more members than these may come.
object
The stable code of the refusal. It never changes once shipped.
English prose for the person who reads the answer. It may be reworded: branch on code.
The HTTP status.
The name of the HTTP status.
The address of the problem: /errors/<code>.
On a body that fails validation, one entry per field.
object
Example
{ "code": "BAD_REQUEST", "status": 404, "title": "Not Found", "type": "/errors/INBOX_NOT_FOUND", "violations": [ { "code": "BAD_REQUEST" } ]}More calls than the key may make in a minute. Retry-After says when to try again.
A refusal, as RFC 9457 application/problem+json with the code of the register. A code adds the members its rule needs (retryAfter, permission…), so more members than these may come.
object
The stable code of the refusal. It never changes once shipped.
English prose for the person who reads the answer. It may be reworded: branch on code.
The HTTP status.
The name of the HTTP status.
The address of the problem: /errors/<code>.
On a body that fails validation, one entry per field.
object
Example
{ "code": "BAD_REQUEST", "status": 404, "title": "Not Found", "type": "/errors/INBOX_NOT_FOUND", "violations": [ { "code": "BAD_REQUEST" } ]}default
Section titled “default”Any refusal: an application/problem+json body whose code says which.
A refusal, as RFC 9457 application/problem+json with the code of the register. A code adds the members its rule needs (retryAfter, permission…), so more members than these may come.
object
The stable code of the refusal. It never changes once shipped.
English prose for the person who reads the answer. It may be reworded: branch on code.
The HTTP status.
The name of the HTTP status.
The address of the problem: /errors/<code>.
On a body that fails validation, one entry per field.
object
Example
{ "code": "BAD_REQUEST", "status": 404, "title": "Not Found", "type": "/errors/INBOX_NOT_FOUND", "violations": [ { "code": "BAD_REQUEST" } ]}