@remit/api-openapi-spec 0.0.40 → 0.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/openapi.json +301 -1
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -2323,6 +2323,133 @@
|
|
|
2323
2323
|
}
|
|
2324
2324
|
}
|
|
2325
2325
|
},
|
|
2326
|
+
"/calendars/{calendarId}/feed": {
|
|
2327
|
+
"get": {
|
|
2328
|
+
"operationId": "CalendarDetailOperations_getCalendarFeed",
|
|
2329
|
+
"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.",
|
|
2330
|
+
"parameters": [
|
|
2331
|
+
{
|
|
2332
|
+
"name": "calendarId",
|
|
2333
|
+
"in": "path",
|
|
2334
|
+
"required": true,
|
|
2335
|
+
"schema": {
|
|
2336
|
+
"$ref": "#/components/schemas/UUID"
|
|
2337
|
+
}
|
|
2338
|
+
}
|
|
2339
|
+
],
|
|
2340
|
+
"responses": {
|
|
2341
|
+
"200": {
|
|
2342
|
+
"description": "The request has succeeded.",
|
|
2343
|
+
"content": {
|
|
2344
|
+
"application/json": {
|
|
2345
|
+
"schema": {
|
|
2346
|
+
"$ref": "#/components/schemas/RemitImap.CalendarFeedStateResponse"
|
|
2347
|
+
}
|
|
2348
|
+
}
|
|
2349
|
+
}
|
|
2350
|
+
},
|
|
2351
|
+
"404": {
|
|
2352
|
+
"description": "Not found error response",
|
|
2353
|
+
"content": {
|
|
2354
|
+
"application/json": {
|
|
2355
|
+
"schema": {
|
|
2356
|
+
"$ref": "#/components/schemas/ApiError"
|
|
2357
|
+
}
|
|
2358
|
+
}
|
|
2359
|
+
}
|
|
2360
|
+
}
|
|
2361
|
+
},
|
|
2362
|
+
"x-amazon-apigateway-integration": {
|
|
2363
|
+
"type": "aws_proxy",
|
|
2364
|
+
"httpMethod": "POST",
|
|
2365
|
+
"passthroughBehavior": "when_no_match",
|
|
2366
|
+
"uri": {
|
|
2367
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
2368
|
+
}
|
|
2369
|
+
}
|
|
2370
|
+
},
|
|
2371
|
+
"put": {
|
|
2372
|
+
"operationId": "CalendarDetailOperations_putCalendarFeed",
|
|
2373
|
+
"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.",
|
|
2374
|
+
"parameters": [
|
|
2375
|
+
{
|
|
2376
|
+
"name": "calendarId",
|
|
2377
|
+
"in": "path",
|
|
2378
|
+
"required": true,
|
|
2379
|
+
"schema": {
|
|
2380
|
+
"$ref": "#/components/schemas/UUID"
|
|
2381
|
+
}
|
|
2382
|
+
}
|
|
2383
|
+
],
|
|
2384
|
+
"responses": {
|
|
2385
|
+
"200": {
|
|
2386
|
+
"description": "The request has succeeded.",
|
|
2387
|
+
"content": {
|
|
2388
|
+
"application/json": {
|
|
2389
|
+
"schema": {
|
|
2390
|
+
"$ref": "#/components/schemas/RemitImap.CalendarFeedResponse"
|
|
2391
|
+
}
|
|
2392
|
+
}
|
|
2393
|
+
}
|
|
2394
|
+
},
|
|
2395
|
+
"404": {
|
|
2396
|
+
"description": "Not found error response",
|
|
2397
|
+
"content": {
|
|
2398
|
+
"application/json": {
|
|
2399
|
+
"schema": {
|
|
2400
|
+
"$ref": "#/components/schemas/ApiError"
|
|
2401
|
+
}
|
|
2402
|
+
}
|
|
2403
|
+
}
|
|
2404
|
+
}
|
|
2405
|
+
},
|
|
2406
|
+
"x-amazon-apigateway-integration": {
|
|
2407
|
+
"type": "aws_proxy",
|
|
2408
|
+
"httpMethod": "POST",
|
|
2409
|
+
"passthroughBehavior": "when_no_match",
|
|
2410
|
+
"uri": {
|
|
2411
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
2412
|
+
}
|
|
2413
|
+
}
|
|
2414
|
+
},
|
|
2415
|
+
"delete": {
|
|
2416
|
+
"operationId": "CalendarDetailOperations_revokeCalendarFeed",
|
|
2417
|
+
"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.",
|
|
2418
|
+
"parameters": [
|
|
2419
|
+
{
|
|
2420
|
+
"name": "calendarId",
|
|
2421
|
+
"in": "path",
|
|
2422
|
+
"required": true,
|
|
2423
|
+
"schema": {
|
|
2424
|
+
"$ref": "#/components/schemas/UUID"
|
|
2425
|
+
}
|
|
2426
|
+
}
|
|
2427
|
+
],
|
|
2428
|
+
"responses": {
|
|
2429
|
+
"204": {
|
|
2430
|
+
"description": "Nothing to return. The resource, or the occurrence, is gone."
|
|
2431
|
+
},
|
|
2432
|
+
"404": {
|
|
2433
|
+
"description": "Not found error response",
|
|
2434
|
+
"content": {
|
|
2435
|
+
"application/json": {
|
|
2436
|
+
"schema": {
|
|
2437
|
+
"$ref": "#/components/schemas/ApiError"
|
|
2438
|
+
}
|
|
2439
|
+
}
|
|
2440
|
+
}
|
|
2441
|
+
}
|
|
2442
|
+
},
|
|
2443
|
+
"x-amazon-apigateway-integration": {
|
|
2444
|
+
"type": "aws_proxy",
|
|
2445
|
+
"httpMethod": "POST",
|
|
2446
|
+
"passthroughBehavior": "when_no_match",
|
|
2447
|
+
"uri": {
|
|
2448
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
2449
|
+
}
|
|
2450
|
+
}
|
|
2451
|
+
}
|
|
2452
|
+
},
|
|
2326
2453
|
"/config": {
|
|
2327
2454
|
"get": {
|
|
2328
2455
|
"operationId": "ConfigOperations_getConfig",
|
|
@@ -2434,6 +2561,107 @@
|
|
|
2434
2561
|
}
|
|
2435
2562
|
}
|
|
2436
2563
|
},
|
|
2564
|
+
"/feeds/calendar/{feedToken}.ics": {
|
|
2565
|
+
"get": {
|
|
2566
|
+
"operationId": "CalendarFeedOperations_getCalendarFeedIcal",
|
|
2567
|
+
"description": "Serve a calendar as iCalendar text to whoever holds its secret address\n(issue #1067).\n\nOutside the session-auth surface on purpose: Apple Calendar, Google\nCalendar, Outlook and Thunderbird subscribe to a URL and never sign in,\nso the token in the path is the credential and the only one. It is\ncompared against the stored hash rather than looked up in the clear, and\nan unknown, revoked or malformed token is the same 404 with the same body\n— a subscriber learns whether it still has access, and nothing else.",
|
|
2568
|
+
"parameters": [
|
|
2569
|
+
{
|
|
2570
|
+
"name": "feedToken",
|
|
2571
|
+
"in": "path",
|
|
2572
|
+
"required": true,
|
|
2573
|
+
"description": "The calendar's secret token, base64url. Unconstrained on purpose: a length or pattern here answers an oversize or malformed address with a distinguishable 400, and error-logs the path it was refused for. The handler checks the shape itself and answers the same 404 an unknown token gets.",
|
|
2574
|
+
"schema": {
|
|
2575
|
+
"type": "string"
|
|
2576
|
+
}
|
|
2577
|
+
},
|
|
2578
|
+
{
|
|
2579
|
+
"name": "If-None-Match",
|
|
2580
|
+
"in": "header",
|
|
2581
|
+
"required": false,
|
|
2582
|
+
"schema": {
|
|
2583
|
+
"type": "string"
|
|
2584
|
+
}
|
|
2585
|
+
},
|
|
2586
|
+
{
|
|
2587
|
+
"name": "If-Modified-Since",
|
|
2588
|
+
"in": "header",
|
|
2589
|
+
"required": false,
|
|
2590
|
+
"description": "HTTP-date a subscriber last saw the calendar at. Ignored when `If-None-Match` also arrives (RFC 9110 13.2.2), and compared at whole seconds, which is the resolution the `Last-Modified` it came from has.",
|
|
2591
|
+
"schema": {
|
|
2592
|
+
"type": "string"
|
|
2593
|
+
}
|
|
2594
|
+
}
|
|
2595
|
+
],
|
|
2596
|
+
"responses": {
|
|
2597
|
+
"200": {
|
|
2598
|
+
"description": "A whole calendar as iCalendar text, for a client that subscribed to the\nsecret address.\n\nRecurring events are the stored masters with their RRULE, not an expansion:\na subscriber renders its own occurrences and expects to keep doing so\nindefinitely, and an expansion would silently end at whatever horizon this\nserver chose.\n\nThe calendar's name travels as the `X-WR-CALNAME` property inside the\nVCALENDAR, which is where Apple Calendar, Google Calendar and Thunderbird\nread it from.",
|
|
2599
|
+
"headers": {
|
|
2600
|
+
"ETag": {
|
|
2601
|
+
"required": true,
|
|
2602
|
+
"description": "Strong entity tag over the bytes being served. A subscriber polls often and sends it back as `If-None-Match`.",
|
|
2603
|
+
"schema": {
|
|
2604
|
+
"type": "string"
|
|
2605
|
+
}
|
|
2606
|
+
},
|
|
2607
|
+
"Last-Modified": {
|
|
2608
|
+
"required": true,
|
|
2609
|
+
"description": "HTTP-date the collection was last written, which is stamped by every event write and every event delete. The collection's own timestamp rather than its newest event: deleting the newest event leaves every survivor older than the change, and a validator that moved backwards would tell a subscriber its stale copy is current.",
|
|
2610
|
+
"schema": {
|
|
2611
|
+
"type": "string"
|
|
2612
|
+
}
|
|
2613
|
+
}
|
|
2614
|
+
},
|
|
2615
|
+
"content": {
|
|
2616
|
+
"text/calendar; charset=utf-8": {
|
|
2617
|
+
"schema": {
|
|
2618
|
+
"type": "string"
|
|
2619
|
+
}
|
|
2620
|
+
}
|
|
2621
|
+
}
|
|
2622
|
+
},
|
|
2623
|
+
"304": {
|
|
2624
|
+
"description": "The subscriber already holds these bytes. Answered when `If-None-Match` carries the tag the feed would serve, or when `If-Modified-Since` is not older than the calendar's last change.",
|
|
2625
|
+
"headers": {
|
|
2626
|
+
"ETag": {
|
|
2627
|
+
"required": true,
|
|
2628
|
+
"schema": {
|
|
2629
|
+
"type": "string"
|
|
2630
|
+
}
|
|
2631
|
+
},
|
|
2632
|
+
"Last-Modified": {
|
|
2633
|
+
"required": true,
|
|
2634
|
+
"description": "The same validator a 200 would have carried, so a subscriber that polls by date can keep doing so",
|
|
2635
|
+
"schema": {
|
|
2636
|
+
"type": "string"
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2639
|
+
}
|
|
2640
|
+
},
|
|
2641
|
+
"404": {
|
|
2642
|
+
"description": "No feed answers to this address. Unknown, revoked and malformed tokens are one answer with one body, so a caller learns nothing about which of the three it sent.",
|
|
2643
|
+
"content": {
|
|
2644
|
+
"text/plain; charset=utf-8": {
|
|
2645
|
+
"schema": {
|
|
2646
|
+
"type": "string"
|
|
2647
|
+
}
|
|
2648
|
+
}
|
|
2649
|
+
}
|
|
2650
|
+
}
|
|
2651
|
+
},
|
|
2652
|
+
"security": [
|
|
2653
|
+
{}
|
|
2654
|
+
],
|
|
2655
|
+
"x-amazon-apigateway-integration": {
|
|
2656
|
+
"type": "aws_proxy",
|
|
2657
|
+
"httpMethod": "POST",
|
|
2658
|
+
"passthroughBehavior": "when_no_match",
|
|
2659
|
+
"uri": {
|
|
2660
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
2661
|
+
}
|
|
2662
|
+
}
|
|
2663
|
+
}
|
|
2664
|
+
},
|
|
2437
2665
|
"/mailboxes/{mailboxId}/threads": {
|
|
2438
2666
|
"get": {
|
|
2439
2667
|
"operationId": "ThreadOperations_listThreads",
|
|
@@ -5343,6 +5571,73 @@
|
|
|
5343
5571
|
],
|
|
5344
5572
|
"description": "Projection of a VEVENT's STATUS property (RFC 5545 3.8.1.11). A VEVENT with no STATUS projects as `Confirmed`, which is the value RFC 5545 gives an event whose status is unstated."
|
|
5345
5573
|
},
|
|
5574
|
+
"RemitImap.CalendarFeedResponse": {
|
|
5575
|
+
"type": "object",
|
|
5576
|
+
"required": [
|
|
5577
|
+
"calendarId",
|
|
5578
|
+
"feedToken",
|
|
5579
|
+
"createdAt",
|
|
5580
|
+
"rotatedAt"
|
|
5581
|
+
],
|
|
5582
|
+
"properties": {
|
|
5583
|
+
"calendarId": {
|
|
5584
|
+
"allOf": [
|
|
5585
|
+
{
|
|
5586
|
+
"$ref": "#/components/schemas/UUID"
|
|
5587
|
+
}
|
|
5588
|
+
],
|
|
5589
|
+
"description": "Collection this address serves"
|
|
5590
|
+
},
|
|
5591
|
+
"feedToken": {
|
|
5592
|
+
"allOf": [
|
|
5593
|
+
{
|
|
5594
|
+
"$ref": "#/components/schemas/String512"
|
|
5595
|
+
}
|
|
5596
|
+
],
|
|
5597
|
+
"description": "The token itself, base64url over 32 random bytes. It is the whole credential: the path `/feeds/calendar/{feedToken}.ics` needs nothing else, which is what lets a client that cannot sign in subscribe."
|
|
5598
|
+
},
|
|
5599
|
+
"createdAt": {
|
|
5600
|
+
"type": "integer",
|
|
5601
|
+
"format": "int64",
|
|
5602
|
+
"description": "When this calendar first got a feed address"
|
|
5603
|
+
},
|
|
5604
|
+
"rotatedAt": {
|
|
5605
|
+
"type": "integer",
|
|
5606
|
+
"format": "int64",
|
|
5607
|
+
"description": "When the token was last replaced. `0` means it is still the first one."
|
|
5608
|
+
}
|
|
5609
|
+
},
|
|
5610
|
+
"description": "A calendar's secret subscription address, with the token in the clear.\n\nReturned by the write that mints it and nowhere else. Only the hash is\nstored, so a client that loses this value rotates the feed rather than\nreading it back — which is also what makes the read side safe to leave\ntokenless."
|
|
5611
|
+
},
|
|
5612
|
+
"RemitImap.CalendarFeedStateResponse": {
|
|
5613
|
+
"type": "object",
|
|
5614
|
+
"required": [
|
|
5615
|
+
"calendarId",
|
|
5616
|
+
"createdAt",
|
|
5617
|
+
"rotatedAt"
|
|
5618
|
+
],
|
|
5619
|
+
"properties": {
|
|
5620
|
+
"calendarId": {
|
|
5621
|
+
"allOf": [
|
|
5622
|
+
{
|
|
5623
|
+
"$ref": "#/components/schemas/UUID"
|
|
5624
|
+
}
|
|
5625
|
+
],
|
|
5626
|
+
"description": "Collection this address serves"
|
|
5627
|
+
},
|
|
5628
|
+
"createdAt": {
|
|
5629
|
+
"type": "integer",
|
|
5630
|
+
"format": "int64",
|
|
5631
|
+
"description": "When this calendar first got a feed address"
|
|
5632
|
+
},
|
|
5633
|
+
"rotatedAt": {
|
|
5634
|
+
"type": "integer",
|
|
5635
|
+
"format": "int64",
|
|
5636
|
+
"description": "When the token was last replaced. `0` means it is still the first one."
|
|
5637
|
+
}
|
|
5638
|
+
},
|
|
5639
|
+
"description": "Whether a calendar has a feed address, and how old it is. The token is deliberately absent — it exists in the clear once, in the answer to the write that minted it."
|
|
5640
|
+
},
|
|
5346
5641
|
"RemitImap.CalendarFreeBusyResponse": {
|
|
5347
5642
|
"type": "object",
|
|
5348
5643
|
"required": [
|
|
@@ -5795,7 +6090,8 @@
|
|
|
5795
6090
|
"type": "object",
|
|
5796
6091
|
"required": [
|
|
5797
6092
|
"accountConfig",
|
|
5798
|
-
"accounts"
|
|
6093
|
+
"accounts",
|
|
6094
|
+
"semanticSearchEnabled"
|
|
5799
6095
|
],
|
|
5800
6096
|
"properties": {
|
|
5801
6097
|
"accountConfig": {
|
|
@@ -5820,6 +6116,10 @@
|
|
|
5820
6116
|
}
|
|
5821
6117
|
],
|
|
5822
6118
|
"description": "Absent unless a configuration import is still waiting on folders IMAP has not produced yet (#1021). Nothing polls a separate route for it."
|
|
6119
|
+
},
|
|
6120
|
+
"semanticSearchEnabled": {
|
|
6121
|
+
"type": "boolean",
|
|
6122
|
+
"description": "Whether this instance stores a vector for every message — SEARCH_EMBEDDING_PROVIDER is anything but `off`. False is a setting an operator turns on (`remit semantic on`), not a failure: the Organize semantic widen and semantic (anchor) filters read stored vectors and have none, so they render an off state rather than an empty result. It rides the config read because it is a property of the deployment, not of a query (#1068)."
|
|
5823
6123
|
}
|
|
5824
6124
|
},
|
|
5825
6125
|
"description": "Full configuration description including accounts"
|