@remit/api-openapi-spec 0.0.88 → 0.0.90

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 CHANGED
@@ -4365,7 +4365,7 @@
4365
4365
  "name": "senderTrust",
4366
4366
  "in": "query",
4367
4367
  "required": false,
4368
- "description": "Filter to messages whose From address has one of these trust levels. Off-row criterion: resolved by enriching the rows this page read, not by a predicate over the mailbox, so `count` comes back absent whenever it is supplied.",
4368
+ "description": "Filter to messages whose From address has one of these trust levels. Applied as a SQL predicate over the whole mailbox, so a page comes back full of matches.",
4369
4369
  "schema": {
4370
4370
  "type": "array",
4371
4371
  "items": {
@@ -4389,7 +4389,7 @@
4389
4389
  "name": "dkimMismatch",
4390
4390
  "in": "query",
4391
4391
  "required": false,
4392
- "description": "Filter on the DKIM-alignment signal (true = DKIM mismatch). Off-row criterion, like `senderTrust`: rows without an authenticity signal never match, and `count` comes back absent whenever it is supplied.",
4392
+ "description": "Filter on the DKIM-alignment signal (true = DKIM mismatch). Applied as a SQL predicate over the whole mailbox; rows without an authenticity signal never match.",
4393
4393
  "schema": {
4394
4394
  "type": "boolean"
4395
4395
  }
@@ -4398,7 +4398,7 @@
4398
4398
  "name": "count",
4399
4399
  "in": "query",
4400
4400
  "required": false,
4401
- "description": "Include how many messages the query matches, exactly, over the whole mailbox. Opt-in because it is a second read over the entire match set rather than a by-product of the page: ask for it on a deliberate act, never on a keystroke. Answered as absent — not as a page length — when the query carries `senderTrust` or `dkimMismatch`, which no predicate can count.",
4401
+ "description": "Include how many messages the query matches, exactly, over the whole mailbox. Opt-in because it is a second read over the entire match set rather than a by-product of the page: ask for it on a deliberate act, never on a keystroke.",
4402
4402
  "schema": {
4403
4403
  "type": "boolean"
4404
4404
  }
@@ -9461,7 +9461,7 @@
9461
9461
  "apiKeySaved",
9462
9462
  "enabled",
9463
9463
  "dailyLimit",
9464
- "savedAt",
9464
+ "sources",
9465
9465
  "usage"
9466
9466
  ],
9467
9467
  "properties": {
@@ -9482,7 +9482,7 @@
9482
9482
  },
9483
9483
  "apiKeySaved": {
9484
9484
  "type": "boolean",
9485
- "description": "Whether an API key is stored for this provider."
9485
+ "description": "Deprecated: read `sources.apiKey` instead. Whether an API key is saved or inherited from the deployment. Removed once reader-ui reads `sources`."
9486
9486
  },
9487
9487
  "enabled": {
9488
9488
  "type": "boolean",
@@ -9493,10 +9493,13 @@
9493
9493
  "format": "int32",
9494
9494
  "description": "The most classification calls per mail account per UTC day."
9495
9495
  },
9496
- "savedAt": {
9497
- "type": "integer",
9498
- "format": "int64",
9499
- "description": "When the provider, model, base URL or key was last saved, in epoch milliseconds (UTC)."
9496
+ "sources": {
9497
+ "allOf": [
9498
+ {
9499
+ "$ref": "#/components/schemas/RemitImap.ClassificationSources"
9500
+ }
9501
+ ],
9502
+ "description": "Where each value comes from. A reader overrides one field by saving it, and inherits it again by saving it empty."
9500
9503
  },
9501
9504
  "usage": {
9502
9505
  "type": "array",
@@ -9506,7 +9509,7 @@
9506
9509
  "description": "Today's provider calls, one row per mail account of the account config."
9507
9510
  }
9508
9511
  },
9509
- "description": "The saved classification provider. The API key itself is never returned."
9512
+ "description": "The classification provider in effect, saved or inherited from the deployment. No API key is ever returned."
9510
9513
  },
9511
9514
  "RemitImap.ClassificationCost": {
9512
9515
  "anyOf": [
@@ -9723,9 +9726,49 @@
9723
9726
  },
9724
9727
  {
9725
9728
  "$ref": "#/components/schemas/RemitImap.ClassificationConfigured"
9729
+ },
9730
+ {
9731
+ "$ref": "#/components/schemas/RemitImap.ClassificationUnrunnable"
9726
9732
  }
9727
9733
  ]
9728
9734
  },
9735
+ "RemitImap.ClassificationSources": {
9736
+ "type": "object",
9737
+ "required": [
9738
+ "presetId",
9739
+ "model",
9740
+ "baseUrl",
9741
+ "apiKey",
9742
+ "enabled",
9743
+ "dailyLimit"
9744
+ ],
9745
+ "properties": {
9746
+ "presetId": {
9747
+ "$ref": "#/components/schemas/RemitImap.ClassificationValueSource"
9748
+ },
9749
+ "model": {
9750
+ "$ref": "#/components/schemas/RemitImap.ClassificationValueSource"
9751
+ },
9752
+ "baseUrl": {
9753
+ "$ref": "#/components/schemas/RemitImap.ClassificationValueSource"
9754
+ },
9755
+ "apiKey": {
9756
+ "allOf": [
9757
+ {
9758
+ "$ref": "#/components/schemas/RemitImap.ClassificationValueSource"
9759
+ }
9760
+ ],
9761
+ "description": "`Saved` for a key the reader saved, `Deployment` for the deployment's key, `Default` for no key."
9762
+ },
9763
+ "enabled": {
9764
+ "$ref": "#/components/schemas/RemitImap.ClassificationValueSource"
9765
+ },
9766
+ "dailyLimit": {
9767
+ "$ref": "#/components/schemas/RemitImap.ClassificationValueSource"
9768
+ }
9769
+ },
9770
+ "description": "Where each classification setting's value comes from."
9771
+ },
9729
9772
  "RemitImap.ClassificationTestFailed": {
9730
9773
  "type": "object",
9731
9774
  "required": [
@@ -9783,15 +9826,15 @@
9783
9826
  },
9784
9827
  "model": {
9785
9828
  "type": "string",
9786
- "description": "The model to ask for. Empty means the preset's default model."
9829
+ "description": "The model to ask for. Empty means the inherited model."
9787
9830
  },
9788
9831
  "baseUrl": {
9789
9832
  "type": "string",
9790
- "description": "The http or https base URL to call. Empty means the preset's default base URL."
9833
+ "description": "The http or https base URL to call. Empty means the inherited base URL."
9791
9834
  },
9792
9835
  "apiKey": {
9793
9836
  "type": "string",
9794
- "description": "The provider's API key. Empty means the key saved for this preset."
9837
+ "description": "The provider's API key. Empty means the key saved for this preset, or the deployment's key when the preset and base URL match the deployment's."
9795
9838
  }
9796
9839
  },
9797
9840
  "description": "The classification provider form as it stands, saved or not."
@@ -9842,6 +9885,37 @@
9842
9885
  }
9843
9886
  ]
9844
9887
  },
9888
+ "RemitImap.ClassificationUnrunnable": {
9889
+ "type": "object",
9890
+ "required": [
9891
+ "state",
9892
+ "presetId",
9893
+ "reason"
9894
+ ],
9895
+ "properties": {
9896
+ "state": {
9897
+ "type": "string",
9898
+ "enum": [
9899
+ "Unrunnable"
9900
+ ]
9901
+ },
9902
+ "presetId": {
9903
+ "$ref": "#/components/schemas/RemitImap.ClassificationPresetId"
9904
+ },
9905
+ "reason": {
9906
+ "$ref": "#/components/schemas/RemitImap.ClassificationUnrunnableReason"
9907
+ }
9908
+ },
9909
+ "description": "A classification provider is chosen but cannot run, so classification is off."
9910
+ },
9911
+ "RemitImap.ClassificationUnrunnableReason": {
9912
+ "type": "string",
9913
+ "enum": [
9914
+ "NoBaseUrl",
9915
+ "NoApiKey"
9916
+ ],
9917
+ "description": "Why a classification provider cannot run."
9918
+ },
9845
9919
  "RemitImap.ClassificationUsage": {
9846
9920
  "type": "object",
9847
9921
  "required": [
@@ -9876,6 +9950,15 @@
9876
9950
  },
9877
9951
  "description": "One mail account's classification calls today."
9878
9952
  },
9953
+ "RemitImap.ClassificationValueSource": {
9954
+ "type": "string",
9955
+ "enum": [
9956
+ "Saved",
9957
+ "Deployment",
9958
+ "Default"
9959
+ ],
9960
+ "description": "Where a classification setting's value comes from."
9961
+ },
9879
9962
  "RemitImap.ConfigDescriptionResponse": {
9880
9963
  "type": "object",
9881
9964
  "required": [
@@ -14184,7 +14267,7 @@
14184
14267
  "count": {
14185
14268
  "type": "integer",
14186
14269
  "format": "int32",
14187
- "description": "How much the query matches, over the whole scope. Exact: no page size bounds\nit, no cursor narrows it, so it is the same number on the first page and the\nlast. Present only when `count=true`.\n\nEach operation counts what it lists. `searchThreads` lists messages of one\nmailbox and counts messages. `listAllThreads` counts CONVERSATIONS across\nevery non-muted mailbox of every account — a thread holding two matching\nmessages counts once, and so does one message reachable through a real\nfolder and a virtual copy of it — because that is what the cross-account\nlisting renders after collapsing by `threadId`. A count that disagreed with\nthe rows beneath it would be a third number for the same set.\n\nAbsent when the query carries `senderTrust` or `dkimMismatch`, even with\n`count=true`. Those are resolved by enriching rows rather than by a\npredicate, so no exact count exists short of enriching the whole mailbox.\nAbsence says so; a page's post-filter length labelled `count` would be a\npage length presented as a total. A client with no number renders none."
14270
+ "description": "How much the query matches, over the whole scope. Exact: no page size bounds\nit, no cursor narrows it, so it is the same number on the first page and the\nlast. Present only when `count=true`.\n\nEach operation counts what it lists. `searchThreads` lists messages of one\nmailbox and counts messages. `listAllThreads` counts CONVERSATIONS across\nevery non-muted mailbox of every account — a thread holding two matching\nmessages counts once, and so does one message reachable through a real\nfolder and a virtual copy of it — because that is what the cross-account\nlisting renders after collapsing by `threadId`. A count that disagreed with\nthe rows beneath it would be a third number for the same set."
14188
14271
  }
14189
14272
  },
14190
14273
  "description": "Aggregate response for the filterable thread listings — `searchThreads` and\n`listAllThreads`. Carries the matching rows (`items`), a pagination\n`continuationToken`, and an optional `count` of what the query matches.\n`items` is omitted when `results=false` (count-only); `count` is present only\nwhen `count=true`. Thread-specific so the shared `ResultList<T>` (7 endpoints)\nstays untouched.\n\n`listAllThreads` answers with this model rather than `ResultList<T>` for that\nsame reason: it needs the count field and the shared model cannot carry one.\nOne model over both operations rather than a second of the same shape, so a\nclient reading a filtered thread listing reads one response type whether the\nlisting is scoped to a mailbox or spans every account."
@@ -14831,29 +14914,29 @@
14831
14914
  "$ref": "#/components/schemas/RemitImap.ClassificationPresetId"
14832
14915
  }
14833
14916
  ],
14834
- "description": "Save a classification provider. Saving another preset deletes the stored key. Without it, the classification fields below apply to the saved provider."
14917
+ "description": "Save a classification provider. Saving another preset deletes the stored key, model and base URL. Without it, the classification fields below apply to the provider in effect, saved or inherited from the deployment."
14835
14918
  },
14836
14919
  "classificationModel": {
14837
14920
  "type": "string",
14838
- "description": "The model to ask for. Empty means the preset's default model."
14921
+ "description": "The model to ask for. Empty deletes the saved model, so it is inherited again."
14839
14922
  },
14840
14923
  "classificationBaseUrl": {
14841
14924
  "type": "string",
14842
- "description": "The http or https base URL to call. Empty means the preset's default base URL. Refused with 400 `invalid_classification_base_url` when it is not a URL, or when the preset has no default base URL and none is given."
14925
+ "description": "The http or https base URL to call. Empty deletes the saved base URL, so it is inherited again. Refused with 400 `invalid_classification_base_url` when it is not a URL, or when no base URL is saved, inherited or given by the preset."
14843
14926
  },
14844
14927
  "classificationApiKey": {
14845
14928
  "type": "string",
14846
- "description": "The provider's API key. Write-only: stored encrypted and never returned. Refused with 400 `classification_api_key_required` when the preset needs a key and none is stored for it."
14929
+ "description": "The provider's API key. Write-only: stored encrypted and never returned. Refused with 400 `classification_api_key_required` when the preset needs a key and none is saved, or inherited from the deployment for the same preset and base URL."
14847
14930
  },
14848
14931
  "classificationEnabled": {
14849
14932
  "type": "boolean",
14850
- "description": "Switch classification on or off. Switching on with no saved provider is refused with 400 `classification_not_configured`; switching off keeps the provider and key."
14933
+ "description": "Switch classification on or off. Switching on with no provider in effect is refused with 400 `classification_not_configured`; switching off keeps the provider and key."
14851
14934
  },
14852
14935
  "classificationDailyLimit": {
14853
14936
  "type": "integer",
14854
14937
  "format": "int32",
14855
14938
  "minimum": 1,
14856
- "description": "The most classification calls per mail account per UTC day. Needs a saved provider."
14939
+ "description": "The most classification calls per mail account per UTC day. Needs a provider in effect, saved or inherited."
14857
14940
  }
14858
14941
  },
14859
14942
  "description": "A change to the caller's settings. Every field is optional and absence means untouched."
@@ -14891,7 +14974,7 @@
14891
14974
  "$ref": "#/components/schemas/RemitImap.ClassificationSettings"
14892
14975
  }
14893
14976
  ],
14894
- "description": "The saved classification provider, or `NotConfigured`."
14977
+ "description": "The classification provider in effect, `Unrunnable` when one is chosen but cannot run, or `NotConfigured`."
14895
14978
  }
14896
14979
  },
14897
14980
  "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."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remit/api-openapi-spec",
3
- "version": "0.0.88",
3
+ "version": "0.0.90",
4
4
  "description": "Remit API OpenAPI 3 document, generated from TypeSpec, and its precompiled request validators.",
5
5
  "exports": {
6
6
  ".": "./openapi.json",