@remit/api-openapi-spec 0.0.43 → 0.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/openapi.json +67 -8
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -2812,7 +2812,7 @@
|
|
|
2812
2812
|
"name": "senderTrust",
|
|
2813
2813
|
"in": "query",
|
|
2814
2814
|
"required": false,
|
|
2815
|
-
"description": "Filter to messages whose From address has one of these trust levels. Off-row criterion
|
|
2815
|
+
"description": "Filter to messages whose From address has one of these trust levels. Off-row criterion: resolved by enriching the rows this page read, not by a predicate over the mailbox, so `count` comes back absent whenever it is supplied.",
|
|
2816
2816
|
"schema": {
|
|
2817
2817
|
"type": "array",
|
|
2818
2818
|
"items": {
|
|
@@ -2836,7 +2836,7 @@
|
|
|
2836
2836
|
"name": "dkimMismatch",
|
|
2837
2837
|
"in": "query",
|
|
2838
2838
|
"required": false,
|
|
2839
|
-
"description": "Filter on the DKIM-alignment signal (true = DKIM mismatch). Off-row criterion
|
|
2839
|
+
"description": "Filter on the DKIM-alignment signal (true = DKIM mismatch). Off-row criterion, like `senderTrust`: rows without an authenticity signal never match, and `count` comes back absent whenever it is supplied.",
|
|
2840
2840
|
"schema": {
|
|
2841
2841
|
"type": "boolean"
|
|
2842
2842
|
}
|
|
@@ -2845,7 +2845,7 @@
|
|
|
2845
2845
|
"name": "count",
|
|
2846
2846
|
"in": "query",
|
|
2847
2847
|
"required": false,
|
|
2848
|
-
"description": "Include how many messages the query matches
|
|
2848
|
+
"description": "Include how many messages the query matches, exactly, over the whole mailbox. Opt-in because it is a second read over the entire match set rather than a by-product of the page: ask for it on a deliberate act, never on a keystroke. Answered as absent — not as a page length — when the query carries `senderTrust` or `dkimMismatch`, which no predicate can count.",
|
|
2849
2849
|
"schema": {
|
|
2850
2850
|
"type": "boolean"
|
|
2851
2851
|
}
|
|
@@ -2863,7 +2863,7 @@
|
|
|
2863
2863
|
"name": "limit",
|
|
2864
2864
|
"in": "query",
|
|
2865
2865
|
"required": false,
|
|
2866
|
-
"description": "Page size for the rows returned, capped server-side at 500.
|
|
2866
|
+
"description": "Page size for the rows returned, capped server-side at 500. It bounds this page and nothing else: `count` is over the whole mailbox and does not move when this does.",
|
|
2867
2867
|
"schema": {
|
|
2868
2868
|
"type": "integer",
|
|
2869
2869
|
"format": "int32"
|
|
@@ -4170,7 +4170,7 @@
|
|
|
4170
4170
|
"name": "count",
|
|
4171
4171
|
"in": "query",
|
|
4172
4172
|
"required": false,
|
|
4173
|
-
"description": "Include how many
|
|
4173
|
+
"description": "Include how many conversations the listing matches, exactly, over the whole scope. Opt-in because it is a second read over the entire match set rather than a by-product of the page: ask for it on a deliberate act, never on a keystroke.",
|
|
4174
4174
|
"schema": {
|
|
4175
4175
|
"type": "boolean"
|
|
4176
4176
|
}
|
|
@@ -7871,6 +7871,16 @@
|
|
|
7871
7871
|
},
|
|
7872
7872
|
"description": "Recorded when the user reported this message as spam via `POST /messages/report-spam`. Present means the report stands; absent means never reported, or reported and then undone via `POST /messages/not-spam` (which clears it). Backs the \"Reported as spam · Undo\" affordance independent of the message's current folder — the underlying move can settle, fail, or no-op (already in Junk) without changing whether the report itself is shown."
|
|
7873
7873
|
},
|
|
7874
|
+
"RemitImap.MessageStatus": {
|
|
7875
|
+
"type": "string",
|
|
7876
|
+
"enum": [
|
|
7877
|
+
"active",
|
|
7878
|
+
"deleting",
|
|
7879
|
+
"deleted",
|
|
7880
|
+
"moving"
|
|
7881
|
+
],
|
|
7882
|
+
"description": "Message lifecycle status for move/delete operations"
|
|
7883
|
+
},
|
|
7874
7884
|
"RemitImap.MessageSummaryResponse": {
|
|
7875
7885
|
"type": "object",
|
|
7876
7886
|
"required": [
|
|
@@ -7878,7 +7888,9 @@
|
|
|
7878
7888
|
"mailboxId",
|
|
7879
7889
|
"uid",
|
|
7880
7890
|
"rfc822Size",
|
|
7881
|
-
"internalDate"
|
|
7891
|
+
"internalDate",
|
|
7892
|
+
"status",
|
|
7893
|
+
"syncStatus"
|
|
7882
7894
|
],
|
|
7883
7895
|
"properties": {
|
|
7884
7896
|
"messageId": {
|
|
@@ -7924,6 +7936,26 @@
|
|
|
7924
7936
|
"description": "Message-ID header value for quick reference",
|
|
7925
7937
|
"readOnly": true
|
|
7926
7938
|
},
|
|
7939
|
+
"status": {
|
|
7940
|
+
"allOf": [
|
|
7941
|
+
{
|
|
7942
|
+
"$ref": "#/components/schemas/RemitImap.MessageStatus"
|
|
7943
|
+
}
|
|
7944
|
+
],
|
|
7945
|
+
"description": "Message lifecycle status for move/delete operations. Defaults to `active` (normal, visible).",
|
|
7946
|
+
"default": "active",
|
|
7947
|
+
"readOnly": true
|
|
7948
|
+
},
|
|
7949
|
+
"syncStatus": {
|
|
7950
|
+
"allOf": [
|
|
7951
|
+
{
|
|
7952
|
+
"$ref": "#/components/schemas/RemitImap.MessageSyncStatus"
|
|
7953
|
+
}
|
|
7954
|
+
],
|
|
7955
|
+
"description": "Sync status for move/delete operations. The `synced` column default only applies to a row written without the field: the repository always supplies one, and an ordinary inbound sync writes `pending`, which nothing later promotes. So `pending` here does not mean an outstanding move or delete — `status` names that, and `failed` marks a mutation that gave up.",
|
|
7956
|
+
"default": "synced",
|
|
7957
|
+
"readOnly": true
|
|
7958
|
+
},
|
|
7927
7959
|
"authenticity": {
|
|
7928
7960
|
"allOf": [
|
|
7929
7961
|
{
|
|
@@ -7959,6 +7991,15 @@
|
|
|
7959
7991
|
},
|
|
7960
7992
|
"description": "Core message metadata for API responses"
|
|
7961
7993
|
},
|
|
7994
|
+
"RemitImap.MessageSyncStatus": {
|
|
7995
|
+
"type": "string",
|
|
7996
|
+
"enum": [
|
|
7997
|
+
"synced",
|
|
7998
|
+
"pending",
|
|
7999
|
+
"failed"
|
|
8000
|
+
],
|
|
8001
|
+
"description": "Sync status for message move/delete operations"
|
|
8002
|
+
},
|
|
7962
8003
|
"RemitImap.MintOutboxAttachmentInput": {
|
|
7963
8004
|
"type": "object",
|
|
7964
8005
|
"required": [
|
|
@@ -9494,7 +9535,9 @@
|
|
|
9494
9535
|
"updatedAt",
|
|
9495
9536
|
"category",
|
|
9496
9537
|
"senderTrust",
|
|
9497
|
-
"muted"
|
|
9538
|
+
"muted",
|
|
9539
|
+
"status",
|
|
9540
|
+
"syncStatus"
|
|
9498
9541
|
],
|
|
9499
9542
|
"properties": {
|
|
9500
9543
|
"threadMessageId": {
|
|
@@ -9640,6 +9683,22 @@
|
|
|
9640
9683
|
],
|
|
9641
9684
|
"description": "Structured sender-authenticity signal derived from DKIM headers at classification time (from the underlying Message). Absent for messages classified before this field was introduced — absence means no signal."
|
|
9642
9685
|
},
|
|
9686
|
+
"status": {
|
|
9687
|
+
"allOf": [
|
|
9688
|
+
{
|
|
9689
|
+
"$ref": "#/components/schemas/RemitImap.MessageStatus"
|
|
9690
|
+
}
|
|
9691
|
+
],
|
|
9692
|
+
"description": "Mutation lifecycle of the underlying Message, projected at read time — the ThreadMessage row has no column of its own. `active` means no move or delete is outstanding; `moving` or `deleting` means one is, and this row's folder is a local write the mail server has not confirmed."
|
|
9693
|
+
},
|
|
9694
|
+
"syncStatus": {
|
|
9695
|
+
"allOf": [
|
|
9696
|
+
{
|
|
9697
|
+
"$ref": "#/components/schemas/RemitImap.MessageSyncStatus"
|
|
9698
|
+
}
|
|
9699
|
+
],
|
|
9700
|
+
"description": "Sync status of the underlying Message, projected at read time. Read it WITH `status`, never alone: `message-move`, `message-delete` and `message-copy` all write `failed` on an ordinary transient attempt before a redelivery that usually succeeds, so `failed` by itself does not mean a mutation gave up. One pair does prove one: `active` + `failed`, written only by `abandonDelete` — a delete Remit refused to run and handed back. Nothing else here is decidable. A move that gave up leaves `moving` + `failed`, the same pair its first dropped connection leaves; a delete that exhausted its retries is repaired to `active` + `synced` and reads as settled; `flag-push` and `placement-move-push` never write either field."
|
|
9701
|
+
},
|
|
9643
9702
|
"accountId": {
|
|
9644
9703
|
"allOf": [
|
|
9645
9704
|
{
|
|
@@ -9695,7 +9754,7 @@
|
|
|
9695
9754
|
"count": {
|
|
9696
9755
|
"type": "integer",
|
|
9697
9756
|
"format": "int32",
|
|
9698
|
-
"description": "How much the query matches, over the whole scope and
|
|
9757
|
+
"description": "How much the query matches, over the whole scope. Exact: no page size bounds\nit, no cursor narrows it, so it is the same number on the first page and the\nlast. Present only when `count=true`.\n\nEach operation counts what it lists. `searchThreads` lists messages of one\nmailbox and counts messages. `listAllThreads` counts CONVERSATIONS across\nevery non-muted mailbox of every account — a thread holding two matching\nmessages counts once, and so does one message reachable through a real\nfolder and a virtual copy of it — because that is what the cross-account\nlisting renders after collapsing by `threadId`. A count that disagreed with\nthe rows beneath it would be a third number for the same set.\n\nAbsent when the query carries `senderTrust` or `dkimMismatch`, even with\n`count=true`. Those are resolved by enriching rows rather than by a\npredicate, so no exact count exists short of enriching the whole mailbox.\nAbsence says so; a page's post-filter length labelled `count` would be a\npage length presented as a total. A client with no number renders none."
|
|
9699
9758
|
}
|
|
9700
9759
|
},
|
|
9701
9760
|
"description": "Aggregate response for the filterable thread listings — `searchThreads` and\n`listAllThreads`. Carries the matching rows (`items`), a pagination\n`continuationToken`, and an optional `count` of what the query matches.\n`items` is omitted when `results=false` (count-only); `count` is present only\nwhen `count=true`. Thread-specific so the shared `ResultList<T>` (7 endpoints)\nstays untouched.\n\n`listAllThreads` answers with this model rather than `ResultList<T>` for that\nsame reason: it needs the count field and the shared model cannot carry one.\nOne model over both operations rather than a second of the same shape, so a\nclient reading a filtered thread listing reads one response type whether the\nlisting is scoped to a mailbox or spans every account."
|