@remit/api-openapi-types 0.0.41 → 0.0.43

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 +1442 -306
package/types.d.ts CHANGED
@@ -137,6 +137,34 @@ current enum emitter anyway, so the wire contract uses the bare form.
137
137
  * Lifecycle state of a smart-organize back-apply job (RFC 034, #1278). Mirrors the account-export job's lifecycle: a Pending row the worker picks up, drives to Running, then to a terminal Complete or Failed.
138
138
  */
139
139
  export type OrganizeJobState = "Pending" | "Running" | "Complete" | "Failed";
140
+ /**
141
+ * 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).
142
+ */
143
+ export type CalendarColor = "Cal1" | "Cal2" | "Cal3" | "Cal4" | "Cal5" | "Cal6";
144
+ /**
145
+ * 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.
146
+ */
147
+ export type CalendarComponentSet = "VeventOnly";
148
+ /**
149
+ * 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.
150
+ */
151
+ export type CalendarSource = "Default" | "UserCreated" | "MailDerived";
152
+ /**
153
+ * 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.
154
+ */
155
+ export type CalendarEventStatus = "Confirmed" | "Tentative" | "Cancelled";
156
+ /**
157
+ * 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.
158
+ */
159
+ export type CalendarTransparency = "Opaque" | "Transparent";
160
+ /**
161
+ * 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.
162
+ */
163
+ export type ZoneCertainty = "Local" | "Explicit" | "Ambiguous";
164
+ /**
165
+ * Which occurrences of a recurring event a write applies to (issue #15). A request parameter, never a stored column: the resource records what the series is, and this records what the caller meant by editing one drawing of it.
166
+ */
167
+ export type RecurrenceScope = "This" | "Following" | "All";
140
168
  /**
141
169
  * Sort order for list operations
142
170
  */
@@ -233,6 +261,18 @@ distinguishable from a network failure without parsing prose.
233
261
  * Manual bulk label action (issue #26) — apply or remove a label on a `just these` selection. Never sets `appliedByFilterId`: that field is reserved for filter-driven applies (RFC 034 Decision 3.3).
234
262
  */
235
263
  export type LabelAction = "Apply" | "Remove";
264
+ /**
265
+ * What has become of a suggestion. `Pending` is the only state that asks a person for anything; every other value is a decision already taken, and nothing but an explicit act moves a suggestion out of `Pending`.
266
+ */
267
+ export type CalendarSuggestionState = "Pending" | "Accepted" | "Declined" | "Tentative" | "Dismissed" | "Superseded";
268
+ /**
269
+ * The iTIP method a scheduling message carries (RFC 5546 3.2), read from the VCALENDAR's METHOD property. It says what the sender is asking for, which is not derivable from the VEVENT: a cancellation and an invitation differ by this property alone.
270
+ */
271
+ export type CalendarInviteMethod = "Request" | "Reply" | "Cancel" | "Counter" | "Publish" | "None";
272
+ /**
273
+ * Where in a message a suggestion was read from. It is what a card says to explain itself, and it is what separates a suggestion carrying real iCalendar from one inferred out of prose.
274
+ */
275
+ export type CalendarSuggestionSource = "IcalendarPart" | "IcalendarAttachment" | "TextHeuristic";
236
276
  /**
237
277
  * System message flags defined in RFC 9051 Section 2.3.2 - MUST be supported by all servers
238
278
  */
@@ -265,30 +305,6 @@ distinguishable from a network failure without parsing prose.
265
305
  * 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
306
  */
267
307
  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";
292
308
  /**
293
309
  * 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.
294
310
  */
@@ -415,6 +431,24 @@ a compile-time error rather than a value that silently sorts incorrectly.
415
431
  */
416
432
  details?: Record;
417
433
  }
434
+ /**
435
+ * Not found error response
436
+ */
437
+ export interface NotFoundError {
438
+ statusCode: 404;
439
+ error: ApiError;
440
+ }
441
+ /**
442
+ * The condition the request stated is no longer true. Answered when an
443
+ `If-Match` names an etag the stored resource no longer carries: somebody else
444
+ wrote it in between, so applying this request would silently discard their
445
+ change. The client re-reads the resource and decides what to do with the
446
+ version it now has.
447
+ */
448
+ export interface PreconditionFailedError {
449
+ statusCode: 412;
450
+ error: ApiError;
451
+ }
418
452
  /**
419
453
  * The same flat 409 body, with the two codes this endpoint can answer with.
420
454
 
@@ -463,13 +497,6 @@ a compile-time error rather than a value that silently sorts incorrectly.
463
497
  passthroughBehavior: "when_no_match";
464
498
  uri: any;
465
499
  }
466
- /**
467
- * Not found error response
468
- */
469
- export interface NotFoundError {
470
- statusCode: 404;
471
- error: ApiError;
472
- }
473
500
  /**
474
501
  * Internal server error response
475
502
  */
@@ -2250,166 +2277,663 @@ standing to persist.
2250
2277
  updatedAt: number;
2251
2278
  }
2252
2279
  /**
2253
- * Response from emptying trash
2280
+ * Every calendar collection of the caller's account config, url segment first. Unpaginated: an account holds a handful of calendars, and a page boundary in a sidebar is a bug waiting to happen.
2254
2281
  */
2255
- export interface EmptyTrashResponse {
2256
- /**
2257
- * Number of messages permanently deleted
2258
- */
2259
- deletedCount: number;
2282
+ export interface CalendarListResponse {
2283
+ items: CalendarResponse[];
2260
2284
  }
2261
2285
  /**
2262
- * Sync trigger response
2286
+ * A calendar collection scoped to an account config (issue #15) — the CalDAV
2287
+ collection a client mounts, and the parent of every CalendarObject.
2288
+
2289
+ `calendarId` is derived from `(accountConfigId, urlSegment)`, so the DAV path
2290
+ a client bookmarks resolves to a row without a lookup table, and provisioning
2291
+ the same collection twice writes the same row instead of a second one.
2292
+ `displayName` is the mutable human overlay and is never the key.
2293
+
2294
+ `syncSequence` is the collection's monotonic change counter: every write
2295
+ through the calendar service's put path bumps it and stamps the new value on
2296
+ the object it wrote, which is what a later WebDAV-Sync `sync-token` reports
2297
+ and what `CalendarObject.bySyncSequence` pages by.
2263
2298
  */
2264
- export interface SyncTriggerResponse {
2299
+ export interface CalendarCollection {
2265
2300
  /**
2266
- * Whether sync was triggered successfully
2301
+ * Primary identifier, derived from accountConfigId + urlSegment
2267
2302
  */
2268
- triggered: boolean;
2303
+ calendarId: UUID;
2269
2304
  /**
2270
- * Message about sync status
2305
+ * Owning account configuration
2271
2306
  */
2272
- message: string;
2273
- }
2274
- /**
2275
- * Aggregate sync-status response for an account
2276
- */
2277
- export interface AccountSyncStatusResponse {
2307
+ accountConfigId: UUID;
2278
2308
  /**
2279
- * Account identifier
2309
+ * 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".
2280
2310
  */
2281
- accountId: UUID;
2311
+ urlSegment: String64;
2282
2312
  /**
2283
- * Current sync phase for the account
2313
+ * Human-readable collection name (display)
2284
2314
  */
2285
- syncPhase?: SyncPhase;
2315
+ displayName: String140;
2286
2316
  /**
2287
- * Total number of mailboxes discovered
2317
+ * Display color slot for this collection
2288
2318
  */
2289
- mailboxCountTotal?: number;
2319
+ color: CalendarColor;
2290
2320
  /**
2291
- * Number of mailboxes whose initial message sync has completed
2321
+ * Which iCalendar components this collection accepts
2292
2322
  */
2293
- mailboxCountSynced?: number;
2323
+ componentSet: CalendarComponentSet;
2294
2324
  /**
2295
- * When the account's most recent sync round started, stamped once per round by the worker. A client that triggered a sync compares this against the reading it took before triggering, so it confirms only on a round of its own rather than one already in flight.
2325
+ * Where this collection came from
2296
2326
  */
2297
- lastSyncAt?: number;
2327
+ source: CalendarSource;
2298
2328
  /**
2299
- * Per-mailbox sync progress
2329
+ * IANA time zone this collection's floating times are read in, e.g. "Europe/Amsterdam". `""` when none is set, which reads as UTC.
2300
2330
  */
2301
- mailboxes: MailboxSyncProgress[];
2331
+ timezone: String64;
2332
+ /**
2333
+ * 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.
2334
+ */
2335
+ syncSequence: number;
2336
+ createdAt: number;
2337
+ updatedAt: number;
2302
2338
  }
2303
2339
  /**
2304
- * Per-mailbox progress entry in the sync-status response
2340
+ * A calendar collection as the API returns it.
2305
2341
  */
2306
- export interface MailboxSyncProgress {
2342
+ export interface CalendarResponse {
2307
2343
  /**
2308
- * Mailbox identifier
2344
+ * Primary identifier, derived from accountConfigId + urlSegment
2309
2345
  */
2310
- mailboxId: UUID;
2346
+ calendarId: UUID;
2311
2347
  /**
2312
- * Full IMAP path (e.g. INBOX, Sent)
2348
+ * Owning account configuration
2313
2349
  */
2314
- fullPath: string;
2350
+ accountConfigId: UUID;
2315
2351
  /**
2316
- * Sync phase for this mailbox: pending (never synced), syncing (in-progress), or complete
2352
+ * 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".
2317
2353
  */
2318
- phase: string;
2354
+ urlSegment: String64;
2319
2355
  /**
2320
- * Total messages in mailbox (refreshed each batch)
2356
+ * Human-readable collection name (display)
2321
2357
  */
2322
- messagesTotal: number;
2358
+ displayName: String140;
2323
2359
  /**
2324
- * Approximate number of messages synced. Computed as highWaterMarkUid − lastSyncUid (UID-range approximation; UIDs are sparse so this may undercount). Clamped to messagesTotal.
2360
+ * Display color slot for this collection
2325
2361
  */
2326
- messagesSynced: number;
2362
+ color: CalendarColor;
2327
2363
  /**
2328
- * Timestamp of the last successful message sync for this mailbox
2364
+ * Which iCalendar components this collection accepts
2329
2365
  */
2330
- lastSyncedAt?: number;
2366
+ componentSet: CalendarComponentSet;
2367
+ /**
2368
+ * Where this collection came from
2369
+ */
2370
+ source: CalendarSource;
2371
+ /**
2372
+ * IANA time zone this collection's floating times are read in, e.g. "Europe/Amsterdam". `""` when none is set, which reads as UTC.
2373
+ */
2374
+ timezone: String64;
2375
+ /**
2376
+ * 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.
2377
+ */
2378
+ syncSequence: number;
2379
+ createdAt: number;
2380
+ updatedAt: number;
2331
2381
  }
2332
2382
  /**
2333
- * Input for creating a new email account
2383
+ * Input for creating a calendar collection (issue #15).
2384
+
2385
+ `urlSegment` is supplied rather than derived from the display name: it is the
2386
+ collection's identity — `calendarId` is a hash of it — and the path a CalDAV
2387
+ client will later bookmark. Slugging a name would make two calendars called
2388
+ "Work" one row, and a rename would either move a bookmarked path or leave a
2389
+ segment that no longer matches anything a person recognises. The name is the
2390
+ mutable overlay; this is the address.
2334
2391
  */
2335
- export interface CreateAccountInput {
2392
+ export interface CreateCalendarInput {
2336
2393
  /**
2337
- * Primary email address for this account
2394
+ * Human-readable collection name (display)
2338
2395
  */
2339
- email: string;
2396
+ displayName: String140;
2340
2397
  /**
2341
- * Display name (optional)
2398
+ * Path segment addressing this collection, unique within the account config. Case-folded on write, so "Work" and "work" name the same collection and the second create is refused rather than silently merged into the first.
2342
2399
  */
2343
- displayName?: string;
2400
+ urlSegment: String64;
2344
2401
  /**
2345
- * IMAP login username (defaults to email if not provided)
2402
+ * Display colour slot. Absent takes the collection's own default.
2346
2403
  */
2347
- username?: string;
2404
+ color?: CalendarColor;
2348
2405
  /**
2349
- * Authentication mechanism for this account. Defaults to `password`. Pass `oauthMicrosoft` only via the OAuth connect flow (POST /accounts/oauth/microsoft/start).
2406
+ * IANA time zone this collection's floating times are read in. Absent reads them as UTC.
2350
2407
  */
2351
- authType?: AccountAuthType;
2408
+ timezone?: String64;
2409
+ }
2410
+ /**
2411
+ * Input for updating a calendar collection. The name, colour and timezone are the mutable overlay; `urlSegment` is not among them, because it is the collection's identity and the path a client has bookmarked.
2412
+ */
2413
+ export interface UpdateCalendarInput {
2352
2414
  /**
2353
- * Account password (will be encrypted). Required for password accounts; omit for OAuth accounts.
2415
+ * Human-readable collection name (display)
2354
2416
  */
2355
- password?: string;
2417
+ displayName: String140;
2356
2418
  /**
2357
- * IMAP server hostname
2419
+ * Display color slot for this collection
2358
2420
  */
2359
- imapHost: string;
2421
+ color: CalendarColor;
2360
2422
  /**
2361
- * IMAP server port
2423
+ * IANA time zone this collection's floating times are read in, e.g. "Europe/Amsterdam". `""` when none is set, which reads as UTC.
2362
2424
  */
2363
- imapPort: number;
2425
+ timezone: String64;
2426
+ }
2427
+ /**
2428
+ * Nothing to return. The resource, or the occurrence, is gone.
2429
+ */
2430
+ export interface CalendarNoContent {
2431
+ statusCode: 204;
2432
+ }
2433
+ /**
2434
+ * Expanded occurrences in the requested window, in start order.
2435
+
2436
+ Includes an occurrence that began before `from` and runs into the window, up
2437
+ to a bounded lookback — a meeting that started last night is part of this
2438
+ morning. Unpaginated: the window is the bound.
2439
+ */
2440
+ export interface CalendarEventListResponse {
2441
+ items: CalendarEventInstance[];
2442
+ }
2443
+ /**
2444
+ * One occurrence of an event, in the window the caller asked for (issue #15).
2445
+
2446
+ Instances are expanded by the server. A client never reads an RRULE and never
2447
+ reconstructs a series: it renders what this returns, and addresses one
2448
+ occurrence by `calendarObjectId` plus `recurrenceId`.
2449
+ */
2450
+ export interface CalendarEventInstance {
2364
2451
  /**
2365
- * Use TLS encryption
2452
+ * Collection this occurrence belongs to
2366
2453
  */
2367
- imapTls: boolean;
2454
+ calendarId: UUID;
2368
2455
  /**
2369
- * Use STARTTLS upgrade
2456
+ * Resource this occurrence was expanded from
2370
2457
  */
2371
- imapStartTls: boolean;
2458
+ calendarObjectId: UUID;
2372
2459
  /**
2373
- * Whether to enable SMTP sending for this account. When omitted, the server enables sending if an SMTP host is supplied.
2460
+ * RECURRENCE-ID of this occurrence as an ISO 8601 UTC instant, or `""` for a resource that does not recur. This is the value a scoped write passes back to name the occurrence it means.
2374
2461
  */
2375
- smtpEnabled?: boolean;
2462
+ recurrenceId: String64;
2376
2463
  /**
2377
- * SMTP server hostname (optional)
2464
+ * The event's iCalendar UID, shared by every occurrence of the series
2378
2465
  */
2379
- smtpHost?: string;
2466
+ icalUid: String512;
2380
2467
  /**
2381
- * SMTP server port
2468
+ * Projection of the VEVENT's SUMMARY. `""` when the event carries none.
2382
2469
  */
2383
- smtpPort?: number;
2470
+ summary: String512;
2384
2471
  /**
2385
- * Use TLS encryption for SMTP
2472
+ * When this occurrence starts, as an ISO 8601 date-time with zone offset, read in the collection's timezone. A business date, not an epoch instant: an all-day occurrence carries midnight of its civil date.
2386
2473
  */
2387
- smtpTls?: boolean;
2474
+ start: String64;
2388
2475
  /**
2389
- * Use STARTTLS upgrade for SMTP
2476
+ * When this occurrence ends, as an ISO 8601 date-time with zone offset. Exclusive for an all-day occurrence, per RFC 5545 3.6.1.
2390
2477
  */
2391
- smtpStartTls?: boolean;
2478
+ end: String64;
2392
2479
  /**
2393
- * SMTP username if different from IMAP
2480
+ * Whether this occurrence is all-day
2394
2481
  */
2395
- smtpUsername?: string;
2482
+ allDay: boolean;
2396
2483
  /**
2397
- * SMTP password if different from IMAP
2484
+ * Projection of the occurrence's STATUS
2398
2485
  */
2399
- smtpPassword?: string;
2400
- }
2401
- /**
2402
- * Input for testing connection without saving
2403
- */
2404
- export interface TestConnectionInput {
2486
+ status: CalendarEventStatus;
2405
2487
  /**
2406
- * Account ID (optional, used to retrieve stored password if password is empty)
2488
+ * Projection of the occurrence's TRANSP whether it consumes free/busy time
2407
2489
  */
2408
- accountId?: UUID;
2490
+ transparency: CalendarTransparency;
2409
2491
  /**
2410
- * IMAP login username
2492
+ * How the resource's start was placed on the clock. `Ambiguous` means the resource named a zone nothing could resolve, so this occurrence may be hours out; a client says so rather than presenting the guess as a fact.
2411
2493
  */
2412
- username: string;
2494
+ zoneCertainty: ZoneCertainty;
2495
+ /**
2496
+ * Entity tag of the resource this occurrence came from. Pass it as `If-Match` on a scoped write to refuse an edit built on a version somebody has since replaced.
2497
+ */
2498
+ etag: String64;
2499
+ /**
2500
+ * Whether the resource this occurrence came from expands to more than one instance. A client showing the recurrence-scope prompt gates on this.
2501
+ */
2502
+ hasRecurrence: boolean;
2503
+ }
2504
+ /**
2505
+ * Input for creating an event (issue #15). The server builds the VEVENT and
2506
+ writes it through the single calendar write path, so an event created here,
2507
+ one accepted from an invitation, and one PUT over CalDAV are the same bytes
2508
+ written the same way.
2509
+
2510
+ Times are ISO 8601 with zone offset — or a bare `YYYY-MM-DD` date when
2511
+ `allDay` is set. The offset pins the instant; `timeZone` names the zone the
2512
+ event is anchored in, which is what a recurring event needs to survive a DST
2513
+ transition. An offset alone cannot: a weekly 09:00 meeting written as
2514
+ `+02:00` becomes an 08:00 meeting in November.
2515
+ */
2516
+ export interface CreateCalendarEventInput {
2517
+ /**
2518
+ * Collection to write the event into
2519
+ */
2520
+ calendarId: UUID;
2521
+ /**
2522
+ * SUMMARY of the event
2523
+ */
2524
+ summary: String512;
2525
+ /**
2526
+ * DESCRIPTION of the event. Absent writes none.
2527
+ */
2528
+ description?: String2048;
2529
+ /**
2530
+ * LOCATION of the event. Absent writes none.
2531
+ */
2532
+ location?: String512;
2533
+ /**
2534
+ * When the event starts: an ISO 8601 date-time with zone offset, or a `YYYY-MM-DD` date when `allDay` is set.
2535
+ */
2536
+ start: String64;
2537
+ /**
2538
+ * When the event ends, in the same form as `start`. Exclusive for an all-day event, per RFC 5545 3.6.1.
2539
+ */
2540
+ end: String64;
2541
+ /**
2542
+ * Whether this is an all-day event, whose times are civil dates rather than instants
2543
+ */
2544
+ allDay?: boolean;
2545
+ /**
2546
+ * IANA time zone the event is anchored in, e.g. "Europe/Amsterdam", written as the DTSTART TZID. Absent anchors the event in UTC. Refused with 400 when the zone is one this server cannot resolve — a calendar that accepted an unknown zone would draw the event hours away from where it belongs.
2547
+ */
2548
+ timeZone?: String64;
2549
+ /**
2550
+ * STATUS of the event
2551
+ */
2552
+ status?: CalendarEventStatus;
2553
+ /**
2554
+ * TRANSP of the event — whether it consumes free/busy time
2555
+ */
2556
+ transparency?: CalendarTransparency;
2557
+ /**
2558
+ * RRULE value for a recurring event, e.g. "FREQ=WEEKLY;BYDAY=MO" (RFC 5545 3.8.5.3), without the property name. `""` creates a single event. Refused with 400 when it is not a rule this server can read.
2559
+ */
2560
+ recurrenceRule?: String512;
2561
+ }
2562
+ /**
2563
+ * One calendar resource — the bytes behind one `.ics` URL (issue #15).
2564
+
2565
+ `icalData` is the canonical value. Every other column on this row is a
2566
+ projection of it, computed on write and never written independently: a reader
2567
+ that needs a fact the projection does not carry re-parses `icalData` rather
2568
+ than adding a column that could disagree with it.
2569
+
2570
+ The write path parses the bytes to validate and project them and then stores
2571
+ the bytes it was handed, never a reserialization of them. That is what keeps
2572
+ `etag` honest: the tag is a digest of exactly what the writer sent, so it
2573
+ moves only when a writer sends something different. It is not a digest that
2574
+ survives a round trip through the parser — ical.js refolds long lines and
2575
+ reorders properties, so a resource stored as its own reserialization would
2576
+ change tag without anyone editing it, and every client's cache would miss.
2577
+
2578
+ `calendarObjectId` is derived from `(calendarId, resourceName)`: the resource
2579
+ name is the last path segment of the resource's URL, so the URL a client holds
2580
+ resolves to a row directly, and a repeated PUT of the same resource rewrites
2581
+ its own row.
2582
+ */
2583
+ export interface CalendarObject {
2584
+ /**
2585
+ * Primary identifier, derived from calendarId + resourceName
2586
+ */
2587
+ calendarObjectId: UUID;
2588
+ /**
2589
+ * Collection this resource belongs to
2590
+ */
2591
+ calendarId: UUID;
2592
+ /**
2593
+ * 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.
2594
+ */
2595
+ resourceName: String256;
2596
+ /**
2597
+ * The VEVENT's UID property (RFC 5545 3.8.4.7). Identifies the event across collections and servers, which `resourceName` does not.
2598
+ */
2599
+ icalUid: String512;
2600
+ /**
2601
+ * 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.
2602
+ */
2603
+ icalData: string;
2604
+ /**
2605
+ * Strong entity tag over the stored `icalData` bytes, used for If-Match on a conditional write and for change detection on read.
2606
+ */
2607
+ etag: String64;
2608
+ /**
2609
+ * 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.
2610
+ */
2611
+ sequence: number;
2612
+ /**
2613
+ * Value the owning collection's `syncSequence` held after the write that produced this row. Pages the `bySyncSequence` read.
2614
+ */
2615
+ syncSequence: number;
2616
+ /**
2617
+ * Projection of the VEVENT's SUMMARY (RFC 5545 3.8.1.12). `""` when the event carries none.
2618
+ */
2619
+ summary: String512;
2620
+ /**
2621
+ * 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.
2622
+ */
2623
+ dtStart: String64;
2624
+ /**
2625
+ * 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).
2626
+ */
2627
+ dtEnd: String64;
2628
+ /**
2629
+ * 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.
2630
+ */
2631
+ allDay: boolean;
2632
+ /**
2633
+ * 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.
2634
+ */
2635
+ zoneCertainty: ZoneCertainty;
2636
+ /**
2637
+ * Projection of the master VEVENT's STATUS
2638
+ */
2639
+ status: CalendarEventStatus;
2640
+ /**
2641
+ * Projection of the master VEVENT's TRANSP
2642
+ */
2643
+ transparency: CalendarTransparency;
2644
+ /**
2645
+ * 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.
2646
+ */
2647
+ hasRecurrence: boolean;
2648
+ /**
2649
+ * 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.
2650
+ */
2651
+ expandedThrough: String64;
2652
+ createdAt: number;
2653
+ updatedAt: number;
2654
+ }
2655
+ /**
2656
+ * A stored calendar resource — the bytes behind one event, plus the columns projected from them. `icalData` is canonical; every other field is derived from it on write.
2657
+ */
2658
+ export interface CalendarEventResponse {
2659
+ /**
2660
+ * Primary identifier, derived from calendarId + resourceName
2661
+ */
2662
+ calendarObjectId: UUID;
2663
+ /**
2664
+ * Collection this resource belongs to
2665
+ */
2666
+ calendarId: UUID;
2667
+ /**
2668
+ * 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.
2669
+ */
2670
+ resourceName: String256;
2671
+ /**
2672
+ * The VEVENT's UID property (RFC 5545 3.8.4.7). Identifies the event across collections and servers, which `resourceName` does not.
2673
+ */
2674
+ icalUid: String512;
2675
+ /**
2676
+ * 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.
2677
+ */
2678
+ icalData: string;
2679
+ /**
2680
+ * Strong entity tag over the stored `icalData` bytes, used for If-Match on a conditional write and for change detection on read.
2681
+ */
2682
+ etag: String64;
2683
+ /**
2684
+ * 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.
2685
+ */
2686
+ sequence: number;
2687
+ /**
2688
+ * Value the owning collection's `syncSequence` held after the write that produced this row. Pages the `bySyncSequence` read.
2689
+ */
2690
+ syncSequence: number;
2691
+ /**
2692
+ * Projection of the VEVENT's SUMMARY (RFC 5545 3.8.1.12). `""` when the event carries none.
2693
+ */
2694
+ summary: String512;
2695
+ /**
2696
+ * 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.
2697
+ */
2698
+ dtStart: String64;
2699
+ /**
2700
+ * 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).
2701
+ */
2702
+ dtEnd: String64;
2703
+ /**
2704
+ * 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.
2705
+ */
2706
+ allDay: boolean;
2707
+ /**
2708
+ * 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.
2709
+ */
2710
+ zoneCertainty: ZoneCertainty;
2711
+ /**
2712
+ * Projection of the master VEVENT's STATUS
2713
+ */
2714
+ status: CalendarEventStatus;
2715
+ /**
2716
+ * Projection of the master VEVENT's TRANSP
2717
+ */
2718
+ transparency: CalendarTransparency;
2719
+ /**
2720
+ * 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.
2721
+ */
2722
+ hasRecurrence: boolean;
2723
+ /**
2724
+ * 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.
2725
+ */
2726
+ expandedThrough: String64;
2727
+ createdAt: number;
2728
+ updatedAt: number;
2729
+ }
2730
+ /**
2731
+ * Input for updating an event. Every field is optional and absence means
2732
+ untouched — a patch that carries only `summary` renames the event and moves
2733
+ nothing.
2734
+
2735
+ What the patch applies to is the `scope` parameter's business: `All` rewrites
2736
+ the master, `This` writes a RECURRENCE-ID override for one occurrence, and
2737
+ `Following` splits the series at one occurrence and applies the patch to the
2738
+ remainder.
2739
+ */
2740
+ export interface UpdateCalendarEventInput {
2741
+ summary?: String512;
2742
+ description?: String2048;
2743
+ location?: String512;
2744
+ start?: String64;
2745
+ end?: String64;
2746
+ allDay?: boolean;
2747
+ timeZone?: String64;
2748
+ status?: CalendarEventStatus;
2749
+ transparency?: CalendarTransparency;
2750
+ /**
2751
+ * RRULE value, or `""` to drop the rule. Only meaningful with `scope=All` or `scope=Following`: an override is one occurrence and carries no rule of its own.
2752
+ */
2753
+ recurrenceRule?: String512;
2754
+ }
2755
+ /**
2756
+ * Merged busy spans over the requested window, in start order. An event marked TRANSP:TRANSPARENT or STATUS:CANCELLED is not busy time and never appears here.
2757
+ */
2758
+ export interface CalendarFreeBusyResponse {
2759
+ items: CalendarFreeBusySpan[];
2760
+ }
2761
+ /**
2762
+ * One stretch of time the caller is busy in. Merged across every calendar they
2763
+ hold, so two overlapping meetings in two calendars are one span and a caller
2764
+ asking "is this slot free" never has to do the merging itself.
2765
+ */
2766
+ export interface CalendarFreeBusySpan {
2767
+ /**
2768
+ * When the busy stretch starts, as an ISO 8601 date-time with a `+00:00` offset. A busy span is an interval on the clock rather than a civil date, so it carries no calendar's local zone — the caller renders it in whichever zone it is drawing.
2769
+ */
2770
+ start: String64;
2771
+ /**
2772
+ * When the busy stretch ends, as an ISO 8601 date-time with a `+00:00` offset
2773
+ */
2774
+ end: String64;
2775
+ }
2776
+ /**
2777
+ * Response from emptying trash
2778
+ */
2779
+ export interface EmptyTrashResponse {
2780
+ /**
2781
+ * Number of messages permanently deleted
2782
+ */
2783
+ deletedCount: number;
2784
+ }
2785
+ /**
2786
+ * Sync trigger response
2787
+ */
2788
+ export interface SyncTriggerResponse {
2789
+ /**
2790
+ * Whether sync was triggered successfully
2791
+ */
2792
+ triggered: boolean;
2793
+ /**
2794
+ * Message about sync status
2795
+ */
2796
+ message: string;
2797
+ }
2798
+ /**
2799
+ * Aggregate sync-status response for an account
2800
+ */
2801
+ export interface AccountSyncStatusResponse {
2802
+ /**
2803
+ * Account identifier
2804
+ */
2805
+ accountId: UUID;
2806
+ /**
2807
+ * Current sync phase for the account
2808
+ */
2809
+ syncPhase?: SyncPhase;
2810
+ /**
2811
+ * Total number of mailboxes discovered
2812
+ */
2813
+ mailboxCountTotal?: number;
2814
+ /**
2815
+ * Number of mailboxes whose initial message sync has completed
2816
+ */
2817
+ mailboxCountSynced?: number;
2818
+ /**
2819
+ * When the account's most recent sync round started, stamped once per round by the worker. A client that triggered a sync compares this against the reading it took before triggering, so it confirms only on a round of its own rather than one already in flight.
2820
+ */
2821
+ lastSyncAt?: number;
2822
+ /**
2823
+ * Per-mailbox sync progress
2824
+ */
2825
+ mailboxes: MailboxSyncProgress[];
2826
+ }
2827
+ /**
2828
+ * Per-mailbox progress entry in the sync-status response
2829
+ */
2830
+ export interface MailboxSyncProgress {
2831
+ /**
2832
+ * Mailbox identifier
2833
+ */
2834
+ mailboxId: UUID;
2835
+ /**
2836
+ * Full IMAP path (e.g. INBOX, Sent)
2837
+ */
2838
+ fullPath: string;
2839
+ /**
2840
+ * Sync phase for this mailbox: pending (never synced), syncing (in-progress), or complete
2841
+ */
2842
+ phase: string;
2843
+ /**
2844
+ * Total messages in mailbox (refreshed each batch)
2845
+ */
2846
+ messagesTotal: number;
2847
+ /**
2848
+ * Approximate number of messages synced. Computed as highWaterMarkUid − lastSyncUid (UID-range approximation; UIDs are sparse so this may undercount). Clamped to messagesTotal.
2849
+ */
2850
+ messagesSynced: number;
2851
+ /**
2852
+ * Timestamp of the last successful message sync for this mailbox
2853
+ */
2854
+ lastSyncedAt?: number;
2855
+ }
2856
+ /**
2857
+ * Input for creating a new email account
2858
+ */
2859
+ export interface CreateAccountInput {
2860
+ /**
2861
+ * Primary email address for this account
2862
+ */
2863
+ email: string;
2864
+ /**
2865
+ * Display name (optional)
2866
+ */
2867
+ displayName?: string;
2868
+ /**
2869
+ * IMAP login username (defaults to email if not provided)
2870
+ */
2871
+ username?: string;
2872
+ /**
2873
+ * Authentication mechanism for this account. Defaults to `password`. Pass `oauthMicrosoft` only via the OAuth connect flow (POST /accounts/oauth/microsoft/start).
2874
+ */
2875
+ authType?: AccountAuthType;
2876
+ /**
2877
+ * Account password (will be encrypted). Required for password accounts; omit for OAuth accounts.
2878
+ */
2879
+ password?: string;
2880
+ /**
2881
+ * IMAP server hostname
2882
+ */
2883
+ imapHost: string;
2884
+ /**
2885
+ * IMAP server port
2886
+ */
2887
+ imapPort: number;
2888
+ /**
2889
+ * Use TLS encryption
2890
+ */
2891
+ imapTls: boolean;
2892
+ /**
2893
+ * Use STARTTLS upgrade
2894
+ */
2895
+ imapStartTls: boolean;
2896
+ /**
2897
+ * Whether to enable SMTP sending for this account. When omitted, the server enables sending if an SMTP host is supplied.
2898
+ */
2899
+ smtpEnabled?: boolean;
2900
+ /**
2901
+ * SMTP server hostname (optional)
2902
+ */
2903
+ smtpHost?: string;
2904
+ /**
2905
+ * SMTP server port
2906
+ */
2907
+ smtpPort?: number;
2908
+ /**
2909
+ * Use TLS encryption for SMTP
2910
+ */
2911
+ smtpTls?: boolean;
2912
+ /**
2913
+ * Use STARTTLS upgrade for SMTP
2914
+ */
2915
+ smtpStartTls?: boolean;
2916
+ /**
2917
+ * SMTP username if different from IMAP
2918
+ */
2919
+ smtpUsername?: string;
2920
+ /**
2921
+ * SMTP password if different from IMAP
2922
+ */
2923
+ smtpPassword?: string;
2924
+ }
2925
+ /**
2926
+ * Input for testing connection without saving
2927
+ */
2928
+ export interface TestConnectionInput {
2929
+ /**
2930
+ * Account ID (optional, used to retrieve stored password if password is empty)
2931
+ */
2932
+ accountId?: UUID;
2933
+ /**
2934
+ * IMAP login username
2935
+ */
2936
+ username: string;
2413
2937
  /**
2414
2938
  * Account password (optional if accountId provided - uses stored password)
2415
2939
  */
@@ -4307,30 +4831,222 @@ either way and cannot tell which it received.
4307
4831
  */
4308
4832
  export interface SpamReportBulkResult {
4309
4833
  /**
4310
- * Number of items accepted for processing
4834
+ * Number of items accepted for processing
4835
+ */
4836
+ successCount: number;
4837
+ /**
4838
+ * Number of items rejected before processing
4839
+ */
4840
+ failureCount: number;
4841
+ /**
4842
+ * One entry per message that failed, naming why. Absent or empty when every message succeeded.
4843
+ */
4844
+ failures?: SpamReportFailure[];
4845
+ }
4846
+ /**
4847
+ * One message's failure reason within a report-spam or not-spam bulk call.
4848
+ */
4849
+ export interface SpamReportFailure {
4850
+ /**
4851
+ * The message that failed
4852
+ */
4853
+ messageId: UUID;
4854
+ /**
4855
+ * Why it failed, safe to show the user as-is. One of a small allowlisted set of user-facing messages (e.g. "has not settled yet" while a prior move is still in flight) — never a raw internal error, which is logged server-side instead and never returned here. Not intended to be parsed programmatically.
4856
+ */
4857
+ reason: string;
4858
+ }
4859
+ /**
4860
+ * An event a message offers, waiting on a person (issue #1033).
4861
+
4862
+ A suggestion is not a calendar entry and never becomes one on its own. It is
4863
+ derived from a message, lives beside it, and belongs to no collection: it has
4864
+ no etag, no sync sequence, and a DAV client never sees one. Nothing reaches a
4865
+ calendar until someone presses the button, which is what separates this
4866
+ entity from `CalendarObject` — the two are distinct models rather than one
4867
+ model with a kind field, because everything that makes a stored resource a
4868
+ resource is exactly what a suggestion does not have.
4869
+
4870
+ `suggestionId` is derived from `(messageId, bodyPartId, icalUid)`, so a
4871
+ re-sync of the same message converges on the one row it wrote the first time
4872
+ instead of stacking a fresh card on the message every pass.
4873
+
4874
+ Revisions are a chain, not an edit. A later message carrying the same
4875
+ `icalUid` with a higher `SEQUENCE` leaves the earlier suggestion in place as
4876
+ `Superseded` and writes a new `Pending` one, so the message the older card
4877
+ came from still has its card and the user can see which revision they are
4878
+ being asked about. `METHOD:CANCEL` is a suggestion of its own for the same
4879
+ reason: withdrawing an event the user accepted is a change to their calendar,
4880
+ and no message may make that change without them.
4881
+ */
4882
+ export interface CalendarSuggestion {
4883
+ /**
4884
+ * Primary identifier, derived from messageId + bodyPartId + icalUid
4885
+ */
4886
+ suggestionId: UUID;
4887
+ /**
4888
+ * Owning account configuration
4889
+ */
4890
+ accountConfigId: UUID;
4891
+ /**
4892
+ * Message this suggestion was read out of. The card is offered beside this message and nowhere else.
4893
+ */
4894
+ messageId: UUID;
4895
+ /**
4896
+ * MIME part the iCalendar bytes came from. Part of the identity, so two invitations in one message stay two suggestions rather than overwriting each other.
4897
+ */
4898
+ bodyPartId: UUID;
4899
+ /**
4900
+ * The VEVENT's UID property (RFC 5545 3.8.4.7). What ties a revision, a cancellation and the original invitation together across three separate messages.
4901
+ */
4902
+ icalUid: String512;
4903
+ /**
4904
+ * The VEVENT's SEQUENCE property (RFC 5545 3.8.7.4) — the organizer's revision counter. A later message carrying the same `icalUid` with a higher value supersedes this one. `0` when the event declares none, which is the RFC default.
4905
+ */
4906
+ sequence: number;
4907
+ /**
4908
+ * The iTIP method the VCALENDAR declared. `None` when it declared no METHOD.
4909
+ */
4910
+ method: CalendarInviteMethod;
4911
+ /**
4912
+ * Where in the message this was read from
4913
+ */
4914
+ source: CalendarSuggestionSource;
4915
+ /**
4916
+ * What has become of this suggestion. Only `Pending` asks the user for anything.
4917
+ */
4918
+ state: CalendarSuggestionState;
4919
+ /**
4920
+ * Projection of the VEVENT's SUMMARY. `""` when the event carries none.
4921
+ */
4922
+ summary: String512;
4923
+ /**
4924
+ * Projection of the 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.
4925
+ */
4926
+ dtStart: String64;
4927
+ /**
4928
+ * Projection of the 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).
4929
+ */
4930
+ dtEnd: String64;
4931
+ /**
4932
+ * Whether 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.
4933
+ */
4934
+ allDay: boolean;
4935
+ /**
4936
+ * Projection of the VEVENT's LOCATION. `""` when the event carries none.
4937
+ */
4938
+ location: String512;
4939
+ /**
4940
+ * Mail address of the VEVENT's ORGANIZER, without the `mailto:` scheme. `""` when the event names none — which is what a `PUBLISH` typically looks like, and why dismissing with `muteSender` mutes the message's sender rather than this field.
4941
+ */
4942
+ organizer: String256;
4943
+ /**
4944
+ * How the DTSTART above was placed on the clock. `Ambiguous` means the invitation named a zone nothing could resolve, so the time shown may be hours out — a card says so rather than presenting a guess as a fact.
4945
+ */
4946
+ zoneCertainty: ZoneCertainty;
4947
+ /**
4948
+ * The VCALENDAR text as it arrived in the message, byte for byte — CANONICAL when present. Accepting builds the stored resource out of these bytes, so an X- property nobody modelled survives into the calendar. `""` for a `TextHeuristic` suggestion, which was read out of prose and has no iCalendar behind it.
4949
+ */
4950
+ icalData: string;
4951
+ /**
4952
+ * The `CalendarObject` that accepting this suggestion wrote. `""` until it is accepted — the named absent state, never a missing attribute — and the resource's id afterwards, so the card can link to the event it produced.
4953
+ */
4954
+ acceptedCalendarObjectId: string;
4955
+ createdAt: number;
4956
+ updatedAt: number;
4957
+ }
4958
+ /**
4959
+ * A suggestion as the API returns it. The raw `icalData` is not surfaced: a client renders the projected fields, and the bytes exist so that accepting can write them into a calendar unchanged.
4960
+ */
4961
+ export interface CalendarSuggestionResponse {
4962
+ /**
4963
+ * Primary identifier, derived from messageId + bodyPartId + icalUid
4964
+ */
4965
+ suggestionId: UUID;
4966
+ /**
4967
+ * Owning account configuration
4968
+ */
4969
+ accountConfigId: UUID;
4970
+ /**
4971
+ * Message this suggestion was read out of. The card is offered beside this message and nowhere else.
4972
+ */
4973
+ messageId: UUID;
4974
+ /**
4975
+ * MIME part the iCalendar bytes came from. Part of the identity, so two invitations in one message stay two suggestions rather than overwriting each other.
4976
+ */
4977
+ bodyPartId: UUID;
4978
+ /**
4979
+ * The VEVENT's UID property (RFC 5545 3.8.4.7). What ties a revision, a cancellation and the original invitation together across three separate messages.
4980
+ */
4981
+ icalUid: String512;
4982
+ /**
4983
+ * The VEVENT's SEQUENCE property (RFC 5545 3.8.7.4) — the organizer's revision counter. A later message carrying the same `icalUid` with a higher value supersedes this one. `0` when the event declares none, which is the RFC default.
4984
+ */
4985
+ sequence: number;
4986
+ /**
4987
+ * The iTIP method the VCALENDAR declared. `None` when it declared no METHOD.
4988
+ */
4989
+ method: CalendarInviteMethod;
4990
+ /**
4991
+ * Where in the message this was read from
4992
+ */
4993
+ source: CalendarSuggestionSource;
4994
+ /**
4995
+ * What has become of this suggestion. Only `Pending` asks the user for anything.
4996
+ */
4997
+ state: CalendarSuggestionState;
4998
+ /**
4999
+ * Projection of the VEVENT's SUMMARY. `""` when the event carries none.
5000
+ */
5001
+ summary: String512;
5002
+ /**
5003
+ * Projection of the 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.
5004
+ */
5005
+ dtStart: String64;
5006
+ /**
5007
+ * Projection of the 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).
5008
+ */
5009
+ dtEnd: String64;
5010
+ /**
5011
+ * Whether 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.
5012
+ */
5013
+ allDay: boolean;
5014
+ /**
5015
+ * Projection of the VEVENT's LOCATION. `""` when the event carries none.
4311
5016
  */
4312
- successCount: number;
5017
+ location: String512;
4313
5018
  /**
4314
- * Number of items rejected before processing
5019
+ * Mail address of the VEVENT's ORGANIZER, without the `mailto:` scheme. `""` when the event names none — which is what a `PUBLISH` typically looks like, and why dismissing with `muteSender` mutes the message's sender rather than this field.
4315
5020
  */
4316
- failureCount: number;
5021
+ organizer: String256;
4317
5022
  /**
4318
- * One entry per message that failed, naming why. Absent or empty when every message succeeded.
5023
+ * How the DTSTART above was placed on the clock. `Ambiguous` means the invitation named a zone nothing could resolve, so the time shown may be hours out — a card says so rather than presenting a guess as a fact.
4319
5024
  */
4320
- failures?: SpamReportFailure[];
5025
+ zoneCertainty: ZoneCertainty;
5026
+ /**
5027
+ * The `CalendarObject` that accepting this suggestion wrote. `""` until it is accepted — the named absent state, never a missing attribute — and the resource's id afterwards, so the card can link to the event it produced.
5028
+ */
5029
+ acceptedCalendarObjectId: string;
5030
+ createdAt: number;
5031
+ updatedAt: number;
4321
5032
  }
4322
5033
  /**
4323
- * One message's failure reason within a report-spam or not-spam bulk call.
5034
+ * Body of `POST /calendar-suggestions/{suggestionId}/accept`. Names the collection the event is written into; there is no default, because filing someone else's invitation into a calendar the user did not pick is a decision the server does not get to make.
4324
5035
  */
4325
- export interface SpamReportFailure {
5036
+ export interface AcceptCalendarSuggestionInput {
4326
5037
  /**
4327
- * The message that failed
5038
+ * Collection the accepted event is written into.
4328
5039
  */
4329
- messageId: UUID;
5040
+ calendarId: UUID;
5041
+ }
5042
+ /**
5043
+ * Body of `POST /calendar-suggestions/{suggestionId}/dismiss`.
5044
+ */
5045
+ export interface DismissCalendarSuggestionInput {
4330
5046
  /**
4331
- * Why it failed, safe to show the user as-is. One of a small allowlisted set of user-facing messages (e.g. "has not settled yet" while a prior move is still in flight) — never a raw internal error, which is logged server-side instead and never returned here. Not intended to be parsed programmatically.
5047
+ * Also stop offering invitations from this message's sender, by writing a standing `Filter` rule. `false` dismisses this one card and nothing else.
4332
5048
  */
4333
- reason: string;
5049
+ muteSender: boolean;
4334
5050
  }
4335
5051
  /**
4336
5052
  * Junction table linking envelope addresses to normalized addresses. Stores per-message display name since it may vary.
@@ -4951,153 +5667,6 @@ domain already uses"; it does not close it.
4951
5667
  createdAt: number;
4952
5668
  updatedAt: number;
4953
5669
  }
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
5670
  /**
5102
5671
  * One occurrence of a CalendarObject, flattened so a date range can be queried
5103
5672
  instead of expanded (issue #15). Every row is derived from
@@ -5144,6 +5713,18 @@ occurrences from every zone but its own.
5144
5713
  * 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
5714
  */
5146
5715
  allDay: boolean;
5716
+ /**
5717
+ * Projection of this occurrence's own SUMMARY. An overridden occurrence carries the override's, not the master's — an edit to one instance of a series is exactly the thing a range read must show, and a reader that took the summary from the master would draw the old title over the new one.
5718
+ */
5719
+ summary: String512;
5720
+ /**
5721
+ * Projection of this occurrence's own STATUS. Per occurrence for the same reason as `summary`: one cancelled instance of a series is cancelled, and reading the master's status would keep it in a free/busy answer.
5722
+ */
5723
+ status: CalendarEventStatus;
5724
+ /**
5725
+ * Projection of this occurrence's own TRANSP — whether it consumes free/busy time.
5726
+ */
5727
+ transparency: CalendarTransparency;
5147
5728
  createdAt: number;
5148
5729
  updatedAt: number;
5149
5730
  }
@@ -5433,51 +6014,175 @@ declare namespace Paths {
5433
6014
  export type $200 = void;
5434
6015
  }
5435
6016
  }
5436
- namespace UpdateLabel {
5437
- export interface PathParameters {
5438
- accountId: Components.Schemas.UUID;
5439
- labelId: Components.Schemas.UUID;
5440
- }
5441
- export type RequestBody = Components.Schemas.UpdateLabelInput;
6017
+ namespace UpdateLabel {
6018
+ export interface PathParameters {
6019
+ accountId: Components.Schemas.UUID;
6020
+ labelId: Components.Schemas.UUID;
6021
+ }
6022
+ export type RequestBody = Components.Schemas.UpdateLabelInput;
6023
+ namespace Responses {
6024
+ export type $200 = void;
6025
+ }
6026
+ }
6027
+ namespace DeleteLabel {
6028
+ export interface PathParameters {
6029
+ accountId: Components.Schemas.UUID;
6030
+ labelId: Components.Schemas.UUID;
6031
+ }
6032
+ namespace Responses {
6033
+ }
6034
+ }
6035
+ namespace CreateOrganizeJob {
6036
+ export interface PathParameters {
6037
+ accountId: Components.Schemas.UUID;
6038
+ }
6039
+ export type RequestBody = Components.Schemas.OrganizeInput;
6040
+ namespace Responses {
6041
+ export type $202 = void;
6042
+ export type $400 = void;
6043
+ }
6044
+ }
6045
+ namespace PreviewOrganize {
6046
+ export interface PathParameters {
6047
+ accountId: Components.Schemas.UUID;
6048
+ }
6049
+ export type RequestBody = Components.Schemas.OrganizeInput;
6050
+ namespace Responses {
6051
+ export type $200 = void;
6052
+ export type $400 = void;
6053
+ }
6054
+ }
6055
+ namespace GetOrganizeJob {
6056
+ export interface PathParameters {
6057
+ accountId: Components.Schemas.UUID;
6058
+ organizeJobId: Components.Schemas.UUID;
6059
+ }
6060
+ namespace Responses {
6061
+ export type $200 = void;
6062
+ }
6063
+ }
6064
+ namespace ListCalendars {
6065
+ namespace Responses {
6066
+ export type $200 = void;
6067
+ }
6068
+ }
6069
+ namespace CreateCalendar {
6070
+ export type RequestBody = Components.Schemas.CreateCalendarInput;
6071
+ namespace Responses {
6072
+ export type $200 = void;
6073
+ export type $400 = void;
6074
+ }
6075
+ }
6076
+ namespace GetCalendar {
6077
+ export interface PathParameters {
6078
+ calendarId: Components.Schemas.UUID;
6079
+ }
6080
+ namespace Responses {
6081
+ export type $200 = void;
6082
+ export type $404 = void;
6083
+ }
6084
+ }
6085
+ namespace UpdateCalendar {
6086
+ export interface PathParameters {
6087
+ calendarId: Components.Schemas.UUID;
6088
+ }
6089
+ export type RequestBody = Components.Schemas.UpdateCalendarInput;
6090
+ namespace Responses {
6091
+ export type $200 = void;
6092
+ export type $400 = void;
6093
+ export type $404 = void;
6094
+ }
6095
+ }
6096
+ namespace DeleteCalendar {
6097
+ export interface PathParameters {
6098
+ calendarId: Components.Schemas.UUID;
6099
+ }
6100
+ namespace Responses {
6101
+ export type $204 = void;
6102
+ export type $400 = void;
6103
+ export type $404 = void;
6104
+ }
6105
+ }
6106
+ namespace ListCalendarEvents {
6107
+ export interface QueryParameters {
6108
+ from: string;
6109
+ to: string;
6110
+ calendarId?: Components.Schemas.UUID[];
6111
+ }
6112
+ namespace Responses {
6113
+ export type $200 = void;
6114
+ export type $400 = void;
6115
+ export type $404 = void;
6116
+ }
6117
+ }
6118
+ namespace CreateCalendarEvent {
6119
+ export type RequestBody = Components.Schemas.CreateCalendarEventInput;
5442
6120
  namespace Responses {
5443
6121
  export type $200 = void;
6122
+ export type $400 = void;
6123
+ export type $404 = void;
5444
6124
  }
5445
6125
  }
5446
- namespace DeleteLabel {
6126
+ namespace GetCalendarEvent {
5447
6127
  export interface PathParameters {
5448
- accountId: Components.Schemas.UUID;
5449
- labelId: Components.Schemas.UUID;
6128
+ calendarObjectId: Components.Schemas.UUID;
6129
+ }
6130
+ export interface QueryParameters {
6131
+ calendarId: Components.Schemas.UUID;
5450
6132
  }
5451
6133
  namespace Responses {
6134
+ export type $200 = void;
6135
+ export type $400 = void;
6136
+ export type $404 = void;
5452
6137
  }
5453
6138
  }
5454
- namespace CreateOrganizeJob {
6139
+ namespace UpdateCalendarEvent {
5455
6140
  export interface PathParameters {
5456
- accountId: Components.Schemas.UUID;
6141
+ calendarObjectId: Components.Schemas.UUID;
5457
6142
  }
5458
- export type RequestBody = Components.Schemas.OrganizeInput;
6143
+ export interface QueryParameters {
6144
+ calendarId: Components.Schemas.UUID;
6145
+ scope?: Components.Schemas.RecurrenceScope;
6146
+ recurrenceId?: string;
6147
+ }
6148
+ export interface HeaderParameters {
6149
+ ifMatch?: string;
6150
+ }
6151
+ export type RequestBody = Components.Schemas.UpdateCalendarEventInput;
5459
6152
  namespace Responses {
5460
- export type $202 = void;
6153
+ export type $200 = void;
5461
6154
  export type $400 = void;
6155
+ export type $404 = void;
6156
+ export type $412 = void;
5462
6157
  }
5463
6158
  }
5464
- namespace PreviewOrganize {
6159
+ namespace DeleteCalendarEvent {
5465
6160
  export interface PathParameters {
5466
- accountId: Components.Schemas.UUID;
6161
+ calendarObjectId: Components.Schemas.UUID;
6162
+ }
6163
+ export interface QueryParameters {
6164
+ calendarId: Components.Schemas.UUID;
6165
+ scope?: Components.Schemas.RecurrenceScope;
6166
+ recurrenceId?: string;
6167
+ }
6168
+ export interface HeaderParameters {
6169
+ ifMatch?: string;
5467
6170
  }
5468
- export type RequestBody = Components.Schemas.OrganizeInput;
5469
6171
  namespace Responses {
5470
- export type $200 = void;
6172
+ export type $204 = void;
5471
6173
  export type $400 = void;
6174
+ export type $404 = void;
6175
+ export type $412 = void;
5472
6176
  }
5473
6177
  }
5474
- namespace GetOrganizeJob {
5475
- export interface PathParameters {
5476
- accountId: Components.Schemas.UUID;
5477
- organizeJobId: Components.Schemas.UUID;
6178
+ namespace ListCalendarFreeBusy {
6179
+ export interface QueryParameters {
6180
+ from: string;
6181
+ to: string;
5478
6182
  }
5479
6183
  namespace Responses {
5480
6184
  export type $200 = void;
6185
+ export type $400 = void;
5481
6186
  }
5482
6187
  }
5483
6188
  namespace EmptyTrash {
@@ -5778,6 +6483,54 @@ declare namespace Paths {
5778
6483
  export type $200 = void;
5779
6484
  }
5780
6485
  }
6486
+ namespace ListCalendarSuggestions {
6487
+ export interface QueryParameters {
6488
+ state: Components.Schemas.CalendarSuggestionState;
6489
+ continuationToken?: string;
6490
+ }
6491
+ namespace Responses {
6492
+ export type $200 = void;
6493
+ export type $400 = void;
6494
+ }
6495
+ }
6496
+ namespace ListMessageCalendarSuggestions {
6497
+ export interface PathParameters {
6498
+ messageId: Components.Schemas.UUID;
6499
+ }
6500
+ namespace Responses {
6501
+ export type $200 = void;
6502
+ export type $400 = void;
6503
+ }
6504
+ }
6505
+ namespace AcceptCalendarSuggestion {
6506
+ export interface PathParameters {
6507
+ suggestionId: Components.Schemas.UUID;
6508
+ }
6509
+ export type RequestBody = Components.Schemas.AcceptCalendarSuggestionInput;
6510
+ namespace Responses {
6511
+ export type $200 = void;
6512
+ export type $400 = void;
6513
+ }
6514
+ }
6515
+ namespace DeclineCalendarSuggestion {
6516
+ export interface PathParameters {
6517
+ suggestionId: Components.Schemas.UUID;
6518
+ }
6519
+ namespace Responses {
6520
+ export type $200 = void;
6521
+ export type $400 = void;
6522
+ }
6523
+ }
6524
+ namespace DismissCalendarSuggestion {
6525
+ export interface PathParameters {
6526
+ suggestionId: Components.Schemas.UUID;
6527
+ }
6528
+ export type RequestBody = Components.Schemas.DismissCalendarSuggestionInput;
6529
+ namespace Responses {
6530
+ export type $200 = void;
6531
+ export type $400 = void;
6532
+ }
6533
+ }
5781
6534
  }
5782
6535
 
5783
6536
  export interface OperationMethods {
@@ -6013,6 +6766,122 @@ export interface OperationMethods {
6013
6766
  data?: any,
6014
6767
  config?: AxiosRequestConfig
6015
6768
  ): OperationResponse<Paths.GetOrganizeJob.Responses.$200>;
6769
+ /**
6770
+ * listCalendars - List the caller's calendar collections. Provisions the account config's default collection when it has none, so a first read never comes back empty and no client has to know how a calendar gets made.
6771
+ */
6772
+ 'listCalendars'(
6773
+ parameters?: Parameters<UnknownParamsObject> | null,
6774
+ data?: any,
6775
+ config?: AxiosRequestConfig
6776
+ ): OperationResponse<Paths.ListCalendars.Responses.$200>;
6777
+ /**
6778
+ * createCalendar - Create a calendar collection. Refused with 400 when `urlSegment` is empty or already taken in this account config — the segment is the collection's identity, so a second create under the same one would otherwise silently return the collection that already exists.
6779
+ */
6780
+ 'createCalendar'(
6781
+ parameters?: Parameters<UnknownParamsObject> | null,
6782
+ data?: Paths.CreateCalendar.RequestBody,
6783
+ config?: AxiosRequestConfig
6784
+ ): OperationResponse<Paths.CreateCalendar.Responses.$200>;
6785
+ /**
6786
+ * getCalendar
6787
+ */
6788
+ 'getCalendar'(
6789
+ parameters?: Parameters<Paths.GetCalendar.PathParameters> | null,
6790
+ data?: any,
6791
+ config?: AxiosRequestConfig
6792
+ ): OperationResponse<Paths.GetCalendar.Responses.$200>;
6793
+ /**
6794
+ * updateCalendar
6795
+ */
6796
+ 'updateCalendar'(
6797
+ parameters?: Parameters<Paths.UpdateCalendar.PathParameters> | null,
6798
+ data?: Paths.UpdateCalendar.RequestBody,
6799
+ config?: AxiosRequestConfig
6800
+ ): OperationResponse<Paths.UpdateCalendar.Responses.$200>;
6801
+ /**
6802
+ * deleteCalendar - Delete a calendar collection and every event in it. Refused with 400 for the account's default collection: it is the one place an accepted invitation or a first event can land, and an account with no calendar has nowhere to put an event.
6803
+ */
6804
+ 'deleteCalendar'(
6805
+ parameters?: Parameters<Paths.DeleteCalendar.PathParameters> | null,
6806
+ data?: any,
6807
+ config?: AxiosRequestConfig
6808
+ ): OperationResponse<Paths.DeleteCalendar.Responses.$204>;
6809
+ /**
6810
+ * listCalendarEvents - Expanded event occurrences in a window. The server does the recurrence
6811
+ expansion and the client renders instances — no RRULE is ever evaluated
6812
+ in a browser, so a week grid and a day strip agree with each other and
6813
+ with what a native client will later read over CalDAV.
6814
+
6815
+ Occurrences are served from the stored occurrence index. A series whose
6816
+ index stops before `to` — an open-ended event older than the expansion
6817
+ horizon — is expanded live for this window instead, and nothing
6818
+ unbounded is written to serve a read.
6819
+
6820
+ Refused with 400 when `from` and `to` are not ISO 8601 date-times, when
6821
+ `to` is not after `from`, or when the window is wider than a year.
6822
+ */
6823
+ 'listCalendarEvents'(
6824
+ parameters?: Parameters<Paths.ListCalendarEvents.QueryParameters> | null,
6825
+ data?: any,
6826
+ config?: AxiosRequestConfig
6827
+ ): OperationResponse<Paths.ListCalendarEvents.Responses.$200>;
6828
+ /**
6829
+ * createCalendarEvent - Create an event. The server builds the VEVENT and writes it through the single calendar write path — the same one an accepted invitation and a later CalDAV PUT go through — so the object, its expanded occurrences and the collection's sync sequence land together or not at all.
6830
+ */
6831
+ 'createCalendarEvent'(
6832
+ parameters?: Parameters<UnknownParamsObject> | null,
6833
+ data?: Paths.CreateCalendarEvent.RequestBody,
6834
+ config?: AxiosRequestConfig
6835
+ ): OperationResponse<Paths.CreateCalendarEvent.Responses.$200>;
6836
+ /**
6837
+ * getCalendarEvent - Get one stored event, including its canonical iCalendar text and its etag.
6838
+ */
6839
+ 'getCalendarEvent'(
6840
+ parameters?: Parameters<Paths.GetCalendarEvent.PathParameters & Paths.GetCalendarEvent.QueryParameters> | null,
6841
+ data?: any,
6842
+ config?: AxiosRequestConfig
6843
+ ): OperationResponse<Paths.GetCalendarEvent.Responses.$200>;
6844
+ /**
6845
+ * updateCalendarEvent - Update an event. `scope` says what the caller meant by editing one
6846
+ drawing of a series: `All` rewrites the master, `This` writes a
6847
+ RECURRENCE-ID override for the named occurrence, and `Following` splits
6848
+ the series — the master's rule is truncated and a second resource carries
6849
+ the remainder under a UID of its own.
6850
+
6851
+ `recurrenceId` is required for `This` and `Following` and is refused with
6852
+ 400 otherwise, along with a scope other than `All` on an event that does
6853
+ not recur, and a `recurrenceId` naming no occurrence of the series.
6854
+
6855
+ `If-Match` makes the write conditional on the etag the caller read. A
6856
+ mismatch is 412: somebody replaced the resource in between, and applying
6857
+ this patch would discard their change without either of them seeing it.
6858
+ */
6859
+ 'updateCalendarEvent'(
6860
+ parameters?: Parameters<Paths.UpdateCalendarEvent.PathParameters & Paths.UpdateCalendarEvent.QueryParameters & Paths.UpdateCalendarEvent.HeaderParameters> | null,
6861
+ data?: Paths.UpdateCalendarEvent.RequestBody,
6862
+ config?: AxiosRequestConfig
6863
+ ): OperationResponse<Paths.UpdateCalendarEvent.Responses.$200>;
6864
+ /**
6865
+ * deleteCalendarEvent - Delete an event. `All` removes the resource and every occurrence it
6866
+ produced; `This` writes an EXDATE for the named occurrence and keeps the
6867
+ rest of the series; `Following` truncates the series to end just before
6868
+ it.
6869
+
6870
+ Same refusals and the same `If-Match` precondition as the update.
6871
+ */
6872
+ 'deleteCalendarEvent'(
6873
+ parameters?: Parameters<Paths.DeleteCalendarEvent.PathParameters & Paths.DeleteCalendarEvent.QueryParameters & Paths.DeleteCalendarEvent.HeaderParameters> | null,
6874
+ data?: any,
6875
+ config?: AxiosRequestConfig
6876
+ ): OperationResponse<Paths.DeleteCalendarEvent.Responses.$204>;
6877
+ /**
6878
+ * listCalendarFreeBusy - Busy spans over a window, merged across every calendar the caller holds. Backs the clash check beside a mail invitation and the free-stretch maths in the day strip, neither of which should have to fetch every event and merge them itself. Refused with 400 on the same window rules as the event listing.
6879
+ */
6880
+ 'listCalendarFreeBusy'(
6881
+ parameters?: Parameters<Paths.ListCalendarFreeBusy.QueryParameters> | null,
6882
+ data?: any,
6883
+ config?: AxiosRequestConfig
6884
+ ): OperationResponse<Paths.ListCalendarFreeBusy.Responses.$200>;
6016
6885
  /**
6017
6886
  * emptyTrash - Permanently delete all messages in the Trash mailbox
6018
6887
  */
@@ -6309,6 +7178,61 @@ Callers that omit `query` are unaffected: the INBOX (and starred) listings behav
6309
7178
  data?: Paths.NotSpam.RequestBody,
6310
7179
  config?: AxiosRequestConfig
6311
7180
  ): OperationResponse<Paths.NotSpam.Responses.$200>;
7181
+ /**
7182
+ * listCalendarSuggestions - List the caller's suggestions in one state, newest first. `Pending` is the set that is waiting on a person and the one a client normally asks for.
7183
+ */
7184
+ 'listCalendarSuggestions'(
7185
+ parameters?: Parameters<Paths.ListCalendarSuggestions.QueryParameters> | null,
7186
+ data?: any,
7187
+ config?: AxiosRequestConfig
7188
+ ): OperationResponse<Paths.ListCalendarSuggestions.Responses.$200>;
7189
+ /**
7190
+ * listMessageCalendarSuggestions - Every suggestion read out of one message, in whatever state each has reached — a superseded revision included, so the card can say which revision replaced it.
7191
+ */
7192
+ 'listMessageCalendarSuggestions'(
7193
+ parameters?: Parameters<Paths.ListMessageCalendarSuggestions.PathParameters> | null,
7194
+ data?: any,
7195
+ config?: AxiosRequestConfig
7196
+ ): OperationResponse<Paths.ListMessageCalendarSuggestions.Responses.$200>;
7197
+ /**
7198
+ * acceptCalendarSuggestion - Add the suggested event to a calendar. One transaction: a VCALENDAR is
7199
+ built from the invitation's own bytes, keeping its UID and SEQUENCE and
7200
+ marking the user `ATTENDEE;PARTSTAT=ACCEPTED`, and written through the
7201
+ same service function every other calendar write goes through — so a web
7202
+ edit and a native edit of that event cannot diverge. Accepting a `Cancel`
7203
+ suggestion writes `STATUS:CANCELLED` on the resource the same way.
7204
+
7205
+ No reply is sent to the organizer. This endpoint sends no mail at all,
7206
+ and the card says so.
7207
+
7208
+ Idempotent: accepting an already-accepted suggestion rewrites the same
7209
+ resource and returns the same suggestion, because both the resource id
7210
+ and the suggestion id are derived rather than minted.
7211
+
7212
+ 400 when the suggestion is not one that can be accepted — already
7213
+ declined, dismissed or superseded — or when its iCalendar will not parse.
7214
+ */
7215
+ 'acceptCalendarSuggestion'(
7216
+ parameters?: Parameters<Paths.AcceptCalendarSuggestion.PathParameters> | null,
7217
+ data?: Paths.AcceptCalendarSuggestion.RequestBody,
7218
+ config?: AxiosRequestConfig
7219
+ ): OperationResponse<Paths.AcceptCalendarSuggestion.Responses.$200>;
7220
+ /**
7221
+ * declineCalendarSuggestion - Say no. Writes no calendar object and sends no reply to the organizer. Idempotent; 400 when the suggestion was already accepted, since a resource exists and declining would not remove it.
7222
+ */
7223
+ 'declineCalendarSuggestion'(
7224
+ parameters?: Parameters<Paths.DeclineCalendarSuggestion.PathParameters> | null,
7225
+ data?: any,
7226
+ config?: AxiosRequestConfig
7227
+ ): OperationResponse<Paths.DeclineCalendarSuggestion.Responses.$200>;
7228
+ /**
7229
+ * dismissCalendarSuggestion - Wave the card away. Writes no calendar object. With `muteSender`, also writes a standing `Filter` rule on the message's sender so their invitations stop being offered. Idempotent; 400 when the suggestion was already accepted.
7230
+ */
7231
+ 'dismissCalendarSuggestion'(
7232
+ parameters?: Parameters<Paths.DismissCalendarSuggestion.PathParameters> | null,
7233
+ data?: Paths.DismissCalendarSuggestion.RequestBody,
7234
+ config?: AxiosRequestConfig
7235
+ ): OperationResponse<Paths.DismissCalendarSuggestion.Responses.$200>;
6312
7236
  }
6313
7237
 
6314
7238
  export interface PathsDictionary {
@@ -6582,6 +7506,132 @@ export interface PathsDictionary {
6582
7506
  config?: AxiosRequestConfig
6583
7507
  ): OperationResponse<Paths.GetOrganizeJob.Responses.$200>;
6584
7508
  };
7509
+ ['/calendars']: {
7510
+ /**
7511
+ * listCalendars - List the caller's calendar collections. Provisions the account config's default collection when it has none, so a first read never comes back empty and no client has to know how a calendar gets made.
7512
+ */
7513
+ 'get'(
7514
+ parameters?: Parameters<UnknownParamsObject> | null,
7515
+ data?: any,
7516
+ config?: AxiosRequestConfig
7517
+ ): OperationResponse<Paths.ListCalendars.Responses.$200>;
7518
+ /**
7519
+ * createCalendar - Create a calendar collection. Refused with 400 when `urlSegment` is empty or already taken in this account config — the segment is the collection's identity, so a second create under the same one would otherwise silently return the collection that already exists.
7520
+ */
7521
+ 'post'(
7522
+ parameters?: Parameters<UnknownParamsObject> | null,
7523
+ data?: Paths.CreateCalendar.RequestBody,
7524
+ config?: AxiosRequestConfig
7525
+ ): OperationResponse<Paths.CreateCalendar.Responses.$200>;
7526
+ };
7527
+ ['/calendars/{calendarId}']: {
7528
+ /**
7529
+ * getCalendar
7530
+ */
7531
+ 'get'(
7532
+ parameters?: Parameters<Paths.GetCalendar.PathParameters> | null,
7533
+ data?: any,
7534
+ config?: AxiosRequestConfig
7535
+ ): OperationResponse<Paths.GetCalendar.Responses.$200>;
7536
+ /**
7537
+ * updateCalendar
7538
+ */
7539
+ 'patch'(
7540
+ parameters?: Parameters<Paths.UpdateCalendar.PathParameters> | null,
7541
+ data?: Paths.UpdateCalendar.RequestBody,
7542
+ config?: AxiosRequestConfig
7543
+ ): OperationResponse<Paths.UpdateCalendar.Responses.$200>;
7544
+ /**
7545
+ * deleteCalendar - Delete a calendar collection and every event in it. Refused with 400 for the account's default collection: it is the one place an accepted invitation or a first event can land, and an account with no calendar has nowhere to put an event.
7546
+ */
7547
+ 'delete'(
7548
+ parameters?: Parameters<Paths.DeleteCalendar.PathParameters> | null,
7549
+ data?: any,
7550
+ config?: AxiosRequestConfig
7551
+ ): OperationResponse<Paths.DeleteCalendar.Responses.$204>;
7552
+ };
7553
+ ['/calendar-events']: {
7554
+ /**
7555
+ * listCalendarEvents - Expanded event occurrences in a window. The server does the recurrence
7556
+ expansion and the client renders instances — no RRULE is ever evaluated
7557
+ in a browser, so a week grid and a day strip agree with each other and
7558
+ with what a native client will later read over CalDAV.
7559
+
7560
+ Occurrences are served from the stored occurrence index. A series whose
7561
+ index stops before `to` — an open-ended event older than the expansion
7562
+ horizon — is expanded live for this window instead, and nothing
7563
+ unbounded is written to serve a read.
7564
+
7565
+ Refused with 400 when `from` and `to` are not ISO 8601 date-times, when
7566
+ `to` is not after `from`, or when the window is wider than a year.
7567
+ */
7568
+ 'get'(
7569
+ parameters?: Parameters<Paths.ListCalendarEvents.QueryParameters> | null,
7570
+ data?: any,
7571
+ config?: AxiosRequestConfig
7572
+ ): OperationResponse<Paths.ListCalendarEvents.Responses.$200>;
7573
+ /**
7574
+ * createCalendarEvent - Create an event. The server builds the VEVENT and writes it through the single calendar write path — the same one an accepted invitation and a later CalDAV PUT go through — so the object, its expanded occurrences and the collection's sync sequence land together or not at all.
7575
+ */
7576
+ 'post'(
7577
+ parameters?: Parameters<UnknownParamsObject> | null,
7578
+ data?: Paths.CreateCalendarEvent.RequestBody,
7579
+ config?: AxiosRequestConfig
7580
+ ): OperationResponse<Paths.CreateCalendarEvent.Responses.$200>;
7581
+ };
7582
+ ['/calendar-events/{calendarObjectId}']: {
7583
+ /**
7584
+ * getCalendarEvent - Get one stored event, including its canonical iCalendar text and its etag.
7585
+ */
7586
+ 'get'(
7587
+ parameters?: Parameters<Paths.GetCalendarEvent.PathParameters & Paths.GetCalendarEvent.QueryParameters> | null,
7588
+ data?: any,
7589
+ config?: AxiosRequestConfig
7590
+ ): OperationResponse<Paths.GetCalendarEvent.Responses.$200>;
7591
+ /**
7592
+ * updateCalendarEvent - Update an event. `scope` says what the caller meant by editing one
7593
+ drawing of a series: `All` rewrites the master, `This` writes a
7594
+ RECURRENCE-ID override for the named occurrence, and `Following` splits
7595
+ the series — the master's rule is truncated and a second resource carries
7596
+ the remainder under a UID of its own.
7597
+
7598
+ `recurrenceId` is required for `This` and `Following` and is refused with
7599
+ 400 otherwise, along with a scope other than `All` on an event that does
7600
+ not recur, and a `recurrenceId` naming no occurrence of the series.
7601
+
7602
+ `If-Match` makes the write conditional on the etag the caller read. A
7603
+ mismatch is 412: somebody replaced the resource in between, and applying
7604
+ this patch would discard their change without either of them seeing it.
7605
+ */
7606
+ 'patch'(
7607
+ parameters?: Parameters<Paths.UpdateCalendarEvent.PathParameters & Paths.UpdateCalendarEvent.QueryParameters> | null,
7608
+ data?: Paths.UpdateCalendarEvent.RequestBody,
7609
+ config?: AxiosRequestConfig
7610
+ ): OperationResponse<Paths.UpdateCalendarEvent.Responses.$200>;
7611
+ /**
7612
+ * deleteCalendarEvent - Delete an event. `All` removes the resource and every occurrence it
7613
+ produced; `This` writes an EXDATE for the named occurrence and keeps the
7614
+ rest of the series; `Following` truncates the series to end just before
7615
+ it.
7616
+
7617
+ Same refusals and the same `If-Match` precondition as the update.
7618
+ */
7619
+ 'delete'(
7620
+ parameters?: Parameters<Paths.DeleteCalendarEvent.PathParameters & Paths.DeleteCalendarEvent.QueryParameters> | null,
7621
+ data?: any,
7622
+ config?: AxiosRequestConfig
7623
+ ): OperationResponse<Paths.DeleteCalendarEvent.Responses.$204>;
7624
+ };
7625
+ ['/calendar-free-busy']: {
7626
+ /**
7627
+ * listCalendarFreeBusy - Busy spans over a window, merged across every calendar the caller holds. Backs the clash check beside a mail invitation and the free-stretch maths in the day strip, neither of which should have to fetch every event and merge them itself. Refused with 400 on the same window rules as the event listing.
7628
+ */
7629
+ 'get'(
7630
+ parameters?: Parameters<Paths.ListCalendarFreeBusy.QueryParameters> | null,
7631
+ data?: any,
7632
+ config?: AxiosRequestConfig
7633
+ ): OperationResponse<Paths.ListCalendarFreeBusy.Responses.$200>;
7634
+ };
6585
7635
  ['/accounts/{accountId}/trash/empty']: {
6586
7636
  /**
6587
7637
  * emptyTrash - Permanently delete all messages in the Trash mailbox
@@ -6938,6 +7988,71 @@ Callers that omit `query` are unaffected: the INBOX (and starred) listings behav
6938
7988
  config?: AxiosRequestConfig
6939
7989
  ): OperationResponse<Paths.NotSpam.Responses.$200>;
6940
7990
  };
7991
+ ['/calendar-suggestions']: {
7992
+ /**
7993
+ * listCalendarSuggestions - List the caller's suggestions in one state, newest first. `Pending` is the set that is waiting on a person and the one a client normally asks for.
7994
+ */
7995
+ 'get'(
7996
+ parameters?: Parameters<Paths.ListCalendarSuggestions.QueryParameters> | null,
7997
+ data?: any,
7998
+ config?: AxiosRequestConfig
7999
+ ): OperationResponse<Paths.ListCalendarSuggestions.Responses.$200>;
8000
+ };
8001
+ ['/messages/{messageId}/calendar-suggestions']: {
8002
+ /**
8003
+ * listMessageCalendarSuggestions - Every suggestion read out of one message, in whatever state each has reached — a superseded revision included, so the card can say which revision replaced it.
8004
+ */
8005
+ 'get'(
8006
+ parameters?: Parameters<Paths.ListMessageCalendarSuggestions.PathParameters> | null,
8007
+ data?: any,
8008
+ config?: AxiosRequestConfig
8009
+ ): OperationResponse<Paths.ListMessageCalendarSuggestions.Responses.$200>;
8010
+ };
8011
+ ['/calendar-suggestions/{suggestionId}/accept']: {
8012
+ /**
8013
+ * acceptCalendarSuggestion - Add the suggested event to a calendar. One transaction: a VCALENDAR is
8014
+ built from the invitation's own bytes, keeping its UID and SEQUENCE and
8015
+ marking the user `ATTENDEE;PARTSTAT=ACCEPTED`, and written through the
8016
+ same service function every other calendar write goes through — so a web
8017
+ edit and a native edit of that event cannot diverge. Accepting a `Cancel`
8018
+ suggestion writes `STATUS:CANCELLED` on the resource the same way.
8019
+
8020
+ No reply is sent to the organizer. This endpoint sends no mail at all,
8021
+ and the card says so.
8022
+
8023
+ Idempotent: accepting an already-accepted suggestion rewrites the same
8024
+ resource and returns the same suggestion, because both the resource id
8025
+ and the suggestion id are derived rather than minted.
8026
+
8027
+ 400 when the suggestion is not one that can be accepted — already
8028
+ declined, dismissed or superseded — or when its iCalendar will not parse.
8029
+ */
8030
+ 'post'(
8031
+ parameters?: Parameters<Paths.AcceptCalendarSuggestion.PathParameters> | null,
8032
+ data?: Paths.AcceptCalendarSuggestion.RequestBody,
8033
+ config?: AxiosRequestConfig
8034
+ ): OperationResponse<Paths.AcceptCalendarSuggestion.Responses.$200>;
8035
+ };
8036
+ ['/calendar-suggestions/{suggestionId}/decline']: {
8037
+ /**
8038
+ * declineCalendarSuggestion - Say no. Writes no calendar object and sends no reply to the organizer. Idempotent; 400 when the suggestion was already accepted, since a resource exists and declining would not remove it.
8039
+ */
8040
+ 'post'(
8041
+ parameters?: Parameters<Paths.DeclineCalendarSuggestion.PathParameters> | null,
8042
+ data?: any,
8043
+ config?: AxiosRequestConfig
8044
+ ): OperationResponse<Paths.DeclineCalendarSuggestion.Responses.$200>;
8045
+ };
8046
+ ['/calendar-suggestions/{suggestionId}/dismiss']: {
8047
+ /**
8048
+ * dismissCalendarSuggestion - Wave the card away. Writes no calendar object. With `muteSender`, also writes a standing `Filter` rule on the message's sender so their invitations stop being offered. Idempotent; 400 when the suggestion was already accepted.
8049
+ */
8050
+ 'post'(
8051
+ parameters?: Parameters<Paths.DismissCalendarSuggestion.PathParameters> | null,
8052
+ data?: Paths.DismissCalendarSuggestion.RequestBody,
8053
+ config?: AxiosRequestConfig
8054
+ ): OperationResponse<Paths.DismissCalendarSuggestion.Responses.$200>;
8055
+ };
6941
8056
  }
6942
8057
 
6943
8058
  export type Client = OpenAPIClient<OperationMethods, PathsDictionary>;
@@ -6949,10 +8064,11 @@ export type AccessPattern = Components.Schemas.AccessPattern;
6949
8064
  export type ResultList = Components.Schemas.ResultList;
6950
8065
  export type FolderRoleConflict = Components.Schemas.FolderRoleConflict;
6951
8066
  export type AppointFolderRoleConflict = Components.Schemas.AppointFolderRoleConflict;
8067
+ export type NotFoundError = Components.Schemas.NotFoundError;
8068
+ export type PreconditionFailedError = Components.Schemas.PreconditionFailedError;
6952
8069
  export type DeleteMessagesConflict = Components.Schemas.DeleteMessagesConflict;
6953
8070
  export type MessagePlacementConflict = Components.Schemas.MessagePlacementConflict;
6954
8071
  export type AmazonApiGatewayIntegration = Components.Schemas.AmazonApiGatewayIntegration;
6955
- export type NotFoundError = Components.Schemas.NotFoundError;
6956
8072
  export type InternalServerError = Components.Schemas.InternalServerError;
6957
8073
  export type UnauthorizedError = Components.Schemas.UnauthorizedError;
6958
8074
  export type ForbiddenError = Components.Schemas.ForbiddenError;
@@ -7004,6 +8120,20 @@ export type CreateOrganizeJobResponse = Components.Schemas.CreateOrganizeJobResp
7004
8120
  export type OrganizePreviewResponse = Components.Schemas.OrganizePreviewResponse;
7005
8121
  export type OrganizeJobRequest = Components.Schemas.OrganizeJobRequest;
7006
8122
  export type OrganizeJobResponse = Components.Schemas.OrganizeJobResponse;
8123
+ export type CalendarListResponse = Components.Schemas.CalendarListResponse;
8124
+ export type CalendarCollection = Components.Schemas.CalendarCollection;
8125
+ export type CalendarResponse = Components.Schemas.CalendarResponse;
8126
+ export type CreateCalendarInput = Components.Schemas.CreateCalendarInput;
8127
+ export type UpdateCalendarInput = Components.Schemas.UpdateCalendarInput;
8128
+ export type CalendarNoContent = Components.Schemas.CalendarNoContent;
8129
+ export type CalendarEventListResponse = Components.Schemas.CalendarEventListResponse;
8130
+ export type CalendarEventInstance = Components.Schemas.CalendarEventInstance;
8131
+ export type CreateCalendarEventInput = Components.Schemas.CreateCalendarEventInput;
8132
+ export type CalendarObject = Components.Schemas.CalendarObject;
8133
+ export type CalendarEventResponse = Components.Schemas.CalendarEventResponse;
8134
+ export type UpdateCalendarEventInput = Components.Schemas.UpdateCalendarEventInput;
8135
+ export type CalendarFreeBusyResponse = Components.Schemas.CalendarFreeBusyResponse;
8136
+ export type CalendarFreeBusySpan = Components.Schemas.CalendarFreeBusySpan;
7007
8137
  export type EmptyTrashResponse = Components.Schemas.EmptyTrashResponse;
7008
8138
  export type SyncTriggerResponse = Components.Schemas.SyncTriggerResponse;
7009
8139
  export type AccountSyncStatusResponse = Components.Schemas.AccountSyncStatusResponse;
@@ -7068,6 +8198,10 @@ export type CopyMessagesInput = Components.Schemas.CopyMessagesInput;
7068
8198
  export type UpdateMessageLabelsInput = Components.Schemas.UpdateMessageLabelsInput;
7069
8199
  export type SpamReportBulkResult = Components.Schemas.SpamReportBulkResult;
7070
8200
  export type SpamReportFailure = Components.Schemas.SpamReportFailure;
8201
+ export type CalendarSuggestion = Components.Schemas.CalendarSuggestion;
8202
+ export type CalendarSuggestionResponse = Components.Schemas.CalendarSuggestionResponse;
8203
+ export type AcceptCalendarSuggestionInput = Components.Schemas.AcceptCalendarSuggestionInput;
8204
+ export type DismissCalendarSuggestionInput = Components.Schemas.DismissCalendarSuggestionInput;
7071
8205
  export type EnvelopeAddress = Components.Schemas.EnvelopeAddress;
7072
8206
  export type ConfigImportUnresolvedRef = Components.Schemas.ConfigImportUnresolvedRef;
7073
8207
  export type ConfigImport = Components.Schemas.ConfigImport;
@@ -7092,8 +8226,6 @@ export type BodyPartParameter = Components.Schemas.BodyPartParameter;
7092
8226
  export type RawMessageStorage = Components.Schemas.RawMessageStorage;
7093
8227
  export type BodyPartStorage = Components.Schemas.BodyPartStorage;
7094
8228
  export type BodyPartContent = Components.Schemas.BodyPartContent;
7095
- export type CalendarCollection = Components.Schemas.CalendarCollection;
7096
- export type CalendarObject = Components.Schemas.CalendarObject;
7097
8229
  export type CalendarEventIndex = Components.Schemas.CalendarEventIndex;
7098
8230
  export type MessageLabel = Components.Schemas.MessageLabel;
7099
8231
  export type FilterAnchor = Components.Schemas.FilterAnchor;
@@ -7124,6 +8256,13 @@ export type FilterMatchOperator = Components.Schemas.FilterMatchOperator;
7124
8256
  export type FilterClauseField = Components.Schemas.FilterClauseField;
7125
8257
  export type LabelColor = Components.Schemas.LabelColor;
7126
8258
  export type OrganizeJobState = Components.Schemas.OrganizeJobState;
8259
+ export type CalendarColor = Components.Schemas.CalendarColor;
8260
+ export type CalendarComponentSet = Components.Schemas.CalendarComponentSet;
8261
+ export type CalendarSource = Components.Schemas.CalendarSource;
8262
+ export type CalendarEventStatus = Components.Schemas.CalendarEventStatus;
8263
+ export type CalendarTransparency = Components.Schemas.CalendarTransparency;
8264
+ export type ZoneCertainty = Components.Schemas.ZoneCertainty;
8265
+ export type RecurrenceScope = Components.Schemas.RecurrenceScope;
7127
8266
  export type SortOrder = Components.Schemas.SortOrder;
7128
8267
  export type StarColor = Components.Schemas.StarColor;
7129
8268
  export type MessageCategory = Components.Schemas.MessageCategory;
@@ -7146,6 +8285,9 @@ export type ContentDisposition = Components.Schemas.ContentDisposition;
7146
8285
  export type MultipartSubtype = Components.Schemas.MultipartSubtype;
7147
8286
  export type ReferenceType = Components.Schemas.ReferenceType;
7148
8287
  export type LabelAction = Components.Schemas.LabelAction;
8288
+ export type CalendarSuggestionState = Components.Schemas.CalendarSuggestionState;
8289
+ export type CalendarInviteMethod = Components.Schemas.CalendarInviteMethod;
8290
+ export type CalendarSuggestionSource = Components.Schemas.CalendarSuggestionSource;
7149
8291
  export type MessageSystemFlag = Components.Schemas.MessageSystemFlag;
7150
8292
  export type MessageKeywordFlag = Components.Schemas.MessageKeywordFlag;
7151
8293
  export type MailboxAttribute = Components.Schemas.MailboxAttribute;
@@ -7154,12 +8296,6 @@ export type ContentEncoding = Components.Schemas.ContentEncoding;
7154
8296
  export type AccountSettingName = Components.Schemas.AccountSettingName;
7155
8297
  export type ConfigImportState = Components.Schemas.ConfigImportState;
7156
8298
  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;
7163
8299
  export type MessagePlacementMoveState = Components.Schemas.MessagePlacementMoveState;
7164
8300
  export type FlagPushOperation = Components.Schemas.FlagPushOperation;
7165
8301
  export type MessageFlagPushState = Components.Schemas.MessageFlagPushState;