@remit/api-openapi-spec 0.0.80 → 0.0.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/openapi.json +1820 -216
- package/package.json +1 -1
- package/request-validators.mjs +17 -4
package/openapi.json
CHANGED
|
@@ -2601,7 +2601,7 @@
|
|
|
2601
2601
|
},
|
|
2602
2602
|
"delete": {
|
|
2603
2603
|
"operationId": "CalendarEventDetailOperations_deleteCalendarEvent",
|
|
2604
|
-
"description": "Delete an event. `All` removes the resource and every occurrence it\nproduced; `This` writes an EXDATE for the named occurrence and keeps the\nrest of the series; `Following` truncates the series to end just before\nit.\n\nSame refusals and the same `If-Match` precondition as the update.\nAn event in a `Subscribed` collection is refused with 400\n`read_only_calendar`, here and on the update.",
|
|
2604
|
+
"description": "Delete an event. `All` removes the resource and every occurrence it\nproduced; `This` writes an EXDATE for the named occurrence and keeps the\nrest of the series; `Following` truncates the series to end just before\nit.\n\nSame refusals and the same `If-Match` precondition as the update.\nAn event in a `Subscribed` collection is refused with 400\n`read_only_calendar`, here and on the update.\n\nAnswers 200 with the cancellations it queued: one per guest when the\nreader organizes the event, none otherwise.",
|
|
2605
2605
|
"parameters": [
|
|
2606
2606
|
{
|
|
2607
2607
|
"name": "calendarObjectId",
|
|
@@ -2648,8 +2648,15 @@
|
|
|
2648
2648
|
}
|
|
2649
2649
|
],
|
|
2650
2650
|
"responses": {
|
|
2651
|
-
"
|
|
2652
|
-
"description": "
|
|
2651
|
+
"200": {
|
|
2652
|
+
"description": "What deleting an event sent: one cancellation per guest when the reader organizes it, nothing otherwise.",
|
|
2653
|
+
"content": {
|
|
2654
|
+
"application/json": {
|
|
2655
|
+
"schema": {
|
|
2656
|
+
"$ref": "#/components/schemas/RemitImap.CalendarEventDeleteResponse"
|
|
2657
|
+
}
|
|
2658
|
+
}
|
|
2659
|
+
}
|
|
2653
2660
|
},
|
|
2654
2661
|
"400": {
|
|
2655
2662
|
"description": "The request was refused as malformed or contradictory. `code` is\n`invalid_request` where nothing more specific is known, and the refusal's own\ntoken where there is one.\n\nThe calendar surface answers with the reason it read the request by:\n`invalid_window`, `invalid_scope`, `invalid_url_segment`, `url_segment_taken`,\n`unknown_time_zone` and `default_calendar_undeletable` on the collection and\nthe query, and, for a VCALENDAR it could not accept,\n`malformed_icalendar`, `not_a_calendar`, `unsupported_component`, `no_event`,\n`no_master_event`, `multiple_master_events`, `missing_uid`, `mismatched_uid`,\n`missing_dt_start`, `backwards_end`, `invalid_date_time`,\n`invalid_recurrence_rule`, `missing_recurrence_id`, `not_recurring`,\n`unknown_occurrence` and `unmovable_recurrence_rule`. The outbox answers `mail_sync_off` to a\nsend from an account whose `syncedServices` leave out `Mail`, with the\naccount in `details.accountId`.\n\n`errors` is present only when the request failed schema validation before any\nhandler ran, and names every field that was refused.",
|
|
@@ -3135,18 +3142,59 @@
|
|
|
3135
3142
|
}
|
|
3136
3143
|
}
|
|
3137
3144
|
},
|
|
3138
|
-
"/
|
|
3145
|
+
"/calendar-tasks": {
|
|
3139
3146
|
"get": {
|
|
3140
|
-
"operationId": "
|
|
3141
|
-
"description": "
|
|
3142
|
-
"parameters": [
|
|
3147
|
+
"operationId": "CalendarTaskOperations_listCalendarTasks",
|
|
3148
|
+
"description": "Tasks due in a window, across every task collection the caller holds, in due order. Refused with 400 on the same window rules as the event listing.",
|
|
3149
|
+
"parameters": [
|
|
3150
|
+
{
|
|
3151
|
+
"name": "from",
|
|
3152
|
+
"in": "query",
|
|
3153
|
+
"required": true,
|
|
3154
|
+
"description": "Start of the window, an ISO 8601 date-time with zone offset. Inclusive.",
|
|
3155
|
+
"schema": {
|
|
3156
|
+
"type": "string"
|
|
3157
|
+
}
|
|
3158
|
+
},
|
|
3159
|
+
{
|
|
3160
|
+
"name": "to",
|
|
3161
|
+
"in": "query",
|
|
3162
|
+
"required": true,
|
|
3163
|
+
"description": "End of the window, an ISO 8601 date-time with zone offset. Exclusive.",
|
|
3164
|
+
"schema": {
|
|
3165
|
+
"type": "string"
|
|
3166
|
+
}
|
|
3167
|
+
},
|
|
3168
|
+
{
|
|
3169
|
+
"name": "calendarId",
|
|
3170
|
+
"in": "query",
|
|
3171
|
+
"required": false,
|
|
3172
|
+
"description": "Restrict to these task collections, repeated once per calendar. Omitted means every one the caller holds.",
|
|
3173
|
+
"schema": {
|
|
3174
|
+
"type": "array",
|
|
3175
|
+
"items": {
|
|
3176
|
+
"$ref": "#/components/schemas/UUID"
|
|
3177
|
+
}
|
|
3178
|
+
}
|
|
3179
|
+
}
|
|
3180
|
+
],
|
|
3143
3181
|
"responses": {
|
|
3144
3182
|
"200": {
|
|
3145
3183
|
"description": "The request has succeeded.",
|
|
3146
3184
|
"content": {
|
|
3147
3185
|
"application/json": {
|
|
3148
3186
|
"schema": {
|
|
3149
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
3187
|
+
"$ref": "#/components/schemas/RemitImap.CalendarTaskListResponse"
|
|
3188
|
+
}
|
|
3189
|
+
}
|
|
3190
|
+
}
|
|
3191
|
+
},
|
|
3192
|
+
"400": {
|
|
3193
|
+
"description": "The request was refused as malformed or contradictory. `code` is\n`invalid_request` where nothing more specific is known, and the refusal's own\ntoken where there is one.\n\nThe calendar surface answers with the reason it read the request by:\n`invalid_window`, `invalid_scope`, `invalid_url_segment`, `url_segment_taken`,\n`unknown_time_zone` and `default_calendar_undeletable` on the collection and\nthe query, and, for a VCALENDAR it could not accept,\n`malformed_icalendar`, `not_a_calendar`, `unsupported_component`, `no_event`,\n`no_master_event`, `multiple_master_events`, `missing_uid`, `mismatched_uid`,\n`missing_dt_start`, `backwards_end`, `invalid_date_time`,\n`invalid_recurrence_rule`, `missing_recurrence_id`, `not_recurring`,\n`unknown_occurrence` and `unmovable_recurrence_rule`. The outbox answers `mail_sync_off` to a\nsend from an account whose `syncedServices` leave out `Mail`, with the\naccount in `details.accountId`.\n\n`errors` is present only when the request failed schema validation before any\nhandler ran, and names every field that was refused.",
|
|
3194
|
+
"content": {
|
|
3195
|
+
"application/json": {
|
|
3196
|
+
"schema": {
|
|
3197
|
+
"$ref": "#/components/schemas/ValidationError"
|
|
3150
3198
|
}
|
|
3151
3199
|
}
|
|
3152
3200
|
}
|
|
@@ -3160,6 +3208,16 @@
|
|
|
3160
3208
|
}
|
|
3161
3209
|
}
|
|
3162
3210
|
}
|
|
3211
|
+
},
|
|
3212
|
+
"404": {
|
|
3213
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
3214
|
+
"content": {
|
|
3215
|
+
"application/json": {
|
|
3216
|
+
"schema": {
|
|
3217
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3218
|
+
}
|
|
3219
|
+
}
|
|
3220
|
+
}
|
|
3163
3221
|
}
|
|
3164
3222
|
},
|
|
3165
3223
|
"x-amazon-apigateway-integration": {
|
|
@@ -3172,8 +3230,8 @@
|
|
|
3172
3230
|
}
|
|
3173
3231
|
},
|
|
3174
3232
|
"post": {
|
|
3175
|
-
"operationId": "
|
|
3176
|
-
"description": "Create a
|
|
3233
|
+
"operationId": "CalendarTaskOperations_createCalendarTask",
|
|
3234
|
+
"description": "Create a task. Refused with 400 `not_a_task_calendar` when `calendarId` names an event collection.",
|
|
3177
3235
|
"parameters": [],
|
|
3178
3236
|
"responses": {
|
|
3179
3237
|
"200": {
|
|
@@ -3181,7 +3239,7 @@
|
|
|
3181
3239
|
"content": {
|
|
3182
3240
|
"application/json": {
|
|
3183
3241
|
"schema": {
|
|
3184
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
3242
|
+
"$ref": "#/components/schemas/RemitImap.CalendarTaskResponse"
|
|
3185
3243
|
}
|
|
3186
3244
|
}
|
|
3187
3245
|
}
|
|
@@ -3205,6 +3263,16 @@
|
|
|
3205
3263
|
}
|
|
3206
3264
|
}
|
|
3207
3265
|
}
|
|
3266
|
+
},
|
|
3267
|
+
"404": {
|
|
3268
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
3269
|
+
"content": {
|
|
3270
|
+
"application/json": {
|
|
3271
|
+
"schema": {
|
|
3272
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3273
|
+
}
|
|
3274
|
+
}
|
|
3275
|
+
}
|
|
3208
3276
|
}
|
|
3209
3277
|
},
|
|
3210
3278
|
"requestBody": {
|
|
@@ -3212,7 +3280,7 @@
|
|
|
3212
3280
|
"content": {
|
|
3213
3281
|
"application/json": {
|
|
3214
3282
|
"schema": {
|
|
3215
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
3283
|
+
"$ref": "#/components/schemas/RemitImap.CreateCalendarTaskInput"
|
|
3216
3284
|
}
|
|
3217
3285
|
}
|
|
3218
3286
|
}
|
|
@@ -3227,17 +3295,26 @@
|
|
|
3227
3295
|
}
|
|
3228
3296
|
}
|
|
3229
3297
|
},
|
|
3230
|
-
"/
|
|
3298
|
+
"/calendar-tasks/{calendarTaskId}": {
|
|
3231
3299
|
"get": {
|
|
3232
|
-
"operationId": "
|
|
3300
|
+
"operationId": "CalendarTaskDetailOperations_getCalendarTask",
|
|
3233
3301
|
"parameters": [
|
|
3234
3302
|
{
|
|
3235
|
-
"name": "
|
|
3303
|
+
"name": "calendarTaskId",
|
|
3236
3304
|
"in": "path",
|
|
3237
3305
|
"required": true,
|
|
3238
3306
|
"schema": {
|
|
3239
3307
|
"$ref": "#/components/schemas/UUID"
|
|
3240
3308
|
}
|
|
3309
|
+
},
|
|
3310
|
+
{
|
|
3311
|
+
"name": "calendarId",
|
|
3312
|
+
"in": "query",
|
|
3313
|
+
"required": false,
|
|
3314
|
+
"description": "Collection the task lives in. Omitted, it is looked for in every task collection the caller holds.",
|
|
3315
|
+
"schema": {
|
|
3316
|
+
"$ref": "#/components/schemas/UUID"
|
|
3317
|
+
}
|
|
3241
3318
|
}
|
|
3242
3319
|
],
|
|
3243
3320
|
"responses": {
|
|
@@ -3246,7 +3323,7 @@
|
|
|
3246
3323
|
"content": {
|
|
3247
3324
|
"application/json": {
|
|
3248
3325
|
"schema": {
|
|
3249
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
3326
|
+
"$ref": "#/components/schemas/RemitImap.CalendarTaskResponse"
|
|
3250
3327
|
}
|
|
3251
3328
|
}
|
|
3252
3329
|
}
|
|
@@ -3282,16 +3359,33 @@
|
|
|
3282
3359
|
}
|
|
3283
3360
|
},
|
|
3284
3361
|
"patch": {
|
|
3285
|
-
"operationId": "
|
|
3286
|
-
"description": "Update a
|
|
3362
|
+
"operationId": "CalendarTaskDetailOperations_updateCalendarTask",
|
|
3363
|
+
"description": "Update a task. `If-Match` makes the write conditional on the etag the caller read; a mismatch is 412.",
|
|
3287
3364
|
"parameters": [
|
|
3288
3365
|
{
|
|
3289
|
-
"name": "
|
|
3366
|
+
"name": "calendarTaskId",
|
|
3290
3367
|
"in": "path",
|
|
3291
3368
|
"required": true,
|
|
3292
3369
|
"schema": {
|
|
3293
3370
|
"$ref": "#/components/schemas/UUID"
|
|
3294
3371
|
}
|
|
3372
|
+
},
|
|
3373
|
+
{
|
|
3374
|
+
"name": "calendarId",
|
|
3375
|
+
"in": "query",
|
|
3376
|
+
"required": true,
|
|
3377
|
+
"description": "Collection the task lives in",
|
|
3378
|
+
"schema": {
|
|
3379
|
+
"$ref": "#/components/schemas/UUID"
|
|
3380
|
+
}
|
|
3381
|
+
},
|
|
3382
|
+
{
|
|
3383
|
+
"name": "If-Match",
|
|
3384
|
+
"in": "header",
|
|
3385
|
+
"required": false,
|
|
3386
|
+
"schema": {
|
|
3387
|
+
"type": "string"
|
|
3388
|
+
}
|
|
3295
3389
|
}
|
|
3296
3390
|
],
|
|
3297
3391
|
"responses": {
|
|
@@ -3300,7 +3394,7 @@
|
|
|
3300
3394
|
"content": {
|
|
3301
3395
|
"application/json": {
|
|
3302
3396
|
"schema": {
|
|
3303
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
3397
|
+
"$ref": "#/components/schemas/RemitImap.CalendarTaskResponse"
|
|
3304
3398
|
}
|
|
3305
3399
|
}
|
|
3306
3400
|
}
|
|
@@ -3334,6 +3428,16 @@
|
|
|
3334
3428
|
}
|
|
3335
3429
|
}
|
|
3336
3430
|
}
|
|
3431
|
+
},
|
|
3432
|
+
"412": {
|
|
3433
|
+
"description": "The condition the request stated is no longer true. Answered when an\n`If-Match` names an etag the stored resource no longer carries: somebody else\nwrote it in between, so applying this request would silently discard their\nchange. The client re-reads the resource and decides what to do with the\nversion it now has. `code` is `precondition_failed`.",
|
|
3434
|
+
"content": {
|
|
3435
|
+
"application/json": {
|
|
3436
|
+
"schema": {
|
|
3437
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3438
|
+
}
|
|
3439
|
+
}
|
|
3440
|
+
}
|
|
3337
3441
|
}
|
|
3338
3442
|
},
|
|
3339
3443
|
"requestBody": {
|
|
@@ -3341,7 +3445,7 @@
|
|
|
3341
3445
|
"content": {
|
|
3342
3446
|
"application/json": {
|
|
3343
3447
|
"schema": {
|
|
3344
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
3448
|
+
"$ref": "#/components/schemas/RemitImap.UpdateCalendarTaskInput"
|
|
3345
3449
|
}
|
|
3346
3450
|
}
|
|
3347
3451
|
}
|
|
@@ -3356,34 +3460,51 @@
|
|
|
3356
3460
|
}
|
|
3357
3461
|
},
|
|
3358
3462
|
"delete": {
|
|
3359
|
-
"operationId": "
|
|
3360
|
-
"description": "Delete a
|
|
3463
|
+
"operationId": "CalendarTaskDetailOperations_deleteCalendarTask",
|
|
3464
|
+
"description": "Delete a task. Same `If-Match` precondition as the update.",
|
|
3361
3465
|
"parameters": [
|
|
3362
3466
|
{
|
|
3363
|
-
"name": "
|
|
3467
|
+
"name": "calendarTaskId",
|
|
3364
3468
|
"in": "path",
|
|
3365
3469
|
"required": true,
|
|
3366
3470
|
"schema": {
|
|
3367
3471
|
"$ref": "#/components/schemas/UUID"
|
|
3368
3472
|
}
|
|
3473
|
+
},
|
|
3474
|
+
{
|
|
3475
|
+
"name": "calendarId",
|
|
3476
|
+
"in": "query",
|
|
3477
|
+
"required": true,
|
|
3478
|
+
"description": "Collection the task lives in",
|
|
3479
|
+
"schema": {
|
|
3480
|
+
"$ref": "#/components/schemas/UUID"
|
|
3481
|
+
}
|
|
3482
|
+
},
|
|
3483
|
+
{
|
|
3484
|
+
"name": "If-Match",
|
|
3485
|
+
"in": "header",
|
|
3486
|
+
"required": false,
|
|
3487
|
+
"schema": {
|
|
3488
|
+
"type": "string"
|
|
3489
|
+
}
|
|
3369
3490
|
}
|
|
3370
3491
|
],
|
|
3371
3492
|
"responses": {
|
|
3372
3493
|
"204": {
|
|
3373
3494
|
"description": "Nothing to return. The resource, or the occurrence, is gone."
|
|
3374
3495
|
},
|
|
3375
|
-
"
|
|
3376
|
-
"description": "The request
|
|
3496
|
+
"401": {
|
|
3497
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
3377
3498
|
"content": {
|
|
3378
3499
|
"application/json": {
|
|
3379
3500
|
"schema": {
|
|
3380
|
-
"$ref": "#/components/schemas/
|
|
3501
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3381
3502
|
}
|
|
3382
3503
|
}
|
|
3383
3504
|
}
|
|
3384
3505
|
},
|
|
3385
|
-
"
|
|
3386
|
-
"description": "
|
|
3506
|
+
"404": {
|
|
3507
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
3387
3508
|
"content": {
|
|
3388
3509
|
"application/json": {
|
|
3389
3510
|
"schema": {
|
|
@@ -3392,8 +3513,8 @@
|
|
|
3392
3513
|
}
|
|
3393
3514
|
}
|
|
3394
3515
|
},
|
|
3395
|
-
"
|
|
3396
|
-
"description": "
|
|
3516
|
+
"412": {
|
|
3517
|
+
"description": "The condition the request stated is no longer true. Answered when an\n`If-Match` names an etag the stored resource no longer carries: somebody else\nwrote it in between, so applying this request would silently discard their\nchange. The client re-reads the resource and decides what to do with the\nversion it now has. `code` is `precondition_failed`.",
|
|
3397
3518
|
"content": {
|
|
3398
3519
|
"application/json": {
|
|
3399
3520
|
"schema": {
|
|
@@ -3413,27 +3534,18 @@
|
|
|
3413
3534
|
}
|
|
3414
3535
|
}
|
|
3415
3536
|
},
|
|
3416
|
-
"/calendars
|
|
3537
|
+
"/calendars": {
|
|
3417
3538
|
"get": {
|
|
3418
|
-
"operationId": "
|
|
3419
|
-
"description": "
|
|
3420
|
-
"parameters": [
|
|
3421
|
-
{
|
|
3422
|
-
"name": "calendarId",
|
|
3423
|
-
"in": "path",
|
|
3424
|
-
"required": true,
|
|
3425
|
-
"schema": {
|
|
3426
|
-
"$ref": "#/components/schemas/UUID"
|
|
3427
|
-
}
|
|
3428
|
-
}
|
|
3429
|
-
],
|
|
3539
|
+
"operationId": "CalendarOperations_listCalendars",
|
|
3540
|
+
"description": "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.",
|
|
3541
|
+
"parameters": [],
|
|
3430
3542
|
"responses": {
|
|
3431
3543
|
"200": {
|
|
3432
3544
|
"description": "The request has succeeded.",
|
|
3433
3545
|
"content": {
|
|
3434
3546
|
"application/json": {
|
|
3435
3547
|
"schema": {
|
|
3436
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
3548
|
+
"$ref": "#/components/schemas/RemitImap.CalendarListResponse"
|
|
3437
3549
|
}
|
|
3438
3550
|
}
|
|
3439
3551
|
}
|
|
@@ -3447,9 +3559,44 @@
|
|
|
3447
3559
|
}
|
|
3448
3560
|
}
|
|
3449
3561
|
}
|
|
3562
|
+
}
|
|
3563
|
+
},
|
|
3564
|
+
"x-amazon-apigateway-integration": {
|
|
3565
|
+
"type": "aws_proxy",
|
|
3566
|
+
"httpMethod": "POST",
|
|
3567
|
+
"passthroughBehavior": "when_no_match",
|
|
3568
|
+
"uri": {
|
|
3569
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
3570
|
+
}
|
|
3571
|
+
}
|
|
3572
|
+
},
|
|
3573
|
+
"post": {
|
|
3574
|
+
"operationId": "CalendarOperations_createCalendar",
|
|
3575
|
+
"description": "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. With `subscriptionUrl` the feed is fetched first and a fetch that fails is refused with 400 `subscription_unreachable`, naming why and never the URL.",
|
|
3576
|
+
"parameters": [],
|
|
3577
|
+
"responses": {
|
|
3578
|
+
"200": {
|
|
3579
|
+
"description": "The request has succeeded.",
|
|
3580
|
+
"content": {
|
|
3581
|
+
"application/json": {
|
|
3582
|
+
"schema": {
|
|
3583
|
+
"$ref": "#/components/schemas/RemitImap.CalendarResponse"
|
|
3584
|
+
}
|
|
3585
|
+
}
|
|
3586
|
+
}
|
|
3450
3587
|
},
|
|
3451
|
-
"
|
|
3452
|
-
"description": "
|
|
3588
|
+
"400": {
|
|
3589
|
+
"description": "The request was refused as malformed or contradictory. `code` is\n`invalid_request` where nothing more specific is known, and the refusal's own\ntoken where there is one.\n\nThe calendar surface answers with the reason it read the request by:\n`invalid_window`, `invalid_scope`, `invalid_url_segment`, `url_segment_taken`,\n`unknown_time_zone` and `default_calendar_undeletable` on the collection and\nthe query, and, for a VCALENDAR it could not accept,\n`malformed_icalendar`, `not_a_calendar`, `unsupported_component`, `no_event`,\n`no_master_event`, `multiple_master_events`, `missing_uid`, `mismatched_uid`,\n`missing_dt_start`, `backwards_end`, `invalid_date_time`,\n`invalid_recurrence_rule`, `missing_recurrence_id`, `not_recurring`,\n`unknown_occurrence` and `unmovable_recurrence_rule`. The outbox answers `mail_sync_off` to a\nsend from an account whose `syncedServices` leave out `Mail`, with the\naccount in `details.accountId`.\n\n`errors` is present only when the request failed schema validation before any\nhandler ran, and names every field that was refused.",
|
|
3590
|
+
"content": {
|
|
3591
|
+
"application/json": {
|
|
3592
|
+
"schema": {
|
|
3593
|
+
"$ref": "#/components/schemas/ValidationError"
|
|
3594
|
+
}
|
|
3595
|
+
}
|
|
3596
|
+
}
|
|
3597
|
+
},
|
|
3598
|
+
"401": {
|
|
3599
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
3453
3600
|
"content": {
|
|
3454
3601
|
"application/json": {
|
|
3455
3602
|
"schema": {
|
|
@@ -3459,6 +3606,16 @@
|
|
|
3459
3606
|
}
|
|
3460
3607
|
}
|
|
3461
3608
|
},
|
|
3609
|
+
"requestBody": {
|
|
3610
|
+
"required": true,
|
|
3611
|
+
"content": {
|
|
3612
|
+
"application/json": {
|
|
3613
|
+
"schema": {
|
|
3614
|
+
"$ref": "#/components/schemas/RemitImap.CreateCalendarInput"
|
|
3615
|
+
}
|
|
3616
|
+
}
|
|
3617
|
+
}
|
|
3618
|
+
},
|
|
3462
3619
|
"x-amazon-apigateway-integration": {
|
|
3463
3620
|
"type": "aws_proxy",
|
|
3464
3621
|
"httpMethod": "POST",
|
|
@@ -3467,10 +3624,11 @@
|
|
|
3467
3624
|
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
3468
3625
|
}
|
|
3469
3626
|
}
|
|
3470
|
-
}
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3627
|
+
}
|
|
3628
|
+
},
|
|
3629
|
+
"/calendars/{calendarId}": {
|
|
3630
|
+
"get": {
|
|
3631
|
+
"operationId": "CalendarDetailOperations_getCalendar",
|
|
3474
3632
|
"parameters": [
|
|
3475
3633
|
{
|
|
3476
3634
|
"name": "calendarId",
|
|
@@ -3487,7 +3645,7 @@
|
|
|
3487
3645
|
"content": {
|
|
3488
3646
|
"application/json": {
|
|
3489
3647
|
"schema": {
|
|
3490
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
3648
|
+
"$ref": "#/components/schemas/RemitImap.CalendarResponse"
|
|
3491
3649
|
}
|
|
3492
3650
|
}
|
|
3493
3651
|
}
|
|
@@ -3522,9 +3680,9 @@
|
|
|
3522
3680
|
}
|
|
3523
3681
|
}
|
|
3524
3682
|
},
|
|
3525
|
-
"
|
|
3526
|
-
"operationId": "
|
|
3527
|
-
"description": "
|
|
3683
|
+
"patch": {
|
|
3684
|
+
"operationId": "CalendarDetailOperations_updateCalendar",
|
|
3685
|
+
"description": "Update a calendar collection. `subscriptionEnabled` is refused with 400 `not_subscribed` on a collection that is not `Subscribed`. Turning it off stops the refresh and removes nothing.",
|
|
3528
3686
|
"parameters": [
|
|
3529
3687
|
{
|
|
3530
3688
|
"name": "calendarId",
|
|
@@ -3536,29 +3694,270 @@
|
|
|
3536
3694
|
}
|
|
3537
3695
|
],
|
|
3538
3696
|
"responses": {
|
|
3539
|
-
"
|
|
3540
|
-
"description": "
|
|
3541
|
-
},
|
|
3542
|
-
"401": {
|
|
3543
|
-
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
3697
|
+
"200": {
|
|
3698
|
+
"description": "The request has succeeded.",
|
|
3544
3699
|
"content": {
|
|
3545
3700
|
"application/json": {
|
|
3546
3701
|
"schema": {
|
|
3547
|
-
"$ref": "#/components/schemas/
|
|
3702
|
+
"$ref": "#/components/schemas/RemitImap.CalendarResponse"
|
|
3548
3703
|
}
|
|
3549
3704
|
}
|
|
3550
3705
|
}
|
|
3551
3706
|
},
|
|
3552
|
-
"
|
|
3553
|
-
"description": "
|
|
3707
|
+
"400": {
|
|
3708
|
+
"description": "The request was refused as malformed or contradictory. `code` is\n`invalid_request` where nothing more specific is known, and the refusal's own\ntoken where there is one.\n\nThe calendar surface answers with the reason it read the request by:\n`invalid_window`, `invalid_scope`, `invalid_url_segment`, `url_segment_taken`,\n`unknown_time_zone` and `default_calendar_undeletable` on the collection and\nthe query, and, for a VCALENDAR it could not accept,\n`malformed_icalendar`, `not_a_calendar`, `unsupported_component`, `no_event`,\n`no_master_event`, `multiple_master_events`, `missing_uid`, `mismatched_uid`,\n`missing_dt_start`, `backwards_end`, `invalid_date_time`,\n`invalid_recurrence_rule`, `missing_recurrence_id`, `not_recurring`,\n`unknown_occurrence` and `unmovable_recurrence_rule`. The outbox answers `mail_sync_off` to a\nsend from an account whose `syncedServices` leave out `Mail`, with the\naccount in `details.accountId`.\n\n`errors` is present only when the request failed schema validation before any\nhandler ran, and names every field that was refused.",
|
|
3554
3709
|
"content": {
|
|
3555
3710
|
"application/json": {
|
|
3556
3711
|
"schema": {
|
|
3557
|
-
"$ref": "#/components/schemas/
|
|
3712
|
+
"$ref": "#/components/schemas/ValidationError"
|
|
3558
3713
|
}
|
|
3559
3714
|
}
|
|
3560
3715
|
}
|
|
3561
|
-
}
|
|
3716
|
+
},
|
|
3717
|
+
"401": {
|
|
3718
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
3719
|
+
"content": {
|
|
3720
|
+
"application/json": {
|
|
3721
|
+
"schema": {
|
|
3722
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3723
|
+
}
|
|
3724
|
+
}
|
|
3725
|
+
}
|
|
3726
|
+
},
|
|
3727
|
+
"404": {
|
|
3728
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
3729
|
+
"content": {
|
|
3730
|
+
"application/json": {
|
|
3731
|
+
"schema": {
|
|
3732
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3733
|
+
}
|
|
3734
|
+
}
|
|
3735
|
+
}
|
|
3736
|
+
}
|
|
3737
|
+
},
|
|
3738
|
+
"requestBody": {
|
|
3739
|
+
"required": true,
|
|
3740
|
+
"content": {
|
|
3741
|
+
"application/json": {
|
|
3742
|
+
"schema": {
|
|
3743
|
+
"$ref": "#/components/schemas/RemitImap.UpdateCalendarInput"
|
|
3744
|
+
}
|
|
3745
|
+
}
|
|
3746
|
+
}
|
|
3747
|
+
},
|
|
3748
|
+
"x-amazon-apigateway-integration": {
|
|
3749
|
+
"type": "aws_proxy",
|
|
3750
|
+
"httpMethod": "POST",
|
|
3751
|
+
"passthroughBehavior": "when_no_match",
|
|
3752
|
+
"uri": {
|
|
3753
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
3754
|
+
}
|
|
3755
|
+
}
|
|
3756
|
+
},
|
|
3757
|
+
"delete": {
|
|
3758
|
+
"operationId": "CalendarDetailOperations_deleteCalendar",
|
|
3759
|
+
"description": "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.",
|
|
3760
|
+
"parameters": [
|
|
3761
|
+
{
|
|
3762
|
+
"name": "calendarId",
|
|
3763
|
+
"in": "path",
|
|
3764
|
+
"required": true,
|
|
3765
|
+
"schema": {
|
|
3766
|
+
"$ref": "#/components/schemas/UUID"
|
|
3767
|
+
}
|
|
3768
|
+
}
|
|
3769
|
+
],
|
|
3770
|
+
"responses": {
|
|
3771
|
+
"204": {
|
|
3772
|
+
"description": "Nothing to return. The resource, or the occurrence, is gone."
|
|
3773
|
+
},
|
|
3774
|
+
"400": {
|
|
3775
|
+
"description": "The request was refused as malformed or contradictory. `code` is\n`invalid_request` where nothing more specific is known, and the refusal's own\ntoken where there is one.\n\nThe calendar surface answers with the reason it read the request by:\n`invalid_window`, `invalid_scope`, `invalid_url_segment`, `url_segment_taken`,\n`unknown_time_zone` and `default_calendar_undeletable` on the collection and\nthe query, and, for a VCALENDAR it could not accept,\n`malformed_icalendar`, `not_a_calendar`, `unsupported_component`, `no_event`,\n`no_master_event`, `multiple_master_events`, `missing_uid`, `mismatched_uid`,\n`missing_dt_start`, `backwards_end`, `invalid_date_time`,\n`invalid_recurrence_rule`, `missing_recurrence_id`, `not_recurring`,\n`unknown_occurrence` and `unmovable_recurrence_rule`. The outbox answers `mail_sync_off` to a\nsend from an account whose `syncedServices` leave out `Mail`, with the\naccount in `details.accountId`.\n\n`errors` is present only when the request failed schema validation before any\nhandler ran, and names every field that was refused.",
|
|
3776
|
+
"content": {
|
|
3777
|
+
"application/json": {
|
|
3778
|
+
"schema": {
|
|
3779
|
+
"$ref": "#/components/schemas/ValidationError"
|
|
3780
|
+
}
|
|
3781
|
+
}
|
|
3782
|
+
}
|
|
3783
|
+
},
|
|
3784
|
+
"401": {
|
|
3785
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
3786
|
+
"content": {
|
|
3787
|
+
"application/json": {
|
|
3788
|
+
"schema": {
|
|
3789
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3790
|
+
}
|
|
3791
|
+
}
|
|
3792
|
+
}
|
|
3793
|
+
},
|
|
3794
|
+
"404": {
|
|
3795
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
3796
|
+
"content": {
|
|
3797
|
+
"application/json": {
|
|
3798
|
+
"schema": {
|
|
3799
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3800
|
+
}
|
|
3801
|
+
}
|
|
3802
|
+
}
|
|
3803
|
+
}
|
|
3804
|
+
},
|
|
3805
|
+
"x-amazon-apigateway-integration": {
|
|
3806
|
+
"type": "aws_proxy",
|
|
3807
|
+
"httpMethod": "POST",
|
|
3808
|
+
"passthroughBehavior": "when_no_match",
|
|
3809
|
+
"uri": {
|
|
3810
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
3811
|
+
}
|
|
3812
|
+
}
|
|
3813
|
+
}
|
|
3814
|
+
},
|
|
3815
|
+
"/calendars/{calendarId}/feed": {
|
|
3816
|
+
"get": {
|
|
3817
|
+
"operationId": "CalendarDetailOperations_getCalendarFeed",
|
|
3818
|
+
"description": "Read whether this calendar has a feed address. Absent (404) until one is\nminted. The token is not here: it is stored as a hash, so the only\nmoment it exists in the clear is the answer to the write below.",
|
|
3819
|
+
"parameters": [
|
|
3820
|
+
{
|
|
3821
|
+
"name": "calendarId",
|
|
3822
|
+
"in": "path",
|
|
3823
|
+
"required": true,
|
|
3824
|
+
"schema": {
|
|
3825
|
+
"$ref": "#/components/schemas/UUID"
|
|
3826
|
+
}
|
|
3827
|
+
}
|
|
3828
|
+
],
|
|
3829
|
+
"responses": {
|
|
3830
|
+
"200": {
|
|
3831
|
+
"description": "The request has succeeded.",
|
|
3832
|
+
"content": {
|
|
3833
|
+
"application/json": {
|
|
3834
|
+
"schema": {
|
|
3835
|
+
"$ref": "#/components/schemas/RemitImap.CalendarFeedStateResponse"
|
|
3836
|
+
}
|
|
3837
|
+
}
|
|
3838
|
+
}
|
|
3839
|
+
},
|
|
3840
|
+
"401": {
|
|
3841
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
3842
|
+
"content": {
|
|
3843
|
+
"application/json": {
|
|
3844
|
+
"schema": {
|
|
3845
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3846
|
+
}
|
|
3847
|
+
}
|
|
3848
|
+
}
|
|
3849
|
+
},
|
|
3850
|
+
"404": {
|
|
3851
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
3852
|
+
"content": {
|
|
3853
|
+
"application/json": {
|
|
3854
|
+
"schema": {
|
|
3855
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3856
|
+
}
|
|
3857
|
+
}
|
|
3858
|
+
}
|
|
3859
|
+
}
|
|
3860
|
+
},
|
|
3861
|
+
"x-amazon-apigateway-integration": {
|
|
3862
|
+
"type": "aws_proxy",
|
|
3863
|
+
"httpMethod": "POST",
|
|
3864
|
+
"passthroughBehavior": "when_no_match",
|
|
3865
|
+
"uri": {
|
|
3866
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
3867
|
+
}
|
|
3868
|
+
}
|
|
3869
|
+
},
|
|
3870
|
+
"put": {
|
|
3871
|
+
"operationId": "CalendarDetailOperations_putCalendarFeed",
|
|
3872
|
+
"description": "Mint the calendar's feed address, or replace the one it has, and answer\nwith the token in the clear. Idempotent in address rather than in value:\none calendar holds one token, so a second call rotates — the previous\nURL stops resolving, which is how a subscription handed to the wrong\nperson is taken back.\n\nThis is the only response that ever carries the plaintext. A client that\ndoes not keep it rotates again.",
|
|
3873
|
+
"parameters": [
|
|
3874
|
+
{
|
|
3875
|
+
"name": "calendarId",
|
|
3876
|
+
"in": "path",
|
|
3877
|
+
"required": true,
|
|
3878
|
+
"schema": {
|
|
3879
|
+
"$ref": "#/components/schemas/UUID"
|
|
3880
|
+
}
|
|
3881
|
+
}
|
|
3882
|
+
],
|
|
3883
|
+
"responses": {
|
|
3884
|
+
"200": {
|
|
3885
|
+
"description": "The request has succeeded.",
|
|
3886
|
+
"content": {
|
|
3887
|
+
"application/json": {
|
|
3888
|
+
"schema": {
|
|
3889
|
+
"$ref": "#/components/schemas/RemitImap.CalendarFeedResponse"
|
|
3890
|
+
}
|
|
3891
|
+
}
|
|
3892
|
+
}
|
|
3893
|
+
},
|
|
3894
|
+
"401": {
|
|
3895
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
3896
|
+
"content": {
|
|
3897
|
+
"application/json": {
|
|
3898
|
+
"schema": {
|
|
3899
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3900
|
+
}
|
|
3901
|
+
}
|
|
3902
|
+
}
|
|
3903
|
+
},
|
|
3904
|
+
"404": {
|
|
3905
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
3906
|
+
"content": {
|
|
3907
|
+
"application/json": {
|
|
3908
|
+
"schema": {
|
|
3909
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3910
|
+
}
|
|
3911
|
+
}
|
|
3912
|
+
}
|
|
3913
|
+
}
|
|
3914
|
+
},
|
|
3915
|
+
"x-amazon-apigateway-integration": {
|
|
3916
|
+
"type": "aws_proxy",
|
|
3917
|
+
"httpMethod": "POST",
|
|
3918
|
+
"passthroughBehavior": "when_no_match",
|
|
3919
|
+
"uri": {
|
|
3920
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
3921
|
+
}
|
|
3922
|
+
}
|
|
3923
|
+
},
|
|
3924
|
+
"delete": {
|
|
3925
|
+
"operationId": "CalendarDetailOperations_revokeCalendarFeed",
|
|
3926
|
+
"description": "Revoke the calendar's feed address. Every subscribed client starts getting 404 on its next poll. Answered 404 when the calendar has no feed, so a revoke is never reported as having taken something away that was not there.",
|
|
3927
|
+
"parameters": [
|
|
3928
|
+
{
|
|
3929
|
+
"name": "calendarId",
|
|
3930
|
+
"in": "path",
|
|
3931
|
+
"required": true,
|
|
3932
|
+
"schema": {
|
|
3933
|
+
"$ref": "#/components/schemas/UUID"
|
|
3934
|
+
}
|
|
3935
|
+
}
|
|
3936
|
+
],
|
|
3937
|
+
"responses": {
|
|
3938
|
+
"204": {
|
|
3939
|
+
"description": "Nothing to return. The resource, or the occurrence, is gone."
|
|
3940
|
+
},
|
|
3941
|
+
"401": {
|
|
3942
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
3943
|
+
"content": {
|
|
3944
|
+
"application/json": {
|
|
3945
|
+
"schema": {
|
|
3946
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3947
|
+
}
|
|
3948
|
+
}
|
|
3949
|
+
}
|
|
3950
|
+
},
|
|
3951
|
+
"404": {
|
|
3952
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
3953
|
+
"content": {
|
|
3954
|
+
"application/json": {
|
|
3955
|
+
"schema": {
|
|
3956
|
+
"$ref": "#/components/schemas/ApiError"
|
|
3957
|
+
}
|
|
3958
|
+
}
|
|
3959
|
+
}
|
|
3960
|
+
}
|
|
3562
3961
|
},
|
|
3563
3962
|
"x-amazon-apigateway-integration": {
|
|
3564
3963
|
"type": "aws_proxy",
|
|
@@ -5302,15 +5701,508 @@
|
|
|
5302
5701
|
}
|
|
5303
5702
|
},
|
|
5304
5703
|
"patch": {
|
|
5305
|
-
"operationId": "OutboxDetailOperations_updateOutboxMessage",
|
|
5306
|
-
"description": "Update a draft outbox message",
|
|
5704
|
+
"operationId": "OutboxDetailOperations_updateOutboxMessage",
|
|
5705
|
+
"description": "Update a draft outbox message",
|
|
5706
|
+
"parameters": [
|
|
5707
|
+
{
|
|
5708
|
+
"name": "outboxMessageId",
|
|
5709
|
+
"in": "path",
|
|
5710
|
+
"required": true,
|
|
5711
|
+
"schema": {
|
|
5712
|
+
"$ref": "#/components/schemas/UUID"
|
|
5713
|
+
}
|
|
5714
|
+
}
|
|
5715
|
+
],
|
|
5716
|
+
"responses": {
|
|
5717
|
+
"200": {
|
|
5718
|
+
"description": "The request has succeeded.",
|
|
5719
|
+
"content": {
|
|
5720
|
+
"application/json": {
|
|
5721
|
+
"schema": {
|
|
5722
|
+
"$ref": "#/components/schemas/RemitImap.OutboxMessageResponse"
|
|
5723
|
+
}
|
|
5724
|
+
}
|
|
5725
|
+
}
|
|
5726
|
+
},
|
|
5727
|
+
"401": {
|
|
5728
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
5729
|
+
"content": {
|
|
5730
|
+
"application/json": {
|
|
5731
|
+
"schema": {
|
|
5732
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5733
|
+
}
|
|
5734
|
+
}
|
|
5735
|
+
}
|
|
5736
|
+
},
|
|
5737
|
+
"403": {
|
|
5738
|
+
"description": "The caller is known and may not do this. `code` is `forbidden`.",
|
|
5739
|
+
"content": {
|
|
5740
|
+
"application/json": {
|
|
5741
|
+
"schema": {
|
|
5742
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5743
|
+
}
|
|
5744
|
+
}
|
|
5745
|
+
}
|
|
5746
|
+
},
|
|
5747
|
+
"404": {
|
|
5748
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
5749
|
+
"content": {
|
|
5750
|
+
"application/json": {
|
|
5751
|
+
"schema": {
|
|
5752
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5753
|
+
}
|
|
5754
|
+
}
|
|
5755
|
+
}
|
|
5756
|
+
}
|
|
5757
|
+
},
|
|
5758
|
+
"requestBody": {
|
|
5759
|
+
"required": true,
|
|
5760
|
+
"content": {
|
|
5761
|
+
"application/json": {
|
|
5762
|
+
"schema": {
|
|
5763
|
+
"$ref": "#/components/schemas/RemitImap.UpdateOutboxMessageInput"
|
|
5764
|
+
}
|
|
5765
|
+
}
|
|
5766
|
+
}
|
|
5767
|
+
},
|
|
5768
|
+
"x-amazon-apigateway-integration": {
|
|
5769
|
+
"type": "aws_proxy",
|
|
5770
|
+
"httpMethod": "POST",
|
|
5771
|
+
"passthroughBehavior": "when_no_match",
|
|
5772
|
+
"uri": {
|
|
5773
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
5774
|
+
}
|
|
5775
|
+
}
|
|
5776
|
+
},
|
|
5777
|
+
"delete": {
|
|
5778
|
+
"operationId": "OutboxDetailOperations_deleteOutboxMessage",
|
|
5779
|
+
"description": "Delete a draft or failed outbox message",
|
|
5780
|
+
"parameters": [
|
|
5781
|
+
{
|
|
5782
|
+
"name": "outboxMessageId",
|
|
5783
|
+
"in": "path",
|
|
5784
|
+
"required": true,
|
|
5785
|
+
"schema": {
|
|
5786
|
+
"$ref": "#/components/schemas/UUID"
|
|
5787
|
+
}
|
|
5788
|
+
}
|
|
5789
|
+
],
|
|
5790
|
+
"responses": {
|
|
5791
|
+
"204": {
|
|
5792
|
+
"description": "Nothing to return. The request succeeded and the response carries no body."
|
|
5793
|
+
},
|
|
5794
|
+
"401": {
|
|
5795
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
5796
|
+
"content": {
|
|
5797
|
+
"application/json": {
|
|
5798
|
+
"schema": {
|
|
5799
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5800
|
+
}
|
|
5801
|
+
}
|
|
5802
|
+
}
|
|
5803
|
+
},
|
|
5804
|
+
"403": {
|
|
5805
|
+
"description": "The caller is known and may not do this. `code` is `forbidden`.",
|
|
5806
|
+
"content": {
|
|
5807
|
+
"application/json": {
|
|
5808
|
+
"schema": {
|
|
5809
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5810
|
+
}
|
|
5811
|
+
}
|
|
5812
|
+
}
|
|
5813
|
+
},
|
|
5814
|
+
"404": {
|
|
5815
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
5816
|
+
"content": {
|
|
5817
|
+
"application/json": {
|
|
5818
|
+
"schema": {
|
|
5819
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5820
|
+
}
|
|
5821
|
+
}
|
|
5822
|
+
}
|
|
5823
|
+
}
|
|
5824
|
+
},
|
|
5825
|
+
"x-amazon-apigateway-integration": {
|
|
5826
|
+
"type": "aws_proxy",
|
|
5827
|
+
"httpMethod": "POST",
|
|
5828
|
+
"passthroughBehavior": "when_no_match",
|
|
5829
|
+
"uri": {
|
|
5830
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
5831
|
+
}
|
|
5832
|
+
}
|
|
5833
|
+
}
|
|
5834
|
+
},
|
|
5835
|
+
"/outbox/{outboxMessageId}/attachments": {
|
|
5836
|
+
"post": {
|
|
5837
|
+
"operationId": "OutboxDetailOperations_mintOutboxAttachment",
|
|
5838
|
+
"description": "Reserve room on a draft for a file, and get somewhere to put it",
|
|
5839
|
+
"parameters": [
|
|
5840
|
+
{
|
|
5841
|
+
"name": "outboxMessageId",
|
|
5842
|
+
"in": "path",
|
|
5843
|
+
"required": true,
|
|
5844
|
+
"schema": {
|
|
5845
|
+
"$ref": "#/components/schemas/UUID"
|
|
5846
|
+
}
|
|
5847
|
+
}
|
|
5848
|
+
],
|
|
5849
|
+
"responses": {
|
|
5850
|
+
"200": {
|
|
5851
|
+
"description": "The request has succeeded.",
|
|
5852
|
+
"content": {
|
|
5853
|
+
"application/json": {
|
|
5854
|
+
"schema": {
|
|
5855
|
+
"$ref": "#/components/schemas/RemitImap.MintOutboxAttachmentResponse"
|
|
5856
|
+
}
|
|
5857
|
+
}
|
|
5858
|
+
}
|
|
5859
|
+
},
|
|
5860
|
+
"400": {
|
|
5861
|
+
"description": "Refusal response for an attachment. Flat, like every other error body.",
|
|
5862
|
+
"content": {
|
|
5863
|
+
"application/json": {
|
|
5864
|
+
"schema": {
|
|
5865
|
+
"$ref": "#/components/schemas/RemitImap.OutboxAttachmentRejection"
|
|
5866
|
+
}
|
|
5867
|
+
}
|
|
5868
|
+
}
|
|
5869
|
+
},
|
|
5870
|
+
"401": {
|
|
5871
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
5872
|
+
"content": {
|
|
5873
|
+
"application/json": {
|
|
5874
|
+
"schema": {
|
|
5875
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5876
|
+
}
|
|
5877
|
+
}
|
|
5878
|
+
}
|
|
5879
|
+
},
|
|
5880
|
+
"413": {
|
|
5881
|
+
"description": "Refusal response for an attachment. Flat, like every other error body.",
|
|
5882
|
+
"content": {
|
|
5883
|
+
"application/json": {
|
|
5884
|
+
"schema": {
|
|
5885
|
+
"$ref": "#/components/schemas/RemitImap.OutboxAttachmentRejection"
|
|
5886
|
+
}
|
|
5887
|
+
}
|
|
5888
|
+
}
|
|
5889
|
+
}
|
|
5890
|
+
},
|
|
5891
|
+
"requestBody": {
|
|
5892
|
+
"required": true,
|
|
5893
|
+
"content": {
|
|
5894
|
+
"application/json": {
|
|
5895
|
+
"schema": {
|
|
5896
|
+
"$ref": "#/components/schemas/RemitImap.MintOutboxAttachmentInput"
|
|
5897
|
+
}
|
|
5898
|
+
}
|
|
5899
|
+
}
|
|
5900
|
+
},
|
|
5901
|
+
"x-amazon-apigateway-integration": {
|
|
5902
|
+
"type": "aws_proxy",
|
|
5903
|
+
"httpMethod": "POST",
|
|
5904
|
+
"passthroughBehavior": "when_no_match",
|
|
5905
|
+
"uri": {
|
|
5906
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
5907
|
+
}
|
|
5908
|
+
}
|
|
5909
|
+
}
|
|
5910
|
+
},
|
|
5911
|
+
"/outbox/{outboxMessageId}/attachments/{outboxAttachmentId}/complete": {
|
|
5912
|
+
"post": {
|
|
5913
|
+
"operationId": "OutboxAttachmentOperations_completeOutboxAttachment",
|
|
5914
|
+
"description": "Confirm an uploaded file against the object storage now holds",
|
|
5915
|
+
"parameters": [
|
|
5916
|
+
{
|
|
5917
|
+
"name": "outboxMessageId",
|
|
5918
|
+
"in": "path",
|
|
5919
|
+
"required": true,
|
|
5920
|
+
"schema": {
|
|
5921
|
+
"$ref": "#/components/schemas/UUID"
|
|
5922
|
+
}
|
|
5923
|
+
},
|
|
5924
|
+
{
|
|
5925
|
+
"name": "outboxAttachmentId",
|
|
5926
|
+
"in": "path",
|
|
5927
|
+
"required": true,
|
|
5928
|
+
"schema": {
|
|
5929
|
+
"$ref": "#/components/schemas/UUID"
|
|
5930
|
+
}
|
|
5931
|
+
}
|
|
5932
|
+
],
|
|
5933
|
+
"responses": {
|
|
5934
|
+
"200": {
|
|
5935
|
+
"description": "The request has succeeded.",
|
|
5936
|
+
"content": {
|
|
5937
|
+
"application/json": {
|
|
5938
|
+
"schema": {
|
|
5939
|
+
"$ref": "#/components/schemas/RemitImap.OutboxAttachmentResponse"
|
|
5940
|
+
}
|
|
5941
|
+
}
|
|
5942
|
+
}
|
|
5943
|
+
},
|
|
5944
|
+
"400": {
|
|
5945
|
+
"description": "Refusal response for an attachment. Flat, like every other error body.",
|
|
5946
|
+
"content": {
|
|
5947
|
+
"application/json": {
|
|
5948
|
+
"schema": {
|
|
5949
|
+
"$ref": "#/components/schemas/RemitImap.OutboxAttachmentRejection"
|
|
5950
|
+
}
|
|
5951
|
+
}
|
|
5952
|
+
}
|
|
5953
|
+
},
|
|
5954
|
+
"401": {
|
|
5955
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
5956
|
+
"content": {
|
|
5957
|
+
"application/json": {
|
|
5958
|
+
"schema": {
|
|
5959
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5960
|
+
}
|
|
5961
|
+
}
|
|
5962
|
+
}
|
|
5963
|
+
},
|
|
5964
|
+
"413": {
|
|
5965
|
+
"description": "Refusal response for an attachment. Flat, like every other error body.",
|
|
5966
|
+
"content": {
|
|
5967
|
+
"application/json": {
|
|
5968
|
+
"schema": {
|
|
5969
|
+
"$ref": "#/components/schemas/RemitImap.OutboxAttachmentRejection"
|
|
5970
|
+
}
|
|
5971
|
+
}
|
|
5972
|
+
}
|
|
5973
|
+
}
|
|
5974
|
+
},
|
|
5975
|
+
"x-amazon-apigateway-integration": {
|
|
5976
|
+
"type": "aws_proxy",
|
|
5977
|
+
"httpMethod": "POST",
|
|
5978
|
+
"passthroughBehavior": "when_no_match",
|
|
5979
|
+
"uri": {
|
|
5980
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
5981
|
+
}
|
|
5982
|
+
}
|
|
5983
|
+
}
|
|
5984
|
+
},
|
|
5985
|
+
"/outbox/{outboxMessageId}/send": {
|
|
5986
|
+
"post": {
|
|
5987
|
+
"operationId": "OutboxDetailOperations_sendOutboxMessage",
|
|
5988
|
+
"description": "Queue a draft message for sending. A draft on an account whose syncedServices leave out Mail is refused with 400 `mail_sync_off`, and stays a draft.",
|
|
5989
|
+
"parameters": [
|
|
5990
|
+
{
|
|
5991
|
+
"name": "outboxMessageId",
|
|
5992
|
+
"in": "path",
|
|
5993
|
+
"required": true,
|
|
5994
|
+
"schema": {
|
|
5995
|
+
"$ref": "#/components/schemas/UUID"
|
|
5996
|
+
}
|
|
5997
|
+
}
|
|
5998
|
+
],
|
|
5999
|
+
"responses": {
|
|
6000
|
+
"200": {
|
|
6001
|
+
"description": "The request has succeeded.",
|
|
6002
|
+
"content": {
|
|
6003
|
+
"application/json": {
|
|
6004
|
+
"schema": {
|
|
6005
|
+
"$ref": "#/components/schemas/RemitImap.OutboxMessageResponse"
|
|
6006
|
+
}
|
|
6007
|
+
}
|
|
6008
|
+
}
|
|
6009
|
+
},
|
|
6010
|
+
"400": {
|
|
6011
|
+
"description": "The request was refused as malformed or contradictory. `code` is\n`invalid_request` where nothing more specific is known, and the refusal's own\ntoken where there is one.\n\nThe calendar surface answers with the reason it read the request by:\n`invalid_window`, `invalid_scope`, `invalid_url_segment`, `url_segment_taken`,\n`unknown_time_zone` and `default_calendar_undeletable` on the collection and\nthe query, and, for a VCALENDAR it could not accept,\n`malformed_icalendar`, `not_a_calendar`, `unsupported_component`, `no_event`,\n`no_master_event`, `multiple_master_events`, `missing_uid`, `mismatched_uid`,\n`missing_dt_start`, `backwards_end`, `invalid_date_time`,\n`invalid_recurrence_rule`, `missing_recurrence_id`, `not_recurring`,\n`unknown_occurrence` and `unmovable_recurrence_rule`. The outbox answers `mail_sync_off` to a\nsend from an account whose `syncedServices` leave out `Mail`, with the\naccount in `details.accountId`.\n\n`errors` is present only when the request failed schema validation before any\nhandler ran, and names every field that was refused.",
|
|
6012
|
+
"content": {
|
|
6013
|
+
"application/json": {
|
|
6014
|
+
"schema": {
|
|
6015
|
+
"$ref": "#/components/schemas/ValidationError"
|
|
6016
|
+
}
|
|
6017
|
+
}
|
|
6018
|
+
}
|
|
6019
|
+
},
|
|
6020
|
+
"401": {
|
|
6021
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
6022
|
+
"content": {
|
|
6023
|
+
"application/json": {
|
|
6024
|
+
"schema": {
|
|
6025
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6026
|
+
}
|
|
6027
|
+
}
|
|
6028
|
+
}
|
|
6029
|
+
},
|
|
6030
|
+
"403": {
|
|
6031
|
+
"description": "The caller is known and may not do this. `code` is `forbidden`.",
|
|
6032
|
+
"content": {
|
|
6033
|
+
"application/json": {
|
|
6034
|
+
"schema": {
|
|
6035
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6036
|
+
}
|
|
6037
|
+
}
|
|
6038
|
+
}
|
|
6039
|
+
},
|
|
6040
|
+
"404": {
|
|
6041
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
6042
|
+
"content": {
|
|
6043
|
+
"application/json": {
|
|
6044
|
+
"schema": {
|
|
6045
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6046
|
+
}
|
|
6047
|
+
}
|
|
6048
|
+
}
|
|
6049
|
+
}
|
|
6050
|
+
},
|
|
6051
|
+
"x-amazon-apigateway-integration": {
|
|
6052
|
+
"type": "aws_proxy",
|
|
6053
|
+
"httpMethod": "POST",
|
|
6054
|
+
"passthroughBehavior": "when_no_match",
|
|
6055
|
+
"uri": {
|
|
6056
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
6057
|
+
}
|
|
6058
|
+
}
|
|
6059
|
+
}
|
|
6060
|
+
},
|
|
6061
|
+
"/people": {
|
|
6062
|
+
"get": {
|
|
6063
|
+
"operationId": "PeopleOperations_listPeople",
|
|
6064
|
+
"description": "List everyone who signs in to this instance, ordered by email. Self-host only, and absent (404) while self sign-up is open.",
|
|
6065
|
+
"parameters": [],
|
|
6066
|
+
"responses": {
|
|
6067
|
+
"200": {
|
|
6068
|
+
"description": "The request has succeeded.",
|
|
6069
|
+
"content": {
|
|
6070
|
+
"application/json": {
|
|
6071
|
+
"schema": {
|
|
6072
|
+
"$ref": "#/components/schemas/RemitImap.PeopleListResponse"
|
|
6073
|
+
}
|
|
6074
|
+
}
|
|
6075
|
+
}
|
|
6076
|
+
},
|
|
6077
|
+
"401": {
|
|
6078
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
6079
|
+
"content": {
|
|
6080
|
+
"application/json": {
|
|
6081
|
+
"schema": {
|
|
6082
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6083
|
+
}
|
|
6084
|
+
}
|
|
6085
|
+
}
|
|
6086
|
+
},
|
|
6087
|
+
"403": {
|
|
6088
|
+
"description": "The People operation is refused for the caller. `code` is one of\n`sign_in_disabled` (the kill switch is on), `caller_disabled` (the caller's\naccount is disabled or gone), `foreign_origin` (an unsafe request from an\norigin this instance does not serve), `step_up_required` (the step-up token\nis missing, spent, expired, or bound to another caller, action or person) and\n`wrong_password` (the step-up password is wrong).",
|
|
6089
|
+
"content": {
|
|
6090
|
+
"application/json": {
|
|
6091
|
+
"schema": {
|
|
6092
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6093
|
+
}
|
|
6094
|
+
}
|
|
6095
|
+
}
|
|
6096
|
+
},
|
|
6097
|
+
"404": {
|
|
6098
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
6099
|
+
"content": {
|
|
6100
|
+
"application/json": {
|
|
6101
|
+
"schema": {
|
|
6102
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6103
|
+
}
|
|
6104
|
+
}
|
|
6105
|
+
}
|
|
6106
|
+
}
|
|
6107
|
+
},
|
|
6108
|
+
"x-amazon-apigateway-integration": {
|
|
6109
|
+
"type": "aws_proxy",
|
|
6110
|
+
"httpMethod": "POST",
|
|
6111
|
+
"passthroughBehavior": "when_no_match",
|
|
6112
|
+
"uri": {
|
|
6113
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
6114
|
+
}
|
|
6115
|
+
}
|
|
6116
|
+
}
|
|
6117
|
+
},
|
|
6118
|
+
"/people/step-up": {
|
|
6119
|
+
"post": {
|
|
6120
|
+
"operationId": "PeopleOperations_createStepUp",
|
|
6121
|
+
"description": "Trade the caller's current password for a single-use token that allows one action on one person for five minutes. Five wrong passwords in 15 minutes refuse further step-ups with 429. Absent (404) while self sign-up is open, or when the person does not exist.",
|
|
6122
|
+
"parameters": [],
|
|
6123
|
+
"responses": {
|
|
6124
|
+
"200": {
|
|
6125
|
+
"description": "The request has succeeded.",
|
|
6126
|
+
"content": {
|
|
6127
|
+
"application/json": {
|
|
6128
|
+
"schema": {
|
|
6129
|
+
"$ref": "#/components/schemas/RemitImap.StepUpResponse"
|
|
6130
|
+
}
|
|
6131
|
+
}
|
|
6132
|
+
}
|
|
6133
|
+
},
|
|
6134
|
+
"401": {
|
|
6135
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
6136
|
+
"content": {
|
|
6137
|
+
"application/json": {
|
|
6138
|
+
"schema": {
|
|
6139
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6140
|
+
}
|
|
6141
|
+
}
|
|
6142
|
+
}
|
|
6143
|
+
},
|
|
6144
|
+
"403": {
|
|
6145
|
+
"description": "The People operation is refused for the caller. `code` is one of\n`sign_in_disabled` (the kill switch is on), `caller_disabled` (the caller's\naccount is disabled or gone), `foreign_origin` (an unsafe request from an\norigin this instance does not serve), `step_up_required` (the step-up token\nis missing, spent, expired, or bound to another caller, action or person) and\n`wrong_password` (the step-up password is wrong).",
|
|
6146
|
+
"content": {
|
|
6147
|
+
"application/json": {
|
|
6148
|
+
"schema": {
|
|
6149
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6150
|
+
}
|
|
6151
|
+
}
|
|
6152
|
+
}
|
|
6153
|
+
},
|
|
6154
|
+
"404": {
|
|
6155
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
6156
|
+
"content": {
|
|
6157
|
+
"application/json": {
|
|
6158
|
+
"schema": {
|
|
6159
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6160
|
+
}
|
|
6161
|
+
}
|
|
6162
|
+
}
|
|
6163
|
+
},
|
|
6164
|
+
"429": {
|
|
6165
|
+
"description": "Five wrong step-up passwords in 15 minutes. `code` is `step_up_locked`.",
|
|
6166
|
+
"content": {
|
|
6167
|
+
"application/json": {
|
|
6168
|
+
"schema": {
|
|
6169
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6170
|
+
}
|
|
6171
|
+
}
|
|
6172
|
+
}
|
|
6173
|
+
}
|
|
6174
|
+
},
|
|
6175
|
+
"requestBody": {
|
|
6176
|
+
"required": true,
|
|
6177
|
+
"content": {
|
|
6178
|
+
"application/json": {
|
|
6179
|
+
"schema": {
|
|
6180
|
+
"$ref": "#/components/schemas/RemitImap.StepUpInput"
|
|
6181
|
+
}
|
|
6182
|
+
}
|
|
6183
|
+
}
|
|
6184
|
+
},
|
|
6185
|
+
"x-amazon-apigateway-integration": {
|
|
6186
|
+
"type": "aws_proxy",
|
|
6187
|
+
"httpMethod": "POST",
|
|
6188
|
+
"passthroughBehavior": "when_no_match",
|
|
6189
|
+
"uri": {
|
|
6190
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
6191
|
+
}
|
|
6192
|
+
}
|
|
6193
|
+
}
|
|
6194
|
+
},
|
|
6195
|
+
"/people/{userId}": {
|
|
6196
|
+
"patch": {
|
|
6197
|
+
"operationId": "PeopleOperations_updatePerson",
|
|
6198
|
+
"description": "Disable or enable the person. Needs a `Disable` or `Enable` step-up for this person. Refused with 409 `cannot_disable_self` when the caller disables themselves.",
|
|
5307
6199
|
"parameters": [
|
|
5308
6200
|
{
|
|
5309
|
-
"name": "
|
|
6201
|
+
"name": "userId",
|
|
5310
6202
|
"in": "path",
|
|
5311
6203
|
"required": true,
|
|
5312
6204
|
"schema": {
|
|
5313
|
-
"
|
|
6205
|
+
"type": "string"
|
|
5314
6206
|
}
|
|
5315
6207
|
}
|
|
5316
6208
|
],
|
|
@@ -5320,7 +6212,7 @@
|
|
|
5320
6212
|
"content": {
|
|
5321
6213
|
"application/json": {
|
|
5322
6214
|
"schema": {
|
|
5323
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
6215
|
+
"$ref": "#/components/schemas/RemitImap.Person"
|
|
5324
6216
|
}
|
|
5325
6217
|
}
|
|
5326
6218
|
}
|
|
@@ -5336,7 +6228,7 @@
|
|
|
5336
6228
|
}
|
|
5337
6229
|
},
|
|
5338
6230
|
"403": {
|
|
5339
|
-
"description": "The caller is
|
|
6231
|
+
"description": "The People operation is refused for the caller. `code` is one of\n`sign_in_disabled` (the kill switch is on), `caller_disabled` (the caller's\naccount is disabled or gone), `foreign_origin` (an unsafe request from an\norigin this instance does not serve), `step_up_required` (the step-up token\nis missing, spent, expired, or bound to another caller, action or person) and\n`wrong_password` (the step-up password is wrong).",
|
|
5340
6232
|
"content": {
|
|
5341
6233
|
"application/json": {
|
|
5342
6234
|
"schema": {
|
|
@@ -5354,6 +6246,16 @@
|
|
|
5354
6246
|
}
|
|
5355
6247
|
}
|
|
5356
6248
|
}
|
|
6249
|
+
},
|
|
6250
|
+
"409": {
|
|
6251
|
+
"description": "A person cannot disable themselves. `code` is `cannot_disable_self`.",
|
|
6252
|
+
"content": {
|
|
6253
|
+
"application/json": {
|
|
6254
|
+
"schema": {
|
|
6255
|
+
"$ref": "#/components/schemas/ApiError"
|
|
6256
|
+
}
|
|
6257
|
+
}
|
|
6258
|
+
}
|
|
5357
6259
|
}
|
|
5358
6260
|
},
|
|
5359
6261
|
"requestBody": {
|
|
@@ -5361,7 +6263,7 @@
|
|
|
5361
6263
|
"content": {
|
|
5362
6264
|
"application/json": {
|
|
5363
6265
|
"schema": {
|
|
5364
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
6266
|
+
"$ref": "#/components/schemas/RemitImap.UpdatePersonInput"
|
|
5365
6267
|
}
|
|
5366
6268
|
}
|
|
5367
6269
|
}
|
|
@@ -5374,23 +6276,32 @@
|
|
|
5374
6276
|
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
5375
6277
|
}
|
|
5376
6278
|
}
|
|
5377
|
-
}
|
|
5378
|
-
|
|
5379
|
-
|
|
5380
|
-
|
|
6279
|
+
}
|
|
6280
|
+
},
|
|
6281
|
+
"/people/{userId}/password-reset": {
|
|
6282
|
+
"post": {
|
|
6283
|
+
"operationId": "PeopleOperations_createPasswordReset",
|
|
6284
|
+
"description": "Issue a single-use password reset link for the person, valid 24 hours. Needs a `ResetPassword` step-up for this person. The person's old password stops working and their sessions are revoked.",
|
|
5381
6285
|
"parameters": [
|
|
5382
6286
|
{
|
|
5383
|
-
"name": "
|
|
6287
|
+
"name": "userId",
|
|
5384
6288
|
"in": "path",
|
|
5385
6289
|
"required": true,
|
|
5386
6290
|
"schema": {
|
|
5387
|
-
"
|
|
6291
|
+
"type": "string"
|
|
5388
6292
|
}
|
|
5389
6293
|
}
|
|
5390
6294
|
],
|
|
5391
6295
|
"responses": {
|
|
5392
|
-
"
|
|
5393
|
-
"description": "
|
|
6296
|
+
"200": {
|
|
6297
|
+
"description": "The request has succeeded.",
|
|
6298
|
+
"content": {
|
|
6299
|
+
"application/json": {
|
|
6300
|
+
"schema": {
|
|
6301
|
+
"$ref": "#/components/schemas/RemitImap.PasswordResetResponse"
|
|
6302
|
+
}
|
|
6303
|
+
}
|
|
6304
|
+
}
|
|
5394
6305
|
},
|
|
5395
6306
|
"401": {
|
|
5396
6307
|
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
@@ -5403,7 +6314,7 @@
|
|
|
5403
6314
|
}
|
|
5404
6315
|
},
|
|
5405
6316
|
"403": {
|
|
5406
|
-
"description": "The caller is
|
|
6317
|
+
"description": "The People operation is refused for the caller. `code` is one of\n`sign_in_disabled` (the kill switch is on), `caller_disabled` (the caller's\naccount is disabled or gone), `foreign_origin` (an unsafe request from an\norigin this instance does not serve), `step_up_required` (the step-up token\nis missing, spent, expired, or bound to another caller, action or person) and\n`wrong_password` (the step-up password is wrong).",
|
|
5407
6318
|
"content": {
|
|
5408
6319
|
"application/json": {
|
|
5409
6320
|
"schema": {
|
|
@@ -5423,6 +6334,16 @@
|
|
|
5423
6334
|
}
|
|
5424
6335
|
}
|
|
5425
6336
|
},
|
|
6337
|
+
"requestBody": {
|
|
6338
|
+
"required": true,
|
|
6339
|
+
"content": {
|
|
6340
|
+
"application/json": {
|
|
6341
|
+
"schema": {
|
|
6342
|
+
"$ref": "#/components/schemas/RemitImap.CreatePasswordResetInput"
|
|
6343
|
+
}
|
|
6344
|
+
}
|
|
6345
|
+
}
|
|
6346
|
+
},
|
|
5426
6347
|
"x-amazon-apigateway-integration": {
|
|
5427
6348
|
"type": "aws_proxy",
|
|
5428
6349
|
"httpMethod": "POST",
|
|
@@ -5433,17 +6354,17 @@
|
|
|
5433
6354
|
}
|
|
5434
6355
|
}
|
|
5435
6356
|
},
|
|
5436
|
-
"/
|
|
6357
|
+
"/people/{userId}/sign-out": {
|
|
5437
6358
|
"post": {
|
|
5438
|
-
"operationId": "
|
|
5439
|
-
"description": "
|
|
6359
|
+
"operationId": "PeopleOperations_signOutPerson",
|
|
6360
|
+
"description": "Sign the person out of every browser session and MCP connection. Needs a `SignOut` step-up for this person. A JWT already minted works until it expires, at most 15 minutes.",
|
|
5440
6361
|
"parameters": [
|
|
5441
6362
|
{
|
|
5442
|
-
"name": "
|
|
6363
|
+
"name": "userId",
|
|
5443
6364
|
"in": "path",
|
|
5444
6365
|
"required": true,
|
|
5445
6366
|
"schema": {
|
|
5446
|
-
"
|
|
6367
|
+
"type": "string"
|
|
5447
6368
|
}
|
|
5448
6369
|
}
|
|
5449
6370
|
],
|
|
@@ -5453,23 +6374,23 @@
|
|
|
5453
6374
|
"content": {
|
|
5454
6375
|
"application/json": {
|
|
5455
6376
|
"schema": {
|
|
5456
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
6377
|
+
"$ref": "#/components/schemas/RemitImap.Person"
|
|
5457
6378
|
}
|
|
5458
6379
|
}
|
|
5459
6380
|
}
|
|
5460
6381
|
},
|
|
5461
|
-
"
|
|
5462
|
-
"description": "
|
|
6382
|
+
"401": {
|
|
6383
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
5463
6384
|
"content": {
|
|
5464
6385
|
"application/json": {
|
|
5465
6386
|
"schema": {
|
|
5466
|
-
"$ref": "#/components/schemas/
|
|
6387
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5467
6388
|
}
|
|
5468
6389
|
}
|
|
5469
6390
|
}
|
|
5470
6391
|
},
|
|
5471
|
-
"
|
|
5472
|
-
"description": "The
|
|
6392
|
+
"403": {
|
|
6393
|
+
"description": "The People operation is refused for the caller. `code` is one of\n`sign_in_disabled` (the kill switch is on), `caller_disabled` (the caller's\naccount is disabled or gone), `foreign_origin` (an unsafe request from an\norigin this instance does not serve), `step_up_required` (the step-up token\nis missing, spent, expired, or bound to another caller, action or person) and\n`wrong_password` (the step-up password is wrong).",
|
|
5473
6394
|
"content": {
|
|
5474
6395
|
"application/json": {
|
|
5475
6396
|
"schema": {
|
|
@@ -5478,12 +6399,12 @@
|
|
|
5478
6399
|
}
|
|
5479
6400
|
}
|
|
5480
6401
|
},
|
|
5481
|
-
"
|
|
5482
|
-
"description": "
|
|
6402
|
+
"404": {
|
|
6403
|
+
"description": "Nothing answers to this address, or the caller may not learn that something does. `code` is `not_found`.",
|
|
5483
6404
|
"content": {
|
|
5484
6405
|
"application/json": {
|
|
5485
6406
|
"schema": {
|
|
5486
|
-
"$ref": "#/components/schemas/
|
|
6407
|
+
"$ref": "#/components/schemas/ApiError"
|
|
5487
6408
|
}
|
|
5488
6409
|
}
|
|
5489
6410
|
}
|
|
@@ -5494,7 +6415,7 @@
|
|
|
5494
6415
|
"content": {
|
|
5495
6416
|
"application/json": {
|
|
5496
6417
|
"schema": {
|
|
5497
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
6418
|
+
"$ref": "#/components/schemas/RemitImap.SignOutPersonInput"
|
|
5498
6419
|
}
|
|
5499
6420
|
}
|
|
5500
6421
|
}
|
|
@@ -5509,45 +6430,18 @@
|
|
|
5509
6430
|
}
|
|
5510
6431
|
}
|
|
5511
6432
|
},
|
|
5512
|
-
"/
|
|
5513
|
-
"
|
|
5514
|
-
"operationId": "
|
|
5515
|
-
"description": "
|
|
5516
|
-
"parameters": [
|
|
5517
|
-
{
|
|
5518
|
-
"name": "outboxMessageId",
|
|
5519
|
-
"in": "path",
|
|
5520
|
-
"required": true,
|
|
5521
|
-
"schema": {
|
|
5522
|
-
"$ref": "#/components/schemas/UUID"
|
|
5523
|
-
}
|
|
5524
|
-
},
|
|
5525
|
-
{
|
|
5526
|
-
"name": "outboxAttachmentId",
|
|
5527
|
-
"in": "path",
|
|
5528
|
-
"required": true,
|
|
5529
|
-
"schema": {
|
|
5530
|
-
"$ref": "#/components/schemas/UUID"
|
|
5531
|
-
}
|
|
5532
|
-
}
|
|
5533
|
-
],
|
|
6433
|
+
"/settings": {
|
|
6434
|
+
"get": {
|
|
6435
|
+
"operationId": "UserSettingsOperations_getUserSettings",
|
|
6436
|
+
"description": "Read the caller's settings.",
|
|
6437
|
+
"parameters": [],
|
|
5534
6438
|
"responses": {
|
|
5535
6439
|
"200": {
|
|
5536
6440
|
"description": "The request has succeeded.",
|
|
5537
6441
|
"content": {
|
|
5538
6442
|
"application/json": {
|
|
5539
6443
|
"schema": {
|
|
5540
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
5541
|
-
}
|
|
5542
|
-
}
|
|
5543
|
-
}
|
|
5544
|
-
},
|
|
5545
|
-
"400": {
|
|
5546
|
-
"description": "Refusal response for an attachment. Flat, like every other error body.",
|
|
5547
|
-
"content": {
|
|
5548
|
-
"application/json": {
|
|
5549
|
-
"schema": {
|
|
5550
|
-
"$ref": "#/components/schemas/RemitImap.OutboxAttachmentRejection"
|
|
6444
|
+
"$ref": "#/components/schemas/RemitImap.UserSettingsResponse"
|
|
5551
6445
|
}
|
|
5552
6446
|
}
|
|
5553
6447
|
}
|
|
@@ -5561,16 +6455,6 @@
|
|
|
5561
6455
|
}
|
|
5562
6456
|
}
|
|
5563
6457
|
}
|
|
5564
|
-
},
|
|
5565
|
-
"413": {
|
|
5566
|
-
"description": "Refusal response for an attachment. Flat, like every other error body.",
|
|
5567
|
-
"content": {
|
|
5568
|
-
"application/json": {
|
|
5569
|
-
"schema": {
|
|
5570
|
-
"$ref": "#/components/schemas/RemitImap.OutboxAttachmentRejection"
|
|
5571
|
-
}
|
|
5572
|
-
}
|
|
5573
|
-
}
|
|
5574
6458
|
}
|
|
5575
6459
|
},
|
|
5576
6460
|
"x-amazon-apigateway-integration": {
|
|
@@ -5581,29 +6465,18 @@
|
|
|
5581
6465
|
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
5582
6466
|
}
|
|
5583
6467
|
}
|
|
5584
|
-
}
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
|
|
5588
|
-
"
|
|
5589
|
-
"description": "Queue a draft message for sending. A draft on an account whose syncedServices leave out Mail is refused with 400 `mail_sync_off`, and stays a draft.",
|
|
5590
|
-
"parameters": [
|
|
5591
|
-
{
|
|
5592
|
-
"name": "outboxMessageId",
|
|
5593
|
-
"in": "path",
|
|
5594
|
-
"required": true,
|
|
5595
|
-
"schema": {
|
|
5596
|
-
"$ref": "#/components/schemas/UUID"
|
|
5597
|
-
}
|
|
5598
|
-
}
|
|
5599
|
-
],
|
|
6468
|
+
},
|
|
6469
|
+
"patch": {
|
|
6470
|
+
"operationId": "UserSettingsOperations_updateUserSettings",
|
|
6471
|
+
"description": "Change the caller's settings. Answers with every setting as it now stands.",
|
|
6472
|
+
"parameters": [],
|
|
5600
6473
|
"responses": {
|
|
5601
6474
|
"200": {
|
|
5602
6475
|
"description": "The request has succeeded.",
|
|
5603
6476
|
"content": {
|
|
5604
6477
|
"application/json": {
|
|
5605
6478
|
"schema": {
|
|
5606
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
6479
|
+
"$ref": "#/components/schemas/RemitImap.UserSettingsResponse"
|
|
5607
6480
|
}
|
|
5608
6481
|
}
|
|
5609
6482
|
}
|
|
@@ -5627,19 +6500,46 @@
|
|
|
5627
6500
|
}
|
|
5628
6501
|
}
|
|
5629
6502
|
}
|
|
5630
|
-
}
|
|
5631
|
-
|
|
5632
|
-
|
|
6503
|
+
}
|
|
6504
|
+
},
|
|
6505
|
+
"requestBody": {
|
|
6506
|
+
"required": true,
|
|
6507
|
+
"content": {
|
|
6508
|
+
"application/json": {
|
|
6509
|
+
"schema": {
|
|
6510
|
+
"$ref": "#/components/schemas/RemitImap.UpdateUserSettingsInput"
|
|
6511
|
+
}
|
|
6512
|
+
}
|
|
6513
|
+
}
|
|
6514
|
+
},
|
|
6515
|
+
"x-amazon-apigateway-integration": {
|
|
6516
|
+
"type": "aws_proxy",
|
|
6517
|
+
"httpMethod": "POST",
|
|
6518
|
+
"passthroughBehavior": "when_no_match",
|
|
6519
|
+
"uri": {
|
|
6520
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
6521
|
+
}
|
|
6522
|
+
}
|
|
6523
|
+
}
|
|
6524
|
+
},
|
|
6525
|
+
"/settings/default-invitation-sender": {
|
|
6526
|
+
"delete": {
|
|
6527
|
+
"operationId": "UserSettingsOperations_clearDefaultInvitationSender",
|
|
6528
|
+
"description": "Clear the chosen default invitation sender. Invitations then go out from the account an event is on. Answers with every setting as it now stands.",
|
|
6529
|
+
"parameters": [],
|
|
6530
|
+
"responses": {
|
|
6531
|
+
"200": {
|
|
6532
|
+
"description": "The request has succeeded.",
|
|
5633
6533
|
"content": {
|
|
5634
6534
|
"application/json": {
|
|
5635
6535
|
"schema": {
|
|
5636
|
-
"$ref": "#/components/schemas/
|
|
6536
|
+
"$ref": "#/components/schemas/RemitImap.UserSettingsResponse"
|
|
5637
6537
|
}
|
|
5638
6538
|
}
|
|
5639
6539
|
}
|
|
5640
6540
|
},
|
|
5641
|
-
"
|
|
5642
|
-
"description": "
|
|
6541
|
+
"401": {
|
|
6542
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
5643
6543
|
"content": {
|
|
5644
6544
|
"application/json": {
|
|
5645
6545
|
"schema": {
|
|
@@ -7077,44 +7977,155 @@
|
|
|
7077
7977
|
"RemitImap.BulkUpdateFlagsInput": {
|
|
7078
7978
|
"type": "object",
|
|
7079
7979
|
"required": [
|
|
7080
|
-
"messageIds"
|
|
7980
|
+
"messageIds"
|
|
7981
|
+
],
|
|
7982
|
+
"properties": {
|
|
7983
|
+
"messageIds": {
|
|
7984
|
+
"type": "array",
|
|
7985
|
+
"items": {
|
|
7986
|
+
"$ref": "#/components/schemas/UUID"
|
|
7987
|
+
},
|
|
7988
|
+
"minItems": 1,
|
|
7989
|
+
"maxItems": 100,
|
|
7990
|
+
"description": "List of message IDs to update"
|
|
7991
|
+
},
|
|
7992
|
+
"isRead": {
|
|
7993
|
+
"type": "boolean",
|
|
7994
|
+
"description": "Set messages as read (maps to \\Seen flag)"
|
|
7995
|
+
},
|
|
7996
|
+
"isStarred": {
|
|
7997
|
+
"type": "boolean",
|
|
7998
|
+
"description": "Set messages as starred (maps to \\Flagged flag)"
|
|
7999
|
+
},
|
|
8000
|
+
"starColor": {
|
|
8001
|
+
"allOf": [
|
|
8002
|
+
{
|
|
8003
|
+
"$ref": "#/components/schemas/RemitImap.StarColor"
|
|
8004
|
+
}
|
|
8005
|
+
],
|
|
8006
|
+
"description": "Star color for visual categorization"
|
|
8007
|
+
}
|
|
8008
|
+
},
|
|
8009
|
+
"description": "Input for bulk flag update operations"
|
|
8010
|
+
},
|
|
8011
|
+
"RemitImap.CalendarAnswerOvertaken": {
|
|
8012
|
+
"type": "string",
|
|
8013
|
+
"enum": [
|
|
8014
|
+
"None",
|
|
8015
|
+
"Cancellation"
|
|
8016
|
+
],
|
|
8017
|
+
"description": "Whether an answered cancellation holds the calendar object this suggestion's answer wrote. A cancellation is terminal, so such an answer cannot be taken back."
|
|
8018
|
+
},
|
|
8019
|
+
"RemitImap.CalendarAttendee": {
|
|
8020
|
+
"type": "object",
|
|
8021
|
+
"required": [
|
|
8022
|
+
"email",
|
|
8023
|
+
"displayName",
|
|
8024
|
+
"role",
|
|
8025
|
+
"status"
|
|
8026
|
+
],
|
|
8027
|
+
"properties": {
|
|
8028
|
+
"email": {
|
|
8029
|
+
"allOf": [
|
|
8030
|
+
{
|
|
8031
|
+
"$ref": "#/components/schemas/String512"
|
|
8032
|
+
}
|
|
8033
|
+
],
|
|
8034
|
+
"description": "Mail address, lower-cased"
|
|
8035
|
+
},
|
|
8036
|
+
"displayName": {
|
|
8037
|
+
"allOf": [
|
|
8038
|
+
{
|
|
8039
|
+
"$ref": "#/components/schemas/String512"
|
|
8040
|
+
}
|
|
8041
|
+
],
|
|
8042
|
+
"description": "The CN parameter. `\"\"` when the line carries none."
|
|
8043
|
+
},
|
|
8044
|
+
"role": {
|
|
8045
|
+
"$ref": "#/components/schemas/RemitImap.CalendarAttendeeRole"
|
|
8046
|
+
},
|
|
8047
|
+
"status": {
|
|
8048
|
+
"allOf": [
|
|
8049
|
+
{
|
|
8050
|
+
"$ref": "#/components/schemas/RemitImap.CalendarAttendeeStatus"
|
|
8051
|
+
}
|
|
8052
|
+
],
|
|
8053
|
+
"description": "The answer. The organizer reads as `Accepted`."
|
|
8054
|
+
}
|
|
8055
|
+
},
|
|
8056
|
+
"description": "One person on an event's guest list, read from its ORGANIZER and ATTENDEE lines."
|
|
8057
|
+
},
|
|
8058
|
+
"RemitImap.CalendarAttendeeCounts": {
|
|
8059
|
+
"type": "object",
|
|
8060
|
+
"required": [
|
|
8061
|
+
"accepted",
|
|
8062
|
+
"declined",
|
|
8063
|
+
"tentative",
|
|
8064
|
+
"needsAction"
|
|
8065
|
+
],
|
|
8066
|
+
"properties": {
|
|
8067
|
+
"accepted": {
|
|
8068
|
+
"type": "integer",
|
|
8069
|
+
"format": "int32"
|
|
8070
|
+
},
|
|
8071
|
+
"declined": {
|
|
8072
|
+
"type": "integer",
|
|
8073
|
+
"format": "int32"
|
|
8074
|
+
},
|
|
8075
|
+
"tentative": {
|
|
8076
|
+
"type": "integer",
|
|
8077
|
+
"format": "int32"
|
|
8078
|
+
},
|
|
8079
|
+
"needsAction": {
|
|
8080
|
+
"type": "integer",
|
|
8081
|
+
"format": "int32"
|
|
8082
|
+
}
|
|
8083
|
+
},
|
|
8084
|
+
"description": "How many people on the guest list gave each answer, the organizer counted as a yes."
|
|
8085
|
+
},
|
|
8086
|
+
"RemitImap.CalendarAttendeeInput": {
|
|
8087
|
+
"type": "object",
|
|
8088
|
+
"required": [
|
|
8089
|
+
"email",
|
|
8090
|
+
"displayName"
|
|
7081
8091
|
],
|
|
7082
8092
|
"properties": {
|
|
7083
|
-
"
|
|
7084
|
-
"
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
7089
|
-
"
|
|
7090
|
-
"description": "List of message IDs to update"
|
|
7091
|
-
},
|
|
7092
|
-
"isRead": {
|
|
7093
|
-
"type": "boolean",
|
|
7094
|
-
"description": "Set messages as read (maps to \\Seen flag)"
|
|
7095
|
-
},
|
|
7096
|
-
"isStarred": {
|
|
7097
|
-
"type": "boolean",
|
|
7098
|
-
"description": "Set messages as starred (maps to \\Flagged flag)"
|
|
8093
|
+
"email": {
|
|
8094
|
+
"allOf": [
|
|
8095
|
+
{
|
|
8096
|
+
"$ref": "#/components/schemas/String512"
|
|
8097
|
+
}
|
|
8098
|
+
],
|
|
8099
|
+
"description": "The guest's mail address"
|
|
7099
8100
|
},
|
|
7100
|
-
"
|
|
8101
|
+
"displayName": {
|
|
7101
8102
|
"allOf": [
|
|
7102
8103
|
{
|
|
7103
|
-
"$ref": "#/components/schemas/
|
|
8104
|
+
"$ref": "#/components/schemas/String512"
|
|
7104
8105
|
}
|
|
7105
8106
|
],
|
|
7106
|
-
"description": "
|
|
8107
|
+
"description": "The guest's name. The address itself when the contact has none."
|
|
7107
8108
|
}
|
|
7108
8109
|
},
|
|
7109
|
-
"description": "
|
|
8110
|
+
"description": "A guest as the event editor sends one."
|
|
7110
8111
|
},
|
|
7111
|
-
"RemitImap.
|
|
8112
|
+
"RemitImap.CalendarAttendeeRole": {
|
|
7112
8113
|
"type": "string",
|
|
7113
8114
|
"enum": [
|
|
7114
|
-
"
|
|
7115
|
-
"
|
|
8115
|
+
"Organizer",
|
|
8116
|
+
"Guest"
|
|
7116
8117
|
],
|
|
7117
|
-
"description": "
|
|
8118
|
+
"description": "What one person on an event's guest list is to it."
|
|
8119
|
+
},
|
|
8120
|
+
"RemitImap.CalendarAttendeeStatus": {
|
|
8121
|
+
"type": "string",
|
|
8122
|
+
"enum": [
|
|
8123
|
+
"NeedsAction",
|
|
8124
|
+
"Accepted",
|
|
8125
|
+
"Tentative",
|
|
8126
|
+
"Declined"
|
|
8127
|
+
],
|
|
8128
|
+
"description": "A guest's answer to an event, read from the ATTENDEE line's PARTSTAT (RFC 5545 3.2.12)."
|
|
7118
8129
|
},
|
|
7119
8130
|
"RemitImap.CalendarColor": {
|
|
7120
8131
|
"type": "string",
|
|
@@ -7131,9 +8142,25 @@
|
|
|
7131
8142
|
"RemitImap.CalendarComponentSet": {
|
|
7132
8143
|
"type": "string",
|
|
7133
8144
|
"enum": [
|
|
7134
|
-
"VeventOnly"
|
|
8145
|
+
"VeventOnly",
|
|
8146
|
+
"VtodoOnly"
|
|
7135
8147
|
],
|
|
7136
|
-
"description": "Which iCalendar components a collection accepts (RFC 4791 supported-calendar-component-set).
|
|
8148
|
+
"description": "Which iCalendar components a collection accepts (RFC 4791 supported-calendar-component-set). The value is a property of the collection rather than of each object, so an event collection and a task collection are separate collections."
|
|
8149
|
+
},
|
|
8150
|
+
"RemitImap.CalendarEventDeleteResponse": {
|
|
8151
|
+
"type": "object",
|
|
8152
|
+
"required": [
|
|
8153
|
+
"sends"
|
|
8154
|
+
],
|
|
8155
|
+
"properties": {
|
|
8156
|
+
"sends": {
|
|
8157
|
+
"type": "array",
|
|
8158
|
+
"items": {
|
|
8159
|
+
"$ref": "#/components/schemas/RemitImap.CalendarSchedulingSend"
|
|
8160
|
+
}
|
|
8161
|
+
}
|
|
8162
|
+
},
|
|
8163
|
+
"description": "What deleting an event sent: one cancellation per guest when the reader organizes it, nothing otherwise."
|
|
7137
8164
|
},
|
|
7138
8165
|
"RemitImap.CalendarEventInstance": {
|
|
7139
8166
|
"type": "object",
|
|
@@ -7150,7 +8177,8 @@
|
|
|
7150
8177
|
"transparency",
|
|
7151
8178
|
"zoneCertainty",
|
|
7152
8179
|
"etag",
|
|
7153
|
-
"hasRecurrence"
|
|
8180
|
+
"hasRecurrence",
|
|
8181
|
+
"participation"
|
|
7154
8182
|
],
|
|
7155
8183
|
"properties": {
|
|
7156
8184
|
"calendarId": {
|
|
@@ -7248,6 +8276,14 @@
|
|
|
7248
8276
|
"hasRecurrence": {
|
|
7249
8277
|
"type": "boolean",
|
|
7250
8278
|
"description": "Whether the resource this occurrence came from expands to more than one instance. A client showing the recurrence-scope prompt gates on this."
|
|
8279
|
+
},
|
|
8280
|
+
"participation": {
|
|
8281
|
+
"allOf": [
|
|
8282
|
+
{
|
|
8283
|
+
"$ref": "#/components/schemas/RemitImap.CalendarParticipation"
|
|
8284
|
+
}
|
|
8285
|
+
],
|
|
8286
|
+
"description": "Where the reader stands on this occurrence. Only the reader's own answer: the guest list is on `getCalendarEvent`."
|
|
7251
8287
|
}
|
|
7252
8288
|
},
|
|
7253
8289
|
"description": "One occurrence of an event, in the window the caller asked for (issue #15).\n\nInstances are expanded by the server. A client never reads an RRULE and never\nreconstructs a series: it renders what this returns, and addresses one\noccurrence by `calendarObjectId` plus `recurrenceId`."
|
|
@@ -7288,7 +8324,12 @@
|
|
|
7288
8324
|
"hasRecurrence",
|
|
7289
8325
|
"expandedThrough",
|
|
7290
8326
|
"createdAt",
|
|
7291
|
-
"updatedAt"
|
|
8327
|
+
"updatedAt",
|
|
8328
|
+
"participation",
|
|
8329
|
+
"organizer",
|
|
8330
|
+
"attendees",
|
|
8331
|
+
"attendeeCounts",
|
|
8332
|
+
"sends"
|
|
7292
8333
|
],
|
|
7293
8334
|
"properties": {
|
|
7294
8335
|
"calendarObjectId": {
|
|
@@ -7443,9 +8484,42 @@
|
|
|
7443
8484
|
"type": "integer",
|
|
7444
8485
|
"format": "int64",
|
|
7445
8486
|
"readOnly": true
|
|
8487
|
+
},
|
|
8488
|
+
"participation": {
|
|
8489
|
+
"allOf": [
|
|
8490
|
+
{
|
|
8491
|
+
"$ref": "#/components/schemas/RemitImap.CalendarParticipation"
|
|
8492
|
+
}
|
|
8493
|
+
],
|
|
8494
|
+
"description": "Where the reader stands on the event's master"
|
|
8495
|
+
},
|
|
8496
|
+
"organizer": {
|
|
8497
|
+
"allOf": [
|
|
8498
|
+
{
|
|
8499
|
+
"$ref": "#/components/schemas/String512"
|
|
8500
|
+
}
|
|
8501
|
+
],
|
|
8502
|
+
"description": "Mail address of the ORGANIZER, lower-cased. `\"\"` when the event names none."
|
|
8503
|
+
},
|
|
8504
|
+
"attendees": {
|
|
8505
|
+
"type": "array",
|
|
8506
|
+
"items": {
|
|
8507
|
+
"$ref": "#/components/schemas/RemitImap.CalendarAttendee"
|
|
8508
|
+
},
|
|
8509
|
+
"description": "Everyone on the guest list, organizer first. Empty when the event has no guests."
|
|
8510
|
+
},
|
|
8511
|
+
"attendeeCounts": {
|
|
8512
|
+
"$ref": "#/components/schemas/RemitImap.CalendarAttendeeCounts"
|
|
8513
|
+
},
|
|
8514
|
+
"sends": {
|
|
8515
|
+
"type": "array",
|
|
8516
|
+
"items": {
|
|
8517
|
+
"$ref": "#/components/schemas/RemitImap.CalendarSchedulingSend"
|
|
8518
|
+
},
|
|
8519
|
+
"description": "The scheduling messages about this event still in the outbox. A write answers with the ones it queued; a read with every one not yet sent and filed."
|
|
7446
8520
|
}
|
|
7447
8521
|
},
|
|
7448
|
-
"description": "A stored calendar resource — the bytes behind one event, plus the columns
|
|
8522
|
+
"description": "A stored calendar resource — the bytes behind one event, plus the columns\nprojected from them. `icalData` is canonical; every other field is derived\nfrom it on write or on this read."
|
|
7449
8523
|
},
|
|
7450
8524
|
"RemitImap.CalendarEventStatus": {
|
|
7451
8525
|
"type": "string",
|
|
@@ -7568,9 +8642,10 @@
|
|
|
7568
8642
|
"type": "string",
|
|
7569
8643
|
"enum": [
|
|
7570
8644
|
"Accepted",
|
|
7571
|
-
"Tentative"
|
|
8645
|
+
"Tentative",
|
|
8646
|
+
"Declined"
|
|
7572
8647
|
],
|
|
7573
|
-
"description": "The answer
|
|
8648
|
+
"description": "The answer a guest gives an invitation. It is written as the reader's `ATTENDEE;PARTSTAT` on the stored event (RFC 5545 3.2.12)."
|
|
7574
8649
|
},
|
|
7575
8650
|
"RemitImap.CalendarInviteMethod": {
|
|
7576
8651
|
"type": "string",
|
|
@@ -7599,6 +8674,18 @@
|
|
|
7599
8674
|
},
|
|
7600
8675
|
"description": "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."
|
|
7601
8676
|
},
|
|
8677
|
+
"RemitImap.CalendarParticipation": {
|
|
8678
|
+
"type": "string",
|
|
8679
|
+
"enum": [
|
|
8680
|
+
"Unscheduled",
|
|
8681
|
+
"Organizer",
|
|
8682
|
+
"NeedsAction",
|
|
8683
|
+
"Accepted",
|
|
8684
|
+
"Tentative",
|
|
8685
|
+
"Declined"
|
|
8686
|
+
],
|
|
8687
|
+
"description": "Where the reader stands on one occurrence, projected from its ORGANIZER and ATTENDEE lines against the addresses of the reader's own accounts."
|
|
8688
|
+
},
|
|
7602
8689
|
"RemitImap.CalendarResponse": {
|
|
7603
8690
|
"type": "object",
|
|
7604
8691
|
"required": [
|
|
@@ -7752,6 +8839,40 @@
|
|
|
7752
8839
|
},
|
|
7753
8840
|
"description": "A calendar collection as the API returns it."
|
|
7754
8841
|
},
|
|
8842
|
+
"RemitImap.CalendarSchedulingSend": {
|
|
8843
|
+
"type": "object",
|
|
8844
|
+
"required": [
|
|
8845
|
+
"email",
|
|
8846
|
+
"outboxMessageId",
|
|
8847
|
+
"method",
|
|
8848
|
+
"status"
|
|
8849
|
+
],
|
|
8850
|
+
"properties": {
|
|
8851
|
+
"email": {
|
|
8852
|
+
"allOf": [
|
|
8853
|
+
{
|
|
8854
|
+
"$ref": "#/components/schemas/String512"
|
|
8855
|
+
}
|
|
8856
|
+
],
|
|
8857
|
+
"description": "The one address the message is to"
|
|
8858
|
+
},
|
|
8859
|
+
"outboxMessageId": {
|
|
8860
|
+
"$ref": "#/components/schemas/UUID"
|
|
8861
|
+
},
|
|
8862
|
+
"method": {
|
|
8863
|
+
"$ref": "#/components/schemas/RemitImap.CalendarInviteMethod"
|
|
8864
|
+
},
|
|
8865
|
+
"status": {
|
|
8866
|
+
"allOf": [
|
|
8867
|
+
{
|
|
8868
|
+
"$ref": "#/components/schemas/RemitImap.OutboxMessageStatus"
|
|
8869
|
+
}
|
|
8870
|
+
],
|
|
8871
|
+
"description": "Where the message stood when this response was built"
|
|
8872
|
+
}
|
|
8873
|
+
},
|
|
8874
|
+
"description": "One scheduling message an event write put in the outbox: an invitation, a cancellation or a reply. A client follows `outboxMessageId` to learn whether it went, and resends a failed one with `sendOutboxMessage`."
|
|
8875
|
+
},
|
|
7755
8876
|
"RemitImap.CalendarSource": {
|
|
7756
8877
|
"type": "string",
|
|
7757
8878
|
"enum": [
|
|
@@ -7979,28 +9100,173 @@
|
|
|
7979
9100
|
"description": "Whether an answered cancellation holds the event this answer wrote. `Cancellation` means `reopen` answers 400."
|
|
7980
9101
|
}
|
|
7981
9102
|
},
|
|
7982
|
-
"description": "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."
|
|
7983
|
-
},
|
|
7984
|
-
"RemitImap.CalendarSuggestionSource": {
|
|
7985
|
-
"type": "string",
|
|
7986
|
-
"enum": [
|
|
7987
|
-
"IcalendarPart",
|
|
7988
|
-
"IcalendarAttachment",
|
|
7989
|
-
"TextHeuristic"
|
|
7990
|
-
],
|
|
7991
|
-
"description": "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."
|
|
7992
|
-
},
|
|
7993
|
-
"RemitImap.CalendarSuggestionState": {
|
|
7994
|
-
"type": "string",
|
|
7995
|
-
"enum": [
|
|
7996
|
-
"Pending",
|
|
7997
|
-
"Accepted",
|
|
7998
|
-
"Declined",
|
|
7999
|
-
"Tentative",
|
|
8000
|
-
"Dismissed",
|
|
8001
|
-
"Superseded"
|
|
8002
|
-
],
|
|
8003
|
-
"description": "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`."
|
|
9103
|
+
"description": "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."
|
|
9104
|
+
},
|
|
9105
|
+
"RemitImap.CalendarSuggestionSource": {
|
|
9106
|
+
"type": "string",
|
|
9107
|
+
"enum": [
|
|
9108
|
+
"IcalendarPart",
|
|
9109
|
+
"IcalendarAttachment",
|
|
9110
|
+
"TextHeuristic"
|
|
9111
|
+
],
|
|
9112
|
+
"description": "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."
|
|
9113
|
+
},
|
|
9114
|
+
"RemitImap.CalendarSuggestionState": {
|
|
9115
|
+
"type": "string",
|
|
9116
|
+
"enum": [
|
|
9117
|
+
"Pending",
|
|
9118
|
+
"Accepted",
|
|
9119
|
+
"Declined",
|
|
9120
|
+
"Tentative",
|
|
9121
|
+
"Dismissed",
|
|
9122
|
+
"Superseded"
|
|
9123
|
+
],
|
|
9124
|
+
"description": "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`."
|
|
9125
|
+
},
|
|
9126
|
+
"RemitImap.CalendarTaskListResponse": {
|
|
9127
|
+
"type": "object",
|
|
9128
|
+
"required": [
|
|
9129
|
+
"items"
|
|
9130
|
+
],
|
|
9131
|
+
"properties": {
|
|
9132
|
+
"items": {
|
|
9133
|
+
"type": "array",
|
|
9134
|
+
"items": {
|
|
9135
|
+
"$ref": "#/components/schemas/RemitImap.CalendarTaskResponse"
|
|
9136
|
+
}
|
|
9137
|
+
}
|
|
9138
|
+
},
|
|
9139
|
+
"description": "Tasks due in the requested window, in due order. Unpaginated: the window is the bound."
|
|
9140
|
+
},
|
|
9141
|
+
"RemitImap.CalendarTaskResponse": {
|
|
9142
|
+
"type": "object",
|
|
9143
|
+
"required": [
|
|
9144
|
+
"calendarTaskId",
|
|
9145
|
+
"calendarId",
|
|
9146
|
+
"resourceName",
|
|
9147
|
+
"icalUid",
|
|
9148
|
+
"icalData",
|
|
9149
|
+
"etag",
|
|
9150
|
+
"summary",
|
|
9151
|
+
"description",
|
|
9152
|
+
"due",
|
|
9153
|
+
"dueAt",
|
|
9154
|
+
"allDay",
|
|
9155
|
+
"completed",
|
|
9156
|
+
"createdAt",
|
|
9157
|
+
"updatedAt"
|
|
9158
|
+
],
|
|
9159
|
+
"properties": {
|
|
9160
|
+
"calendarTaskId": {
|
|
9161
|
+
"allOf": [
|
|
9162
|
+
{
|
|
9163
|
+
"$ref": "#/components/schemas/UUID"
|
|
9164
|
+
}
|
|
9165
|
+
],
|
|
9166
|
+
"description": "Primary identifier, derived from calendarId + resourceName",
|
|
9167
|
+
"readOnly": true
|
|
9168
|
+
},
|
|
9169
|
+
"calendarId": {
|
|
9170
|
+
"allOf": [
|
|
9171
|
+
{
|
|
9172
|
+
"$ref": "#/components/schemas/UUID"
|
|
9173
|
+
}
|
|
9174
|
+
],
|
|
9175
|
+
"description": "Collection this task belongs to, a `VtodoOnly` one",
|
|
9176
|
+
"readOnly": true
|
|
9177
|
+
},
|
|
9178
|
+
"resourceName": {
|
|
9179
|
+
"allOf": [
|
|
9180
|
+
{
|
|
9181
|
+
"$ref": "#/components/schemas/String256"
|
|
9182
|
+
}
|
|
9183
|
+
],
|
|
9184
|
+
"description": "Last path segment of the resource's URL, e.g. \"a1b2c3.ics\"",
|
|
9185
|
+
"readOnly": true
|
|
9186
|
+
},
|
|
9187
|
+
"icalUid": {
|
|
9188
|
+
"allOf": [
|
|
9189
|
+
{
|
|
9190
|
+
"$ref": "#/components/schemas/String512"
|
|
9191
|
+
}
|
|
9192
|
+
],
|
|
9193
|
+
"description": "The VTODO's UID property",
|
|
9194
|
+
"readOnly": true
|
|
9195
|
+
},
|
|
9196
|
+
"icalData": {
|
|
9197
|
+
"type": "string",
|
|
9198
|
+
"description": "The complete VCALENDAR text — CANONICAL",
|
|
9199
|
+
"readOnly": true
|
|
9200
|
+
},
|
|
9201
|
+
"etag": {
|
|
9202
|
+
"allOf": [
|
|
9203
|
+
{
|
|
9204
|
+
"$ref": "#/components/schemas/String64"
|
|
9205
|
+
}
|
|
9206
|
+
],
|
|
9207
|
+
"description": "Strong entity tag over the stored `icalData` bytes, for If-Match",
|
|
9208
|
+
"readOnly": true
|
|
9209
|
+
},
|
|
9210
|
+
"summary": {
|
|
9211
|
+
"allOf": [
|
|
9212
|
+
{
|
|
9213
|
+
"$ref": "#/components/schemas/String512"
|
|
9214
|
+
}
|
|
9215
|
+
],
|
|
9216
|
+
"description": "Projection of the VTODO's SUMMARY. `\"\"` when it carries none.",
|
|
9217
|
+
"readOnly": true
|
|
9218
|
+
},
|
|
9219
|
+
"description": {
|
|
9220
|
+
"allOf": [
|
|
9221
|
+
{
|
|
9222
|
+
"$ref": "#/components/schemas/String2048"
|
|
9223
|
+
}
|
|
9224
|
+
],
|
|
9225
|
+
"description": "Projection of the VTODO's DESCRIPTION. `\"\"` when it carries none.",
|
|
9226
|
+
"readOnly": true
|
|
9227
|
+
},
|
|
9228
|
+
"due": {
|
|
9229
|
+
"allOf": [
|
|
9230
|
+
{
|
|
9231
|
+
"$ref": "#/components/schemas/String64"
|
|
9232
|
+
}
|
|
9233
|
+
],
|
|
9234
|
+
"description": "Projection of the VTODO's DUE as an ISO 8601 date-time with zone offset, read in the collection's timezone — a business date. An all-day task carries midnight of its civil date.",
|
|
9235
|
+
"readOnly": true
|
|
9236
|
+
},
|
|
9237
|
+
"dueAt": {
|
|
9238
|
+
"allOf": [
|
|
9239
|
+
{
|
|
9240
|
+
"$ref": "#/components/schemas/String64"
|
|
9241
|
+
}
|
|
9242
|
+
],
|
|
9243
|
+
"description": "The same moment as `due`, as an ISO 8601 UTC instant, so `byDue` orders across zones.",
|
|
9244
|
+
"readOnly": true
|
|
9245
|
+
},
|
|
9246
|
+
"allDay": {
|
|
9247
|
+
"type": "boolean",
|
|
9248
|
+
"description": "Whether DUE is a DATE rather than a DATE-TIME: the task is due on a day, not at a time",
|
|
9249
|
+
"default": false,
|
|
9250
|
+
"readOnly": true
|
|
9251
|
+
},
|
|
9252
|
+
"completed": {
|
|
9253
|
+
"type": "boolean",
|
|
9254
|
+
"description": "Whether the VTODO is done: `STATUS:COMPLETED`",
|
|
9255
|
+
"default": false,
|
|
9256
|
+
"readOnly": true
|
|
9257
|
+
},
|
|
9258
|
+
"createdAt": {
|
|
9259
|
+
"type": "integer",
|
|
9260
|
+
"format": "int64",
|
|
9261
|
+
"readOnly": true
|
|
9262
|
+
},
|
|
9263
|
+
"updatedAt": {
|
|
9264
|
+
"type": "integer",
|
|
9265
|
+
"format": "int64",
|
|
9266
|
+
"readOnly": true
|
|
9267
|
+
}
|
|
9268
|
+
},
|
|
9269
|
+
"description": "A stored task, as the API returns it."
|
|
8004
9270
|
},
|
|
8005
9271
|
"RemitImap.CalendarTransparency": {
|
|
8006
9272
|
"type": "string",
|
|
@@ -8457,6 +9723,21 @@
|
|
|
8457
9723
|
}
|
|
8458
9724
|
],
|
|
8459
9725
|
"description": "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."
|
|
9726
|
+
},
|
|
9727
|
+
"attendees": {
|
|
9728
|
+
"type": "array",
|
|
9729
|
+
"items": {
|
|
9730
|
+
"$ref": "#/components/schemas/RemitImap.CalendarAttendeeInput"
|
|
9731
|
+
},
|
|
9732
|
+
"description": "The guests. Each gets an invitation from the organizer's account, queued in the same write. Absent or empty creates an event nobody is invited to."
|
|
9733
|
+
},
|
|
9734
|
+
"organizerAccountId": {
|
|
9735
|
+
"allOf": [
|
|
9736
|
+
{
|
|
9737
|
+
"$ref": "#/components/schemas/UUID"
|
|
9738
|
+
}
|
|
9739
|
+
],
|
|
9740
|
+
"description": "The account the event is organized and its invitations sent from. Refused with 400 `unknown_organizer` when it is not an account of the caller's account config, or `organizer_cannot_send` when that account has Mail turned off. Absent, an event with guests is sent from the default invitation sender in effect (`getUserSettings`)."
|
|
8460
9741
|
}
|
|
8461
9742
|
},
|
|
8462
9743
|
"description": "Input for creating an event (issue #15). The server builds the VEVENT and\nwrites it through the single calendar write path, so an event created here,\none accepted from an invitation, and one PUT over CalDAV are the same bytes\nwritten the same way.\n\nTimes are ISO 8601 with zone offset — or a bare `YYYY-MM-DD` date when\n`allDay` is set. The offset pins the instant; `timeZone` names the zone the\nevent is anchored in, which is what a recurring event needs to survive a DST\ntransition. An offset alone cannot: a weekly 09:00 meeting written as\n`+02:00` becomes an 08:00 meeting in November."
|
|
@@ -8511,6 +9792,60 @@
|
|
|
8511
9792
|
},
|
|
8512
9793
|
"description": "Input for creating a calendar collection (issue #15).\n\n`urlSegment` is supplied rather than derived from the display name: it is the\ncollection's identity — `calendarId` is a hash of it — and the path a CalDAV\nclient will later bookmark. Slugging a name would make two calendars called\n\"Work\" one row, and a rename would either move a bookmarked path or leave a\nsegment that no longer matches anything a person recognises. The name is the\nmutable overlay; this is the address."
|
|
8513
9794
|
},
|
|
9795
|
+
"RemitImap.CreateCalendarTaskInput": {
|
|
9796
|
+
"type": "object",
|
|
9797
|
+
"required": [
|
|
9798
|
+
"summary",
|
|
9799
|
+
"due"
|
|
9800
|
+
],
|
|
9801
|
+
"properties": {
|
|
9802
|
+
"calendarId": {
|
|
9803
|
+
"allOf": [
|
|
9804
|
+
{
|
|
9805
|
+
"$ref": "#/components/schemas/UUID"
|
|
9806
|
+
}
|
|
9807
|
+
],
|
|
9808
|
+
"description": "Collection to write the task into. Absent writes it into the account config's task collection. Refused with 400 when it names a collection that is not `VtodoOnly`."
|
|
9809
|
+
},
|
|
9810
|
+
"summary": {
|
|
9811
|
+
"allOf": [
|
|
9812
|
+
{
|
|
9813
|
+
"$ref": "#/components/schemas/String512"
|
|
9814
|
+
}
|
|
9815
|
+
],
|
|
9816
|
+
"description": "SUMMARY of the task"
|
|
9817
|
+
},
|
|
9818
|
+
"description": {
|
|
9819
|
+
"allOf": [
|
|
9820
|
+
{
|
|
9821
|
+
"$ref": "#/components/schemas/String2048"
|
|
9822
|
+
}
|
|
9823
|
+
],
|
|
9824
|
+
"description": "DESCRIPTION of the task. Absent writes none."
|
|
9825
|
+
},
|
|
9826
|
+
"due": {
|
|
9827
|
+
"allOf": [
|
|
9828
|
+
{
|
|
9829
|
+
"$ref": "#/components/schemas/String64"
|
|
9830
|
+
}
|
|
9831
|
+
],
|
|
9832
|
+
"description": "When the task is due: an ISO 8601 date-time with zone offset, or a `YYYY-MM-DD` date when `allDay` is set."
|
|
9833
|
+
},
|
|
9834
|
+
"allDay": {
|
|
9835
|
+
"type": "boolean",
|
|
9836
|
+
"description": "Whether the task is due on a day rather than at a time"
|
|
9837
|
+
},
|
|
9838
|
+
"timeZone": {
|
|
9839
|
+
"allOf": [
|
|
9840
|
+
{
|
|
9841
|
+
"$ref": "#/components/schemas/String64"
|
|
9842
|
+
}
|
|
9843
|
+
],
|
|
9844
|
+
"description": "IANA time zone the due time is anchored in. Absent anchors it in UTC."
|
|
9845
|
+
}
|
|
9846
|
+
},
|
|
9847
|
+
"description": "Input for creating a task. The server builds the VTODO."
|
|
9848
|
+
},
|
|
8514
9849
|
"RemitImap.CreateExportResponse": {
|
|
8515
9850
|
"type": "object",
|
|
8516
9851
|
"required": [
|
|
@@ -8862,6 +10197,18 @@
|
|
|
8862
10197
|
},
|
|
8863
10198
|
"description": "Input for creating an outbox message"
|
|
8864
10199
|
},
|
|
10200
|
+
"RemitImap.CreatePasswordResetInput": {
|
|
10201
|
+
"type": "object",
|
|
10202
|
+
"required": [
|
|
10203
|
+
"stepUpToken"
|
|
10204
|
+
],
|
|
10205
|
+
"properties": {
|
|
10206
|
+
"stepUpToken": {
|
|
10207
|
+
"type": "string"
|
|
10208
|
+
}
|
|
10209
|
+
},
|
|
10210
|
+
"description": "Issue a password reset link for the person. Their old password stops working and their sessions are revoked."
|
|
10211
|
+
},
|
|
8865
10212
|
"RemitImap.DeleteAccountConfigResponse": {
|
|
8866
10213
|
"type": "object",
|
|
8867
10214
|
"required": [
|
|
@@ -10904,6 +12251,29 @@
|
|
|
10904
12251
|
],
|
|
10905
12252
|
"description": "Status of an outbox message in the send queue"
|
|
10906
12253
|
},
|
|
12254
|
+
"RemitImap.PasswordResetResponse": {
|
|
12255
|
+
"type": "object",
|
|
12256
|
+
"required": [
|
|
12257
|
+
"person",
|
|
12258
|
+
"resetUrl",
|
|
12259
|
+
"expiresAt"
|
|
12260
|
+
],
|
|
12261
|
+
"properties": {
|
|
12262
|
+
"person": {
|
|
12263
|
+
"$ref": "#/components/schemas/RemitImap.Person"
|
|
12264
|
+
},
|
|
12265
|
+
"resetUrl": {
|
|
12266
|
+
"type": "string",
|
|
12267
|
+
"description": "The single-use reset link. It exists only in this response."
|
|
12268
|
+
},
|
|
12269
|
+
"expiresAt": {
|
|
12270
|
+
"type": "integer",
|
|
12271
|
+
"format": "int64",
|
|
12272
|
+
"description": "When the link stops working, epoch milliseconds: issue time plus 24 hours."
|
|
12273
|
+
}
|
|
12274
|
+
},
|
|
12275
|
+
"description": "The person, and the reset link to hand them. The link is shown once and works once."
|
|
12276
|
+
},
|
|
10907
12277
|
"RemitImap.PendingConfigImport": {
|
|
10908
12278
|
"type": "object",
|
|
10909
12279
|
"required": [
|
|
@@ -10929,6 +12299,79 @@
|
|
|
10929
12299
|
},
|
|
10930
12300
|
"description": "An import that is still waiting for IMAP discovery to produce the folders its\nfile named. The folder appointed to a role, a folder's own display name or\nmute, and a filter's move destination are all bound by path; a path this\naccount does not hold yet is kept, not guessed, and bound the moment discovery\nfinds it."
|
|
10931
12301
|
},
|
|
12302
|
+
"RemitImap.PeopleListResponse": {
|
|
12303
|
+
"type": "object",
|
|
12304
|
+
"required": [
|
|
12305
|
+
"people"
|
|
12306
|
+
],
|
|
12307
|
+
"properties": {
|
|
12308
|
+
"people": {
|
|
12309
|
+
"type": "array",
|
|
12310
|
+
"items": {
|
|
12311
|
+
"$ref": "#/components/schemas/RemitImap.Person"
|
|
12312
|
+
}
|
|
12313
|
+
}
|
|
12314
|
+
},
|
|
12315
|
+
"description": "Everyone who signs in to this instance, ordered by email."
|
|
12316
|
+
},
|
|
12317
|
+
"RemitImap.Person": {
|
|
12318
|
+
"type": "object",
|
|
12319
|
+
"required": [
|
|
12320
|
+
"userId",
|
|
12321
|
+
"email",
|
|
12322
|
+
"createdAt",
|
|
12323
|
+
"lastSignInAt",
|
|
12324
|
+
"sessionCount",
|
|
12325
|
+
"status",
|
|
12326
|
+
"isCaller"
|
|
12327
|
+
],
|
|
12328
|
+
"properties": {
|
|
12329
|
+
"userId": {
|
|
12330
|
+
"type": "string",
|
|
12331
|
+
"description": "The person's user id."
|
|
12332
|
+
},
|
|
12333
|
+
"email": {
|
|
12334
|
+
"type": "string",
|
|
12335
|
+
"description": "The address the person signs in with."
|
|
12336
|
+
},
|
|
12337
|
+
"createdAt": {
|
|
12338
|
+
"type": "integer",
|
|
12339
|
+
"format": "int64",
|
|
12340
|
+
"description": "When the account was created, epoch milliseconds."
|
|
12341
|
+
},
|
|
12342
|
+
"lastSignInAt": {
|
|
12343
|
+
"type": "integer",
|
|
12344
|
+
"format": "int64",
|
|
12345
|
+
"description": "When the person last signed in, epoch milliseconds."
|
|
12346
|
+
},
|
|
12347
|
+
"sessionCount": {
|
|
12348
|
+
"type": "integer",
|
|
12349
|
+
"format": "int32",
|
|
12350
|
+
"description": "Unexpired browser sessions the person holds."
|
|
12351
|
+
},
|
|
12352
|
+
"status": {
|
|
12353
|
+
"allOf": [
|
|
12354
|
+
{
|
|
12355
|
+
"$ref": "#/components/schemas/RemitImap.PersonStatus"
|
|
12356
|
+
}
|
|
12357
|
+
],
|
|
12358
|
+
"description": "Whether the person may sign in."
|
|
12359
|
+
},
|
|
12360
|
+
"isCaller": {
|
|
12361
|
+
"type": "boolean",
|
|
12362
|
+
"description": "Whether this row is the caller."
|
|
12363
|
+
}
|
|
12364
|
+
},
|
|
12365
|
+
"description": "One person who signs in to this self-hosted instance."
|
|
12366
|
+
},
|
|
12367
|
+
"RemitImap.PersonStatus": {
|
|
12368
|
+
"type": "string",
|
|
12369
|
+
"enum": [
|
|
12370
|
+
"Active",
|
|
12371
|
+
"Disabled"
|
|
12372
|
+
],
|
|
12373
|
+
"description": "Whether a person may sign in. A disabled person's sessions, MCP grants and calendar feeds are revoked, and every sign-in is refused."
|
|
12374
|
+
},
|
|
10932
12375
|
"RemitImap.PlacementAction": {
|
|
10933
12376
|
"type": "string",
|
|
10934
12377
|
"enum": [
|
|
@@ -11282,6 +12725,18 @@
|
|
|
11282
12725
|
],
|
|
11283
12726
|
"description": "Trust level for the From address, derived at read time from AddressFlags + counters."
|
|
11284
12727
|
},
|
|
12728
|
+
"RemitImap.SignOutPersonInput": {
|
|
12729
|
+
"type": "object",
|
|
12730
|
+
"required": [
|
|
12731
|
+
"stepUpToken"
|
|
12732
|
+
],
|
|
12733
|
+
"properties": {
|
|
12734
|
+
"stepUpToken": {
|
|
12735
|
+
"type": "string"
|
|
12736
|
+
}
|
|
12737
|
+
},
|
|
12738
|
+
"description": "Sign the person out of every browser session and MCP connection."
|
|
12739
|
+
},
|
|
11285
12740
|
"RemitImap.SortOrder": {
|
|
11286
12741
|
"type": "string",
|
|
11287
12742
|
"enum": [
|
|
@@ -11361,6 +12816,56 @@
|
|
|
11361
12816
|
],
|
|
11362
12817
|
"description": "Gmail-style star colors for message/thread marking"
|
|
11363
12818
|
},
|
|
12819
|
+
"RemitImap.StepUpAction": {
|
|
12820
|
+
"type": "string",
|
|
12821
|
+
"enum": [
|
|
12822
|
+
"SignOut",
|
|
12823
|
+
"Disable",
|
|
12824
|
+
"Enable",
|
|
12825
|
+
"ResetPassword"
|
|
12826
|
+
],
|
|
12827
|
+
"description": "The operation a step-up token is spent on. `updatePerson` maps `Disabled` to `Disable` and `Active` to `Enable`."
|
|
12828
|
+
},
|
|
12829
|
+
"RemitImap.StepUpInput": {
|
|
12830
|
+
"type": "object",
|
|
12831
|
+
"required": [
|
|
12832
|
+
"password",
|
|
12833
|
+
"action",
|
|
12834
|
+
"userId"
|
|
12835
|
+
],
|
|
12836
|
+
"properties": {
|
|
12837
|
+
"password": {
|
|
12838
|
+
"type": "string",
|
|
12839
|
+
"description": "The caller's own current password."
|
|
12840
|
+
},
|
|
12841
|
+
"action": {
|
|
12842
|
+
"$ref": "#/components/schemas/RemitImap.StepUpAction"
|
|
12843
|
+
},
|
|
12844
|
+
"userId": {
|
|
12845
|
+
"type": "string",
|
|
12846
|
+
"description": "The person the token will act on."
|
|
12847
|
+
}
|
|
12848
|
+
},
|
|
12849
|
+
"description": "The caller's current password, and the one action on one person the token will allow."
|
|
12850
|
+
},
|
|
12851
|
+
"RemitImap.StepUpResponse": {
|
|
12852
|
+
"type": "object",
|
|
12853
|
+
"required": [
|
|
12854
|
+
"stepUpToken",
|
|
12855
|
+
"expiresAt"
|
|
12856
|
+
],
|
|
12857
|
+
"properties": {
|
|
12858
|
+
"stepUpToken": {
|
|
12859
|
+
"type": "string"
|
|
12860
|
+
},
|
|
12861
|
+
"expiresAt": {
|
|
12862
|
+
"type": "integer",
|
|
12863
|
+
"format": "int64",
|
|
12864
|
+
"description": "When the token stops working, epoch milliseconds."
|
|
12865
|
+
}
|
|
12866
|
+
},
|
|
12867
|
+
"description": "A single-use token for one action on one person. Spend it at once; it is never stored by the client."
|
|
12868
|
+
},
|
|
11364
12869
|
"RemitImap.SyncPhase": {
|
|
11365
12870
|
"type": "string",
|
|
11366
12871
|
"enum": [
|
|
@@ -12367,6 +13872,29 @@
|
|
|
12367
13872
|
}
|
|
12368
13873
|
],
|
|
12369
13874
|
"description": "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."
|
|
13875
|
+
},
|
|
13876
|
+
"attendees": {
|
|
13877
|
+
"type": "array",
|
|
13878
|
+
"items": {
|
|
13879
|
+
"$ref": "#/components/schemas/RemitImap.CalendarAttendeeInput"
|
|
13880
|
+
},
|
|
13881
|
+
"description": "The whole guest list after the edit. A new guest gets an invitation and a removed one a cancellation. Refused with 400 `not_organizer` on an event the reader does not organize."
|
|
13882
|
+
},
|
|
13883
|
+
"organizerAccountId": {
|
|
13884
|
+
"allOf": [
|
|
13885
|
+
{
|
|
13886
|
+
"$ref": "#/components/schemas/UUID"
|
|
13887
|
+
}
|
|
13888
|
+
],
|
|
13889
|
+
"description": "The account that organizes the event, for an event that names no organizer yet. Refused with 400 `not_organizer` when the event already names a different one: the organizer never changes."
|
|
13890
|
+
},
|
|
13891
|
+
"answer": {
|
|
13892
|
+
"allOf": [
|
|
13893
|
+
{
|
|
13894
|
+
"$ref": "#/components/schemas/RemitImap.CalendarInviteAnswer"
|
|
13895
|
+
}
|
|
13896
|
+
],
|
|
13897
|
+
"description": "The reader's answer as a guest. Writes their PARTSTAT and queues a REPLY to the organizer. `scope` `This` answers one occurrence and `All` the series; `Following` is refused with 400. Refused with 400 `not_a_guest` when the reader organizes the event or is not on its guest list."
|
|
12370
13898
|
}
|
|
12371
13899
|
},
|
|
12372
13900
|
"description": "Input for updating an event. Every field is optional and absence means\nuntouched — a patch that carries only `summary` renames the event and moves\nnothing.\n\nWhat the patch applies to is the `scope` parameter's business: `All` rewrites\nthe master, `This` writes a RECURRENCE-ID override for one occurrence, and\n`Following` splits the series at one occurrence and applies the patch to the\nremainder."
|
|
@@ -12408,6 +13936,31 @@
|
|
|
12408
13936
|
},
|
|
12409
13937
|
"description": "Input for updating a calendar collection. The name, colour and timezone are the mutable overlay, and `subscriptionEnabled` turns a subscribed collection's refresh off and on. `urlSegment` is not among them, because it is the collection's identity and the path a client has bookmarked."
|
|
12410
13938
|
},
|
|
13939
|
+
"RemitImap.UpdateCalendarTaskInput": {
|
|
13940
|
+
"type": "object",
|
|
13941
|
+
"properties": {
|
|
13942
|
+
"summary": {
|
|
13943
|
+
"$ref": "#/components/schemas/String512"
|
|
13944
|
+
},
|
|
13945
|
+
"description": {
|
|
13946
|
+
"$ref": "#/components/schemas/String2048"
|
|
13947
|
+
},
|
|
13948
|
+
"due": {
|
|
13949
|
+
"$ref": "#/components/schemas/String64"
|
|
13950
|
+
},
|
|
13951
|
+
"allDay": {
|
|
13952
|
+
"type": "boolean"
|
|
13953
|
+
},
|
|
13954
|
+
"timeZone": {
|
|
13955
|
+
"$ref": "#/components/schemas/String64"
|
|
13956
|
+
},
|
|
13957
|
+
"completed": {
|
|
13958
|
+
"type": "boolean",
|
|
13959
|
+
"description": "Marks the task done (`STATUS:COMPLETED`) or not done again (`STATUS:NEEDS-ACTION`)"
|
|
13960
|
+
}
|
|
13961
|
+
},
|
|
13962
|
+
"description": "Input for updating a task. Every field is optional and absence means untouched."
|
|
13963
|
+
},
|
|
12411
13964
|
"RemitImap.UpdateFilterInput": {
|
|
12412
13965
|
"type": "object",
|
|
12413
13966
|
"properties": {
|
|
@@ -12608,6 +14161,57 @@
|
|
|
12608
14161
|
},
|
|
12609
14162
|
"description": "Input for updating a draft outbox message"
|
|
12610
14163
|
},
|
|
14164
|
+
"RemitImap.UpdatePersonInput": {
|
|
14165
|
+
"type": "object",
|
|
14166
|
+
"required": [
|
|
14167
|
+
"status",
|
|
14168
|
+
"stepUpToken"
|
|
14169
|
+
],
|
|
14170
|
+
"properties": {
|
|
14171
|
+
"status": {
|
|
14172
|
+
"$ref": "#/components/schemas/RemitImap.PersonStatus"
|
|
14173
|
+
},
|
|
14174
|
+
"stepUpToken": {
|
|
14175
|
+
"type": "string"
|
|
14176
|
+
}
|
|
14177
|
+
},
|
|
14178
|
+
"description": "Disable or enable the person. Disabling also revokes their sessions, MCP grants and calendar feeds."
|
|
14179
|
+
},
|
|
14180
|
+
"RemitImap.UpdateUserSettingsInput": {
|
|
14181
|
+
"type": "object",
|
|
14182
|
+
"properties": {
|
|
14183
|
+
"defaultInvitationSenderAccountId": {
|
|
14184
|
+
"allOf": [
|
|
14185
|
+
{
|
|
14186
|
+
"$ref": "#/components/schemas/UUID"
|
|
14187
|
+
}
|
|
14188
|
+
],
|
|
14189
|
+
"description": "The account invitations go out from by default. Refused with 400 `unknown_sender` when it is not an account of the caller's account config that sends mail. Cleared with `clearDefaultInvitationSender`."
|
|
14190
|
+
}
|
|
14191
|
+
},
|
|
14192
|
+
"description": "A change to the caller's settings. Every field is optional and absence means untouched."
|
|
14193
|
+
},
|
|
14194
|
+
"RemitImap.UserSettingsResponse": {
|
|
14195
|
+
"type": "object",
|
|
14196
|
+
"required": [
|
|
14197
|
+
"defaultInvitationSenderChosen"
|
|
14198
|
+
],
|
|
14199
|
+
"properties": {
|
|
14200
|
+
"defaultInvitationSenderAccountId": {
|
|
14201
|
+
"allOf": [
|
|
14202
|
+
{
|
|
14203
|
+
"$ref": "#/components/schemas/UUID"
|
|
14204
|
+
}
|
|
14205
|
+
],
|
|
14206
|
+
"description": "The account calendar invitations, updates and cancellations go out from unless the event editor picks another: the one the reader chose while it still sends mail, otherwise the account an event is on — for a new event, the first account of the account config that sends mail, since a calendar belongs to the account config rather than to one account. Absent only when no account sends mail."
|
|
14207
|
+
},
|
|
14208
|
+
"defaultInvitationSenderChosen": {
|
|
14209
|
+
"type": "boolean",
|
|
14210
|
+
"description": "Whether `defaultInvitationSenderAccountId` is the reader's own choice rather than the account an event is on."
|
|
14211
|
+
}
|
|
14212
|
+
},
|
|
14213
|
+
"description": "The caller's own settings: choices that belong to the person rather than to\none mail account. Each field is stored as an `AccountSetting` row of the\naccount config and read back here, so a setting added later is one more\nfield on this resource rather than one more operation."
|
|
14214
|
+
},
|
|
12611
14215
|
"RemitImap.VipFlag": {
|
|
12612
14216
|
"type": "object",
|
|
12613
14217
|
"required": [
|