@remit/api-openapi-spec 0.0.74 → 0.0.76
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 +166 -1
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -492,7 +492,7 @@
|
|
|
492
492
|
"content": {
|
|
493
493
|
"application/json": {
|
|
494
494
|
"schema": {
|
|
495
|
-
"$ref": "#/components/schemas/RemitImap.
|
|
495
|
+
"$ref": "#/components/schemas/RemitImap.CreateFilterResponse"
|
|
496
496
|
}
|
|
497
497
|
}
|
|
498
498
|
}
|
|
@@ -7959,6 +7959,7 @@
|
|
|
7959
7959
|
"summary",
|
|
7960
7960
|
"dtStart",
|
|
7961
7961
|
"dtEnd",
|
|
7962
|
+
"endsAtUtc",
|
|
7962
7963
|
"allDay",
|
|
7963
7964
|
"location",
|
|
7964
7965
|
"organizer",
|
|
@@ -8080,6 +8081,15 @@
|
|
|
8080
8081
|
"description": "Projection of the VEVENT's effective end as an ISO 8601 date-time with zone offset, resolved from DTEND or from DTSTART + DURATION. An event with neither ends when it starts (RFC 5545 3.6.1).",
|
|
8081
8082
|
"readOnly": true
|
|
8082
8083
|
},
|
|
8084
|
+
"endsAtUtc": {
|
|
8085
|
+
"allOf": [
|
|
8086
|
+
{
|
|
8087
|
+
"$ref": "#/components/schemas/String64"
|
|
8088
|
+
}
|
|
8089
|
+
],
|
|
8090
|
+
"description": "The UTC instant (ISO 8601, `Z` suffix) after which nothing of this event remains to attend: the end of the last occurrence of a bounded series, `9999-12-31T23:59:59Z` for an open-ended one. Unlike `dtEnd` it compares correctly as a string across offsets, which is what lets a list drop events that are over.",
|
|
8091
|
+
"readOnly": true
|
|
8092
|
+
},
|
|
8083
8093
|
"allDay": {
|
|
8084
8094
|
"type": "boolean",
|
|
8085
8095
|
"description": "Whether DTSTART is a DATE rather than a DATE-TIME (RFC 5545 3.3.4) — an all-day or multi-day event, whose end is exclusive.",
|
|
@@ -8765,6 +8775,146 @@
|
|
|
8765
8775
|
},
|
|
8766
8776
|
"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`, `hasAnchor`, `ruleChangedAt`, and\n`filterId` are all server-derived and excluded by their Read-only visibility.\n\nWhen `anchorMessageId` is set, the server builds and persists the filter's\nsemantic anchor from that message's indexed vectors (RFC 034 Decision 2) and\nsets `hasAnchor`. Absent for a purely-literal filter."
|
|
8767
8777
|
},
|
|
8778
|
+
"RemitImap.CreateFilterResponse": {
|
|
8779
|
+
"type": "object",
|
|
8780
|
+
"required": [
|
|
8781
|
+
"filterId",
|
|
8782
|
+
"accountConfigId",
|
|
8783
|
+
"name",
|
|
8784
|
+
"scope",
|
|
8785
|
+
"state",
|
|
8786
|
+
"disabledReason",
|
|
8787
|
+
"hasAnchor",
|
|
8788
|
+
"ruleChangedAt",
|
|
8789
|
+
"actionChangedAt",
|
|
8790
|
+
"matchOperator",
|
|
8791
|
+
"literalClauses",
|
|
8792
|
+
"actionLabelId",
|
|
8793
|
+
"actionMailboxId",
|
|
8794
|
+
"createdAt",
|
|
8795
|
+
"updatedAt",
|
|
8796
|
+
"organizeJobId"
|
|
8797
|
+
],
|
|
8798
|
+
"properties": {
|
|
8799
|
+
"filterId": {
|
|
8800
|
+
"allOf": [
|
|
8801
|
+
{
|
|
8802
|
+
"$ref": "#/components/schemas/UUID"
|
|
8803
|
+
}
|
|
8804
|
+
],
|
|
8805
|
+
"description": "Primary identifier. Stable id — the human name is a separate mutable overlay, never the key.",
|
|
8806
|
+
"readOnly": true
|
|
8807
|
+
},
|
|
8808
|
+
"accountConfigId": {
|
|
8809
|
+
"allOf": [
|
|
8810
|
+
{
|
|
8811
|
+
"$ref": "#/components/schemas/UUID"
|
|
8812
|
+
}
|
|
8813
|
+
],
|
|
8814
|
+
"description": "Owning account configuration",
|
|
8815
|
+
"readOnly": true
|
|
8816
|
+
},
|
|
8817
|
+
"name": {
|
|
8818
|
+
"allOf": [
|
|
8819
|
+
{
|
|
8820
|
+
"$ref": "#/components/schemas/String256"
|
|
8821
|
+
}
|
|
8822
|
+
],
|
|
8823
|
+
"description": "Plain-language name or editable label for this filter"
|
|
8824
|
+
},
|
|
8825
|
+
"scope": {
|
|
8826
|
+
"allOf": [
|
|
8827
|
+
{
|
|
8828
|
+
"$ref": "#/components/schemas/RemitImap.FilterScope"
|
|
8829
|
+
}
|
|
8830
|
+
],
|
|
8831
|
+
"description": "Standing (permanent) or Temporary (expires). Governs whether expiresAt/ttl are present (RFC 034 Decision 1). Mutable on update (reader #266): switching scope re-derives ttl and re-evaluates state from expiresAt, and bumps ruleChangedAt so a lapsed filter's back-application can be offered again. The semantic anchor stays immutable regardless — repointing it would silently change what a saved filter matches with nothing visible changing, which deserves a new filter instead."
|
|
8832
|
+
},
|
|
8833
|
+
"expiresAt": {
|
|
8834
|
+
"type": "string",
|
|
8835
|
+
"description": "ISO 8601 date-time with zone offset, present only when scope is Temporary (RFC 034 Decision 1.1) — a business date, not an epoch instant. Every evaluation compares `now` against this value directly; it is the source of truth for whether a Temporary filter is still active, independent of `state` or row existence. Mutable on update (reader #266), alongside scope — moving the date bumps ruleChangedAt the same way a scope change does."
|
|
8836
|
+
},
|
|
8837
|
+
"state": {
|
|
8838
|
+
"allOf": [
|
|
8839
|
+
{
|
|
8840
|
+
"$ref": "#/components/schemas/RemitImap.FilterState"
|
|
8841
|
+
}
|
|
8842
|
+
],
|
|
8843
|
+
"description": "Whether this filter runs, backing byAccountAndState (RFC 034 Decision 1.2). Starts Active. The user sets Active or Disabled on update; the system sets Disabled when the filter cannot work as designed, and records why in disabledReason. Expired is lazily patched the first time something reads a Temporary filter past its expiresAt, which stays the correctness source for expiry.",
|
|
8844
|
+
"default": "Active"
|
|
8845
|
+
},
|
|
8846
|
+
"disabledReason": {
|
|
8847
|
+
"allOf": [
|
|
8848
|
+
{
|
|
8849
|
+
"$ref": "#/components/schemas/RemitImap.FilterDisabledReason"
|
|
8850
|
+
}
|
|
8851
|
+
],
|
|
8852
|
+
"description": "Why this filter is Disabled; `None` whenever state is not Disabled. Written together with state, never on its own: turning a filter on clears it.",
|
|
8853
|
+
"default": "None",
|
|
8854
|
+
"readOnly": true
|
|
8855
|
+
},
|
|
8856
|
+
"hasAnchor": {
|
|
8857
|
+
"type": "boolean",
|
|
8858
|
+
"description": "Whether a sibling FilterAnchor row exists for this filter (RFC 034 Decision 2.3). Lets the index-time worker skip the FilterAnchor `get` entirely for purely-literal filters instead of probing for a row that may not exist.",
|
|
8859
|
+
"default": false,
|
|
8860
|
+
"readOnly": true
|
|
8861
|
+
},
|
|
8862
|
+
"ruleChangedAt": {
|
|
8863
|
+
"type": "integer",
|
|
8864
|
+
"format": "int64",
|
|
8865
|
+
"description": "Epoch seconds, written whenever the predicate, the action, the scope, or the expiry changes (reader #266) — never on a cosmetic rename. This is the broad \"the user asserted something new about this rule\" signal the settings UI uses to decide whether to re-offer a lapsed filter's back-application. It is deliberately NOT the precedence signal for the exclusive move action — see actionChangedAt for that (RFC 034 Decision 3.2, reader #384). Distinct from ElectroDB's own updatedAt, which bumps on any write.",
|
|
8866
|
+
"readOnly": true
|
|
8867
|
+
},
|
|
8868
|
+
"actionChangedAt": {
|
|
8869
|
+
"type": "integer",
|
|
8870
|
+
"format": "int64",
|
|
8871
|
+
"description": "Epoch seconds, written only when the predicate (literalClauses, hasAnchor) or the action (actionLabelId, actionMailboxId) changes — never on scope, expiresAt, or a cosmetic rename. Backs most-recently-changed-filter-wins precedence for the exclusive move action (RFC 034 Decision 3.2). Split out from ruleChangedAt (reader #384): extending a filter's expiry or flipping its scope changes its lifecycle, not what it matches or does, so it must not promote the filter to move-winner.",
|
|
8872
|
+
"readOnly": true
|
|
8873
|
+
},
|
|
8874
|
+
"matchOperator": {
|
|
8875
|
+
"allOf": [
|
|
8876
|
+
{
|
|
8877
|
+
"$ref": "#/components/schemas/RemitImap.FilterMatchOperator"
|
|
8878
|
+
}
|
|
8879
|
+
],
|
|
8880
|
+
"description": "How literalClauses combine. Meaningless when literalClauses is empty.",
|
|
8881
|
+
"default": "And"
|
|
8882
|
+
},
|
|
8883
|
+
"literalClauses": {
|
|
8884
|
+
"type": "array",
|
|
8885
|
+
"items": {
|
|
8886
|
+
"$ref": "#/components/schemas/RemitImap.FilterClause"
|
|
8887
|
+
},
|
|
8888
|
+
"description": "Literal from/subject/has-words predicate clauses (RFC 031). Empty when the filter relies solely on its semantic anchor (see hasAnchor).",
|
|
8889
|
+
"default": []
|
|
8890
|
+
},
|
|
8891
|
+
"actionLabelId": {
|
|
8892
|
+
"type": "string",
|
|
8893
|
+
"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.",
|
|
8894
|
+
"default": "None"
|
|
8895
|
+
},
|
|
8896
|
+
"actionMailboxId": {
|
|
8897
|
+
"type": "string",
|
|
8898
|
+
"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.",
|
|
8899
|
+
"default": "None"
|
|
8900
|
+
},
|
|
8901
|
+
"createdAt": {
|
|
8902
|
+
"type": "integer",
|
|
8903
|
+
"format": "int64",
|
|
8904
|
+
"readOnly": true
|
|
8905
|
+
},
|
|
8906
|
+
"updatedAt": {
|
|
8907
|
+
"type": "integer",
|
|
8908
|
+
"format": "int64",
|
|
8909
|
+
"readOnly": true
|
|
8910
|
+
},
|
|
8911
|
+
"organizeJobId": {
|
|
8912
|
+
"type": "string",
|
|
8913
|
+
"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."
|
|
8914
|
+
}
|
|
8915
|
+
},
|
|
8916
|
+
"description": "Response body for POST /accounts/{accountId}/filters: the created filter, plus the back-apply job that runs it over the inbox."
|
|
8917
|
+
},
|
|
8768
8918
|
"RemitImap.CreateLabelInput": {
|
|
8769
8919
|
"type": "object",
|
|
8770
8920
|
"required": [
|
|
@@ -10410,6 +10560,14 @@
|
|
|
10410
10560
|
"actionMailboxId"
|
|
10411
10561
|
],
|
|
10412
10562
|
"properties": {
|
|
10563
|
+
"filterId": {
|
|
10564
|
+
"allOf": [
|
|
10565
|
+
{
|
|
10566
|
+
"$ref": "#/components/schemas/UUID"
|
|
10567
|
+
}
|
|
10568
|
+
],
|
|
10569
|
+
"description": "Back-apply this standing filter instead of the predicate in this body. The server reads the filter's persisted predicate, action and FilterAnchor, runs the pass over the inbox, and skips a move another active filter outranks, as index time does. The predicate and action fields of this body are ignored when it is set."
|
|
10570
|
+
},
|
|
10413
10571
|
"anchorMessageId": {
|
|
10414
10572
|
"allOf": [
|
|
10415
10573
|
{
|
|
@@ -10460,6 +10618,7 @@
|
|
|
10460
10618
|
"accountConfigId",
|
|
10461
10619
|
"userId",
|
|
10462
10620
|
"state",
|
|
10621
|
+
"filterId",
|
|
10463
10622
|
"anchorMessageId",
|
|
10464
10623
|
"matchOperator",
|
|
10465
10624
|
"literalClauses",
|
|
@@ -10507,6 +10666,12 @@
|
|
|
10507
10666
|
"default": "Pending",
|
|
10508
10667
|
"readOnly": true
|
|
10509
10668
|
},
|
|
10669
|
+
"filterId": {
|
|
10670
|
+
"type": "string",
|
|
10671
|
+
"description": "The standing filter this job back-applies, or the `\"None\"` sentinel for an \"all like these\" pass. A sentinel, not an optional field, so the persisted entity has no optional attributes (RFC 032).",
|
|
10672
|
+
"default": "None",
|
|
10673
|
+
"readOnly": true
|
|
10674
|
+
},
|
|
10510
10675
|
"anchorMessageId": {
|
|
10511
10676
|
"type": "string",
|
|
10512
10677
|
"description": "Snapshot of the anchor message id, or the `\"None\"` sentinel for a purely-literal back-apply. A sentinel, not an optional field, so the persisted entity has no optional attributes (RFC 032).",
|