@remit/api-openapi-types 0.0.39 → 0.0.41
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/package.json +1 -1
- package/types.d.ts +474 -1
package/package.json
CHANGED
package/types.d.ts
CHANGED
|
@@ -64,7 +64,7 @@ writer can reach is a vocabulary that lies about what the field means.
|
|
|
64
64
|
/**
|
|
65
65
|
* IMAP connection states per RFC 9051 Section 3
|
|
66
66
|
*/
|
|
67
|
-
export type ConnectionState = "not_authenticated" | "authenticated" | "selected" | "logout" | "reauth_required";
|
|
67
|
+
export type ConnectionState = "not_authenticated" | "authenticated" | "selected" | "logout" | "reauth_required" | "credentials_missing";
|
|
68
68
|
/**
|
|
69
69
|
* Phase of the initial account sync lifecycle
|
|
70
70
|
*/
|
|
@@ -73,6 +73,14 @@ writer can reach is a vocabulary that lies about what the field means.
|
|
|
73
73
|
* Where a resolved FolderAppointment came from. Total and required: every role carries one, so a surface can tell a folder somebody chose from a folder reader guessed without inferring it from which fields happen to be present.
|
|
74
74
|
*/
|
|
75
75
|
export type FolderAppointmentSource = "Appointed" | "Flagged" | "Reserved" | "Proposed" | "Stale" | "None";
|
|
76
|
+
/**
|
|
77
|
+
* Whether an import writes. The default is the dry run, so the wizard can show what a file would do before anything lands.
|
|
78
|
+
*/
|
|
79
|
+
export type ConfigImportMode = "validate" | "apply";
|
|
80
|
+
/**
|
|
81
|
+
* What an import does when the configuration it is importing into is not empty.
|
|
82
|
+
*/
|
|
83
|
+
export type ConfigImportOnExisting = "abort" | "merge";
|
|
76
84
|
/**
|
|
77
85
|
* Outcome of the most recent manifest check. `ok` when a manifest was fetched and validated, `failed` when it could not be, `disabled` when no manifest URL is configured or no check has ever run (RFC 037 D8).
|
|
78
86
|
*/
|
|
@@ -249,6 +257,38 @@ distinguishable from a network failure without parsing prose.
|
|
|
249
257
|
* Known user-setting keys. Each maps, in the registry, to a required value kind and a zod schema. New keys are added deliberately by extending this enum and the registry — never as an ad-hoc column.
|
|
250
258
|
*/
|
|
251
259
|
export type AccountSettingName = "Theme" | "Density" | "DefaultComposerFormat" | "PinnedFolders" | "AccountSignaturePlainText" | "AccountSignatureHtml" | "AccountDisplayName" | "AccountMuted" | "AccountComposeLanguages" | "MailboxDisplayName" | "MailboxMuted" | "FolderRoleAppointment" | "FolderRoleAppointmentLabel" | "MailboxRole";
|
|
260
|
+
/**
|
|
261
|
+
* Lifecycle of one applied configuration import. An import is Complete the moment every folder reference in the file has been bound to a real mailbox; until then it is Pending, waiting on the IMAP discovery that will produce those mailboxes.
|
|
262
|
+
*/
|
|
263
|
+
export type ConfigImportState = "Pending" | "Complete";
|
|
264
|
+
/**
|
|
265
|
+
* Which piece of configuration a still-unbound folder reference belongs to. A mailbox id is regenerated by every discovery, so an imported file names folders by IMAP path and the binder writes the row once a path resolves.
|
|
266
|
+
*/
|
|
267
|
+
export type ConfigImportRefKind = "FolderRole" | "MailboxOverride" | "FilterAction";
|
|
268
|
+
/**
|
|
269
|
+
* Display color for a calendar collection. Positional rather than named: the palette is a client-side concern, so the store carries the slot and the client owns what it renders (issue #15).
|
|
270
|
+
*/
|
|
271
|
+
export type CalendarColor = "Cal1" | "Cal2" | "Cal3" | "Cal4" | "Cal5" | "Cal6";
|
|
272
|
+
/**
|
|
273
|
+
* Which iCalendar components a collection accepts (RFC 4791 supported-calendar-component-set). Only VEVENT is stored today; VTODO and VJOURNAL collections would be separate members, so the value is a property of the collection rather than of each object.
|
|
274
|
+
*/
|
|
275
|
+
export type CalendarComponentSet = "VeventOnly";
|
|
276
|
+
/**
|
|
277
|
+
* Where a calendar collection came from. `Default` is the one provisioned per account config on first use and is never deleted; `UserCreated` is one a person made; `MailDerived` is one populated from mail rather than by a person.
|
|
278
|
+
*/
|
|
279
|
+
export type CalendarSource = "Default" | "UserCreated" | "MailDerived";
|
|
280
|
+
/**
|
|
281
|
+
* Projection of a VEVENT's STATUS property (RFC 5545 3.8.1.11). A VEVENT with no STATUS projects as `Confirmed`, which is the value RFC 5545 gives an event whose status is unstated.
|
|
282
|
+
*/
|
|
283
|
+
export type CalendarEventStatus = "Confirmed" | "Tentative" | "Cancelled";
|
|
284
|
+
/**
|
|
285
|
+
* Projection of a VEVENT's TRANSP property (RFC 5545 3.8.2.7) — whether the event consumes free/busy time. A VEVENT with no TRANSP projects as `Opaque`, the RFC default.
|
|
286
|
+
*/
|
|
287
|
+
export type CalendarTransparency = "Opaque" | "Transparent";
|
|
288
|
+
/**
|
|
289
|
+
* How confidently a stored time was placed on the clock. A calendar that cannot say this hides its worst failure: an event read in the wrong zone is off by hours and looks exactly like an event read correctly.
|
|
290
|
+
*/
|
|
291
|
+
export type ZoneCertainty = "Local" | "Explicit" | "Ambiguous";
|
|
252
292
|
/**
|
|
253
293
|
* Explicit state engine for a pending placement-move marker (issue #1271, epic #1281). Recovery keys off this field, not control-flow inference: a redelivered/retried call drives a marker forward from whichever state it is actually in, rather than re-deriving intent by comparing the message's current location.
|
|
254
294
|
*/
|
|
@@ -860,6 +900,10 @@ never from a raw content-type line — parameters carry `name=` and
|
|
|
860
900
|
* Associated email accounts
|
|
861
901
|
*/
|
|
862
902
|
accounts: AccountResponse[];
|
|
903
|
+
/**
|
|
904
|
+
* Absent unless a configuration import is still waiting on folders IMAP has not produced yet (#1021). Nothing polls a separate route for it.
|
|
905
|
+
*/
|
|
906
|
+
pendingImport?: PendingConfigImport;
|
|
863
907
|
}
|
|
864
908
|
/**
|
|
865
909
|
* Configuration container for user accounts. Groups multiple IMAP accounts under a single user.
|
|
@@ -1233,6 +1277,23 @@ never from a raw content-type line — parameters carry `name=` and
|
|
|
1233
1277
|
*/
|
|
1234
1278
|
staleAppointmentPath?: String512;
|
|
1235
1279
|
}
|
|
1280
|
+
/**
|
|
1281
|
+
* An import that is still waiting for IMAP discovery to produce the folders its
|
|
1282
|
+
file named. The folder appointed to a role, a folder's own display name or
|
|
1283
|
+
mute, and a filter's move destination are all bound by path; a path this
|
|
1284
|
+
account does not hold yet is kept, not guessed, and bound the moment discovery
|
|
1285
|
+
finds it.
|
|
1286
|
+
*/
|
|
1287
|
+
export interface PendingConfigImport {
|
|
1288
|
+
/**
|
|
1289
|
+
* The import still waiting
|
|
1290
|
+
*/
|
|
1291
|
+
importId: UUID;
|
|
1292
|
+
/**
|
|
1293
|
+
* The IMAP paths no mailbox answers to yet, deduplicated
|
|
1294
|
+
*/
|
|
1295
|
+
folderPaths: string[];
|
|
1296
|
+
}
|
|
1236
1297
|
/**
|
|
1237
1298
|
* A configuration export: one versioned document carrying every user decision this instance holds, and no credential.
|
|
1238
1299
|
*/
|
|
@@ -1246,6 +1307,104 @@ never from a raw content-type line — parameters carry `name=` and
|
|
|
1246
1307
|
*/
|
|
1247
1308
|
document: Record;
|
|
1248
1309
|
}
|
|
1310
|
+
/**
|
|
1311
|
+
* Request body for POST /config/import
|
|
1312
|
+
*/
|
|
1313
|
+
export interface ImportConfigInput {
|
|
1314
|
+
/**
|
|
1315
|
+
* `validate` writes nothing; `apply` writes.
|
|
1316
|
+
*/
|
|
1317
|
+
mode?: ConfigImportMode;
|
|
1318
|
+
/**
|
|
1319
|
+
* What to do when this configuration is not empty.
|
|
1320
|
+
*/
|
|
1321
|
+
onExisting?: ConfigImportOnExisting;
|
|
1322
|
+
/**
|
|
1323
|
+
* The config document, as exported.
|
|
1324
|
+
*/
|
|
1325
|
+
document: Record;
|
|
1326
|
+
}
|
|
1327
|
+
/**
|
|
1328
|
+
* The outcome of a validate or an apply. A rejected document is an answer, not a failure: `valid` is false and `errors` says why.
|
|
1329
|
+
*/
|
|
1330
|
+
export interface ConfigImportReport {
|
|
1331
|
+
/**
|
|
1332
|
+
* Import identity; present on apply, so the folder bindings this import is still waiting on can be named later
|
|
1333
|
+
*/
|
|
1334
|
+
importId?: UUID;
|
|
1335
|
+
/**
|
|
1336
|
+
* Whether the document is importable at all
|
|
1337
|
+
*/
|
|
1338
|
+
valid: boolean;
|
|
1339
|
+
/**
|
|
1340
|
+
* Schema version of the submitted document
|
|
1341
|
+
*/
|
|
1342
|
+
schemaVersion: number;
|
|
1343
|
+
/**
|
|
1344
|
+
* Whether anything was written
|
|
1345
|
+
*/
|
|
1346
|
+
applied: boolean;
|
|
1347
|
+
/**
|
|
1348
|
+
* Per-item verdicts
|
|
1349
|
+
*/
|
|
1350
|
+
items: ConfigImportItemReport[];
|
|
1351
|
+
/**
|
|
1352
|
+
* Blocking problems; non-empty means nothing was written
|
|
1353
|
+
*/
|
|
1354
|
+
errors: ApiError[];
|
|
1355
|
+
/**
|
|
1356
|
+
* Non-blocking notes - e.g. a folder path this account does not hold yet
|
|
1357
|
+
*/
|
|
1358
|
+
warnings: ApiError[];
|
|
1359
|
+
/**
|
|
1360
|
+
* Accounts that landed needing a credential before they can sync
|
|
1361
|
+
*/
|
|
1362
|
+
accountsNeedingCredentials: UUID[];
|
|
1363
|
+
}
|
|
1364
|
+
/**
|
|
1365
|
+
* What became of one item in the submitted document
|
|
1366
|
+
*/
|
|
1367
|
+
export interface ConfigImportItemReport {
|
|
1368
|
+
/**
|
|
1369
|
+
* Which section: accounts | labels | filters | addressFlags | settings
|
|
1370
|
+
*/
|
|
1371
|
+
section: string;
|
|
1372
|
+
/**
|
|
1373
|
+
* Human key of the item - an email, a label name, a filter name
|
|
1374
|
+
*/
|
|
1375
|
+
key: string;
|
|
1376
|
+
/**
|
|
1377
|
+
* created | updated | unchanged | skipped | rejected
|
|
1378
|
+
*/
|
|
1379
|
+
verdict: string;
|
|
1380
|
+
/**
|
|
1381
|
+
* Why, when the verdict is skipped or rejected
|
|
1382
|
+
*/
|
|
1383
|
+
reason?: string;
|
|
1384
|
+
}
|
|
1385
|
+
/**
|
|
1386
|
+
* The import was refused because this configuration is not empty. The body is
|
|
1387
|
+
flat: `code`, `message` and `details` sit at the top level.
|
|
1388
|
+
|
|
1389
|
+
`code: "config_not_empty"` — the configuration already holds an account, a
|
|
1390
|
+
label, a filter or an address flag. `details` names how many of each. Re-send
|
|
1391
|
+
with `onExisting: merge` to upsert instead.
|
|
1392
|
+
*/
|
|
1393
|
+
export interface ConfigImportConflict {
|
|
1394
|
+
statusCode: 409;
|
|
1395
|
+
/**
|
|
1396
|
+
* Error code
|
|
1397
|
+
*/
|
|
1398
|
+
code: string;
|
|
1399
|
+
/**
|
|
1400
|
+
* Human-readable error message
|
|
1401
|
+
*/
|
|
1402
|
+
message: string;
|
|
1403
|
+
/**
|
|
1404
|
+
* Additional error details
|
|
1405
|
+
*/
|
|
1406
|
+
details?: Record;
|
|
1407
|
+
}
|
|
1249
1408
|
/**
|
|
1250
1409
|
* The self-update resource: the running version, the outcome of the most recent manifest check, and the state of the current or last run. One read serves every interface state. The check block and the run block are independent by construction (RFC 037 D7).
|
|
1251
1410
|
*/
|
|
@@ -4208,6 +4367,78 @@ either way and cannot tell which it received.
|
|
|
4208
4367
|
createdAt: number;
|
|
4209
4368
|
updatedAt: number;
|
|
4210
4369
|
}
|
|
4370
|
+
/**
|
|
4371
|
+
* A folder reference an import could not bind yet. Every folder in a
|
|
4372
|
+
configuration file is named by IMAP path, because mailbox ids are regenerated
|
|
4373
|
+
by each discovery, and a fresh database holds no mailboxes at all until IMAP
|
|
4374
|
+
has been read. The reference is recorded rather than dropped or guessed, and
|
|
4375
|
+
the binder writes the row it belongs to once the path resolves.
|
|
4376
|
+
*/
|
|
4377
|
+
export interface ConfigImportUnresolvedRef {
|
|
4378
|
+
/**
|
|
4379
|
+
* Which piece of configuration this reference belongs to
|
|
4380
|
+
*/
|
|
4381
|
+
kind: ConfigImportRefKind;
|
|
4382
|
+
/**
|
|
4383
|
+
* The account whose folders this path resolves against
|
|
4384
|
+
*/
|
|
4385
|
+
accountId: UUID;
|
|
4386
|
+
/**
|
|
4387
|
+
* The IMAP path, as the exporting instance spelled it
|
|
4388
|
+
*/
|
|
4389
|
+
folderPath: String512;
|
|
4390
|
+
/**
|
|
4391
|
+
* The role for a folder role, the folder path for a mailbox override, the filter id for a filter's move action
|
|
4392
|
+
*/
|
|
4393
|
+
target: String256;
|
|
4394
|
+
}
|
|
4395
|
+
/**
|
|
4396
|
+
* One applied configuration import (#1021). It exists because a file's folder
|
|
4397
|
+
references cannot bind at apply time: IMAP discovery produces the mailboxes,
|
|
4398
|
+
minutes to hours later, and the ids it assigns are new every run.
|
|
4399
|
+
|
|
4400
|
+
The row keeps the document as applied — credential-stripped, like the file
|
|
4401
|
+
itself — so the binder can re-read the payload behind each reference instead
|
|
4402
|
+
of copying it, and so a person can see what was imported after the fact.
|
|
4403
|
+
*/
|
|
4404
|
+
export interface ConfigImport {
|
|
4405
|
+
/**
|
|
4406
|
+
* Primary identifier
|
|
4407
|
+
*/
|
|
4408
|
+
importId: UUID;
|
|
4409
|
+
/**
|
|
4410
|
+
* The configuration this file was imported into — the caller's own, never the one the file records as its provenance
|
|
4411
|
+
*/
|
|
4412
|
+
accountConfigId: UUID;
|
|
4413
|
+
/**
|
|
4414
|
+
* Schema version of the document as applied, after migration
|
|
4415
|
+
*/
|
|
4416
|
+
schemaVersion: number;
|
|
4417
|
+
/**
|
|
4418
|
+
* Whether every folder reference has been bound
|
|
4419
|
+
*/
|
|
4420
|
+
state: ConfigImportState;
|
|
4421
|
+
/**
|
|
4422
|
+
* The document as applied. Carries no credential, for the same reason the file does not.
|
|
4423
|
+
*/
|
|
4424
|
+
document: Record;
|
|
4425
|
+
/**
|
|
4426
|
+
* Folder references still waiting for a mailbox. Emptied by the binder as discovery resolves each path; an empty list is what makes the import Complete.
|
|
4427
|
+
*/
|
|
4428
|
+
unresolvedRefs: ConfigImportUnresolvedRef[];
|
|
4429
|
+
/**
|
|
4430
|
+
* Epoch millis when the import was applied
|
|
4431
|
+
*/
|
|
4432
|
+
createdAt: number;
|
|
4433
|
+
/**
|
|
4434
|
+
* Epoch millis when the last folder reference was bound; `0` while the import is still Pending
|
|
4435
|
+
*/
|
|
4436
|
+
completedAt: number;
|
|
4437
|
+
/**
|
|
4438
|
+
* Epoch millis when the row was last written
|
|
4439
|
+
*/
|
|
4440
|
+
updatedAt: number;
|
|
4441
|
+
}
|
|
4211
4442
|
/**
|
|
4212
4443
|
* Typed value for a user setting. `kind` discriminates the concrete shape; a registry binds each setting name to the kind it requires.
|
|
4213
4444
|
*/
|
|
@@ -4720,6 +4951,202 @@ domain already uses"; it does not close it.
|
|
|
4720
4951
|
createdAt: number;
|
|
4721
4952
|
updatedAt: number;
|
|
4722
4953
|
}
|
|
4954
|
+
/**
|
|
4955
|
+
* A calendar collection scoped to an account config (issue #15) — the CalDAV
|
|
4956
|
+
collection a client mounts, and the parent of every CalendarObject.
|
|
4957
|
+
|
|
4958
|
+
`calendarId` is derived from `(accountConfigId, urlSegment)`, so the DAV path
|
|
4959
|
+
a client bookmarks resolves to a row without a lookup table, and provisioning
|
|
4960
|
+
the same collection twice writes the same row instead of a second one.
|
|
4961
|
+
`displayName` is the mutable human overlay and is never the key.
|
|
4962
|
+
|
|
4963
|
+
`syncSequence` is the collection's monotonic change counter: every write
|
|
4964
|
+
through the calendar service's put path bumps it and stamps the new value on
|
|
4965
|
+
the object it wrote, which is what a later WebDAV-Sync `sync-token` reports
|
|
4966
|
+
and what `CalendarObject.bySyncSequence` pages by.
|
|
4967
|
+
*/
|
|
4968
|
+
export interface CalendarCollection {
|
|
4969
|
+
/**
|
|
4970
|
+
* Primary identifier, derived from accountConfigId + urlSegment
|
|
4971
|
+
*/
|
|
4972
|
+
calendarId: UUID;
|
|
4973
|
+
/**
|
|
4974
|
+
* Owning account configuration
|
|
4975
|
+
*/
|
|
4976
|
+
accountConfigId: UUID;
|
|
4977
|
+
/**
|
|
4978
|
+
* Path segment this collection is addressed by, unique within the account config. Stored case-folded, the same folding `calendarId` is derived from — a DAV path is matched case-insensitively, and storing the writer's casing would let a lookup by segment and a lookup by derived id disagree about one path. The default collection provisioned on first use holds "default".
|
|
4979
|
+
*/
|
|
4980
|
+
urlSegment: String64;
|
|
4981
|
+
/**
|
|
4982
|
+
* Human-readable collection name (display)
|
|
4983
|
+
*/
|
|
4984
|
+
displayName: String140;
|
|
4985
|
+
/**
|
|
4986
|
+
* Display color slot for this collection
|
|
4987
|
+
*/
|
|
4988
|
+
color: CalendarColor;
|
|
4989
|
+
/**
|
|
4990
|
+
* Which iCalendar components this collection accepts
|
|
4991
|
+
*/
|
|
4992
|
+
componentSet: CalendarComponentSet;
|
|
4993
|
+
/**
|
|
4994
|
+
* Where this collection came from
|
|
4995
|
+
*/
|
|
4996
|
+
source: CalendarSource;
|
|
4997
|
+
/**
|
|
4998
|
+
* IANA time zone this collection's floating times are read in, e.g. "Europe/Amsterdam". `""` when none is set, which reads as UTC.
|
|
4999
|
+
*/
|
|
5000
|
+
timezone: String64;
|
|
5001
|
+
/**
|
|
5002
|
+
* Monotonic change counter for this collection. Bumped by every write to one of its objects; the value stamped on `CalendarObject.syncSequence` is the value this counter held after that write.
|
|
5003
|
+
*/
|
|
5004
|
+
syncSequence: number;
|
|
5005
|
+
createdAt: number;
|
|
5006
|
+
updatedAt: number;
|
|
5007
|
+
}
|
|
5008
|
+
/**
|
|
5009
|
+
* One calendar resource — the bytes behind one `.ics` URL (issue #15).
|
|
5010
|
+
|
|
5011
|
+
`icalData` is the canonical value. Every other column on this row is a
|
|
5012
|
+
projection of it, computed on write and never written independently: a reader
|
|
5013
|
+
that needs a fact the projection does not carry re-parses `icalData` rather
|
|
5014
|
+
than adding a column that could disagree with it.
|
|
5015
|
+
|
|
5016
|
+
The write path parses the bytes to validate and project them and then stores
|
|
5017
|
+
the bytes it was handed, never a reserialization of them. That is what keeps
|
|
5018
|
+
`etag` honest: the tag is a digest of exactly what the writer sent, so it
|
|
5019
|
+
moves only when a writer sends something different. It is not a digest that
|
|
5020
|
+
survives a round trip through the parser — ical.js refolds long lines and
|
|
5021
|
+
reorders properties, so a resource stored as its own reserialization would
|
|
5022
|
+
change tag without anyone editing it, and every client's cache would miss.
|
|
5023
|
+
|
|
5024
|
+
`calendarObjectId` is derived from `(calendarId, resourceName)`: the resource
|
|
5025
|
+
name is the last path segment of the resource's URL, so the URL a client holds
|
|
5026
|
+
resolves to a row directly, and a repeated PUT of the same resource rewrites
|
|
5027
|
+
its own row.
|
|
5028
|
+
*/
|
|
5029
|
+
export interface CalendarObject {
|
|
5030
|
+
/**
|
|
5031
|
+
* Primary identifier, derived from calendarId + resourceName
|
|
5032
|
+
*/
|
|
5033
|
+
calendarObjectId: UUID;
|
|
5034
|
+
/**
|
|
5035
|
+
* Collection this resource belongs to
|
|
5036
|
+
*/
|
|
5037
|
+
calendarId: UUID;
|
|
5038
|
+
/**
|
|
5039
|
+
* Last path segment of the resource's URL, e.g. "a1b2c3.ics". Unique within the collection and chosen by whoever wrote the resource, never derived from its contents — a client is free to rename a resource without changing the event it holds.
|
|
5040
|
+
*/
|
|
5041
|
+
resourceName: String256;
|
|
5042
|
+
/**
|
|
5043
|
+
* The VEVENT's UID property (RFC 5545 3.8.4.7). Identifies the event across collections and servers, which `resourceName` does not.
|
|
5044
|
+
*/
|
|
5045
|
+
icalUid: String512;
|
|
5046
|
+
/**
|
|
5047
|
+
* The complete VCALENDAR text, byte-for-byte as stored — CANONICAL. Line endings are CRLF and are never normalized; unknown properties and components are preserved verbatim.
|
|
5048
|
+
*/
|
|
5049
|
+
icalData: string;
|
|
5050
|
+
/**
|
|
5051
|
+
* Strong entity tag over the stored `icalData` bytes, used for If-Match on a conditional write and for change detection on read.
|
|
5052
|
+
*/
|
|
5053
|
+
etag: String64;
|
|
5054
|
+
/**
|
|
5055
|
+
* The VEVENT's SEQUENCE property (RFC 5545 3.8.7.4) — the organizer's own revision counter, carried for scheduling comparisons. `0` when the event declares none, which is the RFC default.
|
|
5056
|
+
*/
|
|
5057
|
+
sequence: number;
|
|
5058
|
+
/**
|
|
5059
|
+
* Value the owning collection's `syncSequence` held after the write that produced this row. Pages the `bySyncSequence` read.
|
|
5060
|
+
*/
|
|
5061
|
+
syncSequence: number;
|
|
5062
|
+
/**
|
|
5063
|
+
* Projection of the VEVENT's SUMMARY (RFC 5545 3.8.1.12). `""` when the event carries none.
|
|
5064
|
+
*/
|
|
5065
|
+
summary: String512;
|
|
5066
|
+
/**
|
|
5067
|
+
* Projection of the master VEVENT's DTSTART as an ISO 8601 date-time with zone offset — a business date, not an epoch instant. An all-day event carries midnight in the event's own zone.
|
|
5068
|
+
*/
|
|
5069
|
+
dtStart: String64;
|
|
5070
|
+
/**
|
|
5071
|
+
* Projection of the master VEVENT's effective end as an ISO 8601 date-time with zone offset, resolved from DTEND or from DTSTART + DURATION. An event with neither ends when it starts (RFC 5545 3.6.1).
|
|
5072
|
+
*/
|
|
5073
|
+
dtEnd: String64;
|
|
5074
|
+
/**
|
|
5075
|
+
* Whether the master VEVENT's DTSTART is a DATE rather than a DATE-TIME (RFC 5545 3.3.4) — an all-day or multi-day event, whose end is exclusive.
|
|
5076
|
+
*/
|
|
5077
|
+
allDay: boolean;
|
|
5078
|
+
/**
|
|
5079
|
+
* How the master VEVENT's DTSTART was placed on the clock. `Ambiguous` means the resource named a zone nothing could resolve, so `dtStart` and every occurrence expanded from it may be off by hours — a client shows the event and says so rather than presenting a guess as a fact.
|
|
5080
|
+
*/
|
|
5081
|
+
zoneCertainty: ZoneCertainty;
|
|
5082
|
+
/**
|
|
5083
|
+
* Projection of the master VEVENT's STATUS
|
|
5084
|
+
*/
|
|
5085
|
+
status: CalendarEventStatus;
|
|
5086
|
+
/**
|
|
5087
|
+
* Projection of the master VEVENT's TRANSP
|
|
5088
|
+
*/
|
|
5089
|
+
transparency: CalendarTransparency;
|
|
5090
|
+
/**
|
|
5091
|
+
* Whether the resource expands to more than its master instance — an RRULE, an RDATE, or an override VEVENT. Overrides count on their own: a client that edits one instance and then drops the rule leaves a resource with a master and its exceptions, and each of those is still an occurrence.
|
|
5092
|
+
*/
|
|
5093
|
+
hasRecurrence: boolean;
|
|
5094
|
+
/**
|
|
5095
|
+
* ISO 8601 UTC instant through which `CalendarEventIndex` rows exist for this resource, when the series runs past the expansion horizon and the index is therefore incomplete. `""` when the index is exhaustive — a single event, or a series that ends inside the horizon. A later live-expansion pass reads this to find the resources whose instances it must compute rather than query.
|
|
5096
|
+
*/
|
|
5097
|
+
expandedThrough: String64;
|
|
5098
|
+
createdAt: number;
|
|
5099
|
+
updatedAt: number;
|
|
5100
|
+
}
|
|
5101
|
+
/**
|
|
5102
|
+
* One occurrence of a CalendarObject, flattened so a date range can be queried
|
|
5103
|
+
instead of expanded (issue #15). Every row is derived from
|
|
5104
|
+
`CalendarObject.icalData` and is replaced wholesale whenever that resource is
|
|
5105
|
+
written — nothing here is authoritative, and nothing writes here alone.
|
|
5106
|
+
|
|
5107
|
+
`recurrenceId` is `""` for a resource that does not recur — its one row. A
|
|
5108
|
+
resource that does recur has no `""` row at all: every occurrence carries its
|
|
5109
|
+
own RECURRENCE-ID slot, the first one included, so an occurrence is
|
|
5110
|
+
addressable without a caller having to know whether it happened to be the
|
|
5111
|
+
series' first. It is part of the sort key, so it can never be absent — an
|
|
5112
|
+
optional value there would make the index sparse and hide the single-event
|
|
5113
|
+
row from the range read that has to return it.
|
|
5114
|
+
|
|
5115
|
+
Times here are UTC instants, unlike `CalendarObject.dtStart`, which carries
|
|
5116
|
+
the event's own offset. The two are different jobs: `dtStart` is the value a
|
|
5117
|
+
client displays, and a fixed-width UTC instant is the only form in which a
|
|
5118
|
+
sort key orders correctly — comparing offset-bearing strings would sort
|
|
5119
|
+
`09:00+02:00` after `09:00Z`, and a range read would silently drop
|
|
5120
|
+
occurrences from every zone but its own.
|
|
5121
|
+
*/
|
|
5122
|
+
export interface CalendarEventIndex {
|
|
5123
|
+
/**
|
|
5124
|
+
* Collection this occurrence belongs to
|
|
5125
|
+
*/
|
|
5126
|
+
calendarId: UUID;
|
|
5127
|
+
/**
|
|
5128
|
+
* Resource this occurrence was expanded from
|
|
5129
|
+
*/
|
|
5130
|
+
calendarObjectId: UUID;
|
|
5131
|
+
/**
|
|
5132
|
+
* RECURRENCE-ID of this occurrence as an ISO 8601 UTC instant, or `""` for the one row of a resource that does not recur. Canonicalized to UTC by the same rule the expansion uses, so an override's RECURRENCE-ID and the occurrence it replaces resolve to the same value.
|
|
5133
|
+
*/
|
|
5134
|
+
recurrenceId: String64;
|
|
5135
|
+
/**
|
|
5136
|
+
* When this occurrence starts, as an ISO 8601 UTC instant. An all-day occurrence starts at midnight of its civil date read in the collection's timezone.
|
|
5137
|
+
*/
|
|
5138
|
+
startAt: String64;
|
|
5139
|
+
/**
|
|
5140
|
+
* When this occurrence ends, as an ISO 8601 UTC instant. Exclusive for an all-day occurrence, per RFC 5545 3.6.1.
|
|
5141
|
+
*/
|
|
5142
|
+
endAt: String64;
|
|
5143
|
+
/**
|
|
5144
|
+
* Whether this occurrence is all-day, copied from the resource it came from so a range read never has to join back to it. A client renders an all-day occurrence as the civil date its start falls on in the collection's timezone, not as the instant stored here.
|
|
5145
|
+
*/
|
|
5146
|
+
allDay: boolean;
|
|
5147
|
+
createdAt: number;
|
|
5148
|
+
updatedAt: number;
|
|
5149
|
+
}
|
|
4723
5150
|
/**
|
|
4724
5151
|
* Junction whose existence *is* a label assignment (RFC 030). Holds only ids
|
|
4725
5152
|
and is hydrated with `batchGet`. Keyed by a deterministic UUID v5 derived
|
|
@@ -4849,6 +5276,14 @@ declare namespace Paths {
|
|
|
4849
5276
|
export type $200 = void;
|
|
4850
5277
|
}
|
|
4851
5278
|
}
|
|
5279
|
+
namespace ImportConfig {
|
|
5280
|
+
export type RequestBody = Components.Schemas.ImportConfigInput;
|
|
5281
|
+
namespace Responses {
|
|
5282
|
+
export type $200 = void;
|
|
5283
|
+
export type $400 = void;
|
|
5284
|
+
export type $409 = void;
|
|
5285
|
+
}
|
|
5286
|
+
}
|
|
4852
5287
|
namespace GetSystemUpdate {
|
|
4853
5288
|
export interface QueryParameters {
|
|
4854
5289
|
refresh?: boolean;
|
|
@@ -5402,6 +5837,14 @@ export interface OperationMethods {
|
|
|
5402
5837
|
data?: any,
|
|
5403
5838
|
config?: AxiosRequestConfig
|
|
5404
5839
|
): OperationResponse<Paths.ExportConfig.Responses.$200>;
|
|
5840
|
+
/**
|
|
5841
|
+
* importConfig - Validate, or validate and apply, a config document. `mode: validate` (the default) writes nothing and returns the same report an apply would. `onExisting: abort` (the default) refuses with 409 when this configuration already holds accounts, labels, filters or address flags. Nothing is written until the whole document has validated; a write failure after that aborts the remainder and the report names exactly what landed. Imported accounts arrive inactive with `connectionState: credentials_missing` (or `reauth_required` for OAuth) - the credentials the file deliberately omits are re-entered per account afterwards.
|
|
5842
|
+
*/
|
|
5843
|
+
'importConfig'(
|
|
5844
|
+
parameters?: Parameters<UnknownParamsObject> | null,
|
|
5845
|
+
data?: Paths.ImportConfig.RequestBody,
|
|
5846
|
+
config?: AxiosRequestConfig
|
|
5847
|
+
): OperationResponse<Paths.ImportConfig.Responses.$200>;
|
|
5405
5848
|
/**
|
|
5406
5849
|
* getSystemUpdate - Read the self-update resource: the running version, the outcome of the most recent manifest check, and the state of the current or last run. With `refresh=true`, records a check request on the control volume for the updater to pick up and answers with the stored state as it stands; the caller watches `check.lastCheckedAt` for the updater's answer. Owner-only, and absent (404) unless a manifest URL is configured (RFC 037 D7, D8).
|
|
5407
5850
|
*/
|
|
@@ -5939,6 +6382,16 @@ export interface PathsDictionary {
|
|
|
5939
6382
|
config?: AxiosRequestConfig
|
|
5940
6383
|
): OperationResponse<Paths.ExportConfig.Responses.$200>;
|
|
5941
6384
|
};
|
|
6385
|
+
['/config/import']: {
|
|
6386
|
+
/**
|
|
6387
|
+
* importConfig - Validate, or validate and apply, a config document. `mode: validate` (the default) writes nothing and returns the same report an apply would. `onExisting: abort` (the default) refuses with 409 when this configuration already holds accounts, labels, filters or address flags. Nothing is written until the whole document has validated; a write failure after that aborts the remainder and the report names exactly what landed. Imported accounts arrive inactive with `connectionState: credentials_missing` (or `reauth_required` for OAuth) - the credentials the file deliberately omits are re-entered per account afterwards.
|
|
6388
|
+
*/
|
|
6389
|
+
'post'(
|
|
6390
|
+
parameters?: Parameters<UnknownParamsObject> | null,
|
|
6391
|
+
data?: Paths.ImportConfig.RequestBody,
|
|
6392
|
+
config?: AxiosRequestConfig
|
|
6393
|
+
): OperationResponse<Paths.ImportConfig.Responses.$200>;
|
|
6394
|
+
};
|
|
5942
6395
|
['/system/update']: {
|
|
5943
6396
|
/**
|
|
5944
6397
|
* getSystemUpdate - Read the self-update resource: the running version, the outcome of the most recent manifest check, and the state of the current or last run. With `refresh=true`, records a check request on the control volume for the updater to pick up and answers with the stored state as it stands; the caller watches `check.lastCheckedAt` for the updater's answer. Owner-only, and absent (404) unless a manifest URL is configured (RFC 037 D7, D8).
|
|
@@ -6522,7 +6975,12 @@ export type AccountResponse = Components.Schemas.AccountResponse;
|
|
|
6522
6975
|
export type AddressFlagBase = Components.Schemas.AddressFlagBase;
|
|
6523
6976
|
export type MutedFlag = Components.Schemas.MutedFlag;
|
|
6524
6977
|
export type FolderAppointment = Components.Schemas.FolderAppointment;
|
|
6978
|
+
export type PendingConfigImport = Components.Schemas.PendingConfigImport;
|
|
6525
6979
|
export type ConfigExportResponse = Components.Schemas.ConfigExportResponse;
|
|
6980
|
+
export type ImportConfigInput = Components.Schemas.ImportConfigInput;
|
|
6981
|
+
export type ConfigImportReport = Components.Schemas.ConfigImportReport;
|
|
6982
|
+
export type ConfigImportItemReport = Components.Schemas.ConfigImportItemReport;
|
|
6983
|
+
export type ConfigImportConflict = Components.Schemas.ConfigImportConflict;
|
|
6526
6984
|
export type SystemUpdateResponse = Components.Schemas.SystemUpdateResponse;
|
|
6527
6985
|
export type SystemUpdateCheck = Components.Schemas.SystemUpdateCheck;
|
|
6528
6986
|
export type SystemUpdateRun = Components.Schemas.SystemUpdateRun;
|
|
@@ -6611,6 +7069,8 @@ export type UpdateMessageLabelsInput = Components.Schemas.UpdateMessageLabelsInp
|
|
|
6611
7069
|
export type SpamReportBulkResult = Components.Schemas.SpamReportBulkResult;
|
|
6612
7070
|
export type SpamReportFailure = Components.Schemas.SpamReportFailure;
|
|
6613
7071
|
export type EnvelopeAddress = Components.Schemas.EnvelopeAddress;
|
|
7072
|
+
export type ConfigImportUnresolvedRef = Components.Schemas.ConfigImportUnresolvedRef;
|
|
7073
|
+
export type ConfigImport = Components.Schemas.ConfigImport;
|
|
6614
7074
|
export type AccountSettingValue = Components.Schemas.AccountSettingValue;
|
|
6615
7075
|
export type BooleanSetting = Components.Schemas.BooleanSetting;
|
|
6616
7076
|
export type StringSetting = Components.Schemas.StringSetting;
|
|
@@ -6632,6 +7092,9 @@ export type BodyPartParameter = Components.Schemas.BodyPartParameter;
|
|
|
6632
7092
|
export type RawMessageStorage = Components.Schemas.RawMessageStorage;
|
|
6633
7093
|
export type BodyPartStorage = Components.Schemas.BodyPartStorage;
|
|
6634
7094
|
export type BodyPartContent = Components.Schemas.BodyPartContent;
|
|
7095
|
+
export type CalendarCollection = Components.Schemas.CalendarCollection;
|
|
7096
|
+
export type CalendarObject = Components.Schemas.CalendarObject;
|
|
7097
|
+
export type CalendarEventIndex = Components.Schemas.CalendarEventIndex;
|
|
6635
7098
|
export type MessageLabel = Components.Schemas.MessageLabel;
|
|
6636
7099
|
export type FilterAnchor = Components.Schemas.FilterAnchor;
|
|
6637
7100
|
export type MicrosoftOAuthStartRequest = Components.Schemas.MicrosoftOAuthStartRequest;
|
|
@@ -6646,6 +7109,8 @@ export type AccountAuthType = Components.Schemas.AccountAuthType;
|
|
|
6646
7109
|
export type ConnectionState = Components.Schemas.ConnectionState;
|
|
6647
7110
|
export type SyncPhase = Components.Schemas.SyncPhase;
|
|
6648
7111
|
export type FolderAppointmentSource = Components.Schemas.FolderAppointmentSource;
|
|
7112
|
+
export type ConfigImportMode = Components.Schemas.ConfigImportMode;
|
|
7113
|
+
export type ConfigImportOnExisting = Components.Schemas.ConfigImportOnExisting;
|
|
6649
7114
|
export type SystemUpdateCheckStatus = Components.Schemas.SystemUpdateCheckStatus;
|
|
6650
7115
|
export type SystemUpdatePhase = Components.Schemas.SystemUpdatePhase;
|
|
6651
7116
|
export type SystemUpdateOutcome = Components.Schemas.SystemUpdateOutcome;
|
|
@@ -6687,6 +7152,14 @@ export type MailboxAttribute = Components.Schemas.MailboxAttribute;
|
|
|
6687
7152
|
export type StorageType = Components.Schemas.StorageType;
|
|
6688
7153
|
export type ContentEncoding = Components.Schemas.ContentEncoding;
|
|
6689
7154
|
export type AccountSettingName = Components.Schemas.AccountSettingName;
|
|
7155
|
+
export type ConfigImportState = Components.Schemas.ConfigImportState;
|
|
7156
|
+
export type ConfigImportRefKind = Components.Schemas.ConfigImportRefKind;
|
|
7157
|
+
export type CalendarColor = Components.Schemas.CalendarColor;
|
|
7158
|
+
export type CalendarComponentSet = Components.Schemas.CalendarComponentSet;
|
|
7159
|
+
export type CalendarSource = Components.Schemas.CalendarSource;
|
|
7160
|
+
export type CalendarEventStatus = Components.Schemas.CalendarEventStatus;
|
|
7161
|
+
export type CalendarTransparency = Components.Schemas.CalendarTransparency;
|
|
7162
|
+
export type ZoneCertainty = Components.Schemas.ZoneCertainty;
|
|
6690
7163
|
export type MessagePlacementMoveState = Components.Schemas.MessagePlacementMoveState;
|
|
6691
7164
|
export type FlagPushOperation = Components.Schemas.FlagPushOperation;
|
|
6692
7165
|
export type MessageFlagPushState = Components.Schemas.MessageFlagPushState;
|