@remit/api-openapi-types 0.0.41 → 0.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/types.d.ts +1064 -307
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
|
*/
|
|
@@ -265,30 +293,6 @@ distinguishable from a network failure without parsing prose.
|
|
|
265
293
|
* 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
294
|
*/
|
|
267
295
|
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
296
|
/**
|
|
293
297
|
* 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
298
|
*/
|
|
@@ -415,6 +419,24 @@ a compile-time error rather than a value that silently sorts incorrectly.
|
|
|
415
419
|
*/
|
|
416
420
|
details?: Record;
|
|
417
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* Not found error response
|
|
424
|
+
*/
|
|
425
|
+
export interface NotFoundError {
|
|
426
|
+
statusCode: 404;
|
|
427
|
+
error: ApiError;
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* The condition the request stated is no longer true. Answered when an
|
|
431
|
+
`If-Match` names an etag the stored resource no longer carries: somebody else
|
|
432
|
+
wrote it in between, so applying this request would silently discard their
|
|
433
|
+
change. The client re-reads the resource and decides what to do with the
|
|
434
|
+
version it now has.
|
|
435
|
+
*/
|
|
436
|
+
export interface PreconditionFailedError {
|
|
437
|
+
statusCode: 412;
|
|
438
|
+
error: ApiError;
|
|
439
|
+
}
|
|
418
440
|
/**
|
|
419
441
|
* The same flat 409 body, with the two codes this endpoint can answer with.
|
|
420
442
|
|
|
@@ -463,13 +485,6 @@ a compile-time error rather than a value that silently sorts incorrectly.
|
|
|
463
485
|
passthroughBehavior: "when_no_match";
|
|
464
486
|
uri: any;
|
|
465
487
|
}
|
|
466
|
-
/**
|
|
467
|
-
* Not found error response
|
|
468
|
-
*/
|
|
469
|
-
export interface NotFoundError {
|
|
470
|
-
statusCode: 404;
|
|
471
|
-
error: ApiError;
|
|
472
|
-
}
|
|
473
488
|
/**
|
|
474
489
|
* Internal server error response
|
|
475
490
|
*/
|
|
@@ -2250,178 +2265,675 @@ standing to persist.
|
|
|
2250
2265
|
updatedAt: number;
|
|
2251
2266
|
}
|
|
2252
2267
|
/**
|
|
2253
|
-
*
|
|
2268
|
+
* 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
2269
|
*/
|
|
2255
|
-
export interface
|
|
2256
|
-
|
|
2257
|
-
* Number of messages permanently deleted
|
|
2258
|
-
*/
|
|
2259
|
-
deletedCount: number;
|
|
2270
|
+
export interface CalendarListResponse {
|
|
2271
|
+
items: CalendarResponse[];
|
|
2260
2272
|
}
|
|
2261
2273
|
/**
|
|
2262
|
-
*
|
|
2274
|
+
* A calendar collection scoped to an account config (issue #15) — the CalDAV
|
|
2275
|
+
collection a client mounts, and the parent of every CalendarObject.
|
|
2276
|
+
|
|
2277
|
+
`calendarId` is derived from `(accountConfigId, urlSegment)`, so the DAV path
|
|
2278
|
+
a client bookmarks resolves to a row without a lookup table, and provisioning
|
|
2279
|
+
the same collection twice writes the same row instead of a second one.
|
|
2280
|
+
`displayName` is the mutable human overlay and is never the key.
|
|
2281
|
+
|
|
2282
|
+
`syncSequence` is the collection's monotonic change counter: every write
|
|
2283
|
+
through the calendar service's put path bumps it and stamps the new value on
|
|
2284
|
+
the object it wrote, which is what a later WebDAV-Sync `sync-token` reports
|
|
2285
|
+
and what `CalendarObject.bySyncSequence` pages by.
|
|
2263
2286
|
*/
|
|
2264
|
-
export interface
|
|
2287
|
+
export interface CalendarCollection {
|
|
2265
2288
|
/**
|
|
2266
|
-
*
|
|
2289
|
+
* Primary identifier, derived from accountConfigId + urlSegment
|
|
2267
2290
|
*/
|
|
2268
|
-
|
|
2291
|
+
calendarId: UUID;
|
|
2269
2292
|
/**
|
|
2270
|
-
*
|
|
2293
|
+
* Owning account configuration
|
|
2271
2294
|
*/
|
|
2272
|
-
|
|
2273
|
-
}
|
|
2274
|
-
/**
|
|
2275
|
-
* Aggregate sync-status response for an account
|
|
2276
|
-
*/
|
|
2277
|
-
export interface AccountSyncStatusResponse {
|
|
2295
|
+
accountConfigId: UUID;
|
|
2278
2296
|
/**
|
|
2279
|
-
*
|
|
2297
|
+
* 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
2298
|
*/
|
|
2281
|
-
|
|
2299
|
+
urlSegment: String64;
|
|
2282
2300
|
/**
|
|
2283
|
-
*
|
|
2301
|
+
* Human-readable collection name (display)
|
|
2284
2302
|
*/
|
|
2285
|
-
|
|
2303
|
+
displayName: String140;
|
|
2286
2304
|
/**
|
|
2287
|
-
*
|
|
2305
|
+
* Display color slot for this collection
|
|
2288
2306
|
*/
|
|
2289
|
-
|
|
2307
|
+
color: CalendarColor;
|
|
2290
2308
|
/**
|
|
2291
|
-
*
|
|
2309
|
+
* Which iCalendar components this collection accepts
|
|
2292
2310
|
*/
|
|
2293
|
-
|
|
2311
|
+
componentSet: CalendarComponentSet;
|
|
2294
2312
|
/**
|
|
2295
|
-
*
|
|
2313
|
+
* Where this collection came from
|
|
2296
2314
|
*/
|
|
2297
|
-
|
|
2315
|
+
source: CalendarSource;
|
|
2298
2316
|
/**
|
|
2299
|
-
*
|
|
2317
|
+
* IANA time zone this collection's floating times are read in, e.g. "Europe/Amsterdam". `""` when none is set, which reads as UTC.
|
|
2300
2318
|
*/
|
|
2301
|
-
|
|
2319
|
+
timezone: String64;
|
|
2320
|
+
/**
|
|
2321
|
+
* 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.
|
|
2322
|
+
*/
|
|
2323
|
+
syncSequence: number;
|
|
2324
|
+
createdAt: number;
|
|
2325
|
+
updatedAt: number;
|
|
2302
2326
|
}
|
|
2303
2327
|
/**
|
|
2304
|
-
*
|
|
2328
|
+
* A calendar collection as the API returns it.
|
|
2305
2329
|
*/
|
|
2306
|
-
export interface
|
|
2330
|
+
export interface CalendarResponse {
|
|
2307
2331
|
/**
|
|
2308
|
-
*
|
|
2332
|
+
* Primary identifier, derived from accountConfigId + urlSegment
|
|
2309
2333
|
*/
|
|
2310
|
-
|
|
2334
|
+
calendarId: UUID;
|
|
2311
2335
|
/**
|
|
2312
|
-
*
|
|
2336
|
+
* Owning account configuration
|
|
2313
2337
|
*/
|
|
2314
|
-
|
|
2338
|
+
accountConfigId: UUID;
|
|
2315
2339
|
/**
|
|
2316
|
-
*
|
|
2340
|
+
* 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
2341
|
*/
|
|
2318
|
-
|
|
2342
|
+
urlSegment: String64;
|
|
2319
2343
|
/**
|
|
2320
|
-
*
|
|
2344
|
+
* Human-readable collection name (display)
|
|
2321
2345
|
*/
|
|
2322
|
-
|
|
2346
|
+
displayName: String140;
|
|
2323
2347
|
/**
|
|
2324
|
-
*
|
|
2348
|
+
* Display color slot for this collection
|
|
2325
2349
|
*/
|
|
2326
|
-
|
|
2350
|
+
color: CalendarColor;
|
|
2327
2351
|
/**
|
|
2328
|
-
*
|
|
2352
|
+
* Which iCalendar components this collection accepts
|
|
2329
2353
|
*/
|
|
2330
|
-
|
|
2331
|
-
}
|
|
2332
|
-
/**
|
|
2333
|
-
* Input for creating a new email account
|
|
2334
|
-
*/
|
|
2335
|
-
export interface CreateAccountInput {
|
|
2354
|
+
componentSet: CalendarComponentSet;
|
|
2336
2355
|
/**
|
|
2337
|
-
*
|
|
2356
|
+
* Where this collection came from
|
|
2338
2357
|
*/
|
|
2339
|
-
|
|
2358
|
+
source: CalendarSource;
|
|
2340
2359
|
/**
|
|
2341
|
-
*
|
|
2360
|
+
* IANA time zone this collection's floating times are read in, e.g. "Europe/Amsterdam". `""` when none is set, which reads as UTC.
|
|
2342
2361
|
*/
|
|
2343
|
-
|
|
2362
|
+
timezone: String64;
|
|
2344
2363
|
/**
|
|
2345
|
-
*
|
|
2364
|
+
* 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.
|
|
2346
2365
|
*/
|
|
2347
|
-
|
|
2366
|
+
syncSequence: number;
|
|
2367
|
+
createdAt: number;
|
|
2368
|
+
updatedAt: number;
|
|
2369
|
+
}
|
|
2370
|
+
/**
|
|
2371
|
+
* Input for creating a calendar collection (issue #15).
|
|
2372
|
+
|
|
2373
|
+
`urlSegment` is supplied rather than derived from the display name: it is the
|
|
2374
|
+
collection's identity — `calendarId` is a hash of it — and the path a CalDAV
|
|
2375
|
+
client will later bookmark. Slugging a name would make two calendars called
|
|
2376
|
+
"Work" one row, and a rename would either move a bookmarked path or leave a
|
|
2377
|
+
segment that no longer matches anything a person recognises. The name is the
|
|
2378
|
+
mutable overlay; this is the address.
|
|
2379
|
+
*/
|
|
2380
|
+
export interface CreateCalendarInput {
|
|
2348
2381
|
/**
|
|
2349
|
-
*
|
|
2382
|
+
* Human-readable collection name (display)
|
|
2350
2383
|
*/
|
|
2351
|
-
|
|
2384
|
+
displayName: String140;
|
|
2352
2385
|
/**
|
|
2353
|
-
*
|
|
2386
|
+
* 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.
|
|
2354
2387
|
*/
|
|
2355
|
-
|
|
2388
|
+
urlSegment: String64;
|
|
2356
2389
|
/**
|
|
2357
|
-
*
|
|
2390
|
+
* Display colour slot. Absent takes the collection's own default.
|
|
2358
2391
|
*/
|
|
2359
|
-
|
|
2392
|
+
color?: CalendarColor;
|
|
2360
2393
|
/**
|
|
2361
|
-
*
|
|
2394
|
+
* IANA time zone this collection's floating times are read in. Absent reads them as UTC.
|
|
2362
2395
|
*/
|
|
2363
|
-
|
|
2396
|
+
timezone?: String64;
|
|
2397
|
+
}
|
|
2398
|
+
/**
|
|
2399
|
+
* 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.
|
|
2400
|
+
*/
|
|
2401
|
+
export interface UpdateCalendarInput {
|
|
2364
2402
|
/**
|
|
2365
|
-
*
|
|
2403
|
+
* Human-readable collection name (display)
|
|
2366
2404
|
*/
|
|
2367
|
-
|
|
2405
|
+
displayName: String140;
|
|
2368
2406
|
/**
|
|
2369
|
-
*
|
|
2407
|
+
* Display color slot for this collection
|
|
2370
2408
|
*/
|
|
2371
|
-
|
|
2409
|
+
color: CalendarColor;
|
|
2372
2410
|
/**
|
|
2373
|
-
*
|
|
2411
|
+
* IANA time zone this collection's floating times are read in, e.g. "Europe/Amsterdam". `""` when none is set, which reads as UTC.
|
|
2374
2412
|
*/
|
|
2375
|
-
|
|
2413
|
+
timezone: String64;
|
|
2414
|
+
}
|
|
2415
|
+
/**
|
|
2416
|
+
* Nothing to return. The resource, or the occurrence, is gone.
|
|
2417
|
+
*/
|
|
2418
|
+
export interface CalendarNoContent {
|
|
2419
|
+
statusCode: 204;
|
|
2420
|
+
}
|
|
2421
|
+
/**
|
|
2422
|
+
* Expanded occurrences in the requested window, in start order.
|
|
2423
|
+
|
|
2424
|
+
Includes an occurrence that began before `from` and runs into the window, up
|
|
2425
|
+
to a bounded lookback — a meeting that started last night is part of this
|
|
2426
|
+
morning. Unpaginated: the window is the bound.
|
|
2427
|
+
*/
|
|
2428
|
+
export interface CalendarEventListResponse {
|
|
2429
|
+
items: CalendarEventInstance[];
|
|
2430
|
+
}
|
|
2431
|
+
/**
|
|
2432
|
+
* One occurrence of an event, in the window the caller asked for (issue #15).
|
|
2433
|
+
|
|
2434
|
+
Instances are expanded by the server. A client never reads an RRULE and never
|
|
2435
|
+
reconstructs a series: it renders what this returns, and addresses one
|
|
2436
|
+
occurrence by `calendarObjectId` plus `recurrenceId`.
|
|
2437
|
+
*/
|
|
2438
|
+
export interface CalendarEventInstance {
|
|
2376
2439
|
/**
|
|
2377
|
-
*
|
|
2440
|
+
* Collection this occurrence belongs to
|
|
2378
2441
|
*/
|
|
2379
|
-
|
|
2442
|
+
calendarId: UUID;
|
|
2380
2443
|
/**
|
|
2381
|
-
*
|
|
2444
|
+
* Resource this occurrence was expanded from
|
|
2382
2445
|
*/
|
|
2383
|
-
|
|
2446
|
+
calendarObjectId: UUID;
|
|
2384
2447
|
/**
|
|
2385
|
-
*
|
|
2448
|
+
* 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.
|
|
2386
2449
|
*/
|
|
2387
|
-
|
|
2450
|
+
recurrenceId: String64;
|
|
2388
2451
|
/**
|
|
2389
|
-
*
|
|
2452
|
+
* The event's iCalendar UID, shared by every occurrence of the series
|
|
2390
2453
|
*/
|
|
2391
|
-
|
|
2454
|
+
icalUid: String512;
|
|
2392
2455
|
/**
|
|
2393
|
-
*
|
|
2456
|
+
* Projection of the VEVENT's SUMMARY. `""` when the event carries none.
|
|
2394
2457
|
*/
|
|
2395
|
-
|
|
2458
|
+
summary: String512;
|
|
2396
2459
|
/**
|
|
2397
|
-
*
|
|
2460
|
+
* 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.
|
|
2398
2461
|
*/
|
|
2399
|
-
|
|
2400
|
-
}
|
|
2401
|
-
/**
|
|
2402
|
-
* Input for testing connection without saving
|
|
2403
|
-
*/
|
|
2404
|
-
export interface TestConnectionInput {
|
|
2462
|
+
start: String64;
|
|
2405
2463
|
/**
|
|
2406
|
-
*
|
|
2464
|
+
* 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.
|
|
2407
2465
|
*/
|
|
2408
|
-
|
|
2466
|
+
end: String64;
|
|
2409
2467
|
/**
|
|
2410
|
-
*
|
|
2468
|
+
* Whether this occurrence is all-day
|
|
2411
2469
|
*/
|
|
2412
|
-
|
|
2470
|
+
allDay: boolean;
|
|
2413
2471
|
/**
|
|
2414
|
-
*
|
|
2472
|
+
* Projection of the occurrence's STATUS
|
|
2415
2473
|
*/
|
|
2416
|
-
|
|
2474
|
+
status: CalendarEventStatus;
|
|
2417
2475
|
/**
|
|
2418
|
-
*
|
|
2476
|
+
* Projection of the occurrence's TRANSP — whether it consumes free/busy time
|
|
2419
2477
|
*/
|
|
2420
|
-
|
|
2478
|
+
transparency: CalendarTransparency;
|
|
2421
2479
|
/**
|
|
2422
|
-
*
|
|
2480
|
+
* 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.
|
|
2423
2481
|
*/
|
|
2424
|
-
|
|
2482
|
+
zoneCertainty: ZoneCertainty;
|
|
2483
|
+
/**
|
|
2484
|
+
* 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.
|
|
2485
|
+
*/
|
|
2486
|
+
etag: String64;
|
|
2487
|
+
/**
|
|
2488
|
+
* Whether the resource this occurrence came from expands to more than one instance. A client showing the recurrence-scope prompt gates on this.
|
|
2489
|
+
*/
|
|
2490
|
+
hasRecurrence: boolean;
|
|
2491
|
+
}
|
|
2492
|
+
/**
|
|
2493
|
+
* Input for creating an event (issue #15). The server builds the VEVENT and
|
|
2494
|
+
writes it through the single calendar write path, so an event created here,
|
|
2495
|
+
one accepted from an invitation, and one PUT over CalDAV are the same bytes
|
|
2496
|
+
written the same way.
|
|
2497
|
+
|
|
2498
|
+
Times are ISO 8601 with zone offset — or a bare `YYYY-MM-DD` date when
|
|
2499
|
+
`allDay` is set. The offset pins the instant; `timeZone` names the zone the
|
|
2500
|
+
event is anchored in, which is what a recurring event needs to survive a DST
|
|
2501
|
+
transition. An offset alone cannot: a weekly 09:00 meeting written as
|
|
2502
|
+
`+02:00` becomes an 08:00 meeting in November.
|
|
2503
|
+
*/
|
|
2504
|
+
export interface CreateCalendarEventInput {
|
|
2505
|
+
/**
|
|
2506
|
+
* Collection to write the event into
|
|
2507
|
+
*/
|
|
2508
|
+
calendarId: UUID;
|
|
2509
|
+
/**
|
|
2510
|
+
* SUMMARY of the event
|
|
2511
|
+
*/
|
|
2512
|
+
summary: String512;
|
|
2513
|
+
/**
|
|
2514
|
+
* DESCRIPTION of the event. Absent writes none.
|
|
2515
|
+
*/
|
|
2516
|
+
description?: String2048;
|
|
2517
|
+
/**
|
|
2518
|
+
* LOCATION of the event. Absent writes none.
|
|
2519
|
+
*/
|
|
2520
|
+
location?: String512;
|
|
2521
|
+
/**
|
|
2522
|
+
* When the event starts: an ISO 8601 date-time with zone offset, or a `YYYY-MM-DD` date when `allDay` is set.
|
|
2523
|
+
*/
|
|
2524
|
+
start: String64;
|
|
2525
|
+
/**
|
|
2526
|
+
* When the event ends, in the same form as `start`. Exclusive for an all-day event, per RFC 5545 3.6.1.
|
|
2527
|
+
*/
|
|
2528
|
+
end: String64;
|
|
2529
|
+
/**
|
|
2530
|
+
* Whether this is an all-day event, whose times are civil dates rather than instants
|
|
2531
|
+
*/
|
|
2532
|
+
allDay?: boolean;
|
|
2533
|
+
/**
|
|
2534
|
+
* 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.
|
|
2535
|
+
*/
|
|
2536
|
+
timeZone?: String64;
|
|
2537
|
+
/**
|
|
2538
|
+
* STATUS of the event
|
|
2539
|
+
*/
|
|
2540
|
+
status?: CalendarEventStatus;
|
|
2541
|
+
/**
|
|
2542
|
+
* TRANSP of the event — whether it consumes free/busy time
|
|
2543
|
+
*/
|
|
2544
|
+
transparency?: CalendarTransparency;
|
|
2545
|
+
/**
|
|
2546
|
+
* 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.
|
|
2547
|
+
*/
|
|
2548
|
+
recurrenceRule?: String512;
|
|
2549
|
+
}
|
|
2550
|
+
/**
|
|
2551
|
+
* One calendar resource — the bytes behind one `.ics` URL (issue #15).
|
|
2552
|
+
|
|
2553
|
+
`icalData` is the canonical value. Every other column on this row is a
|
|
2554
|
+
projection of it, computed on write and never written independently: a reader
|
|
2555
|
+
that needs a fact the projection does not carry re-parses `icalData` rather
|
|
2556
|
+
than adding a column that could disagree with it.
|
|
2557
|
+
|
|
2558
|
+
The write path parses the bytes to validate and project them and then stores
|
|
2559
|
+
the bytes it was handed, never a reserialization of them. That is what keeps
|
|
2560
|
+
`etag` honest: the tag is a digest of exactly what the writer sent, so it
|
|
2561
|
+
moves only when a writer sends something different. It is not a digest that
|
|
2562
|
+
survives a round trip through the parser — ical.js refolds long lines and
|
|
2563
|
+
reorders properties, so a resource stored as its own reserialization would
|
|
2564
|
+
change tag without anyone editing it, and every client's cache would miss.
|
|
2565
|
+
|
|
2566
|
+
`calendarObjectId` is derived from `(calendarId, resourceName)`: the resource
|
|
2567
|
+
name is the last path segment of the resource's URL, so the URL a client holds
|
|
2568
|
+
resolves to a row directly, and a repeated PUT of the same resource rewrites
|
|
2569
|
+
its own row.
|
|
2570
|
+
*/
|
|
2571
|
+
export interface CalendarObject {
|
|
2572
|
+
/**
|
|
2573
|
+
* Primary identifier, derived from calendarId + resourceName
|
|
2574
|
+
*/
|
|
2575
|
+
calendarObjectId: UUID;
|
|
2576
|
+
/**
|
|
2577
|
+
* Collection this resource belongs to
|
|
2578
|
+
*/
|
|
2579
|
+
calendarId: UUID;
|
|
2580
|
+
/**
|
|
2581
|
+
* 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.
|
|
2582
|
+
*/
|
|
2583
|
+
resourceName: String256;
|
|
2584
|
+
/**
|
|
2585
|
+
* The VEVENT's UID property (RFC 5545 3.8.4.7). Identifies the event across collections and servers, which `resourceName` does not.
|
|
2586
|
+
*/
|
|
2587
|
+
icalUid: String512;
|
|
2588
|
+
/**
|
|
2589
|
+
* 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.
|
|
2590
|
+
*/
|
|
2591
|
+
icalData: string;
|
|
2592
|
+
/**
|
|
2593
|
+
* Strong entity tag over the stored `icalData` bytes, used for If-Match on a conditional write and for change detection on read.
|
|
2594
|
+
*/
|
|
2595
|
+
etag: String64;
|
|
2596
|
+
/**
|
|
2597
|
+
* 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.
|
|
2598
|
+
*/
|
|
2599
|
+
sequence: number;
|
|
2600
|
+
/**
|
|
2601
|
+
* Value the owning collection's `syncSequence` held after the write that produced this row. Pages the `bySyncSequence` read.
|
|
2602
|
+
*/
|
|
2603
|
+
syncSequence: number;
|
|
2604
|
+
/**
|
|
2605
|
+
* Projection of the VEVENT's SUMMARY (RFC 5545 3.8.1.12). `""` when the event carries none.
|
|
2606
|
+
*/
|
|
2607
|
+
summary: String512;
|
|
2608
|
+
/**
|
|
2609
|
+
* 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.
|
|
2610
|
+
*/
|
|
2611
|
+
dtStart: String64;
|
|
2612
|
+
/**
|
|
2613
|
+
* 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).
|
|
2614
|
+
*/
|
|
2615
|
+
dtEnd: String64;
|
|
2616
|
+
/**
|
|
2617
|
+
* 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.
|
|
2618
|
+
*/
|
|
2619
|
+
allDay: boolean;
|
|
2620
|
+
/**
|
|
2621
|
+
* 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.
|
|
2622
|
+
*/
|
|
2623
|
+
zoneCertainty: ZoneCertainty;
|
|
2624
|
+
/**
|
|
2625
|
+
* Projection of the master VEVENT's STATUS
|
|
2626
|
+
*/
|
|
2627
|
+
status: CalendarEventStatus;
|
|
2628
|
+
/**
|
|
2629
|
+
* Projection of the master VEVENT's TRANSP
|
|
2630
|
+
*/
|
|
2631
|
+
transparency: CalendarTransparency;
|
|
2632
|
+
/**
|
|
2633
|
+
* 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.
|
|
2634
|
+
*/
|
|
2635
|
+
hasRecurrence: boolean;
|
|
2636
|
+
/**
|
|
2637
|
+
* 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.
|
|
2638
|
+
*/
|
|
2639
|
+
expandedThrough: String64;
|
|
2640
|
+
createdAt: number;
|
|
2641
|
+
updatedAt: number;
|
|
2642
|
+
}
|
|
2643
|
+
/**
|
|
2644
|
+
* 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.
|
|
2645
|
+
*/
|
|
2646
|
+
export interface CalendarEventResponse {
|
|
2647
|
+
/**
|
|
2648
|
+
* Primary identifier, derived from calendarId + resourceName
|
|
2649
|
+
*/
|
|
2650
|
+
calendarObjectId: UUID;
|
|
2651
|
+
/**
|
|
2652
|
+
* Collection this resource belongs to
|
|
2653
|
+
*/
|
|
2654
|
+
calendarId: UUID;
|
|
2655
|
+
/**
|
|
2656
|
+
* 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.
|
|
2657
|
+
*/
|
|
2658
|
+
resourceName: String256;
|
|
2659
|
+
/**
|
|
2660
|
+
* The VEVENT's UID property (RFC 5545 3.8.4.7). Identifies the event across collections and servers, which `resourceName` does not.
|
|
2661
|
+
*/
|
|
2662
|
+
icalUid: String512;
|
|
2663
|
+
/**
|
|
2664
|
+
* 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.
|
|
2665
|
+
*/
|
|
2666
|
+
icalData: string;
|
|
2667
|
+
/**
|
|
2668
|
+
* Strong entity tag over the stored `icalData` bytes, used for If-Match on a conditional write and for change detection on read.
|
|
2669
|
+
*/
|
|
2670
|
+
etag: String64;
|
|
2671
|
+
/**
|
|
2672
|
+
* 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.
|
|
2673
|
+
*/
|
|
2674
|
+
sequence: number;
|
|
2675
|
+
/**
|
|
2676
|
+
* Value the owning collection's `syncSequence` held after the write that produced this row. Pages the `bySyncSequence` read.
|
|
2677
|
+
*/
|
|
2678
|
+
syncSequence: number;
|
|
2679
|
+
/**
|
|
2680
|
+
* Projection of the VEVENT's SUMMARY (RFC 5545 3.8.1.12). `""` when the event carries none.
|
|
2681
|
+
*/
|
|
2682
|
+
summary: String512;
|
|
2683
|
+
/**
|
|
2684
|
+
* 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.
|
|
2685
|
+
*/
|
|
2686
|
+
dtStart: String64;
|
|
2687
|
+
/**
|
|
2688
|
+
* 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).
|
|
2689
|
+
*/
|
|
2690
|
+
dtEnd: String64;
|
|
2691
|
+
/**
|
|
2692
|
+
* 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.
|
|
2693
|
+
*/
|
|
2694
|
+
allDay: boolean;
|
|
2695
|
+
/**
|
|
2696
|
+
* 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.
|
|
2697
|
+
*/
|
|
2698
|
+
zoneCertainty: ZoneCertainty;
|
|
2699
|
+
/**
|
|
2700
|
+
* Projection of the master VEVENT's STATUS
|
|
2701
|
+
*/
|
|
2702
|
+
status: CalendarEventStatus;
|
|
2703
|
+
/**
|
|
2704
|
+
* Projection of the master VEVENT's TRANSP
|
|
2705
|
+
*/
|
|
2706
|
+
transparency: CalendarTransparency;
|
|
2707
|
+
/**
|
|
2708
|
+
* 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.
|
|
2709
|
+
*/
|
|
2710
|
+
hasRecurrence: boolean;
|
|
2711
|
+
/**
|
|
2712
|
+
* 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.
|
|
2713
|
+
*/
|
|
2714
|
+
expandedThrough: String64;
|
|
2715
|
+
createdAt: number;
|
|
2716
|
+
updatedAt: number;
|
|
2717
|
+
}
|
|
2718
|
+
/**
|
|
2719
|
+
* Input for updating an event. Every field is optional and absence means
|
|
2720
|
+
untouched — a patch that carries only `summary` renames the event and moves
|
|
2721
|
+
nothing.
|
|
2722
|
+
|
|
2723
|
+
What the patch applies to is the `scope` parameter's business: `All` rewrites
|
|
2724
|
+
the master, `This` writes a RECURRENCE-ID override for one occurrence, and
|
|
2725
|
+
`Following` splits the series at one occurrence and applies the patch to the
|
|
2726
|
+
remainder.
|
|
2727
|
+
*/
|
|
2728
|
+
export interface UpdateCalendarEventInput {
|
|
2729
|
+
summary?: String512;
|
|
2730
|
+
description?: String2048;
|
|
2731
|
+
location?: String512;
|
|
2732
|
+
start?: String64;
|
|
2733
|
+
end?: String64;
|
|
2734
|
+
allDay?: boolean;
|
|
2735
|
+
timeZone?: String64;
|
|
2736
|
+
status?: CalendarEventStatus;
|
|
2737
|
+
transparency?: CalendarTransparency;
|
|
2738
|
+
/**
|
|
2739
|
+
* 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.
|
|
2740
|
+
*/
|
|
2741
|
+
recurrenceRule?: String512;
|
|
2742
|
+
}
|
|
2743
|
+
/**
|
|
2744
|
+
* 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.
|
|
2745
|
+
*/
|
|
2746
|
+
export interface CalendarFreeBusyResponse {
|
|
2747
|
+
items: CalendarFreeBusySpan[];
|
|
2748
|
+
}
|
|
2749
|
+
/**
|
|
2750
|
+
* One stretch of time the caller is busy in. Merged across every calendar they
|
|
2751
|
+
hold, so two overlapping meetings in two calendars are one span and a caller
|
|
2752
|
+
asking "is this slot free" never has to do the merging itself.
|
|
2753
|
+
*/
|
|
2754
|
+
export interface CalendarFreeBusySpan {
|
|
2755
|
+
/**
|
|
2756
|
+
* 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.
|
|
2757
|
+
*/
|
|
2758
|
+
start: String64;
|
|
2759
|
+
/**
|
|
2760
|
+
* When the busy stretch ends, as an ISO 8601 date-time with a `+00:00` offset
|
|
2761
|
+
*/
|
|
2762
|
+
end: String64;
|
|
2763
|
+
}
|
|
2764
|
+
/**
|
|
2765
|
+
* Response from emptying trash
|
|
2766
|
+
*/
|
|
2767
|
+
export interface EmptyTrashResponse {
|
|
2768
|
+
/**
|
|
2769
|
+
* Number of messages permanently deleted
|
|
2770
|
+
*/
|
|
2771
|
+
deletedCount: number;
|
|
2772
|
+
}
|
|
2773
|
+
/**
|
|
2774
|
+
* Sync trigger response
|
|
2775
|
+
*/
|
|
2776
|
+
export interface SyncTriggerResponse {
|
|
2777
|
+
/**
|
|
2778
|
+
* Whether sync was triggered successfully
|
|
2779
|
+
*/
|
|
2780
|
+
triggered: boolean;
|
|
2781
|
+
/**
|
|
2782
|
+
* Message about sync status
|
|
2783
|
+
*/
|
|
2784
|
+
message: string;
|
|
2785
|
+
}
|
|
2786
|
+
/**
|
|
2787
|
+
* Aggregate sync-status response for an account
|
|
2788
|
+
*/
|
|
2789
|
+
export interface AccountSyncStatusResponse {
|
|
2790
|
+
/**
|
|
2791
|
+
* Account identifier
|
|
2792
|
+
*/
|
|
2793
|
+
accountId: UUID;
|
|
2794
|
+
/**
|
|
2795
|
+
* Current sync phase for the account
|
|
2796
|
+
*/
|
|
2797
|
+
syncPhase?: SyncPhase;
|
|
2798
|
+
/**
|
|
2799
|
+
* Total number of mailboxes discovered
|
|
2800
|
+
*/
|
|
2801
|
+
mailboxCountTotal?: number;
|
|
2802
|
+
/**
|
|
2803
|
+
* Number of mailboxes whose initial message sync has completed
|
|
2804
|
+
*/
|
|
2805
|
+
mailboxCountSynced?: number;
|
|
2806
|
+
/**
|
|
2807
|
+
* 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.
|
|
2808
|
+
*/
|
|
2809
|
+
lastSyncAt?: number;
|
|
2810
|
+
/**
|
|
2811
|
+
* Per-mailbox sync progress
|
|
2812
|
+
*/
|
|
2813
|
+
mailboxes: MailboxSyncProgress[];
|
|
2814
|
+
}
|
|
2815
|
+
/**
|
|
2816
|
+
* Per-mailbox progress entry in the sync-status response
|
|
2817
|
+
*/
|
|
2818
|
+
export interface MailboxSyncProgress {
|
|
2819
|
+
/**
|
|
2820
|
+
* Mailbox identifier
|
|
2821
|
+
*/
|
|
2822
|
+
mailboxId: UUID;
|
|
2823
|
+
/**
|
|
2824
|
+
* Full IMAP path (e.g. INBOX, Sent)
|
|
2825
|
+
*/
|
|
2826
|
+
fullPath: string;
|
|
2827
|
+
/**
|
|
2828
|
+
* Sync phase for this mailbox: pending (never synced), syncing (in-progress), or complete
|
|
2829
|
+
*/
|
|
2830
|
+
phase: string;
|
|
2831
|
+
/**
|
|
2832
|
+
* Total messages in mailbox (refreshed each batch)
|
|
2833
|
+
*/
|
|
2834
|
+
messagesTotal: number;
|
|
2835
|
+
/**
|
|
2836
|
+
* Approximate number of messages synced. Computed as highWaterMarkUid − lastSyncUid (UID-range approximation; UIDs are sparse so this may undercount). Clamped to messagesTotal.
|
|
2837
|
+
*/
|
|
2838
|
+
messagesSynced: number;
|
|
2839
|
+
/**
|
|
2840
|
+
* Timestamp of the last successful message sync for this mailbox
|
|
2841
|
+
*/
|
|
2842
|
+
lastSyncedAt?: number;
|
|
2843
|
+
}
|
|
2844
|
+
/**
|
|
2845
|
+
* Input for creating a new email account
|
|
2846
|
+
*/
|
|
2847
|
+
export interface CreateAccountInput {
|
|
2848
|
+
/**
|
|
2849
|
+
* Primary email address for this account
|
|
2850
|
+
*/
|
|
2851
|
+
email: string;
|
|
2852
|
+
/**
|
|
2853
|
+
* Display name (optional)
|
|
2854
|
+
*/
|
|
2855
|
+
displayName?: string;
|
|
2856
|
+
/**
|
|
2857
|
+
* IMAP login username (defaults to email if not provided)
|
|
2858
|
+
*/
|
|
2859
|
+
username?: string;
|
|
2860
|
+
/**
|
|
2861
|
+
* Authentication mechanism for this account. Defaults to `password`. Pass `oauthMicrosoft` only via the OAuth connect flow (POST /accounts/oauth/microsoft/start).
|
|
2862
|
+
*/
|
|
2863
|
+
authType?: AccountAuthType;
|
|
2864
|
+
/**
|
|
2865
|
+
* Account password (will be encrypted). Required for password accounts; omit for OAuth accounts.
|
|
2866
|
+
*/
|
|
2867
|
+
password?: string;
|
|
2868
|
+
/**
|
|
2869
|
+
* IMAP server hostname
|
|
2870
|
+
*/
|
|
2871
|
+
imapHost: string;
|
|
2872
|
+
/**
|
|
2873
|
+
* IMAP server port
|
|
2874
|
+
*/
|
|
2875
|
+
imapPort: number;
|
|
2876
|
+
/**
|
|
2877
|
+
* Use TLS encryption
|
|
2878
|
+
*/
|
|
2879
|
+
imapTls: boolean;
|
|
2880
|
+
/**
|
|
2881
|
+
* Use STARTTLS upgrade
|
|
2882
|
+
*/
|
|
2883
|
+
imapStartTls: boolean;
|
|
2884
|
+
/**
|
|
2885
|
+
* Whether to enable SMTP sending for this account. When omitted, the server enables sending if an SMTP host is supplied.
|
|
2886
|
+
*/
|
|
2887
|
+
smtpEnabled?: boolean;
|
|
2888
|
+
/**
|
|
2889
|
+
* SMTP server hostname (optional)
|
|
2890
|
+
*/
|
|
2891
|
+
smtpHost?: string;
|
|
2892
|
+
/**
|
|
2893
|
+
* SMTP server port
|
|
2894
|
+
*/
|
|
2895
|
+
smtpPort?: number;
|
|
2896
|
+
/**
|
|
2897
|
+
* Use TLS encryption for SMTP
|
|
2898
|
+
*/
|
|
2899
|
+
smtpTls?: boolean;
|
|
2900
|
+
/**
|
|
2901
|
+
* Use STARTTLS upgrade for SMTP
|
|
2902
|
+
*/
|
|
2903
|
+
smtpStartTls?: boolean;
|
|
2904
|
+
/**
|
|
2905
|
+
* SMTP username if different from IMAP
|
|
2906
|
+
*/
|
|
2907
|
+
smtpUsername?: string;
|
|
2908
|
+
/**
|
|
2909
|
+
* SMTP password if different from IMAP
|
|
2910
|
+
*/
|
|
2911
|
+
smtpPassword?: string;
|
|
2912
|
+
}
|
|
2913
|
+
/**
|
|
2914
|
+
* Input for testing connection without saving
|
|
2915
|
+
*/
|
|
2916
|
+
export interface TestConnectionInput {
|
|
2917
|
+
/**
|
|
2918
|
+
* Account ID (optional, used to retrieve stored password if password is empty)
|
|
2919
|
+
*/
|
|
2920
|
+
accountId?: UUID;
|
|
2921
|
+
/**
|
|
2922
|
+
* IMAP login username
|
|
2923
|
+
*/
|
|
2924
|
+
username: string;
|
|
2925
|
+
/**
|
|
2926
|
+
* Account password (optional if accountId provided - uses stored password)
|
|
2927
|
+
*/
|
|
2928
|
+
password?: string;
|
|
2929
|
+
/**
|
|
2930
|
+
* IMAP server hostname
|
|
2931
|
+
*/
|
|
2932
|
+
imapHost: string;
|
|
2933
|
+
/**
|
|
2934
|
+
* IMAP server port
|
|
2935
|
+
*/
|
|
2936
|
+
imapPort: number;
|
|
2425
2937
|
/**
|
|
2426
2938
|
* Use TLS encryption
|
|
2427
2939
|
*/
|
|
@@ -4906,195 +5418,48 @@ domain already uses"; it does not close it.
|
|
|
4906
5418
|
*/
|
|
4907
5419
|
checksumSha256: string;
|
|
4908
5420
|
/**
|
|
4909
|
-
* Additional compression applied to stored content
|
|
4910
|
-
*/
|
|
4911
|
-
contentEncoding: ContentEncoding;
|
|
4912
|
-
/**
|
|
4913
|
-
* True if content-addressed storage is used for deduplication
|
|
4914
|
-
*/
|
|
4915
|
-
isDeduped: boolean;
|
|
4916
|
-
/**
|
|
4917
|
-
* Hash for deduplication lookups (content-addressable key)
|
|
4918
|
-
*/
|
|
4919
|
-
dedupHash?: string;
|
|
4920
|
-
/**
|
|
4921
|
-
* When the content was stored
|
|
4922
|
-
*/
|
|
4923
|
-
storedAt: number;
|
|
4924
|
-
createdAt: number;
|
|
4925
|
-
updatedAt: number;
|
|
4926
|
-
}
|
|
4927
|
-
/**
|
|
4928
|
-
* Inline storage for small body parts (typically < 64KB). Avoids external storage overhead.
|
|
4929
|
-
*/
|
|
4930
|
-
export interface BodyPartContent {
|
|
4931
|
-
/**
|
|
4932
|
-
* Primary identifier
|
|
4933
|
-
*/
|
|
4934
|
-
bodyPartContentId: UUID;
|
|
4935
|
-
/**
|
|
4936
|
-
* Reference to parent message
|
|
4937
|
-
*/
|
|
4938
|
-
messageId: UUID;
|
|
4939
|
-
/**
|
|
4940
|
-
* Reference to parent body part
|
|
4941
|
-
*/
|
|
4942
|
-
bodyPartId: UUID;
|
|
4943
|
-
/**
|
|
4944
|
-
* The actual content (for small inline content only)
|
|
4945
|
-
*/
|
|
4946
|
-
content: string;
|
|
4947
|
-
/**
|
|
4948
|
-
* Content length in bytes
|
|
4949
|
-
*/
|
|
4950
|
-
contentLength: number;
|
|
4951
|
-
createdAt: number;
|
|
4952
|
-
updatedAt: number;
|
|
4953
|
-
}
|
|
4954
|
-
/**
|
|
4955
|
-
* A calendar collection scoped to an account config (issue #15) — the CalDAV
|
|
4956
|
-
collection a client mounts, and the parent of every CalendarObject.
|
|
4957
|
-
|
|
4958
|
-
`calendarId` is derived from `(accountConfigId, urlSegment)`, so the DAV path
|
|
4959
|
-
a client bookmarks resolves to a row without a lookup table, and provisioning
|
|
4960
|
-
the same collection twice writes the same row instead of a second one.
|
|
4961
|
-
`displayName` is the mutable human overlay and is never the key.
|
|
4962
|
-
|
|
4963
|
-
`syncSequence` is the collection's monotonic change counter: every write
|
|
4964
|
-
through the calendar service's put path bumps it and stamps the new value on
|
|
4965
|
-
the object it wrote, which is what a later WebDAV-Sync `sync-token` reports
|
|
4966
|
-
and what `CalendarObject.bySyncSequence` pages by.
|
|
4967
|
-
*/
|
|
4968
|
-
export interface CalendarCollection {
|
|
4969
|
-
/**
|
|
4970
|
-
* Primary identifier, derived from accountConfigId + urlSegment
|
|
4971
|
-
*/
|
|
4972
|
-
calendarId: UUID;
|
|
4973
|
-
/**
|
|
4974
|
-
* Owning account configuration
|
|
4975
|
-
*/
|
|
4976
|
-
accountConfigId: UUID;
|
|
4977
|
-
/**
|
|
4978
|
-
* Path segment this collection is addressed by, unique within the account config. Stored case-folded, the same folding `calendarId` is derived from — a DAV path is matched case-insensitively, and storing the writer's casing would let a lookup by segment and a lookup by derived id disagree about one path. The default collection provisioned on first use holds "default".
|
|
4979
|
-
*/
|
|
4980
|
-
urlSegment: String64;
|
|
4981
|
-
/**
|
|
4982
|
-
* Human-readable collection name (display)
|
|
4983
|
-
*/
|
|
4984
|
-
displayName: String140;
|
|
4985
|
-
/**
|
|
4986
|
-
* Display color slot for this collection
|
|
4987
|
-
*/
|
|
4988
|
-
color: CalendarColor;
|
|
4989
|
-
/**
|
|
4990
|
-
* Which iCalendar components this collection accepts
|
|
4991
|
-
*/
|
|
4992
|
-
componentSet: CalendarComponentSet;
|
|
4993
|
-
/**
|
|
4994
|
-
* Where this collection came from
|
|
4995
|
-
*/
|
|
4996
|
-
source: CalendarSource;
|
|
4997
|
-
/**
|
|
4998
|
-
* IANA time zone this collection's floating times are read in, e.g. "Europe/Amsterdam". `""` when none is set, which reads as UTC.
|
|
4999
|
-
*/
|
|
5000
|
-
timezone: String64;
|
|
5001
|
-
/**
|
|
5002
|
-
* Monotonic change counter for this collection. Bumped by every write to one of its objects; the value stamped on `CalendarObject.syncSequence` is the value this counter held after that write.
|
|
5003
|
-
*/
|
|
5004
|
-
syncSequence: number;
|
|
5005
|
-
createdAt: number;
|
|
5006
|
-
updatedAt: number;
|
|
5007
|
-
}
|
|
5008
|
-
/**
|
|
5009
|
-
* One calendar resource — the bytes behind one `.ics` URL (issue #15).
|
|
5010
|
-
|
|
5011
|
-
`icalData` is the canonical value. Every other column on this row is a
|
|
5012
|
-
projection of it, computed on write and never written independently: a reader
|
|
5013
|
-
that needs a fact the projection does not carry re-parses `icalData` rather
|
|
5014
|
-
than adding a column that could disagree with it.
|
|
5015
|
-
|
|
5016
|
-
The write path parses the bytes to validate and project them and then stores
|
|
5017
|
-
the bytes it was handed, never a reserialization of them. That is what keeps
|
|
5018
|
-
`etag` honest: the tag is a digest of exactly what the writer sent, so it
|
|
5019
|
-
moves only when a writer sends something different. It is not a digest that
|
|
5020
|
-
survives a round trip through the parser — ical.js refolds long lines and
|
|
5021
|
-
reorders properties, so a resource stored as its own reserialization would
|
|
5022
|
-
change tag without anyone editing it, and every client's cache would miss.
|
|
5023
|
-
|
|
5024
|
-
`calendarObjectId` is derived from `(calendarId, resourceName)`: the resource
|
|
5025
|
-
name is the last path segment of the resource's URL, so the URL a client holds
|
|
5026
|
-
resolves to a row directly, and a repeated PUT of the same resource rewrites
|
|
5027
|
-
its own row.
|
|
5028
|
-
*/
|
|
5029
|
-
export interface CalendarObject {
|
|
5030
|
-
/**
|
|
5031
|
-
* Primary identifier, derived from calendarId + resourceName
|
|
5032
|
-
*/
|
|
5033
|
-
calendarObjectId: UUID;
|
|
5034
|
-
/**
|
|
5035
|
-
* Collection this resource belongs to
|
|
5036
|
-
*/
|
|
5037
|
-
calendarId: UUID;
|
|
5038
|
-
/**
|
|
5039
|
-
* Last path segment of the resource's URL, e.g. "a1b2c3.ics". Unique within the collection and chosen by whoever wrote the resource, never derived from its contents — a client is free to rename a resource without changing the event it holds.
|
|
5040
|
-
*/
|
|
5041
|
-
resourceName: String256;
|
|
5042
|
-
/**
|
|
5043
|
-
* The VEVENT's UID property (RFC 5545 3.8.4.7). Identifies the event across collections and servers, which `resourceName` does not.
|
|
5044
|
-
*/
|
|
5045
|
-
icalUid: String512;
|
|
5046
|
-
/**
|
|
5047
|
-
* The complete VCALENDAR text, byte-for-byte as stored — CANONICAL. Line endings are CRLF and are never normalized; unknown properties and components are preserved verbatim.
|
|
5048
|
-
*/
|
|
5049
|
-
icalData: string;
|
|
5050
|
-
/**
|
|
5051
|
-
* Strong entity tag over the stored `icalData` bytes, used for If-Match on a conditional write and for change detection on read.
|
|
5052
|
-
*/
|
|
5053
|
-
etag: String64;
|
|
5054
|
-
/**
|
|
5055
|
-
* The VEVENT's SEQUENCE property (RFC 5545 3.8.7.4) — the organizer's own revision counter, carried for scheduling comparisons. `0` when the event declares none, which is the RFC default.
|
|
5056
|
-
*/
|
|
5057
|
-
sequence: number;
|
|
5058
|
-
/**
|
|
5059
|
-
* Value the owning collection's `syncSequence` held after the write that produced this row. Pages the `bySyncSequence` read.
|
|
5060
|
-
*/
|
|
5061
|
-
syncSequence: number;
|
|
5062
|
-
/**
|
|
5063
|
-
* Projection of the VEVENT's SUMMARY (RFC 5545 3.8.1.12). `""` when the event carries none.
|
|
5421
|
+
* Additional compression applied to stored content
|
|
5064
5422
|
*/
|
|
5065
|
-
|
|
5423
|
+
contentEncoding: ContentEncoding;
|
|
5066
5424
|
/**
|
|
5067
|
-
*
|
|
5425
|
+
* True if content-addressed storage is used for deduplication
|
|
5068
5426
|
*/
|
|
5069
|
-
|
|
5427
|
+
isDeduped: boolean;
|
|
5070
5428
|
/**
|
|
5071
|
-
*
|
|
5429
|
+
* Hash for deduplication lookups (content-addressable key)
|
|
5072
5430
|
*/
|
|
5073
|
-
|
|
5431
|
+
dedupHash?: string;
|
|
5074
5432
|
/**
|
|
5075
|
-
*
|
|
5433
|
+
* When the content was stored
|
|
5076
5434
|
*/
|
|
5077
|
-
|
|
5435
|
+
storedAt: number;
|
|
5436
|
+
createdAt: number;
|
|
5437
|
+
updatedAt: number;
|
|
5438
|
+
}
|
|
5439
|
+
/**
|
|
5440
|
+
* Inline storage for small body parts (typically < 64KB). Avoids external storage overhead.
|
|
5441
|
+
*/
|
|
5442
|
+
export interface BodyPartContent {
|
|
5078
5443
|
/**
|
|
5079
|
-
*
|
|
5444
|
+
* Primary identifier
|
|
5080
5445
|
*/
|
|
5081
|
-
|
|
5446
|
+
bodyPartContentId: UUID;
|
|
5082
5447
|
/**
|
|
5083
|
-
*
|
|
5448
|
+
* Reference to parent message
|
|
5084
5449
|
*/
|
|
5085
|
-
|
|
5450
|
+
messageId: UUID;
|
|
5086
5451
|
/**
|
|
5087
|
-
*
|
|
5452
|
+
* Reference to parent body part
|
|
5088
5453
|
*/
|
|
5089
|
-
|
|
5454
|
+
bodyPartId: UUID;
|
|
5090
5455
|
/**
|
|
5091
|
-
*
|
|
5456
|
+
* The actual content (for small inline content only)
|
|
5092
5457
|
*/
|
|
5093
|
-
|
|
5458
|
+
content: string;
|
|
5094
5459
|
/**
|
|
5095
|
-
*
|
|
5460
|
+
* Content length in bytes
|
|
5096
5461
|
*/
|
|
5097
|
-
|
|
5462
|
+
contentLength: number;
|
|
5098
5463
|
createdAt: number;
|
|
5099
5464
|
updatedAt: number;
|
|
5100
5465
|
}
|
|
@@ -5144,6 +5509,18 @@ occurrences from every zone but its own.
|
|
|
5144
5509
|
* 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
5510
|
*/
|
|
5146
5511
|
allDay: boolean;
|
|
5512
|
+
/**
|
|
5513
|
+
* 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.
|
|
5514
|
+
*/
|
|
5515
|
+
summary: String512;
|
|
5516
|
+
/**
|
|
5517
|
+
* 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.
|
|
5518
|
+
*/
|
|
5519
|
+
status: CalendarEventStatus;
|
|
5520
|
+
/**
|
|
5521
|
+
* Projection of this occurrence's own TRANSP — whether it consumes free/busy time.
|
|
5522
|
+
*/
|
|
5523
|
+
transparency: CalendarTransparency;
|
|
5147
5524
|
createdAt: number;
|
|
5148
5525
|
updatedAt: number;
|
|
5149
5526
|
}
|
|
@@ -5480,6 +5857,130 @@ declare namespace Paths {
|
|
|
5480
5857
|
export type $200 = void;
|
|
5481
5858
|
}
|
|
5482
5859
|
}
|
|
5860
|
+
namespace ListCalendars {
|
|
5861
|
+
namespace Responses {
|
|
5862
|
+
export type $200 = void;
|
|
5863
|
+
}
|
|
5864
|
+
}
|
|
5865
|
+
namespace CreateCalendar {
|
|
5866
|
+
export type RequestBody = Components.Schemas.CreateCalendarInput;
|
|
5867
|
+
namespace Responses {
|
|
5868
|
+
export type $200 = void;
|
|
5869
|
+
export type $400 = void;
|
|
5870
|
+
}
|
|
5871
|
+
}
|
|
5872
|
+
namespace GetCalendar {
|
|
5873
|
+
export interface PathParameters {
|
|
5874
|
+
calendarId: Components.Schemas.UUID;
|
|
5875
|
+
}
|
|
5876
|
+
namespace Responses {
|
|
5877
|
+
export type $200 = void;
|
|
5878
|
+
export type $404 = void;
|
|
5879
|
+
}
|
|
5880
|
+
}
|
|
5881
|
+
namespace UpdateCalendar {
|
|
5882
|
+
export interface PathParameters {
|
|
5883
|
+
calendarId: Components.Schemas.UUID;
|
|
5884
|
+
}
|
|
5885
|
+
export type RequestBody = Components.Schemas.UpdateCalendarInput;
|
|
5886
|
+
namespace Responses {
|
|
5887
|
+
export type $200 = void;
|
|
5888
|
+
export type $400 = void;
|
|
5889
|
+
export type $404 = void;
|
|
5890
|
+
}
|
|
5891
|
+
}
|
|
5892
|
+
namespace DeleteCalendar {
|
|
5893
|
+
export interface PathParameters {
|
|
5894
|
+
calendarId: Components.Schemas.UUID;
|
|
5895
|
+
}
|
|
5896
|
+
namespace Responses {
|
|
5897
|
+
export type $204 = void;
|
|
5898
|
+
export type $400 = void;
|
|
5899
|
+
export type $404 = void;
|
|
5900
|
+
}
|
|
5901
|
+
}
|
|
5902
|
+
namespace ListCalendarEvents {
|
|
5903
|
+
export interface QueryParameters {
|
|
5904
|
+
from: string;
|
|
5905
|
+
to: string;
|
|
5906
|
+
calendarId?: Components.Schemas.UUID[];
|
|
5907
|
+
}
|
|
5908
|
+
namespace Responses {
|
|
5909
|
+
export type $200 = void;
|
|
5910
|
+
export type $400 = void;
|
|
5911
|
+
export type $404 = void;
|
|
5912
|
+
}
|
|
5913
|
+
}
|
|
5914
|
+
namespace CreateCalendarEvent {
|
|
5915
|
+
export type RequestBody = Components.Schemas.CreateCalendarEventInput;
|
|
5916
|
+
namespace Responses {
|
|
5917
|
+
export type $200 = void;
|
|
5918
|
+
export type $400 = void;
|
|
5919
|
+
export type $404 = void;
|
|
5920
|
+
}
|
|
5921
|
+
}
|
|
5922
|
+
namespace GetCalendarEvent {
|
|
5923
|
+
export interface PathParameters {
|
|
5924
|
+
calendarObjectId: Components.Schemas.UUID;
|
|
5925
|
+
}
|
|
5926
|
+
export interface QueryParameters {
|
|
5927
|
+
calendarId: Components.Schemas.UUID;
|
|
5928
|
+
}
|
|
5929
|
+
namespace Responses {
|
|
5930
|
+
export type $200 = void;
|
|
5931
|
+
export type $400 = void;
|
|
5932
|
+
export type $404 = void;
|
|
5933
|
+
}
|
|
5934
|
+
}
|
|
5935
|
+
namespace UpdateCalendarEvent {
|
|
5936
|
+
export interface PathParameters {
|
|
5937
|
+
calendarObjectId: Components.Schemas.UUID;
|
|
5938
|
+
}
|
|
5939
|
+
export interface QueryParameters {
|
|
5940
|
+
calendarId: Components.Schemas.UUID;
|
|
5941
|
+
scope?: Components.Schemas.RecurrenceScope;
|
|
5942
|
+
recurrenceId?: string;
|
|
5943
|
+
}
|
|
5944
|
+
export interface HeaderParameters {
|
|
5945
|
+
ifMatch?: string;
|
|
5946
|
+
}
|
|
5947
|
+
export type RequestBody = Components.Schemas.UpdateCalendarEventInput;
|
|
5948
|
+
namespace Responses {
|
|
5949
|
+
export type $200 = void;
|
|
5950
|
+
export type $400 = void;
|
|
5951
|
+
export type $404 = void;
|
|
5952
|
+
export type $412 = void;
|
|
5953
|
+
}
|
|
5954
|
+
}
|
|
5955
|
+
namespace DeleteCalendarEvent {
|
|
5956
|
+
export interface PathParameters {
|
|
5957
|
+
calendarObjectId: Components.Schemas.UUID;
|
|
5958
|
+
}
|
|
5959
|
+
export interface QueryParameters {
|
|
5960
|
+
calendarId: Components.Schemas.UUID;
|
|
5961
|
+
scope?: Components.Schemas.RecurrenceScope;
|
|
5962
|
+
recurrenceId?: string;
|
|
5963
|
+
}
|
|
5964
|
+
export interface HeaderParameters {
|
|
5965
|
+
ifMatch?: string;
|
|
5966
|
+
}
|
|
5967
|
+
namespace Responses {
|
|
5968
|
+
export type $204 = void;
|
|
5969
|
+
export type $400 = void;
|
|
5970
|
+
export type $404 = void;
|
|
5971
|
+
export type $412 = void;
|
|
5972
|
+
}
|
|
5973
|
+
}
|
|
5974
|
+
namespace ListCalendarFreeBusy {
|
|
5975
|
+
export interface QueryParameters {
|
|
5976
|
+
from: string;
|
|
5977
|
+
to: string;
|
|
5978
|
+
}
|
|
5979
|
+
namespace Responses {
|
|
5980
|
+
export type $200 = void;
|
|
5981
|
+
export type $400 = void;
|
|
5982
|
+
}
|
|
5983
|
+
}
|
|
5483
5984
|
namespace EmptyTrash {
|
|
5484
5985
|
export interface PathParameters {
|
|
5485
5986
|
accountId: Components.Schemas.UUID;
|
|
@@ -6013,6 +6514,122 @@ export interface OperationMethods {
|
|
|
6013
6514
|
data?: any,
|
|
6014
6515
|
config?: AxiosRequestConfig
|
|
6015
6516
|
): OperationResponse<Paths.GetOrganizeJob.Responses.$200>;
|
|
6517
|
+
/**
|
|
6518
|
+
* 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.
|
|
6519
|
+
*/
|
|
6520
|
+
'listCalendars'(
|
|
6521
|
+
parameters?: Parameters<UnknownParamsObject> | null,
|
|
6522
|
+
data?: any,
|
|
6523
|
+
config?: AxiosRequestConfig
|
|
6524
|
+
): OperationResponse<Paths.ListCalendars.Responses.$200>;
|
|
6525
|
+
/**
|
|
6526
|
+
* 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.
|
|
6527
|
+
*/
|
|
6528
|
+
'createCalendar'(
|
|
6529
|
+
parameters?: Parameters<UnknownParamsObject> | null,
|
|
6530
|
+
data?: Paths.CreateCalendar.RequestBody,
|
|
6531
|
+
config?: AxiosRequestConfig
|
|
6532
|
+
): OperationResponse<Paths.CreateCalendar.Responses.$200>;
|
|
6533
|
+
/**
|
|
6534
|
+
* getCalendar
|
|
6535
|
+
*/
|
|
6536
|
+
'getCalendar'(
|
|
6537
|
+
parameters?: Parameters<Paths.GetCalendar.PathParameters> | null,
|
|
6538
|
+
data?: any,
|
|
6539
|
+
config?: AxiosRequestConfig
|
|
6540
|
+
): OperationResponse<Paths.GetCalendar.Responses.$200>;
|
|
6541
|
+
/**
|
|
6542
|
+
* updateCalendar
|
|
6543
|
+
*/
|
|
6544
|
+
'updateCalendar'(
|
|
6545
|
+
parameters?: Parameters<Paths.UpdateCalendar.PathParameters> | null,
|
|
6546
|
+
data?: Paths.UpdateCalendar.RequestBody,
|
|
6547
|
+
config?: AxiosRequestConfig
|
|
6548
|
+
): OperationResponse<Paths.UpdateCalendar.Responses.$200>;
|
|
6549
|
+
/**
|
|
6550
|
+
* 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.
|
|
6551
|
+
*/
|
|
6552
|
+
'deleteCalendar'(
|
|
6553
|
+
parameters?: Parameters<Paths.DeleteCalendar.PathParameters> | null,
|
|
6554
|
+
data?: any,
|
|
6555
|
+
config?: AxiosRequestConfig
|
|
6556
|
+
): OperationResponse<Paths.DeleteCalendar.Responses.$204>;
|
|
6557
|
+
/**
|
|
6558
|
+
* listCalendarEvents - Expanded event occurrences in a window. The server does the recurrence
|
|
6559
|
+
expansion and the client renders instances — no RRULE is ever evaluated
|
|
6560
|
+
in a browser, so a week grid and a day strip agree with each other and
|
|
6561
|
+
with what a native client will later read over CalDAV.
|
|
6562
|
+
|
|
6563
|
+
Occurrences are served from the stored occurrence index. A series whose
|
|
6564
|
+
index stops before `to` — an open-ended event older than the expansion
|
|
6565
|
+
horizon — is expanded live for this window instead, and nothing
|
|
6566
|
+
unbounded is written to serve a read.
|
|
6567
|
+
|
|
6568
|
+
Refused with 400 when `from` and `to` are not ISO 8601 date-times, when
|
|
6569
|
+
`to` is not after `from`, or when the window is wider than a year.
|
|
6570
|
+
*/
|
|
6571
|
+
'listCalendarEvents'(
|
|
6572
|
+
parameters?: Parameters<Paths.ListCalendarEvents.QueryParameters> | null,
|
|
6573
|
+
data?: any,
|
|
6574
|
+
config?: AxiosRequestConfig
|
|
6575
|
+
): OperationResponse<Paths.ListCalendarEvents.Responses.$200>;
|
|
6576
|
+
/**
|
|
6577
|
+
* 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.
|
|
6578
|
+
*/
|
|
6579
|
+
'createCalendarEvent'(
|
|
6580
|
+
parameters?: Parameters<UnknownParamsObject> | null,
|
|
6581
|
+
data?: Paths.CreateCalendarEvent.RequestBody,
|
|
6582
|
+
config?: AxiosRequestConfig
|
|
6583
|
+
): OperationResponse<Paths.CreateCalendarEvent.Responses.$200>;
|
|
6584
|
+
/**
|
|
6585
|
+
* getCalendarEvent - Get one stored event, including its canonical iCalendar text and its etag.
|
|
6586
|
+
*/
|
|
6587
|
+
'getCalendarEvent'(
|
|
6588
|
+
parameters?: Parameters<Paths.GetCalendarEvent.PathParameters & Paths.GetCalendarEvent.QueryParameters> | null,
|
|
6589
|
+
data?: any,
|
|
6590
|
+
config?: AxiosRequestConfig
|
|
6591
|
+
): OperationResponse<Paths.GetCalendarEvent.Responses.$200>;
|
|
6592
|
+
/**
|
|
6593
|
+
* updateCalendarEvent - Update an event. `scope` says what the caller meant by editing one
|
|
6594
|
+
drawing of a series: `All` rewrites the master, `This` writes a
|
|
6595
|
+
RECURRENCE-ID override for the named occurrence, and `Following` splits
|
|
6596
|
+
the series — the master's rule is truncated and a second resource carries
|
|
6597
|
+
the remainder under a UID of its own.
|
|
6598
|
+
|
|
6599
|
+
`recurrenceId` is required for `This` and `Following` and is refused with
|
|
6600
|
+
400 otherwise, along with a scope other than `All` on an event that does
|
|
6601
|
+
not recur, and a `recurrenceId` naming no occurrence of the series.
|
|
6602
|
+
|
|
6603
|
+
`If-Match` makes the write conditional on the etag the caller read. A
|
|
6604
|
+
mismatch is 412: somebody replaced the resource in between, and applying
|
|
6605
|
+
this patch would discard their change without either of them seeing it.
|
|
6606
|
+
*/
|
|
6607
|
+
'updateCalendarEvent'(
|
|
6608
|
+
parameters?: Parameters<Paths.UpdateCalendarEvent.PathParameters & Paths.UpdateCalendarEvent.QueryParameters & Paths.UpdateCalendarEvent.HeaderParameters> | null,
|
|
6609
|
+
data?: Paths.UpdateCalendarEvent.RequestBody,
|
|
6610
|
+
config?: AxiosRequestConfig
|
|
6611
|
+
): OperationResponse<Paths.UpdateCalendarEvent.Responses.$200>;
|
|
6612
|
+
/**
|
|
6613
|
+
* deleteCalendarEvent - Delete an event. `All` removes the resource and every occurrence it
|
|
6614
|
+
produced; `This` writes an EXDATE for the named occurrence and keeps the
|
|
6615
|
+
rest of the series; `Following` truncates the series to end just before
|
|
6616
|
+
it.
|
|
6617
|
+
|
|
6618
|
+
Same refusals and the same `If-Match` precondition as the update.
|
|
6619
|
+
*/
|
|
6620
|
+
'deleteCalendarEvent'(
|
|
6621
|
+
parameters?: Parameters<Paths.DeleteCalendarEvent.PathParameters & Paths.DeleteCalendarEvent.QueryParameters & Paths.DeleteCalendarEvent.HeaderParameters> | null,
|
|
6622
|
+
data?: any,
|
|
6623
|
+
config?: AxiosRequestConfig
|
|
6624
|
+
): OperationResponse<Paths.DeleteCalendarEvent.Responses.$204>;
|
|
6625
|
+
/**
|
|
6626
|
+
* 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.
|
|
6627
|
+
*/
|
|
6628
|
+
'listCalendarFreeBusy'(
|
|
6629
|
+
parameters?: Parameters<Paths.ListCalendarFreeBusy.QueryParameters> | null,
|
|
6630
|
+
data?: any,
|
|
6631
|
+
config?: AxiosRequestConfig
|
|
6632
|
+
): OperationResponse<Paths.ListCalendarFreeBusy.Responses.$200>;
|
|
6016
6633
|
/**
|
|
6017
6634
|
* emptyTrash - Permanently delete all messages in the Trash mailbox
|
|
6018
6635
|
*/
|
|
@@ -6582,6 +7199,132 @@ export interface PathsDictionary {
|
|
|
6582
7199
|
config?: AxiosRequestConfig
|
|
6583
7200
|
): OperationResponse<Paths.GetOrganizeJob.Responses.$200>;
|
|
6584
7201
|
};
|
|
7202
|
+
['/calendars']: {
|
|
7203
|
+
/**
|
|
7204
|
+
* 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.
|
|
7205
|
+
*/
|
|
7206
|
+
'get'(
|
|
7207
|
+
parameters?: Parameters<UnknownParamsObject> | null,
|
|
7208
|
+
data?: any,
|
|
7209
|
+
config?: AxiosRequestConfig
|
|
7210
|
+
): OperationResponse<Paths.ListCalendars.Responses.$200>;
|
|
7211
|
+
/**
|
|
7212
|
+
* 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.
|
|
7213
|
+
*/
|
|
7214
|
+
'post'(
|
|
7215
|
+
parameters?: Parameters<UnknownParamsObject> | null,
|
|
7216
|
+
data?: Paths.CreateCalendar.RequestBody,
|
|
7217
|
+
config?: AxiosRequestConfig
|
|
7218
|
+
): OperationResponse<Paths.CreateCalendar.Responses.$200>;
|
|
7219
|
+
};
|
|
7220
|
+
['/calendars/{calendarId}']: {
|
|
7221
|
+
/**
|
|
7222
|
+
* getCalendar
|
|
7223
|
+
*/
|
|
7224
|
+
'get'(
|
|
7225
|
+
parameters?: Parameters<Paths.GetCalendar.PathParameters> | null,
|
|
7226
|
+
data?: any,
|
|
7227
|
+
config?: AxiosRequestConfig
|
|
7228
|
+
): OperationResponse<Paths.GetCalendar.Responses.$200>;
|
|
7229
|
+
/**
|
|
7230
|
+
* updateCalendar
|
|
7231
|
+
*/
|
|
7232
|
+
'patch'(
|
|
7233
|
+
parameters?: Parameters<Paths.UpdateCalendar.PathParameters> | null,
|
|
7234
|
+
data?: Paths.UpdateCalendar.RequestBody,
|
|
7235
|
+
config?: AxiosRequestConfig
|
|
7236
|
+
): OperationResponse<Paths.UpdateCalendar.Responses.$200>;
|
|
7237
|
+
/**
|
|
7238
|
+
* 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.
|
|
7239
|
+
*/
|
|
7240
|
+
'delete'(
|
|
7241
|
+
parameters?: Parameters<Paths.DeleteCalendar.PathParameters> | null,
|
|
7242
|
+
data?: any,
|
|
7243
|
+
config?: AxiosRequestConfig
|
|
7244
|
+
): OperationResponse<Paths.DeleteCalendar.Responses.$204>;
|
|
7245
|
+
};
|
|
7246
|
+
['/calendar-events']: {
|
|
7247
|
+
/**
|
|
7248
|
+
* listCalendarEvents - Expanded event occurrences in a window. The server does the recurrence
|
|
7249
|
+
expansion and the client renders instances — no RRULE is ever evaluated
|
|
7250
|
+
in a browser, so a week grid and a day strip agree with each other and
|
|
7251
|
+
with what a native client will later read over CalDAV.
|
|
7252
|
+
|
|
7253
|
+
Occurrences are served from the stored occurrence index. A series whose
|
|
7254
|
+
index stops before `to` — an open-ended event older than the expansion
|
|
7255
|
+
horizon — is expanded live for this window instead, and nothing
|
|
7256
|
+
unbounded is written to serve a read.
|
|
7257
|
+
|
|
7258
|
+
Refused with 400 when `from` and `to` are not ISO 8601 date-times, when
|
|
7259
|
+
`to` is not after `from`, or when the window is wider than a year.
|
|
7260
|
+
*/
|
|
7261
|
+
'get'(
|
|
7262
|
+
parameters?: Parameters<Paths.ListCalendarEvents.QueryParameters> | null,
|
|
7263
|
+
data?: any,
|
|
7264
|
+
config?: AxiosRequestConfig
|
|
7265
|
+
): OperationResponse<Paths.ListCalendarEvents.Responses.$200>;
|
|
7266
|
+
/**
|
|
7267
|
+
* 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.
|
|
7268
|
+
*/
|
|
7269
|
+
'post'(
|
|
7270
|
+
parameters?: Parameters<UnknownParamsObject> | null,
|
|
7271
|
+
data?: Paths.CreateCalendarEvent.RequestBody,
|
|
7272
|
+
config?: AxiosRequestConfig
|
|
7273
|
+
): OperationResponse<Paths.CreateCalendarEvent.Responses.$200>;
|
|
7274
|
+
};
|
|
7275
|
+
['/calendar-events/{calendarObjectId}']: {
|
|
7276
|
+
/**
|
|
7277
|
+
* getCalendarEvent - Get one stored event, including its canonical iCalendar text and its etag.
|
|
7278
|
+
*/
|
|
7279
|
+
'get'(
|
|
7280
|
+
parameters?: Parameters<Paths.GetCalendarEvent.PathParameters & Paths.GetCalendarEvent.QueryParameters> | null,
|
|
7281
|
+
data?: any,
|
|
7282
|
+
config?: AxiosRequestConfig
|
|
7283
|
+
): OperationResponse<Paths.GetCalendarEvent.Responses.$200>;
|
|
7284
|
+
/**
|
|
7285
|
+
* updateCalendarEvent - Update an event. `scope` says what the caller meant by editing one
|
|
7286
|
+
drawing of a series: `All` rewrites the master, `This` writes a
|
|
7287
|
+
RECURRENCE-ID override for the named occurrence, and `Following` splits
|
|
7288
|
+
the series — the master's rule is truncated and a second resource carries
|
|
7289
|
+
the remainder under a UID of its own.
|
|
7290
|
+
|
|
7291
|
+
`recurrenceId` is required for `This` and `Following` and is refused with
|
|
7292
|
+
400 otherwise, along with a scope other than `All` on an event that does
|
|
7293
|
+
not recur, and a `recurrenceId` naming no occurrence of the series.
|
|
7294
|
+
|
|
7295
|
+
`If-Match` makes the write conditional on the etag the caller read. A
|
|
7296
|
+
mismatch is 412: somebody replaced the resource in between, and applying
|
|
7297
|
+
this patch would discard their change without either of them seeing it.
|
|
7298
|
+
*/
|
|
7299
|
+
'patch'(
|
|
7300
|
+
parameters?: Parameters<Paths.UpdateCalendarEvent.PathParameters & Paths.UpdateCalendarEvent.QueryParameters> | null,
|
|
7301
|
+
data?: Paths.UpdateCalendarEvent.RequestBody,
|
|
7302
|
+
config?: AxiosRequestConfig
|
|
7303
|
+
): OperationResponse<Paths.UpdateCalendarEvent.Responses.$200>;
|
|
7304
|
+
/**
|
|
7305
|
+
* deleteCalendarEvent - Delete an event. `All` removes the resource and every occurrence it
|
|
7306
|
+
produced; `This` writes an EXDATE for the named occurrence and keeps the
|
|
7307
|
+
rest of the series; `Following` truncates the series to end just before
|
|
7308
|
+
it.
|
|
7309
|
+
|
|
7310
|
+
Same refusals and the same `If-Match` precondition as the update.
|
|
7311
|
+
*/
|
|
7312
|
+
'delete'(
|
|
7313
|
+
parameters?: Parameters<Paths.DeleteCalendarEvent.PathParameters & Paths.DeleteCalendarEvent.QueryParameters> | null,
|
|
7314
|
+
data?: any,
|
|
7315
|
+
config?: AxiosRequestConfig
|
|
7316
|
+
): OperationResponse<Paths.DeleteCalendarEvent.Responses.$204>;
|
|
7317
|
+
};
|
|
7318
|
+
['/calendar-free-busy']: {
|
|
7319
|
+
/**
|
|
7320
|
+
* 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.
|
|
7321
|
+
*/
|
|
7322
|
+
'get'(
|
|
7323
|
+
parameters?: Parameters<Paths.ListCalendarFreeBusy.QueryParameters> | null,
|
|
7324
|
+
data?: any,
|
|
7325
|
+
config?: AxiosRequestConfig
|
|
7326
|
+
): OperationResponse<Paths.ListCalendarFreeBusy.Responses.$200>;
|
|
7327
|
+
};
|
|
6585
7328
|
['/accounts/{accountId}/trash/empty']: {
|
|
6586
7329
|
/**
|
|
6587
7330
|
* emptyTrash - Permanently delete all messages in the Trash mailbox
|
|
@@ -6949,10 +7692,11 @@ export type AccessPattern = Components.Schemas.AccessPattern;
|
|
|
6949
7692
|
export type ResultList = Components.Schemas.ResultList;
|
|
6950
7693
|
export type FolderRoleConflict = Components.Schemas.FolderRoleConflict;
|
|
6951
7694
|
export type AppointFolderRoleConflict = Components.Schemas.AppointFolderRoleConflict;
|
|
7695
|
+
export type NotFoundError = Components.Schemas.NotFoundError;
|
|
7696
|
+
export type PreconditionFailedError = Components.Schemas.PreconditionFailedError;
|
|
6952
7697
|
export type DeleteMessagesConflict = Components.Schemas.DeleteMessagesConflict;
|
|
6953
7698
|
export type MessagePlacementConflict = Components.Schemas.MessagePlacementConflict;
|
|
6954
7699
|
export type AmazonApiGatewayIntegration = Components.Schemas.AmazonApiGatewayIntegration;
|
|
6955
|
-
export type NotFoundError = Components.Schemas.NotFoundError;
|
|
6956
7700
|
export type InternalServerError = Components.Schemas.InternalServerError;
|
|
6957
7701
|
export type UnauthorizedError = Components.Schemas.UnauthorizedError;
|
|
6958
7702
|
export type ForbiddenError = Components.Schemas.ForbiddenError;
|
|
@@ -7004,6 +7748,20 @@ export type CreateOrganizeJobResponse = Components.Schemas.CreateOrganizeJobResp
|
|
|
7004
7748
|
export type OrganizePreviewResponse = Components.Schemas.OrganizePreviewResponse;
|
|
7005
7749
|
export type OrganizeJobRequest = Components.Schemas.OrganizeJobRequest;
|
|
7006
7750
|
export type OrganizeJobResponse = Components.Schemas.OrganizeJobResponse;
|
|
7751
|
+
export type CalendarListResponse = Components.Schemas.CalendarListResponse;
|
|
7752
|
+
export type CalendarCollection = Components.Schemas.CalendarCollection;
|
|
7753
|
+
export type CalendarResponse = Components.Schemas.CalendarResponse;
|
|
7754
|
+
export type CreateCalendarInput = Components.Schemas.CreateCalendarInput;
|
|
7755
|
+
export type UpdateCalendarInput = Components.Schemas.UpdateCalendarInput;
|
|
7756
|
+
export type CalendarNoContent = Components.Schemas.CalendarNoContent;
|
|
7757
|
+
export type CalendarEventListResponse = Components.Schemas.CalendarEventListResponse;
|
|
7758
|
+
export type CalendarEventInstance = Components.Schemas.CalendarEventInstance;
|
|
7759
|
+
export type CreateCalendarEventInput = Components.Schemas.CreateCalendarEventInput;
|
|
7760
|
+
export type CalendarObject = Components.Schemas.CalendarObject;
|
|
7761
|
+
export type CalendarEventResponse = Components.Schemas.CalendarEventResponse;
|
|
7762
|
+
export type UpdateCalendarEventInput = Components.Schemas.UpdateCalendarEventInput;
|
|
7763
|
+
export type CalendarFreeBusyResponse = Components.Schemas.CalendarFreeBusyResponse;
|
|
7764
|
+
export type CalendarFreeBusySpan = Components.Schemas.CalendarFreeBusySpan;
|
|
7007
7765
|
export type EmptyTrashResponse = Components.Schemas.EmptyTrashResponse;
|
|
7008
7766
|
export type SyncTriggerResponse = Components.Schemas.SyncTriggerResponse;
|
|
7009
7767
|
export type AccountSyncStatusResponse = Components.Schemas.AccountSyncStatusResponse;
|
|
@@ -7092,8 +7850,6 @@ export type BodyPartParameter = Components.Schemas.BodyPartParameter;
|
|
|
7092
7850
|
export type RawMessageStorage = Components.Schemas.RawMessageStorage;
|
|
7093
7851
|
export type BodyPartStorage = Components.Schemas.BodyPartStorage;
|
|
7094
7852
|
export type BodyPartContent = Components.Schemas.BodyPartContent;
|
|
7095
|
-
export type CalendarCollection = Components.Schemas.CalendarCollection;
|
|
7096
|
-
export type CalendarObject = Components.Schemas.CalendarObject;
|
|
7097
7853
|
export type CalendarEventIndex = Components.Schemas.CalendarEventIndex;
|
|
7098
7854
|
export type MessageLabel = Components.Schemas.MessageLabel;
|
|
7099
7855
|
export type FilterAnchor = Components.Schemas.FilterAnchor;
|
|
@@ -7124,6 +7880,13 @@ export type FilterMatchOperator = Components.Schemas.FilterMatchOperator;
|
|
|
7124
7880
|
export type FilterClauseField = Components.Schemas.FilterClauseField;
|
|
7125
7881
|
export type LabelColor = Components.Schemas.LabelColor;
|
|
7126
7882
|
export type OrganizeJobState = Components.Schemas.OrganizeJobState;
|
|
7883
|
+
export type CalendarColor = Components.Schemas.CalendarColor;
|
|
7884
|
+
export type CalendarComponentSet = Components.Schemas.CalendarComponentSet;
|
|
7885
|
+
export type CalendarSource = Components.Schemas.CalendarSource;
|
|
7886
|
+
export type CalendarEventStatus = Components.Schemas.CalendarEventStatus;
|
|
7887
|
+
export type CalendarTransparency = Components.Schemas.CalendarTransparency;
|
|
7888
|
+
export type ZoneCertainty = Components.Schemas.ZoneCertainty;
|
|
7889
|
+
export type RecurrenceScope = Components.Schemas.RecurrenceScope;
|
|
7127
7890
|
export type SortOrder = Components.Schemas.SortOrder;
|
|
7128
7891
|
export type StarColor = Components.Schemas.StarColor;
|
|
7129
7892
|
export type MessageCategory = Components.Schemas.MessageCategory;
|
|
@@ -7154,12 +7917,6 @@ export type ContentEncoding = Components.Schemas.ContentEncoding;
|
|
|
7154
7917
|
export type AccountSettingName = Components.Schemas.AccountSettingName;
|
|
7155
7918
|
export type ConfigImportState = Components.Schemas.ConfigImportState;
|
|
7156
7919
|
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
7920
|
export type MessagePlacementMoveState = Components.Schemas.MessagePlacementMoveState;
|
|
7164
7921
|
export type FlagPushOperation = Components.Schemas.FlagPushOperation;
|
|
7165
7922
|
export type MessageFlagPushState = Components.Schemas.MessageFlagPushState;
|