@remit/api-openapi-spec 0.0.97 → 0.0.99
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 +457 -18
- package/package.json +1 -1
- package/request-validators.mjs +5 -4
package/openapi.json
CHANGED
|
@@ -3969,6 +3969,63 @@
|
|
|
3969
3969
|
}
|
|
3970
3970
|
}
|
|
3971
3971
|
},
|
|
3972
|
+
"/classification-stats": {
|
|
3973
|
+
"get": {
|
|
3974
|
+
"operationId": "ClassificationStatsOperations_getClassificationStats",
|
|
3975
|
+
"description": "Count what the classifier decided for mail that arrived on or after `since`, and how often the reader corrected it. Refused with 400 when `since` is not an ISO 8601 date-time with zone offset.",
|
|
3976
|
+
"parameters": [
|
|
3977
|
+
{
|
|
3978
|
+
"name": "since",
|
|
3979
|
+
"in": "query",
|
|
3980
|
+
"required": true,
|
|
3981
|
+
"description": "Start of the window, an ISO 8601 date-time with zone offset. Inclusive.",
|
|
3982
|
+
"schema": {
|
|
3983
|
+
"type": "string"
|
|
3984
|
+
}
|
|
3985
|
+
}
|
|
3986
|
+
],
|
|
3987
|
+
"responses": {
|
|
3988
|
+
"200": {
|
|
3989
|
+
"description": "The request has succeeded.",
|
|
3990
|
+
"content": {
|
|
3991
|
+
"application/json": {
|
|
3992
|
+
"schema": {
|
|
3993
|
+
"$ref": "#/components/schemas/RemitImap.ClassifierStats"
|
|
3994
|
+
}
|
|
3995
|
+
}
|
|
3996
|
+
}
|
|
3997
|
+
},
|
|
3998
|
+
"400": {
|
|
3999
|
+
"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.",
|
|
4000
|
+
"content": {
|
|
4001
|
+
"application/json": {
|
|
4002
|
+
"schema": {
|
|
4003
|
+
"$ref": "#/components/schemas/ValidationError"
|
|
4004
|
+
}
|
|
4005
|
+
}
|
|
4006
|
+
}
|
|
4007
|
+
},
|
|
4008
|
+
"401": {
|
|
4009
|
+
"description": "The request carried no usable credential. `code` is `unauthorized`.",
|
|
4010
|
+
"content": {
|
|
4011
|
+
"application/json": {
|
|
4012
|
+
"schema": {
|
|
4013
|
+
"$ref": "#/components/schemas/ApiError"
|
|
4014
|
+
}
|
|
4015
|
+
}
|
|
4016
|
+
}
|
|
4017
|
+
}
|
|
4018
|
+
},
|
|
4019
|
+
"x-amazon-apigateway-integration": {
|
|
4020
|
+
"type": "aws_proxy",
|
|
4021
|
+
"httpMethod": "POST",
|
|
4022
|
+
"passthroughBehavior": "when_no_match",
|
|
4023
|
+
"uri": {
|
|
4024
|
+
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:{{HandlerFunctionName}}/invocations"
|
|
4025
|
+
}
|
|
4026
|
+
}
|
|
4027
|
+
}
|
|
4028
|
+
},
|
|
3972
4029
|
"/config": {
|
|
3973
4030
|
"get": {
|
|
3974
4031
|
"operationId": "ConfigOperations_getConfig",
|
|
@@ -9574,7 +9631,8 @@
|
|
|
9574
9631
|
"Marketing",
|
|
9575
9632
|
"Automated",
|
|
9576
9633
|
"Transactional",
|
|
9577
|
-
"Social"
|
|
9634
|
+
"Social",
|
|
9635
|
+
"ColdOutreach"
|
|
9578
9636
|
],
|
|
9579
9637
|
"description": "A label a classification provider picks for a message: the junk verdicts, priority, and the message categories."
|
|
9580
9638
|
},
|
|
@@ -9950,6 +10008,99 @@
|
|
|
9950
10008
|
],
|
|
9951
10009
|
"description": "Where a classification setting's value comes from."
|
|
9952
10010
|
},
|
|
10011
|
+
"RemitImap.ClassifierCategoryCount": {
|
|
10012
|
+
"type": "object",
|
|
10013
|
+
"required": [
|
|
10014
|
+
"category",
|
|
10015
|
+
"count"
|
|
10016
|
+
],
|
|
10017
|
+
"properties": {
|
|
10018
|
+
"category": {
|
|
10019
|
+
"$ref": "#/components/schemas/RemitImap.MessageCategory"
|
|
10020
|
+
},
|
|
10021
|
+
"count": {
|
|
10022
|
+
"type": "integer",
|
|
10023
|
+
"format": "int32"
|
|
10024
|
+
}
|
|
10025
|
+
},
|
|
10026
|
+
"description": "Examined messages in one category."
|
|
10027
|
+
},
|
|
10028
|
+
"RemitImap.ClassifierCorrections": {
|
|
10029
|
+
"type": "object",
|
|
10030
|
+
"required": [
|
|
10031
|
+
"spamReportedNotJunk",
|
|
10032
|
+
"categoryOverridden"
|
|
10033
|
+
],
|
|
10034
|
+
"properties": {
|
|
10035
|
+
"spamReportedNotJunk": {
|
|
10036
|
+
"type": "integer",
|
|
10037
|
+
"format": "int32",
|
|
10038
|
+
"description": "Messages the reader reported as spam whose stored scores held no confident `Spam` or `Phishing` score."
|
|
10039
|
+
},
|
|
10040
|
+
"categoryOverridden": {
|
|
10041
|
+
"type": "integer",
|
|
10042
|
+
"format": "int32",
|
|
10043
|
+
"description": "Senders whose `Address.flags.category` override was set on or after `since`."
|
|
10044
|
+
}
|
|
10045
|
+
},
|
|
10046
|
+
"description": "Times the reader disagreed with the classifier since `since`."
|
|
10047
|
+
},
|
|
10048
|
+
"RemitImap.ClassifierLabelCount": {
|
|
10049
|
+
"type": "object",
|
|
10050
|
+
"required": [
|
|
10051
|
+
"label",
|
|
10052
|
+
"count"
|
|
10053
|
+
],
|
|
10054
|
+
"properties": {
|
|
10055
|
+
"label": {
|
|
10056
|
+
"$ref": "#/components/schemas/RemitImap.ClassificationLabel"
|
|
10057
|
+
},
|
|
10058
|
+
"count": {
|
|
10059
|
+
"type": "integer",
|
|
10060
|
+
"format": "int32"
|
|
10061
|
+
}
|
|
10062
|
+
},
|
|
10063
|
+
"description": "Confident scores for one label."
|
|
10064
|
+
},
|
|
10065
|
+
"RemitImap.ClassifierStats": {
|
|
10066
|
+
"type": "object",
|
|
10067
|
+
"required": [
|
|
10068
|
+
"since",
|
|
10069
|
+
"examined",
|
|
10070
|
+
"byCategory",
|
|
10071
|
+
"byLabel",
|
|
10072
|
+
"corrections"
|
|
10073
|
+
],
|
|
10074
|
+
"properties": {
|
|
10075
|
+
"since": {
|
|
10076
|
+
"type": "string",
|
|
10077
|
+
"description": "The start of the window, as the request gave it: an ISO 8601 date-time with zone offset."
|
|
10078
|
+
},
|
|
10079
|
+
"examined": {
|
|
10080
|
+
"type": "integer",
|
|
10081
|
+
"format": "int32",
|
|
10082
|
+
"description": "Messages that arrived on or after `since` whose body sync classified them."
|
|
10083
|
+
},
|
|
10084
|
+
"byCategory": {
|
|
10085
|
+
"type": "array",
|
|
10086
|
+
"items": {
|
|
10087
|
+
"$ref": "#/components/schemas/RemitImap.ClassifierCategoryCount"
|
|
10088
|
+
},
|
|
10089
|
+
"description": "Examined messages per category; a category with none is absent."
|
|
10090
|
+
},
|
|
10091
|
+
"byLabel": {
|
|
10092
|
+
"type": "array",
|
|
10093
|
+
"items": {
|
|
10094
|
+
"$ref": "#/components/schemas/RemitImap.ClassifierLabelCount"
|
|
10095
|
+
},
|
|
10096
|
+
"description": "Confident scores per label, over the examined messages; a label with none is absent."
|
|
10097
|
+
},
|
|
10098
|
+
"corrections": {
|
|
10099
|
+
"$ref": "#/components/schemas/RemitImap.ClassifierCorrections"
|
|
10100
|
+
}
|
|
10101
|
+
},
|
|
10102
|
+
"description": "The classifier's distribution and corrections over mail that arrived on or after `since`, across every account the caller holds."
|
|
10103
|
+
},
|
|
9953
10104
|
"RemitImap.ConfigDescriptionResponse": {
|
|
9954
10105
|
"type": "object",
|
|
9955
10106
|
"required": [
|
|
@@ -10494,7 +10645,6 @@
|
|
|
10494
10645
|
"name",
|
|
10495
10646
|
"scope",
|
|
10496
10647
|
"matchOperator",
|
|
10497
|
-
"literalClauses",
|
|
10498
10648
|
"actionLabelId",
|
|
10499
10649
|
"actionMailboxId"
|
|
10500
10650
|
],
|
|
@@ -10528,14 +10678,6 @@
|
|
|
10528
10678
|
"description": "How literalClauses combine.",
|
|
10529
10679
|
"default": "And"
|
|
10530
10680
|
},
|
|
10531
|
-
"literalClauses": {
|
|
10532
|
-
"type": "array",
|
|
10533
|
-
"items": {
|
|
10534
|
-
"$ref": "#/components/schemas/RemitImap.FilterClause"
|
|
10535
|
-
},
|
|
10536
|
-
"minItems": 1,
|
|
10537
|
-
"description": "Literal from/subject/has-words predicate clauses (RFC 031). A filter carries at least one."
|
|
10538
|
-
},
|
|
10539
10681
|
"actionLabelId": {
|
|
10540
10682
|
"type": "string",
|
|
10541
10683
|
"description": "Label applied when this filter matches — additive action, any number of filters can independently apply their own label (RFC 034 Decision 3.1). The named sentinel `\"None\"` means no label action; never an empty/optional field.",
|
|
@@ -10545,6 +10687,30 @@
|
|
|
10545
10687
|
"type": "string",
|
|
10546
10688
|
"description": "Mailbox matched messages are moved into — exclusive action, since a message lives in exactly one mailbox (RFC 034 Decision 3.1). On conflict between filters, the one with the latest actionChangedAt wins. `\"None\"` means no move action.",
|
|
10547
10689
|
"default": "None"
|
|
10690
|
+
},
|
|
10691
|
+
"priority": {
|
|
10692
|
+
"type": "integer",
|
|
10693
|
+
"format": "int32",
|
|
10694
|
+
"description": "Evaluation order (RFC 040). Lower runs first. Defaults to 0."
|
|
10695
|
+
},
|
|
10696
|
+
"stop": {
|
|
10697
|
+
"type": "boolean",
|
|
10698
|
+
"description": "When set, a match ends evaluation for that message after this filter's own actions (RFC 040, Sieve `stop`). Defaults to false."
|
|
10699
|
+
},
|
|
10700
|
+
"literalClauses": {
|
|
10701
|
+
"type": "array",
|
|
10702
|
+
"items": {
|
|
10703
|
+
"$ref": "#/components/schemas/RemitImap.FilterClause"
|
|
10704
|
+
},
|
|
10705
|
+
"description": "Literal clauses combined by matchOperator. Send these or rule, never both."
|
|
10706
|
+
},
|
|
10707
|
+
"rule": {
|
|
10708
|
+
"allOf": [
|
|
10709
|
+
{
|
|
10710
|
+
"$ref": "#/components/schemas/RemitImap.FilterRuleV1"
|
|
10711
|
+
}
|
|
10712
|
+
],
|
|
10713
|
+
"description": "The rule as a test tree (RFC 040). Send this or literalClauses, never both. The server caps a rule at 50 leaves and 5 levels."
|
|
10548
10714
|
}
|
|
10549
10715
|
},
|
|
10550
10716
|
"description": "Input for creating a filter (RFC 034). `ttl` is omitted — it is derived\nserver-side from `expiresAt` when `scope` is `Temporary` (RFC 034 Decision\n1.3), never client-supplied. `state`, `ruleChangedAt`, and `filterId` are\nall server-derived and excluded by their Read-only visibility."
|
|
@@ -10562,10 +10728,13 @@
|
|
|
10562
10728
|
"actionChangedAt",
|
|
10563
10729
|
"matchOperator",
|
|
10564
10730
|
"literalClauses",
|
|
10731
|
+
"priority",
|
|
10732
|
+
"stop",
|
|
10565
10733
|
"actionLabelId",
|
|
10566
10734
|
"actionMailboxId",
|
|
10567
10735
|
"createdAt",
|
|
10568
10736
|
"updatedAt",
|
|
10737
|
+
"rule",
|
|
10569
10738
|
"organizeJobId"
|
|
10570
10739
|
],
|
|
10571
10740
|
"properties": {
|
|
@@ -10652,8 +10821,18 @@
|
|
|
10652
10821
|
"items": {
|
|
10653
10822
|
"$ref": "#/components/schemas/RemitImap.FilterClause"
|
|
10654
10823
|
},
|
|
10655
|
-
"
|
|
10656
|
-
|
|
10824
|
+
"description": "Literal from/subject/has-words predicate clauses (RFC 031). Empty when the rule is not leaves under one allof or anyof."
|
|
10825
|
+
},
|
|
10826
|
+
"priority": {
|
|
10827
|
+
"type": "integer",
|
|
10828
|
+
"format": "int32",
|
|
10829
|
+
"description": "Evaluation order (RFC 040). Lower runs first; ties go to the newest actionChangedAt, then to filterId. The first move a message reaches wins.",
|
|
10830
|
+
"default": 0
|
|
10831
|
+
},
|
|
10832
|
+
"stop": {
|
|
10833
|
+
"type": "boolean",
|
|
10834
|
+
"description": "When set, a match ends evaluation for that message after this filter's own actions (RFC 040, Sieve `stop`).",
|
|
10835
|
+
"default": false
|
|
10657
10836
|
},
|
|
10658
10837
|
"actionLabelId": {
|
|
10659
10838
|
"type": "string",
|
|
@@ -10675,6 +10854,14 @@
|
|
|
10675
10854
|
"format": "int64",
|
|
10676
10855
|
"readOnly": true
|
|
10677
10856
|
},
|
|
10857
|
+
"rule": {
|
|
10858
|
+
"allOf": [
|
|
10859
|
+
{
|
|
10860
|
+
"$ref": "#/components/schemas/RemitImap.FilterRuleV1"
|
|
10861
|
+
}
|
|
10862
|
+
],
|
|
10863
|
+
"description": "The rule as a test tree (RFC 040). literalClauses mirrors it when it is leaves under one allof or anyof, and is empty otherwise."
|
|
10864
|
+
},
|
|
10678
10865
|
"organizeJobId": {
|
|
10679
10866
|
"type": "string",
|
|
10680
10867
|
"description": "The organize job queued to run the new filter over the inbox. Poll GET /accounts/{accountId}/organize/{organizeJobId}; a filter with nothing to run reports Failed with the reason."
|
|
@@ -11141,6 +11328,81 @@
|
|
|
11141
11328
|
},
|
|
11142
11329
|
"description": "Message envelope (header metadata)"
|
|
11143
11330
|
},
|
|
11331
|
+
"RemitImap.FilterAddressTest": {
|
|
11332
|
+
"type": "object",
|
|
11333
|
+
"required": [
|
|
11334
|
+
"test",
|
|
11335
|
+
"match",
|
|
11336
|
+
"part",
|
|
11337
|
+
"key"
|
|
11338
|
+
],
|
|
11339
|
+
"properties": {
|
|
11340
|
+
"test": {
|
|
11341
|
+
"type": "string",
|
|
11342
|
+
"enum": [
|
|
11343
|
+
"address"
|
|
11344
|
+
]
|
|
11345
|
+
},
|
|
11346
|
+
"match": {
|
|
11347
|
+
"$ref": "#/components/schemas/RemitImap.FilterRuleMatch"
|
|
11348
|
+
},
|
|
11349
|
+
"part": {
|
|
11350
|
+
"$ref": "#/components/schemas/RemitImap.FilterRuleAddressPart"
|
|
11351
|
+
},
|
|
11352
|
+
"key": {
|
|
11353
|
+
"$ref": "#/components/schemas/String256"
|
|
11354
|
+
}
|
|
11355
|
+
},
|
|
11356
|
+
"description": "Compares one part of the From address against one key (Sieve `address`). Reads `from` only."
|
|
11357
|
+
},
|
|
11358
|
+
"RemitImap.FilterAllOfTest": {
|
|
11359
|
+
"type": "object",
|
|
11360
|
+
"required": [
|
|
11361
|
+
"test",
|
|
11362
|
+
"tests"
|
|
11363
|
+
],
|
|
11364
|
+
"properties": {
|
|
11365
|
+
"test": {
|
|
11366
|
+
"type": "string",
|
|
11367
|
+
"enum": [
|
|
11368
|
+
"allof"
|
|
11369
|
+
]
|
|
11370
|
+
},
|
|
11371
|
+
"tests": {
|
|
11372
|
+
"type": "array",
|
|
11373
|
+
"items": {
|
|
11374
|
+
"$ref": "#/components/schemas/RemitImap.FilterTest"
|
|
11375
|
+
},
|
|
11376
|
+
"minItems": 1,
|
|
11377
|
+
"maxItems": 50
|
|
11378
|
+
}
|
|
11379
|
+
},
|
|
11380
|
+
"description": "Matches when every test in `tests` matches (Sieve `allof`)."
|
|
11381
|
+
},
|
|
11382
|
+
"RemitImap.FilterAnyOfTest": {
|
|
11383
|
+
"type": "object",
|
|
11384
|
+
"required": [
|
|
11385
|
+
"test",
|
|
11386
|
+
"tests"
|
|
11387
|
+
],
|
|
11388
|
+
"properties": {
|
|
11389
|
+
"test": {
|
|
11390
|
+
"type": "string",
|
|
11391
|
+
"enum": [
|
|
11392
|
+
"anyof"
|
|
11393
|
+
]
|
|
11394
|
+
},
|
|
11395
|
+
"tests": {
|
|
11396
|
+
"type": "array",
|
|
11397
|
+
"items": {
|
|
11398
|
+
"$ref": "#/components/schemas/RemitImap.FilterTest"
|
|
11399
|
+
},
|
|
11400
|
+
"minItems": 1,
|
|
11401
|
+
"maxItems": 50
|
|
11402
|
+
}
|
|
11403
|
+
},
|
|
11404
|
+
"description": "Matches when any test in `tests` matches (Sieve `anyof`)."
|
|
11405
|
+
},
|
|
11144
11406
|
"RemitImap.FilterClause": {
|
|
11145
11407
|
"type": "object",
|
|
11146
11408
|
"required": [
|
|
@@ -11189,6 +11451,55 @@
|
|
|
11189
11451
|
],
|
|
11190
11452
|
"description": "Why a Filter is Disabled. `None` while the filter is not Disabled; every other value names the one thing that has to change before it can run again."
|
|
11191
11453
|
},
|
|
11454
|
+
"RemitImap.FilterHasWordsTest": {
|
|
11455
|
+
"type": "object",
|
|
11456
|
+
"required": [
|
|
11457
|
+
"test",
|
|
11458
|
+
"words"
|
|
11459
|
+
],
|
|
11460
|
+
"properties": {
|
|
11461
|
+
"test": {
|
|
11462
|
+
"type": "string",
|
|
11463
|
+
"enum": [
|
|
11464
|
+
"hasWords"
|
|
11465
|
+
]
|
|
11466
|
+
},
|
|
11467
|
+
"words": {
|
|
11468
|
+
"type": "array",
|
|
11469
|
+
"items": {
|
|
11470
|
+
"$ref": "#/components/schemas/String256"
|
|
11471
|
+
}
|
|
11472
|
+
}
|
|
11473
|
+
},
|
|
11474
|
+
"description": "Matches when every word occurs in the sender, the subject or the body."
|
|
11475
|
+
},
|
|
11476
|
+
"RemitImap.FilterHeaderTest": {
|
|
11477
|
+
"type": "object",
|
|
11478
|
+
"required": [
|
|
11479
|
+
"test",
|
|
11480
|
+
"match",
|
|
11481
|
+
"header",
|
|
11482
|
+
"key"
|
|
11483
|
+
],
|
|
11484
|
+
"properties": {
|
|
11485
|
+
"test": {
|
|
11486
|
+
"type": "string",
|
|
11487
|
+
"enum": [
|
|
11488
|
+
"header"
|
|
11489
|
+
]
|
|
11490
|
+
},
|
|
11491
|
+
"match": {
|
|
11492
|
+
"$ref": "#/components/schemas/RemitImap.FilterRuleMatch"
|
|
11493
|
+
},
|
|
11494
|
+
"header": {
|
|
11495
|
+
"$ref": "#/components/schemas/RemitImap.FilterRuleHeader"
|
|
11496
|
+
},
|
|
11497
|
+
"key": {
|
|
11498
|
+
"$ref": "#/components/schemas/String256"
|
|
11499
|
+
}
|
|
11500
|
+
},
|
|
11501
|
+
"description": "Compares one header against one key (Sieve `header`)."
|
|
11502
|
+
},
|
|
11192
11503
|
"RemitImap.FilterMatchOperator": {
|
|
11193
11504
|
"type": "string",
|
|
11194
11505
|
"enum": [
|
|
@@ -11197,6 +11508,25 @@
|
|
|
11197
11508
|
],
|
|
11198
11509
|
"description": "How a Filter's literalClauses combine (RFC 031 \"literal predicates, AND/OR\"). Ignored when literalClauses is empty."
|
|
11199
11510
|
},
|
|
11511
|
+
"RemitImap.FilterNotTest": {
|
|
11512
|
+
"type": "object",
|
|
11513
|
+
"required": [
|
|
11514
|
+
"test",
|
|
11515
|
+
"operand"
|
|
11516
|
+
],
|
|
11517
|
+
"properties": {
|
|
11518
|
+
"test": {
|
|
11519
|
+
"type": "string",
|
|
11520
|
+
"enum": [
|
|
11521
|
+
"not"
|
|
11522
|
+
]
|
|
11523
|
+
},
|
|
11524
|
+
"operand": {
|
|
11525
|
+
"$ref": "#/components/schemas/RemitImap.FilterTest"
|
|
11526
|
+
}
|
|
11527
|
+
},
|
|
11528
|
+
"description": "Matches when `operand` does not (Sieve `not`)."
|
|
11529
|
+
},
|
|
11200
11530
|
"RemitImap.FilterResponse": {
|
|
11201
11531
|
"type": "object",
|
|
11202
11532
|
"required": [
|
|
@@ -11210,10 +11540,13 @@
|
|
|
11210
11540
|
"actionChangedAt",
|
|
11211
11541
|
"matchOperator",
|
|
11212
11542
|
"literalClauses",
|
|
11543
|
+
"priority",
|
|
11544
|
+
"stop",
|
|
11213
11545
|
"actionLabelId",
|
|
11214
11546
|
"actionMailboxId",
|
|
11215
11547
|
"createdAt",
|
|
11216
|
-
"updatedAt"
|
|
11548
|
+
"updatedAt",
|
|
11549
|
+
"rule"
|
|
11217
11550
|
],
|
|
11218
11551
|
"properties": {
|
|
11219
11552
|
"filterId": {
|
|
@@ -11299,8 +11632,18 @@
|
|
|
11299
11632
|
"items": {
|
|
11300
11633
|
"$ref": "#/components/schemas/RemitImap.FilterClause"
|
|
11301
11634
|
},
|
|
11302
|
-
"
|
|
11303
|
-
|
|
11635
|
+
"description": "Literal from/subject/has-words predicate clauses (RFC 031). Empty when the rule is not leaves under one allof or anyof."
|
|
11636
|
+
},
|
|
11637
|
+
"priority": {
|
|
11638
|
+
"type": "integer",
|
|
11639
|
+
"format": "int32",
|
|
11640
|
+
"description": "Evaluation order (RFC 040). Lower runs first; ties go to the newest actionChangedAt, then to filterId. The first move a message reaches wins.",
|
|
11641
|
+
"default": 0
|
|
11642
|
+
},
|
|
11643
|
+
"stop": {
|
|
11644
|
+
"type": "boolean",
|
|
11645
|
+
"description": "When set, a match ends evaluation for that message after this filter's own actions (RFC 040, Sieve `stop`).",
|
|
11646
|
+
"default": false
|
|
11304
11647
|
},
|
|
11305
11648
|
"actionLabelId": {
|
|
11306
11649
|
"type": "string",
|
|
@@ -11321,10 +11664,64 @@
|
|
|
11321
11664
|
"type": "integer",
|
|
11322
11665
|
"format": "int64",
|
|
11323
11666
|
"readOnly": true
|
|
11667
|
+
},
|
|
11668
|
+
"rule": {
|
|
11669
|
+
"allOf": [
|
|
11670
|
+
{
|
|
11671
|
+
"$ref": "#/components/schemas/RemitImap.FilterRuleV1"
|
|
11672
|
+
}
|
|
11673
|
+
],
|
|
11674
|
+
"description": "The rule as a test tree (RFC 040). literalClauses mirrors it when it is leaves under one allof or anyof, and is empty otherwise."
|
|
11324
11675
|
}
|
|
11325
11676
|
},
|
|
11326
11677
|
"description": "Filter item returned by list/get/create/update operations. `ttl` is internal bookkeeping (RFC 034 Decision 1.3) and not surfaced."
|
|
11327
11678
|
},
|
|
11679
|
+
"RemitImap.FilterRuleAddressPart": {
|
|
11680
|
+
"type": "string",
|
|
11681
|
+
"enum": [
|
|
11682
|
+
"All",
|
|
11683
|
+
"Localpart",
|
|
11684
|
+
"Domain",
|
|
11685
|
+
"RegistrableDomain"
|
|
11686
|
+
],
|
|
11687
|
+
"description": "The part of the From address a FilterRule address test reads (RFC 040). `RegistrableDomain` is the public-suffix aware domain."
|
|
11688
|
+
},
|
|
11689
|
+
"RemitImap.FilterRuleHeader": {
|
|
11690
|
+
"type": "string",
|
|
11691
|
+
"enum": [
|
|
11692
|
+
"From",
|
|
11693
|
+
"Subject",
|
|
11694
|
+
"ListId"
|
|
11695
|
+
],
|
|
11696
|
+
"description": "The header a FilterRule header test reads (RFC 040). `ListId` is normalized as a `List-Id` filter clause is."
|
|
11697
|
+
},
|
|
11698
|
+
"RemitImap.FilterRuleMatch": {
|
|
11699
|
+
"type": "string",
|
|
11700
|
+
"enum": [
|
|
11701
|
+
"Is",
|
|
11702
|
+
"Contains"
|
|
11703
|
+
],
|
|
11704
|
+
"description": "How a FilterRule header or address test compares its key (RFC 040, after Sieve's `:is` and `:contains`). Both fold case."
|
|
11705
|
+
},
|
|
11706
|
+
"RemitImap.FilterRuleV1": {
|
|
11707
|
+
"type": "object",
|
|
11708
|
+
"required": [
|
|
11709
|
+
"version",
|
|
11710
|
+
"test"
|
|
11711
|
+
],
|
|
11712
|
+
"properties": {
|
|
11713
|
+
"version": {
|
|
11714
|
+
"type": "number",
|
|
11715
|
+
"enum": [
|
|
11716
|
+
1
|
|
11717
|
+
]
|
|
11718
|
+
},
|
|
11719
|
+
"test": {
|
|
11720
|
+
"$ref": "#/components/schemas/RemitImap.FilterTest"
|
|
11721
|
+
}
|
|
11722
|
+
},
|
|
11723
|
+
"description": "A rule whose test is the truth; the row's literal clauses are empty."
|
|
11724
|
+
},
|
|
11328
11725
|
"RemitImap.FilterScope": {
|
|
11329
11726
|
"type": "string",
|
|
11330
11727
|
"enum": [
|
|
@@ -11342,6 +11739,29 @@
|
|
|
11342
11739
|
],
|
|
11343
11740
|
"description": "Whether a Filter runs, backing the byAccountAndState index (RFC 034 Decision 1.2). Active and Disabled are written; Expired is a lazily-patched cache of Filter.expiresAt, which stays the source of truth for expiry. A Disabled filter records why in Filter.disabledReason."
|
|
11344
11741
|
},
|
|
11742
|
+
"RemitImap.FilterTest": {
|
|
11743
|
+
"anyOf": [
|
|
11744
|
+
{
|
|
11745
|
+
"$ref": "#/components/schemas/RemitImap.FilterAllOfTest"
|
|
11746
|
+
},
|
|
11747
|
+
{
|
|
11748
|
+
"$ref": "#/components/schemas/RemitImap.FilterAnyOfTest"
|
|
11749
|
+
},
|
|
11750
|
+
{
|
|
11751
|
+
"$ref": "#/components/schemas/RemitImap.FilterNotTest"
|
|
11752
|
+
},
|
|
11753
|
+
{
|
|
11754
|
+
"$ref": "#/components/schemas/RemitImap.FilterHeaderTest"
|
|
11755
|
+
},
|
|
11756
|
+
{
|
|
11757
|
+
"$ref": "#/components/schemas/RemitImap.FilterAddressTest"
|
|
11758
|
+
},
|
|
11759
|
+
{
|
|
11760
|
+
"$ref": "#/components/schemas/RemitImap.FilterHasWordsTest"
|
|
11761
|
+
}
|
|
11762
|
+
],
|
|
11763
|
+
"description": "A node of a filter rule's test tree (RFC 040)."
|
|
11764
|
+
},
|
|
11345
11765
|
"RemitImap.FolderAppointment": {
|
|
11346
11766
|
"type": "object",
|
|
11347
11767
|
"required": [
|
|
@@ -11939,7 +12359,8 @@
|
|
|
11939
12359
|
"marketing",
|
|
11940
12360
|
"automated",
|
|
11941
12361
|
"transactional",
|
|
11942
|
-
"social"
|
|
12362
|
+
"social",
|
|
12363
|
+
"coldOutreach"
|
|
11943
12364
|
],
|
|
11944
12365
|
"description": "Header-derived message category. Set by classifyByHeaders during body-sync. Defaults to `uncategorized`, which covers both a message that has not been classified yet and one the classifier declined to categorize; `Message.classificationState` is what tells those apart."
|
|
11945
12366
|
},
|
|
@@ -14784,8 +15205,18 @@
|
|
|
14784
15205
|
"items": {
|
|
14785
15206
|
"$ref": "#/components/schemas/RemitImap.FilterClause"
|
|
14786
15207
|
},
|
|
14787
|
-
"
|
|
14788
|
-
|
|
15208
|
+
"description": "Literal from/subject/has-words predicate clauses (RFC 031). Empty when the rule is not leaves under one allof or anyof."
|
|
15209
|
+
},
|
|
15210
|
+
"priority": {
|
|
15211
|
+
"type": "integer",
|
|
15212
|
+
"format": "int32",
|
|
15213
|
+
"description": "Evaluation order (RFC 040). Lower runs first; ties go to the newest actionChangedAt, then to filterId. The first move a message reaches wins.",
|
|
15214
|
+
"default": 0
|
|
15215
|
+
},
|
|
15216
|
+
"stop": {
|
|
15217
|
+
"type": "boolean",
|
|
15218
|
+
"description": "When set, a match ends evaluation for that message after this filter's own actions (RFC 040, Sieve `stop`).",
|
|
15219
|
+
"default": false
|
|
14789
15220
|
},
|
|
14790
15221
|
"actionLabelId": {
|
|
14791
15222
|
"type": "string",
|
|
@@ -14796,6 +15227,14 @@
|
|
|
14796
15227
|
"type": "string",
|
|
14797
15228
|
"description": "Mailbox matched messages are moved into — exclusive action, since a message lives in exactly one mailbox (RFC 034 Decision 3.1). On conflict between filters, the one with the latest actionChangedAt wins. `\"None\"` means no move action.",
|
|
14798
15229
|
"default": "None"
|
|
15230
|
+
},
|
|
15231
|
+
"rule": {
|
|
15232
|
+
"allOf": [
|
|
15233
|
+
{
|
|
15234
|
+
"$ref": "#/components/schemas/RemitImap.FilterRuleV1"
|
|
15235
|
+
}
|
|
15236
|
+
],
|
|
15237
|
+
"description": "Replaces the rule (RFC 040). Never sent with matchOperator or literalClauses. The server caps a rule at 50 leaves and 5 levels."
|
|
14799
15238
|
}
|
|
14800
15239
|
},
|
|
14801
15240
|
"description": "Input for updating a filter (RFC 034, reader #266). The name, predicate,\naction, scope, and expiresAt are all updatable; `ttl` is always\nserver-derived from `scope`/`expiresAt`, never client-supplied, and\n`disabledReason`/`ruleChangedAt`/`actionChangedAt`/`filterId` are\nserver-derived too. `state` takes `Active` or `Disabled`: the user turns a\nfilter off or back on, and turning it on clears `disabledReason`. `Expired`\nis refused; the expiry is set through `scope`/`expiresAt`. A patch touching the predicate, the action, `scope`, or\n`expiresAt` bumps `ruleChangedAt`; a name-only rename never does (RFC 034\nDecision 3.2, reader #266). Only a patch touching the predicate or the\naction bumps `actionChangedAt`, the narrower signal exclusive-move\nprecedence reads (reader #384) — a scope/expiresAt-only edit leaves it\nuntouched."
|
package/package.json
CHANGED