@epilot/sdk 2.18.21 → 2.18.23

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.
Files changed (146) hide show
  1. package/definitions/ai-agents.json +121 -27
  2. package/definitions/customer-portal-runtime.json +1 -1
  3. package/definitions/customer-portal.json +207 -17
  4. package/definitions/message.json +164 -14
  5. package/dist/ai-agents-ME5VRKMY.cjs +7 -0
  6. package/dist/ai-agents-MY4QE4CP.js +7 -0
  7. package/dist/{ai-agents.d-BnR7CAeJ.d.cts → ai-agents.d-B3TkP4mo.d.cts} +152 -52
  8. package/dist/{ai-agents.d-BnR7CAeJ.d.ts → ai-agents.d-B3TkP4mo.d.ts} +152 -52
  9. package/dist/apis/access-token.cjs +6 -6
  10. package/dist/apis/access-token.js +1 -1
  11. package/dist/apis/address-suggestions.cjs +6 -6
  12. package/dist/apis/address-suggestions.js +1 -1
  13. package/dist/apis/address.cjs +6 -6
  14. package/dist/apis/address.js +1 -1
  15. package/dist/apis/ai-agents.cjs +6 -6
  16. package/dist/apis/ai-agents.d.cts +2 -2
  17. package/dist/apis/ai-agents.d.ts +2 -2
  18. package/dist/apis/ai-agents.js +1 -1
  19. package/dist/apis/app.cjs +6 -6
  20. package/dist/apis/app.js +1 -1
  21. package/dist/apis/audit-logs.cjs +6 -6
  22. package/dist/apis/audit-logs.js +1 -1
  23. package/dist/apis/automation.cjs +6 -6
  24. package/dist/apis/automation.js +1 -1
  25. package/dist/apis/billing.cjs +6 -6
  26. package/dist/apis/billing.js +1 -1
  27. package/dist/apis/blueprint-manifest.cjs +6 -6
  28. package/dist/apis/blueprint-manifest.js +1 -1
  29. package/dist/apis/calendar.cjs +6 -6
  30. package/dist/apis/calendar.js +1 -1
  31. package/dist/apis/configuration-hub.cjs +6 -6
  32. package/dist/apis/configuration-hub.js +1 -1
  33. package/dist/apis/consent.cjs +6 -6
  34. package/dist/apis/consent.js +1 -1
  35. package/dist/apis/customer-portal.cjs +8 -8
  36. package/dist/apis/customer-portal.d.cts +2 -2
  37. package/dist/apis/customer-portal.d.ts +2 -2
  38. package/dist/apis/customer-portal.js +2 -2
  39. package/dist/apis/dashboard.cjs +6 -6
  40. package/dist/apis/dashboard.js +1 -1
  41. package/dist/apis/data-governance.cjs +6 -6
  42. package/dist/apis/data-governance.js +1 -1
  43. package/dist/apis/deduplication.cjs +6 -6
  44. package/dist/apis/deduplication.js +1 -1
  45. package/dist/apis/design.cjs +6 -6
  46. package/dist/apis/design.js +1 -1
  47. package/dist/apis/document.cjs +6 -6
  48. package/dist/apis/document.js +1 -1
  49. package/dist/apis/email-settings.cjs +6 -6
  50. package/dist/apis/email-settings.js +1 -1
  51. package/dist/apis/email-template.cjs +6 -6
  52. package/dist/apis/email-template.js +1 -1
  53. package/dist/apis/entity-mapping.cjs +6 -6
  54. package/dist/apis/entity-mapping.js +1 -1
  55. package/dist/apis/entity.cjs +6 -6
  56. package/dist/apis/entity.js +1 -1
  57. package/dist/apis/environments.cjs +6 -6
  58. package/dist/apis/environments.js +1 -1
  59. package/dist/apis/event-catalog.cjs +6 -6
  60. package/dist/apis/event-catalog.js +1 -1
  61. package/dist/apis/file.cjs +6 -6
  62. package/dist/apis/file.js +1 -1
  63. package/dist/apis/iban.cjs +6 -6
  64. package/dist/apis/iban.js +1 -1
  65. package/dist/apis/integration-toolkit.cjs +6 -6
  66. package/dist/apis/integration-toolkit.js +1 -1
  67. package/dist/apis/journey.cjs +6 -6
  68. package/dist/apis/journey.js +1 -1
  69. package/dist/apis/kanban.cjs +6 -6
  70. package/dist/apis/kanban.js +1 -1
  71. package/dist/apis/message.cjs +6 -6
  72. package/dist/apis/message.d.cts +2 -2
  73. package/dist/apis/message.d.ts +2 -2
  74. package/dist/apis/message.js +1 -1
  75. package/dist/apis/metering.cjs +6 -6
  76. package/dist/apis/metering.js +1 -1
  77. package/dist/apis/notes.cjs +6 -6
  78. package/dist/apis/notes.js +1 -1
  79. package/dist/apis/notification.cjs +6 -6
  80. package/dist/apis/notification.js +1 -1
  81. package/dist/apis/organization.cjs +6 -6
  82. package/dist/apis/organization.js +1 -1
  83. package/dist/apis/partner-directory.cjs +6 -6
  84. package/dist/apis/partner-directory.js +1 -1
  85. package/dist/apis/permissions.cjs +6 -6
  86. package/dist/apis/permissions.js +1 -1
  87. package/dist/apis/pricing-tier.cjs +6 -6
  88. package/dist/apis/pricing-tier.js +1 -1
  89. package/dist/apis/pricing.cjs +6 -6
  90. package/dist/apis/pricing.js +1 -1
  91. package/dist/apis/purpose.cjs +6 -6
  92. package/dist/apis/purpose.js +1 -1
  93. package/dist/apis/query.cjs +6 -6
  94. package/dist/apis/query.js +1 -1
  95. package/dist/apis/sandbox.cjs +6 -6
  96. package/dist/apis/sandbox.js +1 -1
  97. package/dist/apis/sharing.cjs +6 -6
  98. package/dist/apis/sharing.js +1 -1
  99. package/dist/apis/snapshot.cjs +6 -6
  100. package/dist/apis/snapshot.js +1 -1
  101. package/dist/apis/submission.cjs +6 -6
  102. package/dist/apis/submission.js +1 -1
  103. package/dist/apis/target.cjs +6 -6
  104. package/dist/apis/target.js +1 -1
  105. package/dist/apis/targeting.cjs +6 -6
  106. package/dist/apis/targeting.js +1 -1
  107. package/dist/apis/template-variables.cjs +6 -6
  108. package/dist/apis/template-variables.js +1 -1
  109. package/dist/apis/user.cjs +6 -6
  110. package/dist/apis/user.js +1 -1
  111. package/dist/apis/validation-rules.cjs +6 -6
  112. package/dist/apis/validation-rules.js +1 -1
  113. package/dist/apis/webhooks.cjs +6 -6
  114. package/dist/apis/webhooks.js +1 -1
  115. package/dist/apis/workflow-definition.cjs +6 -6
  116. package/dist/apis/workflow-definition.js +1 -1
  117. package/dist/apis/workflow.cjs +6 -6
  118. package/dist/apis/workflow.js +1 -1
  119. package/dist/{chunk-EPDH37RS.js → chunk-AWKA7GZQ.js} +1 -1
  120. package/dist/{chunk-ZCEIXRDJ.cjs → chunk-J57SWYWL.cjs} +4 -4
  121. package/dist/{chunk-LKV3RKOP.cjs → chunk-QKEPXYEF.cjs} +1 -1
  122. package/dist/{chunk-C2BFLFHE.js → chunk-SCBBLLBK.js} +4 -4
  123. package/dist/customer-portal-JLUT56QQ.js +7 -0
  124. package/dist/customer-portal-NUYHT3HX.cjs +7 -0
  125. package/dist/{customer-portal-runtime-FZQLCEJQ.js → customer-portal-runtime-6CECA6UW.js} +1 -1
  126. package/dist/{customer-portal-runtime-7WW3YRWJ.cjs → customer-portal-runtime-QMONBHLN.cjs} +2 -2
  127. package/dist/{customer-portal.d-JVkJjm_e.d.cts → customer-portal.d-Ce8-UnSY.d.cts} +794 -42
  128. package/dist/{customer-portal.d-JVkJjm_e.d.ts → customer-portal.d-Ce8-UnSY.d.ts} +794 -42
  129. package/dist/index.cjs +10 -10
  130. package/dist/index.d.cts +3 -3
  131. package/dist/index.d.ts +3 -3
  132. package/dist/index.js +2 -2
  133. package/dist/message-LJ32JH6Z.cjs +7 -0
  134. package/dist/message-SSTVRGEF.js +7 -0
  135. package/dist/{message.d-BHWCGH3q.d.cts → message.d-DwnqO-Us.d.cts} +366 -25
  136. package/dist/{message.d-BHWCGH3q.d.ts → message.d-DwnqO-Us.d.ts} +366 -25
  137. package/docs/ai-agents.md +76 -19
  138. package/docs/customer-portal.md +209 -13
  139. package/docs/message.md +126 -2
  140. package/package.json +1 -1
  141. package/dist/ai-agents-3JK4UU2G.js +0 -7
  142. package/dist/ai-agents-XST3YUFA.cjs +0 -7
  143. package/dist/customer-portal-JDIXJD6C.cjs +0 -7
  144. package/dist/customer-portal-WIRQ7UCN.js +0 -7
  145. package/dist/message-BZN67NTB.js +0 -7
  146. package/dist/message-DBHA4PHI.cjs +0 -7
@@ -654,6 +654,102 @@ declare namespace Components {
654
654
  */
655
655
  export type ReadingScope = "organization" | "user";
656
656
  export interface SearchIDParams {
657
+ /**
658
+ * The view to compile, with the same meaning as on `threads:search`. Present here because
659
+ * this endpoint returns the ordered id set *for that list*: if one compiled its view and the
660
+ * other ran an authored `q`, the two would disagree inside a single feature, which is the
661
+ * drift this replaces.
662
+ *
663
+ */
664
+ view?: {
665
+ [name: string]: any;
666
+ /**
667
+ * Which sidebar folder's membership predicate to apply.
668
+ */
669
+ folder?: "inbox" | "favorite" | "sent" | "trash" | "spam" | "unassignable" | "draft";
670
+ /**
671
+ * Whose mailbox this is. `agent` scopes to threads assigned to the caller or their groups;
672
+ * `organization` scopes to the org and is the only mailbox that carries address filtering.
673
+ *
674
+ */
675
+ mailbox?: "organization" | "agent";
676
+ /**
677
+ * Saved-filter labels, ANDed. Matched exactly against the tag rather than against its
678
+ * tokens, so a label whose words overlap a folder tag no longer lands in that folder.
679
+ *
680
+ */
681
+ labels?: string[];
682
+ /**
683
+ * Purpose ids on linked entities, ANDed.
684
+ */
685
+ purposes?: string[];
686
+ /**
687
+ * State filters, independent of the folder. `resolved` and `trash` reach the Inbox folder
688
+ * only and are mutually exclusive there; `unread` applies anywhere.
689
+ *
690
+ */
691
+ filters?: ("unread" | "resolved" | "trash")[];
692
+ /**
693
+ * Sender addresses to filter on.
694
+ */
695
+ from?: string[];
696
+ /**
697
+ * Recipient addresses to filter on.
698
+ */
699
+ to?: string[];
700
+ /**
701
+ * Assignee user ids.
702
+ */
703
+ assigned_to?: string[];
704
+ /**
705
+ * Whether threads with no assignee join the `assigned_to` set. A separate flag rather than a
706
+ * sentinel entry in that list, so `assigned_to` holds user ids and nothing else.
707
+ *
708
+ */
709
+ include_unassigned?: boolean;
710
+ /**
711
+ * Lower bound of the date range, in days before now. Omitted means the epoch.
712
+ */
713
+ date_from_days_ago?: number;
714
+ /**
715
+ * Upper bound of the date range, in days before now. Omitted means now.
716
+ */
717
+ date_to_days_ago?: number;
718
+ /**
719
+ * Addresses the user selected in the address filter. Absent and empty differ, and the
720
+ * difference is a real UI state: absent is "not filtering by address", empty is "every
721
+ * address deselected", which matches nothing.
722
+ *
723
+ * Distinct from the permission restriction, which the server derives and a caller cannot
724
+ * author.
725
+ *
726
+ */
727
+ email_filter?: string[];
728
+ /**
729
+ * The user's search string, as typed. Expanded across the searched fields server-side and
730
+ * never interpreted as query syntax, so a typed operator or a stray bracket cannot
731
+ * re-associate the predicate around it.
732
+ *
733
+ */
734
+ text?: string;
735
+ /**
736
+ * Restrict the view to these threads. Exists because "would this thread appear in the view
737
+ * the user is looking at?" is a real question the inbox asks when a new thread arrives, and
738
+ * it is a membership test against the view rather than a different view.
739
+ *
740
+ */
741
+ thread_ids?: string[];
742
+ /**
743
+ * Restrict the view to threads this user pinned. The pinned strip above the list is the same
744
+ * view with this one extra condition.
745
+ *
746
+ */
747
+ pinned_by?: string;
748
+ };
749
+ /**
750
+ * The caller's group ids, with the same meaning and caveats as on `threads:search`.
751
+ */
752
+ user_groups?: string[];
657
753
  inbox_id?: string | string[];
658
754
  /**
659
755
  * Lucene query syntax supported with ElasticSearch
@@ -676,11 +772,127 @@ declare namespace Components {
676
772
  export interface SearchParamsV2 {
677
773
  inbox_id?: string | string[];
678
774
  /**
679
- * Lucene query syntax supported with ElasticSearch
775
+ * Lucene query syntax supported with ElasticSearch.
776
+ *
777
+ * Send this or `view`, not both. At least one is required; a request with neither is refused
778
+ * with a 400. An empty string is accepted and returns no hits.
779
+ *
680
780
  * example:
681
781
  * subject:"Request for solar panel price" AND _tags:INBOX
682
782
  */
683
- q: string;
783
+ q?: string;
784
+ /**
785
+ * A view for the server to compile into the query, instead of supplying `q`. When a view is
786
+ * present and compilation is enabled for the calling organization, the compiled query runs and
787
+ * `q` is not consulted.
788
+ *
789
+ * Read by `threads:search` and `threads:searchIds` only. This schema is shared with
790
+ * `messages:search`, which compiles no view and ignores the field, so a request there must
791
+ * supply `q`.
792
+ *
793
+ * Compilation is enabled per organization by the `message-unread-unified-predicate` feature
794
+ * flag. While it is off, `q` runs and a request supplying only a view returns no hits.
795
+ *
796
+ */
797
+ view?: {
798
+ [name: string]: any;
799
+ /**
800
+ * Which sidebar folder's membership predicate to apply.
801
+ */
802
+ folder?: "inbox" | "favorite" | "sent" | "trash" | "spam" | "unassignable" | "draft";
803
+ /**
804
+ * Whose mailbox this is. `agent` scopes to threads assigned to the caller or their groups;
805
+ * `organization` scopes to the org and is the only mailbox that carries address filtering.
806
+ *
807
+ */
808
+ mailbox?: "organization" | "agent";
809
+ /**
810
+ * Saved-filter labels, ANDed. Matched exactly against the tag rather than against its
811
+ * tokens, so a label whose words overlap a folder tag no longer lands in that folder.
812
+ *
813
+ */
814
+ labels?: string[];
815
+ /**
816
+ * Purpose ids on linked entities, ANDed.
817
+ */
818
+ purposes?: string[];
819
+ /**
820
+ * State filters, independent of the folder. `resolved` and `trash` reach the Inbox folder
821
+ * only and are mutually exclusive there; `unread` applies anywhere.
822
+ *
823
+ */
824
+ filters?: ("unread" | "resolved" | "trash")[];
825
+ /**
826
+ * Sender addresses to filter on.
827
+ */
828
+ from?: string[];
829
+ /**
830
+ * Recipient addresses to filter on.
831
+ */
832
+ to?: string[];
833
+ /**
834
+ * Assignee user ids.
835
+ */
836
+ assigned_to?: string[];
837
+ /**
838
+ * Whether threads with no assignee join the `assigned_to` set. A separate flag rather than a
839
+ * sentinel entry in that list, so `assigned_to` holds user ids and nothing else.
840
+ *
841
+ */
842
+ include_unassigned?: boolean;
843
+ /**
844
+ * Lower bound of the date range, in days before now. Omitted means the epoch.
845
+ */
846
+ date_from_days_ago?: number;
847
+ /**
848
+ * Upper bound of the date range, in days before now. Omitted means now.
849
+ */
850
+ date_to_days_ago?: number;
851
+ /**
852
+ * Addresses the user selected in the address filter. Absent and empty differ, and the
853
+ * difference is a real UI state: absent is "not filtering by address", empty is "every
854
+ * address deselected", which matches nothing.
855
+ *
856
+ * Distinct from the permission restriction, which the server derives and a caller cannot
857
+ * author.
858
+ *
859
+ */
860
+ email_filter?: string[];
861
+ /**
862
+ * The user's search string, as typed. Expanded across the searched fields server-side and
863
+ * never interpreted as query syntax, so a typed operator or a stray bracket cannot
864
+ * re-associate the predicate around it.
865
+ *
866
+ */
867
+ text?: string;
868
+ /**
869
+ * Restrict the view to these threads. Exists because "would this thread appear in the view
870
+ * the user is looking at?" is a real question the inbox asks when a new thread arrives, and
871
+ * it is a membership test against the view rather than a different view.
872
+ *
873
+ */
874
+ thread_ids?: string[];
875
+ /**
876
+ * Restrict the view to threads this user pinned. The pinned strip above the list is the same
877
+ * view with this one extra condition.
878
+ *
879
+ */
880
+ pinned_by?: string;
881
+ };
882
+ /**
883
+ * The caller's group ids, as `group_<id>`. Read only when a `view` is compiled, where they
884
+ * determine the agent mailbox's assignee condition and which shared inboxes, and therefore
885
+ * which addresses, are reachable. Required for those conditions to be correct, because group
886
+ * membership is not present on the id token this service parses.
887
+ *
888
+ * Entries not matching `group_<id>` are dropped.
889
+ *
890
+ * Not an authorization input, and not treated as one: naming groups the caller is not in
891
+ * widens what the response includes, exactly as supplying a broader `q` does. Access control
892
+ * is enforced elsewhere.
893
+ *
894
+ */
895
+ user_groups?: string[];
684
896
  fields?: /**
685
897
  * List of entity fields to include or exclude in the response
686
898
  *
@@ -810,6 +1022,100 @@ declare namespace Components {
810
1022
  */
811
1023
  removed?: string[];
812
1024
  }
1025
+ /**
1026
+ * A central-inbox view, described structurally so the server compiles the query for it. Both the
1027
+ * thread list and the unread count for a view are compiled from the same description, so the two
1028
+ * cannot disagree about what the view means.
1029
+ *
1030
+ * Every field is optional and an omitted field adds no condition, so a view narrows the whole
1031
+ * mailbox rather than being a template with required holes. Unknown fields are ignored.
1032
+ *
1033
+ */
1034
+ export interface ThreadView {
1035
+ [name: string]: any;
1036
+ /**
1037
+ * Which sidebar folder's membership predicate to apply.
1038
+ */
1039
+ folder?: "inbox" | "favorite" | "sent" | "trash" | "spam" | "unassignable" | "draft";
1040
+ /**
1041
+ * Whose mailbox this is. `agent` scopes to threads assigned to the caller or their groups;
1042
+ * `organization` scopes to the org and is the only mailbox that carries address filtering.
1043
+ *
1044
+ */
1045
+ mailbox?: "organization" | "agent";
1046
+ /**
1047
+ * Saved-filter labels, ANDed. Matched exactly against the tag rather than against its
1048
+ * tokens, so a label whose words overlap a folder tag no longer lands in that folder.
1049
+ *
1050
+ */
1051
+ labels?: string[];
1052
+ /**
1053
+ * Purpose ids on linked entities, ANDed.
1054
+ */
1055
+ purposes?: string[];
1056
+ /**
1057
+ * State filters, independent of the folder. `resolved` and `trash` reach the Inbox folder
1058
+ * only and are mutually exclusive there; `unread` applies anywhere.
1059
+ *
1060
+ */
1061
+ filters?: ("unread" | "resolved" | "trash")[];
1062
+ /**
1063
+ * Sender addresses to filter on.
1064
+ */
1065
+ from?: string[];
1066
+ /**
1067
+ * Recipient addresses to filter on.
1068
+ */
1069
+ to?: string[];
1070
+ /**
1071
+ * Assignee user ids.
1072
+ */
1073
+ assigned_to?: string[];
1074
+ /**
1075
+ * Whether threads with no assignee join the `assigned_to` set. A separate flag rather than a
1076
+ * sentinel entry in that list, so `assigned_to` holds user ids and nothing else.
1077
+ *
1078
+ */
1079
+ include_unassigned?: boolean;
1080
+ /**
1081
+ * Lower bound of the date range, in days before now. Omitted means the epoch.
1082
+ */
1083
+ date_from_days_ago?: number;
1084
+ /**
1085
+ * Upper bound of the date range, in days before now. Omitted means now.
1086
+ */
1087
+ date_to_days_ago?: number;
1088
+ /**
1089
+ * Addresses the user selected in the address filter. Absent and empty differ, and the
1090
+ * difference is a real UI state: absent is "not filtering by address", empty is "every
1091
+ * address deselected", which matches nothing.
1092
+ *
1093
+ * Distinct from the permission restriction, which the server derives and a caller cannot
1094
+ * author.
1095
+ *
1096
+ */
1097
+ email_filter?: string[];
1098
+ /**
1099
+ * The user's search string, as typed. Expanded across the searched fields server-side and
1100
+ * never interpreted as query syntax, so a typed operator or a stray bracket cannot
1101
+ * re-associate the predicate around it.
1102
+ *
1103
+ */
1104
+ text?: string;
1105
+ /**
1106
+ * Restrict the view to these threads. Exists because "would this thread appear in the view
1107
+ * the user is looking at?" is a real question the inbox asks when a new thread arrives, and
1108
+ * it is a membership test against the view rather than a different view.
1109
+ *
1110
+ */
1111
+ thread_ids?: string[];
1112
+ /**
1113
+ * Restrict the view to threads this user pinned. The pinned strip above the list is the same
1114
+ * view with this one extra condition.
1115
+ *
1116
+ */
1117
+ pinned_by?: string;
1118
+ }
813
1119
  export interface TimelineActor {
814
1120
  user_id?: string;
815
1121
  email?: string;
@@ -823,7 +1129,7 @@ declare namespace Components {
823
1129
  /**
824
1130
  * Timestamp of the event
825
1131
  * example:
826
- * 2024-01-01T00:00:00Z
1132
+ * 2024-01-01T00:00:00.000Z
827
1133
  */
828
1134
  timestamp: string;
829
1135
  /**
@@ -887,7 +1193,8 @@ declare namespace Components {
887
1193
  /**
888
1194
  * Decides which buckets come back, and whether `q` is required. `organization` returns all
889
1195
  * four buckets from the canonical central-inbox queries and takes no `q`. `shared_inbox`
890
- * and `saved_view` return `unread` alone and require the `q` their list uses.
1196
+ * and `saved_view` return `unread` alone. A `saved_view` scope names its view with `view_id`;
1197
+ * a `shared_inbox` scope needs only its `inbox_id`, since the query follows from the type.
891
1198
  *
892
1199
  * A `shared_inbox` scope additionally requires `actor: organization` and is refused with a
893
1200
  * 400 otherwise. A shared inbox is an organization-level construct — selecting one always
@@ -898,16 +1205,40 @@ declare namespace Components {
898
1205
  */
899
1206
  type: "organization" | "shared_inbox" | "saved_view";
900
1207
  /**
901
- * The scope's own list predicate, in Lucene syntax, exactly as the caller passes it to
902
- * `threads:search`. Required for `shared_inbox` and `saved_view`, rejected for
903
- * `organization`. The server ANDs the read-state condition onto it and nothing else, which
904
- * is what makes the count and the list agree. Until the predicate definition moves
905
- * server-side, this is the caller's authored copy.
1208
+ * The scope's query, in Lucene syntax, as passed to `threads:search` for the same scope. The
1209
+ * server adds the read-state condition and nothing else, so the count matches that list.
1210
+ *
1211
+ * Accepted for `shared_inbox` and `saved_view`; rejected for `organization`.
1212
+ *
1213
+ * Superseded by server-side compilation. It remains accepted for callers whose counts are
1214
+ * enabled while compilation is not, and is ignored when compilation is enabled. It will be
1215
+ * removed once compilation is enabled everywhere counts are.
906
1216
  *
907
1217
  * example:
908
1218
  * _tags.keyword:inbox AND !_tags.keyword:trash
909
1219
  */
910
1220
  q?: string;
1221
+ /**
1222
+ * The id of the saved view this scope counts. The server reads that view and compiles the same
1223
+ * query the thread list runs for it, so the count and the list cannot describe the view
1224
+ * differently.
1225
+ *
1226
+ * Required for `saved_view` scopes unless `q` is supplied instead; rejected for the other two
1227
+ * types. A `shared_inbox` scope needs no predicate field at all, because its query follows from
1228
+ * the type and its `inbox_id`. An `organization` scope uses the canonical folder queries.
1229
+ *
1230
+ * The view's own shared-inbox filter is read from the stored view, so `inbox_id` need not be
1231
+ * sent alongside this.
1232
+ *
1233
+ * Compilation is enabled per organization by the `message-unread-unified-predicate` feature
1234
+ * flag. While it is off, a scope supplying only a `view_id` has no query to run and its name is
1235
+ * returned in `omitted` rather than counted. A named view that this organization does not have,
1236
+ * or whose stored configuration cannot be read, is omitted the same way.
1237
+ *
1238
+ * example:
1239
+ * 3f34ce73-089c-4d45-a5ee-c161234e41c3
1240
+ */
1241
+ view_id?: string;
911
1242
  /**
912
1243
  * Shared inbox ids, resolved to bucket ids the same way `threads:search` resolves them.
913
1244
  */
@@ -924,6 +1255,13 @@ declare namespace Components {
924
1255
  * Restrict every scope to messages involving these addresses.
925
1256
  */
926
1257
  email_filter?: string[];
1258
+ /**
1259
+ * The caller's group ids, as `group_<id>`, with the same meaning and constraints as on
1260
+ * `threads:search`. Read only when a scope carries a `view`. Entries not matching
1261
+ * `group_<id>` are dropped. Not an authorization input.
1262
+ *
1263
+ */
1264
+ user_groups?: string[];
927
1265
  scopes: [
928
1266
  UnreadCountScope,
929
1267
  UnreadCountScope?,
@@ -972,9 +1310,13 @@ declare namespace Components {
972
1310
  [name: string]: UnreadCountBuckets;
973
1311
  };
974
1312
  /**
975
- * Names of scopes that were accepted but could not be counted today, a shared inbox whose
976
- * ids matched no bucket in this org. Listed explicitly so a caller can tell an omission apart
977
- * from a mis-spelled scope name, both of which are otherwise just a missing key in `counts`.
1313
+ * Names of scopes that were accepted but could not be counted. Each appears here and is
1314
+ * absent from `counts`, so an omission is distinguishable from a mis-spelled scope name.
1315
+ *
1316
+ * Causes, not distinguishable from this field: a `shared_inbox` scope whose ids matched no
1317
+ * bucket in the organization; a scope with no query to run because compilation is disabled for
1318
+ * the organization and no `q` was supplied; and a `view_id` naming a view this organization
1319
+ * does not have or whose stored configuration cannot be read.
978
1320
  *
979
1321
  */
980
1322
  omitted?: string[];
@@ -3236,12 +3578,11 @@ interface OperationMethods {
3236
3578
  * The `organization` scope is the exception and takes no `q`: it reuses the four canonical
3237
3579
  * central-inbox queries, so its numbers match `getUnread` exactly.
3238
3580
  *
3239
- * Buckets are not symmetric, across scope types or across actors. Every scope other than
3240
- * `organization` returns `unread` alone. The `organization` scope returns all four
3241
- * (`unread`, `drafts`, `unassigned`, `spam`) for `actor: organization`, and only `unread` and
3242
- * `drafts` for `actor: user` the agent sidebar has no Spam or Unlinked folder, so those two
3243
- * numbers have nowhere to render and each one costs a cardinality aggregation. This is a
3244
- * deliberate divergence from `getUnread`, which computes all four for both actors.
3581
+ * Which buckets come back varies by scope type and actor. Every scope other than `organization`
3582
+ * returns `unread` alone. An `organization` scope returns all four (`unread`, `drafts`,
3583
+ * `unassigned`, `spam`) for `actor: organization`, and `unread` and `drafts` only for
3584
+ * `actor: user`. `getUnread` returns all four for both actors; this endpoint omits the two that
3585
+ * no per-user surface renders, since each costs an aggregation.
3245
3586
  *
3246
3587
  * Gated on the `message-unread-counts` flag, evaluated once per request against the calling
3247
3588
  * org. With the flag off the response is `{ "enabled": false, "counts": {} }` and no
@@ -3858,12 +4199,11 @@ interface PathsDictionary {
3858
4199
  * The `organization` scope is the exception and takes no `q`: it reuses the four canonical
3859
4200
  * central-inbox queries, so its numbers match `getUnread` exactly.
3860
4201
  *
3861
- * Buckets are not symmetric, across scope types or across actors. Every scope other than
3862
- * `organization` returns `unread` alone. The `organization` scope returns all four
3863
- * (`unread`, `drafts`, `unassigned`, `spam`) for `actor: organization`, and only `unread` and
3864
- * `drafts` for `actor: user` the agent sidebar has no Spam or Unlinked folder, so those two
3865
- * numbers have nowhere to render and each one costs a cardinality aggregation. This is a
3866
- * deliberate divergence from `getUnread`, which computes all four for both actors.
4202
+ * Which buckets come back varies by scope type and actor. Every scope other than `organization`
4203
+ * returns `unread` alone. An `organization` scope returns all four (`unread`, `drafts`,
4204
+ * `unassigned`, `spam`) for `actor: organization`, and `unread` and `drafts` only for
4205
+ * `actor: user`. `getUnread` returns all four for both actors; this endpoint omits the two that
4206
+ * no per-user surface renders, since each costs an aggregation.
3867
4207
  *
3868
4208
  * Gated on the `message-unread-counts` flag, evaluated once per request against the calling
3869
4209
  * org. With the flag off the response is `{ "enabled": false, "counts": {} }` and no
@@ -4441,6 +4781,7 @@ type ThreadRestoredEvent = Components.Schemas.ThreadRestoredEvent;
4441
4781
  type ThreadTimeline = Components.Schemas.ThreadTimeline;
4442
4782
  type ThreadTrashedEvent = Components.Schemas.ThreadTrashedEvent;
4443
4783
  type ThreadUserAssignedEvent = Components.Schemas.ThreadUserAssignedEvent;
4784
+ type ThreadView = Components.Schemas.ThreadView;
4444
4785
  type TimelineActor = Components.Schemas.TimelineActor;
4445
4786
  type TimelineEvent = Components.Schemas.TimelineEvent;
4446
4787
  type TimelineEventData = Components.Schemas.TimelineEventData;
@@ -4451,4 +4792,4 @@ type UnreadCountsPayload = Components.Schemas.UnreadCountsPayload;
4451
4792
  type UnreadCountsResult = Components.Schemas.UnreadCountsResult;
4452
4793
  type WorkflowStartedEvent = Components.Schemas.WorkflowStartedEvent;
4453
4794
 
4454
- export { type Address as A, type BaseEntity as B, type Client as C, type ThreadUserAssignedEvent as D, type ErrorResponse as E, type FieldsParam as F, type TimelineActor as G, type TimelineEvent as H, type TimelineEventData as I, type TimelineLinkedEntity as J, type UnreadCountScope as K, type UnreadCountsPayload as L, type Message as M, type UnreadCountsResult as N, type OperationMethods as O, Paths as P, type ReadMessagePayload as R, type SearchIDParams as S, type Thread as T, type UnreadCountBuckets as U, type WorkflowStartedEvent as W, Components as a, type PathsDictionary as b, type AssigneeWorkload as c, type AssigneeWorkloadParams as d, type AssigneeWorkloadResults as e, type AttachmentsRelation as f, type BulkActionsPayload as g, type BulkActionsPayloadWithScopes as h, type File as i, type MessageAutoReplySentEvent as j, type MessageEntityLinkedEvent as k, type MessageEntityUnlinkedEvent as l, type MessageLabelAddedEvent as m, type MessageLabelRemovedEvent as n, type MessageRequestParams as o, type MessageV2 as p, type MoveThreadPayload as q, type ReadingScope as r, type SearchParams as s, type SearchParamsV2 as t, type ThreadDoneEvent as u, type ThreadMovedToInboxEvent as v, type ThreadOpenEvent as w, type ThreadRestoredEvent as x, type ThreadTimeline as y, type ThreadTrashedEvent as z };
4795
+ export { type Address as A, type BaseEntity as B, type Client as C, type ThreadUserAssignedEvent as D, type ErrorResponse as E, type FieldsParam as F, type ThreadView as G, type TimelineActor as H, type TimelineEvent as I, type TimelineEventData as J, type TimelineLinkedEntity as K, type UnreadCountScope as L, type Message as M, type UnreadCountsPayload as N, type OperationMethods as O, Paths as P, type UnreadCountsResult as Q, type ReadMessagePayload as R, type SearchIDParams as S, type Thread as T, type UnreadCountBuckets as U, type WorkflowStartedEvent as W, Components as a, type PathsDictionary as b, type AssigneeWorkload as c, type AssigneeWorkloadParams as d, type AssigneeWorkloadResults as e, type AttachmentsRelation as f, type BulkActionsPayload as g, type BulkActionsPayloadWithScopes as h, type File as i, type MessageAutoReplySentEvent as j, type MessageEntityLinkedEvent as k, type MessageEntityUnlinkedEvent as l, type MessageLabelAddedEvent as m, type MessageLabelRemovedEvent as n, type MessageRequestParams as o, type MessageV2 as p, type MoveThreadPayload as q, type ReadingScope as r, type SearchParams as s, type SearchParamsV2 as t, type ThreadDoneEvent as u, type ThreadMovedToInboxEvent as v, type ThreadOpenEvent as w, type ThreadRestoredEvent as x, type ThreadTimeline as y, type ThreadTrashedEvent as z };