@remit/api-openapi-types 0.0.54 → 0.0.56

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/types.d.ts +34 -10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remit/api-openapi-types",
3
- "version": "0.0.54",
3
+ "version": "0.0.56",
4
4
  "type": "module",
5
5
  "main": "types.d.ts",
6
6
  "types": "types.d.ts",
package/types.d.ts CHANGED
@@ -1648,17 +1648,17 @@ with `onExisting: merge` to upsert instead.
1648
1648
  */
1649
1649
  parentMailboxId: string;
1650
1650
  /**
1651
- * Sync status for mailbox operations (create, rename, delete)
1651
+ * Which folder mutation is outstanding, read as a pair with `pendingPath` (docs/architecture/folder-rename-and-delete.md D1, D3). Total: a row written without one is `synced`, because a folder the server just told us about is confirmed. Four values carry six states — `pending` covers a create and a rename in flight, `failed` covers a failed rename and a failed delete — so every guard and every transition predicate names the pair, never this field alone.
1652
1652
  */
1653
- syncStatus?: MailboxSyncStatus;
1653
+ syncStatus: MailboxSyncStatus;
1654
1654
  /**
1655
- * Cursor integrity state machine for stored UIDs (epic #1281 invariant 5, issue #1272). Total per RFC 032: defaults to `normal` rather than being absent. A row written before this field existed reads back as `normal` (unset DynamoDB/Postgres attribute deserializes to the schema default).
1655
+ * The path a recorded rename is moving this folder to. Absent unless a rename is in flight or has just failed, which is what tells a create in flight from a rename in flight (D2, D3). `fullPath` stays the path the server holds throughout, so a failed rename is this field cleared rather than a subtree of paths restored. Invariant: non-null only while `syncStatus` is `pending` or `failed`.
1656
1656
  */
1657
- cursorState: MailboxCursorState;
1657
+ pendingPath?: String512;
1658
1658
  /**
1659
- * Previous path before rename (used during RENAME sync)
1659
+ * Cursor integrity state machine for stored UIDs (epic #1281 invariant 5, issue #1272). Total per RFC 032: defaults to `normal` rather than being absent. A row written before this field existed reads back as `normal` (unset DynamoDB/Postgres attribute deserializes to the schema default).
1660
1660
  */
1661
- oldPath?: String512;
1661
+ cursorState: MailboxCursorState;
1662
1662
  /**
1663
1663
  * Denormalized list of IMAP SPECIAL-USE designations (RFC 6154). Populated from the same `\Sent`, `\Drafts`, etc. attributes the server reports during LIST. Stored on the row to avoid an N+1 join when listing mailboxes.
1664
1664
  */
@@ -1719,9 +1719,13 @@ with `onExisting: merge` to upsert instead.
1719
1719
  */
1720
1720
  lastMessageSyncAt: number;
1721
1721
  /**
1722
- * Sync status for mailbox operations (create, rename, delete)
1722
+ * Which folder mutation is outstanding, read as a pair with `pendingPath` (docs/architecture/folder-rename-and-delete.md D1, D3). Total: a row written without one is `synced`, because a folder the server just told us about is confirmed. Four values carry six states — `pending` covers a create and a rename in flight, `failed` covers a failed rename and a failed delete — so every guard and every transition predicate names the pair, never this field alone.
1723
1723
  */
1724
- syncStatus?: MailboxSyncStatus;
1724
+ syncStatus: MailboxSyncStatus;
1725
+ /**
1726
+ * The path a recorded rename is moving this folder to. Absent unless a rename is in flight or has just failed, which is what tells a create in flight from a rename in flight (D2, D3). `fullPath` stays the path the server holds throughout, so a failed rename is this field cleared rather than a subtree of paths restored. Invariant: non-null only while `syncStatus` is `pending` or `failed`.
1727
+ */
1728
+ pendingPath?: String512;
1725
1729
  /**
1726
1730
  * Denormalized list of IMAP SPECIAL-USE designations (RFC 6154). Populated from the same `\Sent`, `\Drafts`, etc. attributes the server reports during LIST. Stored on the row to avoid an N+1 join when listing mailboxes.
1727
1731
  */
@@ -6537,6 +6541,10 @@ declare namespace Paths {
6537
6541
  limit?: number;
6538
6542
  starred?: boolean;
6539
6543
  query?: string;
6544
+ from?: string;
6545
+ subject?: string;
6546
+ accountId?: Components.Schemas.UUID;
6547
+ muted?: boolean;
6540
6548
  category?: Components.Schemas.MessageCategory[];
6541
6549
  unread?: boolean;
6542
6550
  attachments?: boolean;
@@ -7296,7 +7304,9 @@ Pagination: pass the returned `continuationToken` to fetch the next page; keep p
7296
7304
 
7297
7305
  Starred mode (`starred=true`): served by the `byStarred` LSI4 instead. A star is a marker on the mail rather than on its placement, so the INBOX scope does not apply and a starred thread in Archive is still returned. Excluded are muted and soft-deleted rows as usual, plus the folders a star never surfaces from: Junk, Trash, and Gmail's All Mail (a second copy of everything, whose rows would otherwise double every starred message). All filtering happens in the query, so a page is short only when the results are exhausted. Rows are per mailbox: the same mail filed in two folders is two rows sharing a `threadId`, and a client rendering one row per conversation collapses by `threadId` across the pages it has accumulated.
7298
7306
 
7299
- Search mode (`query=<text>`): the listing widens past the INBOX scope to every non-muted mailbox of every non-muted account, and returns only rows whose subject or From address matches the text. This is the unscoped search of the daily brief: one query reaching every folder of every account. Whitespace splits the text into terms and every term must match (AND), each against subject OR From. Matching is case-insensitive substring, not tokenized full-text, so it neither stems nor ranks.
7307
+ Search mode (`query=<text>`): the listing widens past the INBOX scope to every non-muted mailbox of every non-muted account, and returns only rows whose subject, From address or body text matches the text. This is the unscoped search of the daily brief: one query reaching every folder of every account. Whitespace splits the text into terms and every term must match (AND), each against subject OR From OR body. Matching is case-insensitive substring, not tokenized full-text, so it neither stems nor ranks.
7308
+
7309
+ Body text is the stored preview the row carries — the first prose of the message with quoted replies removed, which is the same text the row renders under its subject. A term further into a long message is not reached; a term the reader can see on the row is.
7300
7310
 
7301
7311
  Search scope: every non-muted mailbox EXCEPT Trash. The scope is defined by what it excludes, so anything a server offers that is not on that list is searched — Spam, Drafts and Gmail's virtual folders (All Mail, Starred, Important) included. Spam is deliberately in scope: the point of an unscoped search is that it reaches the folders the user did not think to look in. Combining `query` with `starred=true` searches the starred scope instead.
7302
7312
 
@@ -7310,6 +7320,12 @@ Callers that omit `query` are unaffected: the INBOX (and starred) listings behav
7310
7320
 
7311
7321
  Row filters: `category`, `unread` and `attachments` are columns on the ThreadMessage row, so each is a predicate inside the query rather than a pass over what a page returned. They compose with every mode above — INBOX, starred and search alike — and a page therefore comes back full of matches however rare the criterion is. This is what the cross-account collections need: filtering the pages a client happens to have loaded shows an empty list whenever the matching mail sits below the newest page (#308).
7312
7322
 
7323
+ Field filters: `from` and `subject` each match one field, which the single `query` cannot express — it matches both at once. They compose with `query` and with each other as further AND terms.
7324
+
7325
+ Account scope: `accountId` narrows every mode to the mailboxes of one account. The scope is built from the account's own mailboxes, so the listing, the count and the search all answer over the same set. Without it the listing is the cross-account aggregate.
7326
+
7327
+ Muted senders: `muted=false` excludes rows whose From address is muted, `muted=true` returns only those, and omitting it filters nothing. Muting is a property of the address rather than a column on the row, so this is the one predicate that reaches outside the ThreadMessage table; it applies to the listing and the `count` alike, which is what lets a caller that hides muted mail state a number that is the size of what it renders.
7328
+
7313
7329
  Counting: `count=true` answers how many CONVERSATIONS match, over the whole scope and independent of `limit`. `results=false` omits the rows, which is how a header total is read without also paying for a page of mail. Conversations rather than rows because that is what this listing renders: a row is per mailbox, so the same mail filed in two folders is two rows sharing a `threadId`, and clients collapse by it. Counting rows would put a third number beside a list that shows a second one.
7314
7330
  */
7315
7331
  'listAllThreads'(
@@ -8122,7 +8138,9 @@ Pagination: pass the returned `continuationToken` to fetch the next page; keep p
8122
8138
 
8123
8139
  Starred mode (`starred=true`): served by the `byStarred` LSI4 instead. A star is a marker on the mail rather than on its placement, so the INBOX scope does not apply and a starred thread in Archive is still returned. Excluded are muted and soft-deleted rows as usual, plus the folders a star never surfaces from: Junk, Trash, and Gmail's All Mail (a second copy of everything, whose rows would otherwise double every starred message). All filtering happens in the query, so a page is short only when the results are exhausted. Rows are per mailbox: the same mail filed in two folders is two rows sharing a `threadId`, and a client rendering one row per conversation collapses by `threadId` across the pages it has accumulated.
8124
8140
 
8125
- Search mode (`query=<text>`): the listing widens past the INBOX scope to every non-muted mailbox of every non-muted account, and returns only rows whose subject or From address matches the text. This is the unscoped search of the daily brief: one query reaching every folder of every account. Whitespace splits the text into terms and every term must match (AND), each against subject OR From. Matching is case-insensitive substring, not tokenized full-text, so it neither stems nor ranks.
8141
+ Search mode (`query=<text>`): the listing widens past the INBOX scope to every non-muted mailbox of every non-muted account, and returns only rows whose subject, From address or body text matches the text. This is the unscoped search of the daily brief: one query reaching every folder of every account. Whitespace splits the text into terms and every term must match (AND), each against subject OR From OR body. Matching is case-insensitive substring, not tokenized full-text, so it neither stems nor ranks.
8142
+
8143
+ Body text is the stored preview the row carries — the first prose of the message with quoted replies removed, which is the same text the row renders under its subject. A term further into a long message is not reached; a term the reader can see on the row is.
8126
8144
 
8127
8145
  Search scope: every non-muted mailbox EXCEPT Trash. The scope is defined by what it excludes, so anything a server offers that is not on that list is searched — Spam, Drafts and Gmail's virtual folders (All Mail, Starred, Important) included. Spam is deliberately in scope: the point of an unscoped search is that it reaches the folders the user did not think to look in. Combining `query` with `starred=true` searches the starred scope instead.
8128
8146
 
@@ -8136,6 +8154,12 @@ Callers that omit `query` are unaffected: the INBOX (and starred) listings behav
8136
8154
 
8137
8155
  Row filters: `category`, `unread` and `attachments` are columns on the ThreadMessage row, so each is a predicate inside the query rather than a pass over what a page returned. They compose with every mode above — INBOX, starred and search alike — and a page therefore comes back full of matches however rare the criterion is. This is what the cross-account collections need: filtering the pages a client happens to have loaded shows an empty list whenever the matching mail sits below the newest page (#308).
8138
8156
 
8157
+ Field filters: `from` and `subject` each match one field, which the single `query` cannot express — it matches both at once. They compose with `query` and with each other as further AND terms.
8158
+
8159
+ Account scope: `accountId` narrows every mode to the mailboxes of one account. The scope is built from the account's own mailboxes, so the listing, the count and the search all answer over the same set. Without it the listing is the cross-account aggregate.
8160
+
8161
+ Muted senders: `muted=false` excludes rows whose From address is muted, `muted=true` returns only those, and omitting it filters nothing. Muting is a property of the address rather than a column on the row, so this is the one predicate that reaches outside the ThreadMessage table; it applies to the listing and the `count` alike, which is what lets a caller that hides muted mail state a number that is the size of what it renders.
8162
+
8139
8163
  Counting: `count=true` answers how many CONVERSATIONS match, over the whole scope and independent of `limit`. `results=false` omits the rows, which is how a header total is read without also paying for a page of mail. Conversations rather than rows because that is what this listing renders: a row is per mailbox, so the same mail filed in two folders is two rows sharing a `threadId`, and clients collapse by it. Counting rows would put a third number beside a list that shows a second one.
8140
8164
  */
8141
8165
  'get'(