@pidgeon-ai/sdk 1.24.0 → 1.25.0

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/dist/index.d.cts CHANGED
@@ -868,7 +868,7 @@ type AwaitedMessage = {
868
868
  */
869
869
  cursor: string;
870
870
  /**
871
- * What matched and was not returned. A wait that times out with `spam` above zero did not miss the message: it was filed as spam.
871
+ * What matched and was not returned. A wait that times out with `spam` or `unauthenticated` above zero did not miss the message: it was held back.
872
872
  */
873
873
  held_back: {
874
874
  /**
@@ -876,7 +876,11 @@ type AwaitedMessage = {
876
876
  */
877
877
  spam: number;
878
878
  /**
879
- * Their ids, for `GET /messages/{id}`.
879
+ * Messages that matched `from` but did not pass DMARC, so their From may be forged.
880
+ */
881
+ unauthenticated: number;
882
+ /**
883
+ * Their ids, spam first, for `GET /messages/{id}`.
880
884
  */
881
885
  message_ids: Array<string>;
882
886
  /**
@@ -1625,7 +1629,7 @@ type ReceiveRules = {
1625
1629
  rules: Array<{
1626
1630
  id: string;
1627
1631
  /**
1628
- * reject refuses before the message is stored. spam, trash and archive file it. inbox means never classify this sender as spam.
1632
+ * reject refuses before the message is stored. spam, trash and archive file it. inbox means never file this sender as spam, for mail that passes DMARC.
1629
1633
  */
1630
1634
  action: string;
1631
1635
  match_type: 'address' | 'domain';
@@ -3883,6 +3887,10 @@ type MessagesAwaitData = {
3883
3887
  * Also return a matching message filed as spam. Without it, one is counted in `held_back` instead, with its id.
3884
3888
  */
3885
3889
  include_spam?: 'true' | 'false';
3890
+ /**
3891
+ * With `from`, also return a match that did not pass DMARC, whose From may be forged. Without it, one is counted in `held_back.unauthenticated` instead, with its id.
3892
+ */
3893
+ include_unauthenticated?: 'true' | 'false';
3886
3894
  /**
3887
3895
  * Only messages that arrived after this: the `cursor` a previous call returned, or `now`. Without it, the wait first looks back 2 minutes and returns the newest matching message from then, so a code that beat you to the call is not missed.
3888
3896
  */
@@ -8708,7 +8716,7 @@ declare const identitiesReceiveRulesGet: <ThrowOnError extends boolean = false>(
8708
8716
  *
8709
8717
  * `value` is an address or a domain and the string says which: `billing@acme.com` matches one person, `acme.com` matches everybody there. **The more specific rule wins**, and an address’s own rule wins over a workspace-wide one. Adding **replaces** any rule already there for that value.
8710
8718
  *
8711
- * `action` is `reject`, `spam`, `trash`, `archive` or `inbox`. **`reject` refuses before the message is stored** — no row, no thread, no storage charged and no webhook — which is what an address nobody will ever open wants. The other four file it, and `inbox` means *never classify this sender as spam*.
8719
+ * `action` is `reject`, `spam`, `trash`, `archive` or `inbox`. **`reject` refuses before the message is stored** — no row, no thread, no storage charged and no webhook — which is what an address nobody will ever open wants. The other four file it, and `inbox` means *never file this sender as spam*. A rule takes a message out of spam only when it passed DMARC, because the rule matches a `From:` anybody can write.
8712
8720
  *
8713
8721
  * **It is not a security control.** The `From:` header is written by the sender, and anybody blocked can change it for the price of a new address. What this buys is not paying for mail from senders who have not bothered.
8714
8722
  */
@@ -8814,7 +8822,7 @@ declare const messagesUndo: <ThrowOnError extends boolean = false>(options: Opti
8814
8822
  /**
8815
8823
  * Wait for the next message
8816
8824
  *
8817
- * Holds the request open until a message matching the filters arrives at the address, or `timeout` seconds pass — one call where you would otherwise poll. The message carries `extracted`: verification codes and links, most likely first. Without `after`, it first looks back 2 minutes and returns the newest matching message from then, because a code often lands before the call is made; narrow it with `from`, `subject_contains` or `has_code` so an earlier email is not taken for the one you want, or pass `after=now` to wait only for new mail. Pass the returned `cursor` as `after` on the next call so nothing arriving between calls is missed. Answers 200 with `message: null` and `timed_out: true` when nothing came. A matching message filed as spam is not returned unless you pass `include_spam=true`; it is counted in `held_back`, with its id, so a timeout never hides mail that arrived.
8825
+ * Holds the request open until a message matching the filters arrives at the address, or `timeout` seconds pass — one call where you would otherwise poll. The message carries `extracted`: verification codes and links, most likely first. Without `after`, it first looks back 2 minutes and returns the newest matching message from then, because a code often lands before the call is made; narrow it with `from`, `subject_contains` or `has_code` so an earlier email is not taken for the one you want, or pass `after=now` to wait only for new mail. Pass the returned `cursor` as `after` on the next call so nothing arriving between calls is missed. Answers 200 with `message: null` and `timed_out: true` when nothing came. A matching message filed as spam is not returned unless you pass `include_spam=true`; it is counted in `held_back`, with its id, so a timeout never hides mail that arrived. A message matches `from` only when it passed DMARC, because anybody can write a `From:`; one that did not is counted in `held_back.unauthenticated`, and `include_unauthenticated=true` returns it.
8818
8826
  */
8819
8827
  declare const messagesAwait: <ThrowOnError extends boolean = false>(options: Options<MessagesAwaitData, ThrowOnError>) => RequestResult<MessagesAwaitResponses, MessagesAwaitErrors, ThrowOnError>;
8820
8828
  /**
package/dist/index.d.ts CHANGED
@@ -868,7 +868,7 @@ type AwaitedMessage = {
868
868
  */
869
869
  cursor: string;
870
870
  /**
871
- * What matched and was not returned. A wait that times out with `spam` above zero did not miss the message: it was filed as spam.
871
+ * What matched and was not returned. A wait that times out with `spam` or `unauthenticated` above zero did not miss the message: it was held back.
872
872
  */
873
873
  held_back: {
874
874
  /**
@@ -876,7 +876,11 @@ type AwaitedMessage = {
876
876
  */
877
877
  spam: number;
878
878
  /**
879
- * Their ids, for `GET /messages/{id}`.
879
+ * Messages that matched `from` but did not pass DMARC, so their From may be forged.
880
+ */
881
+ unauthenticated: number;
882
+ /**
883
+ * Their ids, spam first, for `GET /messages/{id}`.
880
884
  */
881
885
  message_ids: Array<string>;
882
886
  /**
@@ -1625,7 +1629,7 @@ type ReceiveRules = {
1625
1629
  rules: Array<{
1626
1630
  id: string;
1627
1631
  /**
1628
- * reject refuses before the message is stored. spam, trash and archive file it. inbox means never classify this sender as spam.
1632
+ * reject refuses before the message is stored. spam, trash and archive file it. inbox means never file this sender as spam, for mail that passes DMARC.
1629
1633
  */
1630
1634
  action: string;
1631
1635
  match_type: 'address' | 'domain';
@@ -3883,6 +3887,10 @@ type MessagesAwaitData = {
3883
3887
  * Also return a matching message filed as spam. Without it, one is counted in `held_back` instead, with its id.
3884
3888
  */
3885
3889
  include_spam?: 'true' | 'false';
3890
+ /**
3891
+ * With `from`, also return a match that did not pass DMARC, whose From may be forged. Without it, one is counted in `held_back.unauthenticated` instead, with its id.
3892
+ */
3893
+ include_unauthenticated?: 'true' | 'false';
3886
3894
  /**
3887
3895
  * Only messages that arrived after this: the `cursor` a previous call returned, or `now`. Without it, the wait first looks back 2 minutes and returns the newest matching message from then, so a code that beat you to the call is not missed.
3888
3896
  */
@@ -8708,7 +8716,7 @@ declare const identitiesReceiveRulesGet: <ThrowOnError extends boolean = false>(
8708
8716
  *
8709
8717
  * `value` is an address or a domain and the string says which: `billing@acme.com` matches one person, `acme.com` matches everybody there. **The more specific rule wins**, and an address’s own rule wins over a workspace-wide one. Adding **replaces** any rule already there for that value.
8710
8718
  *
8711
- * `action` is `reject`, `spam`, `trash`, `archive` or `inbox`. **`reject` refuses before the message is stored** — no row, no thread, no storage charged and no webhook — which is what an address nobody will ever open wants. The other four file it, and `inbox` means *never classify this sender as spam*.
8719
+ * `action` is `reject`, `spam`, `trash`, `archive` or `inbox`. **`reject` refuses before the message is stored** — no row, no thread, no storage charged and no webhook — which is what an address nobody will ever open wants. The other four file it, and `inbox` means *never file this sender as spam*. A rule takes a message out of spam only when it passed DMARC, because the rule matches a `From:` anybody can write.
8712
8720
  *
8713
8721
  * **It is not a security control.** The `From:` header is written by the sender, and anybody blocked can change it for the price of a new address. What this buys is not paying for mail from senders who have not bothered.
8714
8722
  */
@@ -8814,7 +8822,7 @@ declare const messagesUndo: <ThrowOnError extends boolean = false>(options: Opti
8814
8822
  /**
8815
8823
  * Wait for the next message
8816
8824
  *
8817
- * Holds the request open until a message matching the filters arrives at the address, or `timeout` seconds pass — one call where you would otherwise poll. The message carries `extracted`: verification codes and links, most likely first. Without `after`, it first looks back 2 minutes and returns the newest matching message from then, because a code often lands before the call is made; narrow it with `from`, `subject_contains` or `has_code` so an earlier email is not taken for the one you want, or pass `after=now` to wait only for new mail. Pass the returned `cursor` as `after` on the next call so nothing arriving between calls is missed. Answers 200 with `message: null` and `timed_out: true` when nothing came. A matching message filed as spam is not returned unless you pass `include_spam=true`; it is counted in `held_back`, with its id, so a timeout never hides mail that arrived.
8825
+ * Holds the request open until a message matching the filters arrives at the address, or `timeout` seconds pass — one call where you would otherwise poll. The message carries `extracted`: verification codes and links, most likely first. Without `after`, it first looks back 2 minutes and returns the newest matching message from then, because a code often lands before the call is made; narrow it with `from`, `subject_contains` or `has_code` so an earlier email is not taken for the one you want, or pass `after=now` to wait only for new mail. Pass the returned `cursor` as `after` on the next call so nothing arriving between calls is missed. Answers 200 with `message: null` and `timed_out: true` when nothing came. A matching message filed as spam is not returned unless you pass `include_spam=true`; it is counted in `held_back`, with its id, so a timeout never hides mail that arrived. A message matches `from` only when it passed DMARC, because anybody can write a `From:`; one that did not is counted in `held_back.unauthenticated`, and `include_unauthenticated=true` returns it.
8818
8826
  */
8819
8827
  declare const messagesAwait: <ThrowOnError extends boolean = false>(options: Options<MessagesAwaitData, ThrowOnError>) => RequestResult<MessagesAwaitResponses, MessagesAwaitErrors, ThrowOnError>;
8820
8828
  /**