@webitel/ui-sdk 26.8.117 → 26.8.119

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 (38) hide show
  1. package/dist/{clients-DWcx-Mfk.js → clients-CjVXyqY8.js} +1502 -170
  2. package/dist/{components-CeOlovz8.js → components-jZ2GzWbv.js} +741 -747
  3. package/dist/ui-sdk.css +1 -1
  4. package/dist/ui-sdk.js +1 -1
  5. package/dist/ui-sdk.umd.cjs +2152 -2113
  6. package/dist/{wt-chat-emoji-v9gpIuHe.js → wt-chat-emoji-RHMx_k1y.js} +1 -1
  7. package/dist/{wt-display-chip-items-Bob7miL_.js → wt-display-chip-items-D_iKQXSB.js} +1 -1
  8. package/dist/wt-label-unpxAKnu.js +28 -0
  9. package/dist/wt-rich-text-editor-B-iHNpqD.js +119 -0
  10. package/dist/{wt-send-message-popup-9O69XY0L.js → wt-send-message-popup-B2lqrtGF.js} +2 -2
  11. package/dist/{wt-type-extension-value-input-55YmFcBp.js → wt-type-extension-value-input-CJWynqhC.js} +2 -2
  12. package/dist/{wt-vidstack-player-ETPSioGH.js → wt-vidstack-player-BL6xL6yo.js} +1 -1
  13. package/package.json +3 -1
  14. package/src/components/index.js +14 -0
  15. package/src/components/on-demand/wt-rich-text-editor/__tests__/WtRichTextEditor.compat.spec.js +121 -0
  16. package/src/components/on-demand/wt-rich-text-editor/__tests__/WtRichTextEditor.spec.js +154 -0
  17. package/src/components/on-demand/wt-rich-text-editor/_internals/wt-rich-text-editor-skeleton.vue +54 -0
  18. package/src/components/on-demand/wt-rich-text-editor/wt-rich-text-editor.vue +225 -0
  19. package/src/utils/__tests__/findTreePath.spec.ts +83 -0
  20. package/src/utils/findTreePath.ts +33 -0
  21. package/src/utils/index.ts +1 -0
  22. package/types/.tsbuildinfo +1 -1
  23. package/types/components/index.d.ts +7 -0
  24. package/types/components/on-demand/wt-call-media-action/wt-call-media-action.vue.d.ts +2 -2
  25. package/types/components/on-demand/wt-rich-text-editor/__tests__/WtRichTextEditor.compat.spec.d.ts +1 -0
  26. package/types/components/on-demand/wt-rich-text-editor/__tests__/WtRichTextEditor.spec.d.ts +1 -0
  27. package/types/components/on-demand/wt-rich-text-editor/_internals/wt-rich-text-editor-skeleton.vue.d.ts +3 -0
  28. package/types/components/on-demand/wt-rich-text-editor/wt-rich-text-editor.vue.d.ts +78 -0
  29. package/types/components/transitions/cases/wt-replace-transition.vue.d.ts +1 -1
  30. package/types/components/wt-datepicker/wt-datepicker.vue.d.ts +2 -2
  31. package/types/components/wt-input-text/wt-input-text.vue.d.ts +1 -1
  32. package/types/components/wt-player/wt-player.vue.d.ts +1 -1
  33. package/types/components/wt-search-bar/wt-search-bar.vue.d.ts +2 -2
  34. package/types/components/wt-table/wt-table.vue.d.ts +1 -1
  35. package/types/components/wt-textarea/wt-textarea.vue.d.ts +1 -1
  36. package/types/components/wt-time-input/wt-time-input.vue.d.ts +1 -1
  37. package/types/utils/findTreePath.d.ts +10 -0
  38. package/types/utils/index.d.ts +1 -0
@@ -1,7 +1,7 @@
1
1
  import { c as e, r as t } from "./dist-EXdgfpvN.js";
2
2
  import { a as n, i as r, n as i, t as a } from "./genClient-CvWlQ0TZ.js";
3
3
  import { i as o, r as s } from "./caseConverters-DGri4uJo.js";
4
- import { T as c } from "./components-CeOlovz8.js";
4
+ import { T as c } from "./components-jZ2GzWbv.js";
5
5
  import { a as l, c as u, r as d, u as f } from "./convertDuration-CW5qzlwH.js";
6
6
  import { S as p, b as m } from "./enums-CsINFPBu.js";
7
7
  import { t as h } from "./deep-copy-BJdHBMNZ.js";
@@ -2637,6 +2637,22 @@ v.object({
2637
2637
  "FAILED"
2638
2638
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
2639
2639
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
2640
+ published: v.object({
2641
+ article_id: v.string().optional().describe("Owning article id."),
2642
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
2643
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
2644
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
2645
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
2646
+ created_by: v.object({
2647
+ id: v.string().optional(),
2648
+ name: v.string().optional()
2649
+ }).optional().describe("User who authored the version."),
2650
+ id: v.string().optional().describe("Unique identifier of the version."),
2651
+ notes: v.string().optional().describe("Optional author notes."),
2652
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
2653
+ subject: v.string().optional().describe("Versioned subject."),
2654
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
2655
+ }).optional().describe("Published version, only when requested in fields."),
2640
2656
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
2641
2657
  space: v.object({
2642
2658
  id: v.string().optional(),
@@ -2698,6 +2714,22 @@ v.object({
2698
2714
  "FAILED"
2699
2715
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
2700
2716
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
2717
+ published: v.object({
2718
+ article_id: v.string().optional().describe("Owning article id."),
2719
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
2720
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
2721
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
2722
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
2723
+ created_by: v.object({
2724
+ id: v.string().optional(),
2725
+ name: v.string().optional()
2726
+ }).optional().describe("User who authored the version."),
2727
+ id: v.string().optional().describe("Unique identifier of the version."),
2728
+ notes: v.string().optional().describe("Optional author notes."),
2729
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
2730
+ subject: v.string().optional().describe("Versioned subject."),
2731
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
2732
+ }).optional().describe("Published version, only when requested in fields."),
2701
2733
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
2702
2734
  space: v.object({
2703
2735
  id: v.string().optional(),
@@ -2740,6 +2772,22 @@ v.object({
2740
2772
  "FAILED"
2741
2773
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
2742
2774
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
2775
+ published: v.object({
2776
+ article_id: v.string().optional().describe("Owning article id."),
2777
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
2778
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
2779
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
2780
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
2781
+ created_by: v.object({
2782
+ id: v.string().optional(),
2783
+ name: v.string().optional()
2784
+ }).optional().describe("User who authored the version."),
2785
+ id: v.string().optional().describe("Unique identifier of the version."),
2786
+ notes: v.string().optional().describe("Optional author notes."),
2787
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
2788
+ subject: v.string().optional().describe("Versioned subject."),
2789
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
2790
+ }).optional().describe("Published version, only when requested in fields."),
2743
2791
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
2744
2792
  space: v.object({
2745
2793
  id: v.string().optional(),
@@ -2763,7 +2811,7 @@ v.object({
2763
2811
  name: v.string().optional()
2764
2812
  }).optional().describe("User who last updated the article."),
2765
2813
  ver: v.int().optional().describe("Optimistic-lock counter.")
2766
- }).describe("Article is the article read model."), v.object({ etag: v.string().describe("Concurrency token / locator.") }), v.object({
2814
+ }).describe("Article is the article read model."), v.object({ etag: v.string().describe("Concurrency token / locator.") }), v.object({ fields: v.array(v.string()).optional().describe("Set of fields to return.") }), v.object({
2767
2815
  tags: v.array(v.string()).optional().describe("Article tags."),
2768
2816
  created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
2769
2817
  created_by: v.object({
@@ -2782,6 +2830,22 @@ v.object({
2782
2830
  "FAILED"
2783
2831
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
2784
2832
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
2833
+ published: v.object({
2834
+ article_id: v.string().optional().describe("Owning article id."),
2835
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
2836
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
2837
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
2838
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
2839
+ created_by: v.object({
2840
+ id: v.string().optional(),
2841
+ name: v.string().optional()
2842
+ }).optional().describe("User who authored the version."),
2843
+ id: v.string().optional().describe("Unique identifier of the version."),
2844
+ notes: v.string().optional().describe("Optional author notes."),
2845
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
2846
+ subject: v.string().optional().describe("Versioned subject."),
2847
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
2848
+ }).optional().describe("Published version, only when requested in fields."),
2785
2849
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
2786
2850
  space: v.object({
2787
2851
  id: v.string().optional(),
@@ -2805,7 +2869,7 @@ v.object({
2805
2869
  name: v.string().optional()
2806
2870
  }).optional().describe("User who last updated the article."),
2807
2871
  ver: v.int().optional().describe("Optimistic-lock counter.")
2808
- }).describe("Article is the article read model."), v.object({ etag: v.string().describe("Concurrency token of the article to update.") }), v.object({
2872
+ }).describe("Article is the article read model."), v.object({ etag: v.string().describe("Concurrency token of the article to update.") }), v.object({ x_json_mask: v.array(v.string()).optional().describe("Input fields to apply, filled by the gateway from a PATCH body.") }), v.object({
2809
2873
  tags: v.array(v.string()).optional().describe("Article tags."),
2810
2874
  body_rich_text: v.looseObject({}).optional().describe("Editor document; serialized server-side to markdown/plaintext/tsvector."),
2811
2875
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
@@ -2841,6 +2905,22 @@ v.object({
2841
2905
  "FAILED"
2842
2906
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
2843
2907
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
2908
+ published: v.object({
2909
+ article_id: v.string().optional().describe("Owning article id."),
2910
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
2911
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
2912
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
2913
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
2914
+ created_by: v.object({
2915
+ id: v.string().optional(),
2916
+ name: v.string().optional()
2917
+ }).optional().describe("User who authored the version."),
2918
+ id: v.string().optional().describe("Unique identifier of the version."),
2919
+ notes: v.string().optional().describe("Optional author notes."),
2920
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
2921
+ subject: v.string().optional().describe("Versioned subject."),
2922
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
2923
+ }).optional().describe("Published version, only when requested in fields."),
2844
2924
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
2845
2925
  space: v.object({
2846
2926
  id: v.string().optional(),
@@ -2864,7 +2944,7 @@ v.object({
2864
2944
  name: v.string().optional()
2865
2945
  }).optional().describe("User who last updated the article."),
2866
2946
  ver: v.int().optional().describe("Optimistic-lock counter.")
2867
- }).describe("Article is the article read model."), v.object({ etag: v.string().describe("Concurrency token of the article to update.") }), v.object({
2947
+ }).describe("Article is the article read model."), v.object({ etag: v.string().describe("Concurrency token of the article to update.") }), v.object({ x_json_mask: v.array(v.string()).optional().describe("Input fields to apply, filled by the gateway from a PATCH body.") }), v.object({
2868
2948
  tags: v.array(v.string()).optional().describe("Article tags."),
2869
2949
  body_rich_text: v.looseObject({}).optional().describe("Editor document; serialized server-side to markdown/plaintext/tsvector."),
2870
2950
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
@@ -2900,6 +2980,22 @@ v.object({
2900
2980
  "FAILED"
2901
2981
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
2902
2982
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
2983
+ published: v.object({
2984
+ article_id: v.string().optional().describe("Owning article id."),
2985
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
2986
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
2987
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
2988
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
2989
+ created_by: v.object({
2990
+ id: v.string().optional(),
2991
+ name: v.string().optional()
2992
+ }).optional().describe("User who authored the version."),
2993
+ id: v.string().optional().describe("Unique identifier of the version."),
2994
+ notes: v.string().optional().describe("Optional author notes."),
2995
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
2996
+ subject: v.string().optional().describe("Versioned subject."),
2997
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
2998
+ }).optional().describe("Published version, only when requested in fields."),
2903
2999
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
2904
3000
  space: v.object({
2905
3001
  id: v.string().optional(),
@@ -2942,6 +3038,80 @@ v.object({
2942
3038
  "FAILED"
2943
3039
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
2944
3040
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
3041
+ published: v.object({
3042
+ article_id: v.string().optional().describe("Owning article id."),
3043
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
3044
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
3045
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
3046
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
3047
+ created_by: v.object({
3048
+ id: v.string().optional(),
3049
+ name: v.string().optional()
3050
+ }).optional().describe("User who authored the version."),
3051
+ id: v.string().optional().describe("Unique identifier of the version."),
3052
+ notes: v.string().optional().describe("Optional author notes."),
3053
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
3054
+ subject: v.string().optional().describe("Versioned subject."),
3055
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
3056
+ }).optional().describe("Published version, only when requested in fields."),
3057
+ published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
3058
+ space: v.object({
3059
+ id: v.string().optional(),
3060
+ name: v.string().optional()
3061
+ }).optional().describe("Space the article belongs to."),
3062
+ state: v.enum([
3063
+ "ARTICLE_STATE_UNSPECIFIED",
3064
+ "DRAFT",
3065
+ "ACTIVE",
3066
+ "INACTIVE"
3067
+ ]).default("ARTICLE_STATE_UNSPECIFIED").describe("Lifecycle state."),
3068
+ subject: v.string().optional().describe("Current subject (mirrors the published version)."),
3069
+ type: v.enum([
3070
+ "ARTICLE_TYPE_UNSPECIFIED",
3071
+ "ARTICLE",
3072
+ "FAQ"
3073
+ ]).default("ARTICLE_TYPE_UNSPECIFIED").describe("Article type."),
3074
+ updated_at: v.string().optional().describe("UpdatedAt timestamp (epoch ms)."),
3075
+ updated_by: v.object({
3076
+ id: v.string().optional(),
3077
+ name: v.string().optional()
3078
+ }).optional().describe("User who last updated the article."),
3079
+ ver: v.int().optional().describe("Optimistic-lock counter.")
3080
+ }).describe("Article is the article read model."), v.object({ etag: v.string().describe("Concurrency token / locator of the article.") }), v.object({
3081
+ tags: v.array(v.string()).optional().describe("Article tags."),
3082
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
3083
+ created_by: v.object({
3084
+ id: v.string().optional(),
3085
+ name: v.string().optional()
3086
+ }).optional().describe("User who created the article."),
3087
+ depth: v.int().optional().describe("Hierarchy depth (1..5)."),
3088
+ domain_id: v.string().optional().describe("Owning domain id."),
3089
+ etag: v.string().optional().describe("Concurrency token encoding id and ver."),
3090
+ id: v.string().optional().describe("Unique identifier of the article."),
3091
+ index_state: v.enum([
3092
+ "INDEX_STATE_UNSPECIFIED",
3093
+ "PENDING",
3094
+ "INDEXING",
3095
+ "INDEXED",
3096
+ "FAILED"
3097
+ ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
3098
+ parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
3099
+ published: v.object({
3100
+ article_id: v.string().optional().describe("Owning article id."),
3101
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
3102
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
3103
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
3104
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
3105
+ created_by: v.object({
3106
+ id: v.string().optional(),
3107
+ name: v.string().optional()
3108
+ }).optional().describe("User who authored the version."),
3109
+ id: v.string().optional().describe("Unique identifier of the version."),
3110
+ notes: v.string().optional().describe("Optional author notes."),
3111
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
3112
+ subject: v.string().optional().describe("Versioned subject."),
3113
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
3114
+ }).optional().describe("Published version, only when requested in fields."),
2945
3115
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
2946
3116
  space: v.object({
2947
3117
  id: v.string().optional(),
@@ -2985,6 +3155,22 @@ v.object({
2985
3155
  "FAILED"
2986
3156
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
2987
3157
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
3158
+ published: v.object({
3159
+ article_id: v.string().optional().describe("Owning article id."),
3160
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
3161
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
3162
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
3163
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
3164
+ created_by: v.object({
3165
+ id: v.string().optional(),
3166
+ name: v.string().optional()
3167
+ }).optional().describe("User who authored the version."),
3168
+ id: v.string().optional().describe("Unique identifier of the version."),
3169
+ notes: v.string().optional().describe("Optional author notes."),
3170
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
3171
+ subject: v.string().optional().describe("Versioned subject."),
3172
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
3173
+ }).optional().describe("Published version, only when requested in fields."),
2988
3174
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
2989
3175
  space: v.object({
2990
3176
  id: v.string().optional(),
@@ -3030,6 +3216,22 @@ v.object({
3030
3216
  "FAILED"
3031
3217
  ]).default("INDEX_STATE_UNSPECIFIED").describe("Indexing state."),
3032
3218
  parent_id: v.string().optional().describe("Parent article id; 0 for a top-level article."),
3219
+ published: v.object({
3220
+ article_id: v.string().optional().describe("Owning article id."),
3221
+ body_markdown: v.string().optional().describe("Markdown serialization (chunking input)."),
3222
+ body_plain: v.string().optional().describe("Plaintext serialization (full-text source)."),
3223
+ body_rich_text: v.looseObject({}).optional().describe("Editor document for this version."),
3224
+ created_at: v.string().optional().describe("CreatedAt timestamp (epoch ms)."),
3225
+ created_by: v.object({
3226
+ id: v.string().optional(),
3227
+ name: v.string().optional()
3228
+ }).optional().describe("User who authored the version."),
3229
+ id: v.string().optional().describe("Unique identifier of the version."),
3230
+ notes: v.string().optional().describe("Optional author notes."),
3231
+ restored_from: v.string().optional().describe("Version this one was restored from; 0 if authored directly."),
3232
+ subject: v.string().optional().describe("Versioned subject."),
3233
+ version_number: v.int().optional().describe("Monotonic version number within the article.")
3234
+ }).optional().describe("Published version, only when requested in fields."),
3033
3235
  published_version_id: v.string().optional().describe("Published version id; 0 if not yet published."),
3034
3236
  space: v.object({
3035
3237
  id: v.string().optional(),
@@ -4612,7 +4814,21 @@ v.object({
4612
4814
  contact_id: v.array(v.string()).optional(),
4613
4815
  schema_id: v.array(v.int()).optional(),
4614
4816
  has_transfer: v.boolean().optional(),
4615
- timeline: v.boolean().optional()
4817
+ timeline: v.boolean().optional(),
4818
+ excluded_queue_types: v.array(v.enum([
4819
+ "QUEUE_TYPE_UNSPECIFIED",
4820
+ "QUEUE_TYPE_OFFLINE",
4821
+ "QUEUE_TYPE_INBOUND_CALL",
4822
+ "QUEUE_TYPE_IVR_CALL",
4823
+ "QUEUE_TYPE_PREVIEW_CALL",
4824
+ "QUEUE_TYPE_PROGRESSIVE_CALL",
4825
+ "QUEUE_TYPE_PREDICTIVE_CALL",
4826
+ "QUEUE_TYPE_INBOUND_CHAT",
4827
+ "QUEUE_TYPE_AGENT_TASK",
4828
+ "QUEUE_TYPE_OUTBOUND_TASK",
4829
+ "QUEUE_TYPE_INBOUND_IM",
4830
+ "QUEUE_TYPE_OUTBOUND_CALL"
4831
+ ])).optional()
4616
4832
  }), v.object({
4617
4833
  items: v.array(v.object({
4618
4834
  tags: v.array(v.string()).optional(),
@@ -4856,6 +5072,20 @@ v.object({
4856
5072
  from: v.string().optional(),
4857
5073
  to: v.string().optional()
4858
5074
  }).optional(),
5075
+ excluded_queue_types: v.array(v.enum([
5076
+ "QUEUE_TYPE_UNSPECIFIED",
5077
+ "QUEUE_TYPE_OFFLINE",
5078
+ "QUEUE_TYPE_INBOUND_CALL",
5079
+ "QUEUE_TYPE_IVR_CALL",
5080
+ "QUEUE_TYPE_PREVIEW_CALL",
5081
+ "QUEUE_TYPE_PROGRESSIVE_CALL",
5082
+ "QUEUE_TYPE_PREDICTIVE_CALL",
5083
+ "QUEUE_TYPE_INBOUND_CHAT",
5084
+ "QUEUE_TYPE_AGENT_TASK",
5085
+ "QUEUE_TYPE_OUTBOUND_TASK",
5086
+ "QUEUE_TYPE_INBOUND_IM",
5087
+ "QUEUE_TYPE_OUTBOUND_CALL"
5088
+ ]).default("QUEUE_TYPE_UNSPECIFIED")).optional(),
4859
5089
  fields: v.array(v.string()).optional(),
4860
5090
  fts: v.string().optional(),
4861
5091
  gateway_id: v.array(v.string()).optional(),
@@ -6147,6 +6377,27 @@ v.object({
6147
6377
  date_from: v.string().optional(),
6148
6378
  date_to: v.string().optional(),
6149
6379
  emails_count: v.string().optional()
6380
+ }), v.object({
6381
+ case_id: v.string(),
6382
+ type: v.enum([
6383
+ "chat",
6384
+ "call",
6385
+ "email"
6386
+ ]),
6387
+ id: v.string()
6388
+ }), v.object({
6389
+ postprocessing: v.array(v.object({
6390
+ agent: v.object({
6391
+ id: v.string().optional(),
6392
+ name: v.string().optional()
6393
+ }).optional(),
6394
+ form: v.unknown().optional(),
6395
+ reporting_at: v.string().optional()
6396
+ })).optional(),
6397
+ variables: v.array(v.object({
6398
+ key: v.string().optional(),
6399
+ value: v.string().optional()
6400
+ })).optional()
6150
6401
  }), v.object({
6151
6402
  page: v.int().optional().describe("Page number for pagination."),
6152
6403
  size: v.int().optional().describe("Number of results per page."),
@@ -17313,7 +17564,7 @@ v.object({
17313
17564
  provider: v.string().optional().describe("Provider key (gemini, openai, cohere, azure, bge-m3, e5, bge-reranker, byom)."),
17314
17565
  type: v.string().optional().describe("Model type: \"embedding\" or \"reranker\"."),
17315
17566
  validated_at: v.string().optional().describe("Timestamp of the last successful validation (epoch ms); 0 if never validated.")
17316
- }).describe("EmbeddingModel is a registry entry read model (credential omitted)."), v.object({ id: v.string().describe("Model id.") }), v.object({
17567
+ }).describe("EmbeddingModel is a registry entry read model (credential omitted)."), v.object({ id: v.string().describe("Model id.") }), v.object({ x_json_mask: v.array(v.string()).optional().describe("Input fields to apply, filled by the gateway from a PATCH body.") }), v.object({
17317
17568
  api_key: v.string().optional().describe("Write-only provider credential; encrypted at rest, never read back."),
17318
17569
  dimensions: v.int().optional().describe("Embedding dimension; omit for rerankers."),
17319
17570
  endpoint: v.string().optional().describe("Self-hosted / Azure / BYOM endpoint url."),
@@ -17338,7 +17589,7 @@ v.object({
17338
17589
  provider: v.string().optional().describe("Provider key (gemini, openai, cohere, azure, bge-m3, e5, bge-reranker, byom)."),
17339
17590
  type: v.string().optional().describe("Model type: \"embedding\" or \"reranker\"."),
17340
17591
  validated_at: v.string().optional().describe("Timestamp of the last successful validation (epoch ms); 0 if never validated.")
17341
- }).describe("EmbeddingModel is a registry entry read model (credential omitted)."), v.object({ id: v.string().describe("Model id.") }), v.object({
17592
+ }).describe("EmbeddingModel is a registry entry read model (credential omitted)."), v.object({ id: v.string().describe("Model id.") }), v.object({ x_json_mask: v.array(v.string()).optional().describe("Input fields to apply, filled by the gateway from a PATCH body.") }), v.object({
17342
17593
  api_key: v.string().optional().describe("Write-only provider credential; encrypted at rest, never read back."),
17343
17594
  dimensions: v.int().optional().describe("Embedding dimension; omit for rerankers."),
17344
17595
  endpoint: v.string().optional().describe("Self-hosted / Azure / BYOM endpoint url."),
@@ -22727,7 +22978,10 @@ v.array(ke), v.object({
22727
22978
  }).optional()
22728
22979
  })).optional(),
22729
22980
  next: v.boolean().optional()
22730
- }), v.object({ id: v.string() }), v.object({ domain_id: v.string().optional() }), v.object({
22981
+ }), v.object({ id: v.string() }), v.object({
22982
+ domain_id: v.string().optional(),
22983
+ force: v.boolean().optional()
22984
+ }), v.object({
22731
22985
  created_at: v.string().optional(),
22732
22986
  created_by: v.object({
22733
22987
  id: v.string().optional(),
@@ -23104,6 +23358,7 @@ v.array(ke), v.object({
23104
23358
  }).optional()
23105
23359
  }).optional(),
23106
23360
  display: v.string().optional(),
23361
+ duration: v.string().optional(),
23107
23362
  id: v.string().optional(),
23108
23363
  joined_at: v.string().optional(),
23109
23364
  leaving_at: v.string().optional(),
@@ -28792,7 +29047,11 @@ v.array(Pe), v.object({
28792
29047
  query: v.string().optional().describe("Free-text query."),
28793
29048
  space_ids: v.array(v.string()).optional().describe("Spaces to search within."),
28794
29049
  tags: v.array(v.string()).optional().describe("Optional tag filter."),
28795
- tag_match: v.enum(["TAG_MATCH_ALL", "TAG_MATCH_ANY"]).default("TAG_MATCH_ALL").describe("How to combine the tag filter.\n\n - TAG_MATCH_ALL: Default: match articles having ALL listed tags (AND).\n - TAG_MATCH_ANY: Match articles having ANY listed tag (OR)."),
29050
+ tag_match: v.enum([
29051
+ "TAG_MATCH_UNSPECIFIED",
29052
+ "TAG_MATCH_ALL",
29053
+ "TAG_MATCH_ANY"
29054
+ ]).default("TAG_MATCH_UNSPECIFIED").describe("How to combine the tag filter; unspecified means any.\n\n - TAG_MATCH_UNSPECIFIED: Default mode: match articles having ANY listed tag (OR).\n - TAG_MATCH_ALL: Match articles having ALL listed tags (AND).\n - TAG_MATCH_ANY: Match articles having ANY listed tag (OR)."),
28796
29055
  size: v.int().optional().describe("Page size."),
28797
29056
  page: v.int().optional().describe("Page number (1-based).")
28798
29057
  }), v.object({
@@ -28825,7 +29084,11 @@ v.array(Pe), v.object({
28825
29084
  include_citations: v.boolean().optional().describe("Whether to include structured citations."),
28826
29085
  query: v.string().optional().describe("Natural-language query (e.g. STT transcript)."),
28827
29086
  space_ids: v.array(v.string()).optional().describe("Spaces to search within (bot service scope)."),
28828
- tag_match: v.enum(["TAG_MATCH_ALL", "TAG_MATCH_ANY"]).default("TAG_MATCH_ALL").describe("How to combine the tag filter."),
29087
+ tag_match: v.enum([
29088
+ "TAG_MATCH_UNSPECIFIED",
29089
+ "TAG_MATCH_ALL",
29090
+ "TAG_MATCH_ANY"
29091
+ ]).default("TAG_MATCH_UNSPECIFIED").describe("How to combine the tag filter; unspecified means any."),
28829
29092
  top_k: v.int().optional().describe("Maximum number of chunks to return.")
28830
29093
  }).describe("SemanticSearchRequest parameters for hybrid retrieval."), v.object({
28831
29094
  chunks: v.array(v.object({
@@ -31025,7 +31288,7 @@ v.array(Le), v.object({
31025
31288
  name: v.string().optional()
31026
31289
  }).optional().describe("User who last updated the space."),
31027
31290
  vector_search_enabled: v.boolean().optional().describe("Whether articles in this space are embedded for vector search.")
31028
- }).describe("Space is a knowledge-base space read model."), v.object({ id: v.string().describe("Space id.") }), v.object({
31291
+ }).describe("Space is a knowledge-base space read model."), v.object({ id: v.string().describe("Space id.") }), v.object({ x_json_mask: v.array(v.string()).optional().describe("Input fields to apply, filled by the gateway from a PATCH body.") }), v.object({
31029
31292
  chunking_strategy: v.string().optional().describe("Chunking strategy identifier."),
31030
31293
  description: v.string().optional().describe("Free-text description."),
31031
31294
  embedding_model_id: v.string().optional().describe("Active embedding model id."),
@@ -31063,7 +31326,7 @@ v.array(Le), v.object({
31063
31326
  name: v.string().optional()
31064
31327
  }).optional().describe("User who last updated the space."),
31065
31328
  vector_search_enabled: v.boolean().optional().describe("Whether articles in this space are embedded for vector search.")
31066
- }).describe("Space is a knowledge-base space read model."), v.object({ id: v.string().describe("Space id.") }), v.object({
31329
+ }).describe("Space is a knowledge-base space read model."), v.object({ id: v.string().describe("Space id.") }), v.object({ x_json_mask: v.array(v.string()).optional().describe("Input fields to apply, filled by the gateway from a PATCH body.") }), v.object({
31067
31330
  chunking_strategy: v.string().optional().describe("Chunking strategy identifier."),
31068
31331
  description: v.string().optional().describe("Free-text description."),
31069
31332
  embedding_model_id: v.string().optional().describe("Active embedding model id."),
@@ -35132,13 +35395,6 @@ v.object({
35132
35395
  "ROLE_SUPERVISOR"
35133
35396
  ]).default("ROLE_UNSPECIFIED")
35134
35397
  }).optional().describe("Member who deleted the message, enriched exactly like sender; unset while\nthe message is live."),
35135
- delivery_status: v.enum([
35136
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
35137
- "MESSAGE_DELIVERY_STATUS_SENT",
35138
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
35139
- "MESSAGE_DELIVERY_STATUS_READ",
35140
- "MESSAGE_DELIVERY_STATUS_FAILED"
35141
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("Aggregated delivery status across recipients: FAILED when every\nrecipient failed, otherwise the minimal status among non-failed ones.\nUNSPECIFIED for messages without per-recipient tracking (historical)."),
35142
35398
  documents: v.array(v.object({
35143
35399
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
35144
35400
  file_id: v.string().optional().describe("File storage identifier."),
@@ -35386,21 +35642,6 @@ v.object({
35386
35642
  ]).default("ROLE_UNSPECIFIED")
35387
35643
  }).optional().describe("Sender user aggregated information."),
35388
35644
  seq: v.string().optional().describe("Per-thread monotonic sequence number, assigned on message creation."),
35389
- statuses: v.array(v.object({
35390
- delivered_at: v.string().optional().describe("Unix time in milliseconds; zero when not reached."),
35391
- error: v.string().optional().describe("JSON-encoded provider error details for FAILED."),
35392
- failed_at: v.string().optional(),
35393
- member_id: v.string().optional().describe("Recipient contact id."),
35394
- read_at: v.string().optional(),
35395
- status: v.enum([
35396
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
35397
- "MESSAGE_DELIVERY_STATUS_SENT",
35398
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
35399
- "MESSAGE_DELIVERY_STATUS_READ",
35400
- "MESSAGE_DELIVERY_STATUS_FAILED"
35401
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("MessageDeliveryStatus is a per-recipient delivery state of a message.\nTransitions are monotonic: SENT -> DELIVERED -> READ.\nFAILED is terminal but may be superseded by a later DELIVERED (retry).\n\n - MESSAGE_DELIVERY_STATUS_SENT: Accepted by the system and queued for delivery.\n - MESSAGE_DELIVERY_STATUS_DELIVERED: Reached the recipient (stream ACK, push, provider receipt, bot dispatch).\n - MESSAGE_DELIVERY_STATUS_READ: Read by the recipient. Not applicable to bots.\n - MESSAGE_DELIVERY_STATUS_FAILED: Delivery failed (provider rejected, invalid contact, channel restriction)."),
35402
- via: v.string().optional().describe("Confirmation source: ws|push|provider|bot.")
35403
- }).describe("MessageRecipientStatus is a per-recipient delivery state of a message.")).optional().describe("Per-recipient delivery details."),
35404
35645
  system: v.object({
35405
35646
  message_id: v.string().optional().describe("ID of message for which system messages is binded."),
35406
35647
  metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
@@ -35410,7 +35651,8 @@ v.object({
35410
35651
  type: v.int().optional().describe("Message type identifier.")
35411
35652
  }).describe("HistoryMessage represents a single message\nin thread history.")).optional().describe("List of messages matching the search criteria."),
35412
35653
  next_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get older messages (used without 'before' param)."),
35413
- prev_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get newest messages (used with 'before' param).")
35654
+ prev_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get newest messages (used with 'before' param)."),
35655
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this page: every later change comes from GetUpdates(updates_cursor).")
35414
35656
  }).describe("SearchMessageHistoryResponse contains\nmessage history search results and pagination metadata."), v.object({ message_id: v.string() }), v.object({ items: v.array(v.object({
35415
35657
  action: v.enum([
35416
35658
  "MESSAGE_REVISION_ACTION_UNSPECIFIED",
@@ -35527,13 +35769,6 @@ v.object({
35527
35769
  "ROLE_SUPERVISOR"
35528
35770
  ]).default("ROLE_UNSPECIFIED")
35529
35771
  }).optional().describe("Member who deleted the message, enriched exactly like sender; unset while\nthe message is live."),
35530
- delivery_status: v.enum([
35531
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
35532
- "MESSAGE_DELIVERY_STATUS_SENT",
35533
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
35534
- "MESSAGE_DELIVERY_STATUS_READ",
35535
- "MESSAGE_DELIVERY_STATUS_FAILED"
35536
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("Aggregated delivery status across recipients: FAILED when every\nrecipient failed, otherwise the minimal status among non-failed ones.\nUNSPECIFIED for messages without per-recipient tracking (historical)."),
35537
35772
  documents: v.array(v.object({
35538
35773
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
35539
35774
  file_id: v.string().optional().describe("File storage identifier."),
@@ -35781,21 +36016,6 @@ v.object({
35781
36016
  ]).default("ROLE_UNSPECIFIED")
35782
36017
  }).optional().describe("Sender user aggregated information."),
35783
36018
  seq: v.string().optional().describe("Per-thread monotonic sequence number, assigned on message creation."),
35784
- statuses: v.array(v.object({
35785
- delivered_at: v.string().optional().describe("Unix time in milliseconds; zero when not reached."),
35786
- error: v.string().optional().describe("JSON-encoded provider error details for FAILED."),
35787
- failed_at: v.string().optional(),
35788
- member_id: v.string().optional().describe("Recipient contact id."),
35789
- read_at: v.string().optional(),
35790
- status: v.enum([
35791
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
35792
- "MESSAGE_DELIVERY_STATUS_SENT",
35793
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
35794
- "MESSAGE_DELIVERY_STATUS_READ",
35795
- "MESSAGE_DELIVERY_STATUS_FAILED"
35796
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("MessageDeliveryStatus is a per-recipient delivery state of a message.\nTransitions are monotonic: SENT -> DELIVERED -> READ.\nFAILED is terminal but may be superseded by a later DELIVERED (retry).\n\n - MESSAGE_DELIVERY_STATUS_SENT: Accepted by the system and queued for delivery.\n - MESSAGE_DELIVERY_STATUS_DELIVERED: Reached the recipient (stream ACK, push, provider receipt, bot dispatch).\n - MESSAGE_DELIVERY_STATUS_READ: Read by the recipient. Not applicable to bots.\n - MESSAGE_DELIVERY_STATUS_FAILED: Delivery failed (provider rejected, invalid contact, channel restriction)."),
35797
- via: v.string().optional().describe("Confirmation source: ws|push|provider|bot.")
35798
- }).describe("MessageRecipientStatus is a per-recipient delivery state of a message.")).optional().describe("Per-recipient delivery details."),
35799
36019
  system: v.object({
35800
36020
  message_id: v.string().optional().describe("ID of message for which system messages is binded."),
35801
36021
  metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
@@ -35805,7 +36025,8 @@ v.object({
35805
36025
  type: v.int().optional().describe("Message type identifier.")
35806
36026
  }).describe("HistoryMessage represents a single message\nin thread history.")).optional().describe("List of messages matching the search criteria."),
35807
36027
  next_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get older messages (used without 'before' param)."),
35808
- prev_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get newest messages (used with 'before' param).")
36028
+ prev_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get newest messages (used with 'before' param)."),
36029
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this page: every later change comes from GetUpdates(updates_cursor).")
35809
36030
  }).describe("SearchMessageHistoryResponse contains\nmessage history search results and pagination metadata."), v.object({ thread_id: v.string().describe("Filter by thread IDs.") }), v.object({
35810
36031
  fields: v.array(v.string()).optional().describe("List of message fields to be returned.\nUsed to reduce payload size."),
35811
36032
  ids: v.array(v.string()).optional().describe("Filter by specific message IDs."),
@@ -35868,13 +36089,6 @@ v.object({
35868
36089
  "ROLE_SUPERVISOR"
35869
36090
  ]).default("ROLE_UNSPECIFIED")
35870
36091
  }).optional().describe("Member who deleted the message, enriched exactly like sender; unset while\nthe message is live."),
35871
- delivery_status: v.enum([
35872
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
35873
- "MESSAGE_DELIVERY_STATUS_SENT",
35874
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
35875
- "MESSAGE_DELIVERY_STATUS_READ",
35876
- "MESSAGE_DELIVERY_STATUS_FAILED"
35877
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("Aggregated delivery status across recipients: FAILED when every\nrecipient failed, otherwise the minimal status among non-failed ones.\nUNSPECIFIED for messages without per-recipient tracking (historical)."),
35878
36092
  documents: v.array(v.object({
35879
36093
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
35880
36094
  file_id: v.string().optional().describe("File storage identifier."),
@@ -36122,21 +36336,6 @@ v.object({
36122
36336
  ]).default("ROLE_UNSPECIFIED")
36123
36337
  }).optional().describe("Sender user aggregated information."),
36124
36338
  seq: v.string().optional().describe("Per-thread monotonic sequence number, assigned on message creation."),
36125
- statuses: v.array(v.object({
36126
- delivered_at: v.string().optional().describe("Unix time in milliseconds; zero when not reached."),
36127
- error: v.string().optional().describe("JSON-encoded provider error details for FAILED."),
36128
- failed_at: v.string().optional(),
36129
- member_id: v.string().optional().describe("Recipient contact id."),
36130
- read_at: v.string().optional(),
36131
- status: v.enum([
36132
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
36133
- "MESSAGE_DELIVERY_STATUS_SENT",
36134
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
36135
- "MESSAGE_DELIVERY_STATUS_READ",
36136
- "MESSAGE_DELIVERY_STATUS_FAILED"
36137
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("MessageDeliveryStatus is a per-recipient delivery state of a message.\nTransitions are monotonic: SENT -> DELIVERED -> READ.\nFAILED is terminal but may be superseded by a later DELIVERED (retry).\n\n - MESSAGE_DELIVERY_STATUS_SENT: Accepted by the system and queued for delivery.\n - MESSAGE_DELIVERY_STATUS_DELIVERED: Reached the recipient (stream ACK, push, provider receipt, bot dispatch).\n - MESSAGE_DELIVERY_STATUS_READ: Read by the recipient. Not applicable to bots.\n - MESSAGE_DELIVERY_STATUS_FAILED: Delivery failed (provider rejected, invalid contact, channel restriction)."),
36138
- via: v.string().optional().describe("Confirmation source: ws|push|provider|bot.")
36139
- }).describe("MessageRecipientStatus is a per-recipient delivery state of a message.")).optional().describe("Per-recipient delivery details."),
36140
36339
  system: v.object({
36141
36340
  message_id: v.string().optional().describe("ID of message for which system messages is binded."),
36142
36341
  metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
@@ -36146,7 +36345,8 @@ v.object({
36146
36345
  type: v.int().optional().describe("Message type identifier.")
36147
36346
  }).describe("HistoryMessage represents a single message\nin thread history.")).optional().describe("List of messages matching the search criteria."),
36148
36347
  next_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get older messages (used without 'before' param)."),
36149
- prev_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get newest messages (used with 'before' param).")
36348
+ prev_cursor: v.object({ id: v.string().optional().describe("Unique identifier last message where cursor stopped.") }).optional().describe("Cursor that represents position to get newest messages (used with 'before' param)."),
36349
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this page: every later change comes from GetUpdates(updates_cursor).")
36150
36350
  }).describe("SearchMessageHistoryResponse contains\nmessage history search results and pagination metadata."), v.object({
36151
36351
  fields: v.array(v.string()).optional().describe("List of fields that should be returned in the response.\nIf empty, a default set of fields is returned.\nUsed for response optimization."),
36152
36352
  ids: v.array(v.string()).optional().describe("Filter by specific thread IDs."),
@@ -36219,13 +36419,6 @@ v.object({
36219
36419
  "ROLE_SUPERVISOR"
36220
36420
  ]).default("ROLE_UNSPECIFIED")
36221
36421
  }).optional().describe("Member who deleted the message, enriched exactly like sender; unset while\nthe message is live."),
36222
- delivery_status: v.enum([
36223
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
36224
- "MESSAGE_DELIVERY_STATUS_SENT",
36225
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
36226
- "MESSAGE_DELIVERY_STATUS_READ",
36227
- "MESSAGE_DELIVERY_STATUS_FAILED"
36228
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("Aggregated delivery status across recipients: FAILED when every\nrecipient failed, otherwise the minimal status among non-failed ones.\nUNSPECIFIED for messages without per-recipient tracking (historical)."),
36229
36422
  documents: v.array(v.object({
36230
36423
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
36231
36424
  file_id: v.string().optional().describe("File storage identifier."),
@@ -36473,21 +36666,6 @@ v.object({
36473
36666
  ]).default("ROLE_UNSPECIFIED")
36474
36667
  }).optional().describe("Sender user aggregated information."),
36475
36668
  seq: v.string().optional().describe("Per-thread monotonic sequence number, assigned on message creation."),
36476
- statuses: v.array(v.object({
36477
- delivered_at: v.string().optional().describe("Unix time in milliseconds; zero when not reached."),
36478
- error: v.string().optional().describe("JSON-encoded provider error details for FAILED."),
36479
- failed_at: v.string().optional(),
36480
- member_id: v.string().optional().describe("Recipient contact id."),
36481
- read_at: v.string().optional(),
36482
- status: v.enum([
36483
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
36484
- "MESSAGE_DELIVERY_STATUS_SENT",
36485
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
36486
- "MESSAGE_DELIVERY_STATUS_READ",
36487
- "MESSAGE_DELIVERY_STATUS_FAILED"
36488
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("MessageDeliveryStatus is a per-recipient delivery state of a message.\nTransitions are monotonic: SENT -> DELIVERED -> READ.\nFAILED is terminal but may be superseded by a later DELIVERED (retry).\n\n - MESSAGE_DELIVERY_STATUS_SENT: Accepted by the system and queued for delivery.\n - MESSAGE_DELIVERY_STATUS_DELIVERED: Reached the recipient (stream ACK, push, provider receipt, bot dispatch).\n - MESSAGE_DELIVERY_STATUS_READ: Read by the recipient. Not applicable to bots.\n - MESSAGE_DELIVERY_STATUS_FAILED: Delivery failed (provider rejected, invalid contact, channel restriction)."),
36489
- via: v.string().optional().describe("Confirmation source: ws|push|provider|bot.")
36490
- }).describe("MessageRecipientStatus is a per-recipient delivery state of a message.")).optional().describe("Per-recipient delivery details."),
36491
36669
  system: v.object({
36492
36670
  message_id: v.string().optional().describe("ID of message for which system messages is binded."),
36493
36671
  metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
@@ -36539,6 +36717,54 @@ v.object({
36539
36717
  "ROLE_SUPERVISOR"
36540
36718
  ]).default("ROLE_UNSPECIFIED")
36541
36719
  }).describe("ThreadMember represents a thread participant\nwith optional type-specific settings.")).optional().describe("Detailed member information."),
36720
+ read_states: v.array(v.object({
36721
+ delivered_up_to_seq: v.string().optional(),
36722
+ member: v.object({
36723
+ contact: v.object({
36724
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
36725
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
36726
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
36727
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
36728
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
36729
+ name: v.string().optional().describe("Display name of the contact."),
36730
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
36731
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
36732
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
36733
+ username: v.string().optional().describe("Technical username or handle."),
36734
+ vias: v.array(v.object({
36735
+ contact_id: v.string().optional(),
36736
+ created_at: v.string().optional(),
36737
+ disable: v.boolean().optional(),
36738
+ disable_reason: v.string().optional(),
36739
+ metadata: v.looseObject({}).optional(),
36740
+ updated_at: v.string().optional(),
36741
+ via: v.string().optional()
36742
+ })).optional()
36743
+ }).optional().describe("Contact represents an external messaging identity."),
36744
+ id: v.string().optional(),
36745
+ permissions: v.object({
36746
+ can_add_members: v.boolean().optional(),
36747
+ can_change_members_permissions: v.boolean().optional(),
36748
+ can_change_thread_info: v.boolean().optional(),
36749
+ can_delete_messages: v.boolean().optional(),
36750
+ can_remove_members: v.boolean().optional(),
36751
+ can_send_messages: v.boolean().optional(),
36752
+ created_at: v.string().optional(),
36753
+ id: v.string().optional(),
36754
+ member_id: v.string().optional(),
36755
+ updated_at: v.string().optional()
36756
+ }).optional(),
36757
+ role: v.enum([
36758
+ "ROLE_UNSPECIFIED",
36759
+ "ROLE_MEMBER",
36760
+ "ROLE_ADMIN",
36761
+ "ROLE_OWNER",
36762
+ "ROLE_SUPERVISOR"
36763
+ ]).default("ROLE_UNSPECIFIED")
36764
+ }).optional().describe("The member, in the same shape as history's sender; set by GetUpdates."),
36765
+ member_id: v.string().optional(),
36766
+ read_up_to_seq: v.string().optional()
36767
+ }).describe("MemberReadState is one member's delivery/read horizon in a thread, as\nper-thread message seq (0 = nothing reached that state yet).")).optional().describe("Per-member read horizons (snapshot, matches GetUpdates model).\nClient derives inbox/outbox watermarks: own_last_read = inbox; MIN over others = outbox."),
36542
36768
  settings: v.object({
36543
36769
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
36544
36770
  domain_id: v.int().optional().describe("Domain identifier."),
@@ -36555,6 +36781,7 @@ v.object({
36555
36781
  ]).default("UNKNOWN").describe("Type of the thread."),
36556
36782
  unread_count: v.int().optional().describe("Number of unread messages in this thread for the calling participant.\nCounts content messages not yet read; the caller's own messages and\nsystem messages are excluded."),
36557
36783
  updated_at: v.string().optional().describe("Last update timestamp (Unix time, milliseconds)."),
36784
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this thread (set by Get; Search carries it on the response)."),
36558
36785
  variables: v.object({
36559
36786
  thread_id: v.string().optional().describe("Unique identifier for the thread."),
36560
36787
  variables: v.record(v.string(), v.object({
@@ -36584,7 +36811,8 @@ v.object({
36584
36811
  }).describe("VariableEntry represents a single variable value\nalong with metadata about who and when it was set.")).optional().describe("Key-value map of variables.\nKey is the variable name, value contains data and metadata.")
36585
36812
  }).optional().describe("Optional variables associated with the thread.")
36586
36813
  }).describe("Thread represents a thread (aka chat or conversation) entity.")).optional().describe("List of threads matching the search criteria."),
36587
- next: v.boolean().optional().describe("Indicates whether there is a next page available.")
36814
+ next: v.boolean().optional().describe("Indicates whether there is a next page available."),
36815
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this page: every later change comes from GetUpdates(updates_cursor).")
36588
36816
  }).describe("SearchThreadResponse contains the list of threads\nand pagination metadata."), v.object({ direct: v.object({ member: v.object({
36589
36817
  chat_name: v.string().optional().describe("chat_name is the name external clients see instead of the real one."),
36590
36818
  iss: v.string().optional(),
@@ -36647,13 +36875,6 @@ v.object({
36647
36875
  "ROLE_SUPERVISOR"
36648
36876
  ]).default("ROLE_UNSPECIFIED")
36649
36877
  }).optional().describe("Member who deleted the message, enriched exactly like sender; unset while\nthe message is live."),
36650
- delivery_status: v.enum([
36651
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
36652
- "MESSAGE_DELIVERY_STATUS_SENT",
36653
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
36654
- "MESSAGE_DELIVERY_STATUS_READ",
36655
- "MESSAGE_DELIVERY_STATUS_FAILED"
36656
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("Aggregated delivery status across recipients: FAILED when every\nrecipient failed, otherwise the minimal status among non-failed ones.\nUNSPECIFIED for messages without per-recipient tracking (historical)."),
36657
36878
  documents: v.array(v.object({
36658
36879
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
36659
36880
  file_id: v.string().optional().describe("File storage identifier."),
@@ -36901,21 +37122,6 @@ v.object({
36901
37122
  ]).default("ROLE_UNSPECIFIED")
36902
37123
  }).optional().describe("Sender user aggregated information."),
36903
37124
  seq: v.string().optional().describe("Per-thread monotonic sequence number, assigned on message creation."),
36904
- statuses: v.array(v.object({
36905
- delivered_at: v.string().optional().describe("Unix time in milliseconds; zero when not reached."),
36906
- error: v.string().optional().describe("JSON-encoded provider error details for FAILED."),
36907
- failed_at: v.string().optional(),
36908
- member_id: v.string().optional().describe("Recipient contact id."),
36909
- read_at: v.string().optional(),
36910
- status: v.enum([
36911
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
36912
- "MESSAGE_DELIVERY_STATUS_SENT",
36913
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
36914
- "MESSAGE_DELIVERY_STATUS_READ",
36915
- "MESSAGE_DELIVERY_STATUS_FAILED"
36916
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("MessageDeliveryStatus is a per-recipient delivery state of a message.\nTransitions are monotonic: SENT -> DELIVERED -> READ.\nFAILED is terminal but may be superseded by a later DELIVERED (retry).\n\n - MESSAGE_DELIVERY_STATUS_SENT: Accepted by the system and queued for delivery.\n - MESSAGE_DELIVERY_STATUS_DELIVERED: Reached the recipient (stream ACK, push, provider receipt, bot dispatch).\n - MESSAGE_DELIVERY_STATUS_READ: Read by the recipient. Not applicable to bots.\n - MESSAGE_DELIVERY_STATUS_FAILED: Delivery failed (provider rejected, invalid contact, channel restriction)."),
36917
- via: v.string().optional().describe("Confirmation source: ws|push|provider|bot.")
36918
- }).describe("MessageRecipientStatus is a per-recipient delivery state of a message.")).optional().describe("Per-recipient delivery details."),
36919
37125
  system: v.object({
36920
37126
  message_id: v.string().optional().describe("ID of message for which system messages is binded."),
36921
37127
  metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
@@ -36967,6 +37173,54 @@ v.object({
36967
37173
  "ROLE_SUPERVISOR"
36968
37174
  ]).default("ROLE_UNSPECIFIED")
36969
37175
  }).describe("ThreadMember represents a thread participant\nwith optional type-specific settings.")).optional().describe("Detailed member information."),
37176
+ read_states: v.array(v.object({
37177
+ delivered_up_to_seq: v.string().optional(),
37178
+ member: v.object({
37179
+ contact: v.object({
37180
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
37181
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
37182
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
37183
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
37184
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
37185
+ name: v.string().optional().describe("Display name of the contact."),
37186
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
37187
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
37188
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
37189
+ username: v.string().optional().describe("Technical username or handle."),
37190
+ vias: v.array(v.object({
37191
+ contact_id: v.string().optional(),
37192
+ created_at: v.string().optional(),
37193
+ disable: v.boolean().optional(),
37194
+ disable_reason: v.string().optional(),
37195
+ metadata: v.looseObject({}).optional(),
37196
+ updated_at: v.string().optional(),
37197
+ via: v.string().optional()
37198
+ })).optional()
37199
+ }).optional().describe("Contact represents an external messaging identity."),
37200
+ id: v.string().optional(),
37201
+ permissions: v.object({
37202
+ can_add_members: v.boolean().optional(),
37203
+ can_change_members_permissions: v.boolean().optional(),
37204
+ can_change_thread_info: v.boolean().optional(),
37205
+ can_delete_messages: v.boolean().optional(),
37206
+ can_remove_members: v.boolean().optional(),
37207
+ can_send_messages: v.boolean().optional(),
37208
+ created_at: v.string().optional(),
37209
+ id: v.string().optional(),
37210
+ member_id: v.string().optional(),
37211
+ updated_at: v.string().optional()
37212
+ }).optional(),
37213
+ role: v.enum([
37214
+ "ROLE_UNSPECIFIED",
37215
+ "ROLE_MEMBER",
37216
+ "ROLE_ADMIN",
37217
+ "ROLE_OWNER",
37218
+ "ROLE_SUPERVISOR"
37219
+ ]).default("ROLE_UNSPECIFIED")
37220
+ }).optional().describe("The member, in the same shape as history's sender; set by GetUpdates."),
37221
+ member_id: v.string().optional(),
37222
+ read_up_to_seq: v.string().optional()
37223
+ }).describe("MemberReadState is one member's delivery/read horizon in a thread, as\nper-thread message seq (0 = nothing reached that state yet).")).optional().describe("Per-member read horizons (snapshot, matches GetUpdates model).\nClient derives inbox/outbox watermarks: own_last_read = inbox; MIN over others = outbox."),
36970
37224
  settings: v.object({
36971
37225
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
36972
37226
  domain_id: v.int().optional().describe("Domain identifier."),
@@ -36983,6 +37237,7 @@ v.object({
36983
37237
  ]).default("UNKNOWN").describe("Type of the thread."),
36984
37238
  unread_count: v.int().optional().describe("Number of unread messages in this thread for the calling participant.\nCounts content messages not yet read; the caller's own messages and\nsystem messages are excluded."),
36985
37239
  updated_at: v.string().optional().describe("Last update timestamp (Unix time, milliseconds)."),
37240
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this thread (set by Get; Search carries it on the response)."),
36986
37241
  variables: v.object({
36987
37242
  thread_id: v.string().optional().describe("Unique identifier for the thread."),
36988
37243
  variables: v.record(v.string(), v.object({
@@ -37080,13 +37335,6 @@ v.object({
37080
37335
  "ROLE_SUPERVISOR"
37081
37336
  ]).default("ROLE_UNSPECIFIED")
37082
37337
  }).optional().describe("Member who deleted the message, enriched exactly like sender; unset while\nthe message is live."),
37083
- delivery_status: v.enum([
37084
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
37085
- "MESSAGE_DELIVERY_STATUS_SENT",
37086
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
37087
- "MESSAGE_DELIVERY_STATUS_READ",
37088
- "MESSAGE_DELIVERY_STATUS_FAILED"
37089
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("Aggregated delivery status across recipients: FAILED when every\nrecipient failed, otherwise the minimal status among non-failed ones.\nUNSPECIFIED for messages without per-recipient tracking (historical)."),
37090
37338
  documents: v.array(v.object({
37091
37339
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
37092
37340
  file_id: v.string().optional().describe("File storage identifier."),
@@ -37334,21 +37582,6 @@ v.object({
37334
37582
  ]).default("ROLE_UNSPECIFIED")
37335
37583
  }).optional().describe("Sender user aggregated information."),
37336
37584
  seq: v.string().optional().describe("Per-thread monotonic sequence number, assigned on message creation."),
37337
- statuses: v.array(v.object({
37338
- delivered_at: v.string().optional().describe("Unix time in milliseconds; zero when not reached."),
37339
- error: v.string().optional().describe("JSON-encoded provider error details for FAILED."),
37340
- failed_at: v.string().optional(),
37341
- member_id: v.string().optional().describe("Recipient contact id."),
37342
- read_at: v.string().optional(),
37343
- status: v.enum([
37344
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
37345
- "MESSAGE_DELIVERY_STATUS_SENT",
37346
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
37347
- "MESSAGE_DELIVERY_STATUS_READ",
37348
- "MESSAGE_DELIVERY_STATUS_FAILED"
37349
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("MessageDeliveryStatus is a per-recipient delivery state of a message.\nTransitions are monotonic: SENT -> DELIVERED -> READ.\nFAILED is terminal but may be superseded by a later DELIVERED (retry).\n\n - MESSAGE_DELIVERY_STATUS_SENT: Accepted by the system and queued for delivery.\n - MESSAGE_DELIVERY_STATUS_DELIVERED: Reached the recipient (stream ACK, push, provider receipt, bot dispatch).\n - MESSAGE_DELIVERY_STATUS_READ: Read by the recipient. Not applicable to bots.\n - MESSAGE_DELIVERY_STATUS_FAILED: Delivery failed (provider rejected, invalid contact, channel restriction)."),
37350
- via: v.string().optional().describe("Confirmation source: ws|push|provider|bot.")
37351
- }).describe("MessageRecipientStatus is a per-recipient delivery state of a message.")).optional().describe("Per-recipient delivery details."),
37352
37585
  system: v.object({
37353
37586
  message_id: v.string().optional().describe("ID of message for which system messages is binded."),
37354
37587
  metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
@@ -37400,6 +37633,54 @@ v.object({
37400
37633
  "ROLE_SUPERVISOR"
37401
37634
  ]).default("ROLE_UNSPECIFIED")
37402
37635
  }).describe("ThreadMember represents a thread participant\nwith optional type-specific settings.")).optional().describe("Detailed member information."),
37636
+ read_states: v.array(v.object({
37637
+ delivered_up_to_seq: v.string().optional(),
37638
+ member: v.object({
37639
+ contact: v.object({
37640
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
37641
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
37642
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
37643
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
37644
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
37645
+ name: v.string().optional().describe("Display name of the contact."),
37646
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
37647
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
37648
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
37649
+ username: v.string().optional().describe("Technical username or handle."),
37650
+ vias: v.array(v.object({
37651
+ contact_id: v.string().optional(),
37652
+ created_at: v.string().optional(),
37653
+ disable: v.boolean().optional(),
37654
+ disable_reason: v.string().optional(),
37655
+ metadata: v.looseObject({}).optional(),
37656
+ updated_at: v.string().optional(),
37657
+ via: v.string().optional()
37658
+ })).optional()
37659
+ }).optional().describe("Contact represents an external messaging identity."),
37660
+ id: v.string().optional(),
37661
+ permissions: v.object({
37662
+ can_add_members: v.boolean().optional(),
37663
+ can_change_members_permissions: v.boolean().optional(),
37664
+ can_change_thread_info: v.boolean().optional(),
37665
+ can_delete_messages: v.boolean().optional(),
37666
+ can_remove_members: v.boolean().optional(),
37667
+ can_send_messages: v.boolean().optional(),
37668
+ created_at: v.string().optional(),
37669
+ id: v.string().optional(),
37670
+ member_id: v.string().optional(),
37671
+ updated_at: v.string().optional()
37672
+ }).optional(),
37673
+ role: v.enum([
37674
+ "ROLE_UNSPECIFIED",
37675
+ "ROLE_MEMBER",
37676
+ "ROLE_ADMIN",
37677
+ "ROLE_OWNER",
37678
+ "ROLE_SUPERVISOR"
37679
+ ]).default("ROLE_UNSPECIFIED")
37680
+ }).optional().describe("The member, in the same shape as history's sender; set by GetUpdates."),
37681
+ member_id: v.string().optional(),
37682
+ read_up_to_seq: v.string().optional()
37683
+ }).describe("MemberReadState is one member's delivery/read horizon in a thread, as\nper-thread message seq (0 = nothing reached that state yet).")).optional().describe("Per-member read horizons (snapshot, matches GetUpdates model).\nClient derives inbox/outbox watermarks: own_last_read = inbox; MIN over others = outbox."),
37403
37684
  settings: v.object({
37404
37685
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
37405
37686
  domain_id: v.int().optional().describe("Domain identifier."),
@@ -37416,6 +37697,7 @@ v.object({
37416
37697
  ]).default("UNKNOWN").describe("Type of the thread."),
37417
37698
  unread_count: v.int().optional().describe("Number of unread messages in this thread for the calling participant.\nCounts content messages not yet read; the caller's own messages and\nsystem messages are excluded."),
37418
37699
  updated_at: v.string().optional().describe("Last update timestamp (Unix time, milliseconds)."),
37700
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this thread (set by Get; Search carries it on the response)."),
37419
37701
  variables: v.object({
37420
37702
  thread_id: v.string().optional().describe("Unique identifier for the thread."),
37421
37703
  variables: v.record(v.string(), v.object({
@@ -37506,13 +37788,6 @@ v.object({
37506
37788
  "ROLE_SUPERVISOR"
37507
37789
  ]).default("ROLE_UNSPECIFIED")
37508
37790
  }).optional().describe("Member who deleted the message, enriched exactly like sender; unset while\nthe message is live."),
37509
- delivery_status: v.enum([
37510
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
37511
- "MESSAGE_DELIVERY_STATUS_SENT",
37512
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
37513
- "MESSAGE_DELIVERY_STATUS_READ",
37514
- "MESSAGE_DELIVERY_STATUS_FAILED"
37515
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("Aggregated delivery status across recipients: FAILED when every\nrecipient failed, otherwise the minimal status among non-failed ones.\nUNSPECIFIED for messages without per-recipient tracking (historical)."),
37516
37791
  documents: v.array(v.object({
37517
37792
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
37518
37793
  file_id: v.string().optional().describe("File storage identifier."),
@@ -37760,21 +38035,6 @@ v.object({
37760
38035
  ]).default("ROLE_UNSPECIFIED")
37761
38036
  }).optional().describe("Sender user aggregated information."),
37762
38037
  seq: v.string().optional().describe("Per-thread monotonic sequence number, assigned on message creation."),
37763
- statuses: v.array(v.object({
37764
- delivered_at: v.string().optional().describe("Unix time in milliseconds; zero when not reached."),
37765
- error: v.string().optional().describe("JSON-encoded provider error details for FAILED."),
37766
- failed_at: v.string().optional(),
37767
- member_id: v.string().optional().describe("Recipient contact id."),
37768
- read_at: v.string().optional(),
37769
- status: v.enum([
37770
- "MESSAGE_DELIVERY_STATUS_UNSPECIFIED",
37771
- "MESSAGE_DELIVERY_STATUS_SENT",
37772
- "MESSAGE_DELIVERY_STATUS_DELIVERED",
37773
- "MESSAGE_DELIVERY_STATUS_READ",
37774
- "MESSAGE_DELIVERY_STATUS_FAILED"
37775
- ]).default("MESSAGE_DELIVERY_STATUS_UNSPECIFIED").describe("MessageDeliveryStatus is a per-recipient delivery state of a message.\nTransitions are monotonic: SENT -> DELIVERED -> READ.\nFAILED is terminal but may be superseded by a later DELIVERED (retry).\n\n - MESSAGE_DELIVERY_STATUS_SENT: Accepted by the system and queued for delivery.\n - MESSAGE_DELIVERY_STATUS_DELIVERED: Reached the recipient (stream ACK, push, provider receipt, bot dispatch).\n - MESSAGE_DELIVERY_STATUS_READ: Read by the recipient. Not applicable to bots.\n - MESSAGE_DELIVERY_STATUS_FAILED: Delivery failed (provider rejected, invalid contact, channel restriction)."),
37776
- via: v.string().optional().describe("Confirmation source: ws|push|provider|bot.")
37777
- }).describe("MessageRecipientStatus is a per-recipient delivery state of a message.")).optional().describe("Per-recipient delivery details."),
37778
38038
  system: v.object({
37779
38039
  message_id: v.string().optional().describe("ID of message for which system messages is binded."),
37780
38040
  metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
@@ -37826,6 +38086,54 @@ v.object({
37826
38086
  "ROLE_SUPERVISOR"
37827
38087
  ]).default("ROLE_UNSPECIFIED")
37828
38088
  }).describe("ThreadMember represents a thread participant\nwith optional type-specific settings.")).optional().describe("Detailed member information."),
38089
+ read_states: v.array(v.object({
38090
+ delivered_up_to_seq: v.string().optional(),
38091
+ member: v.object({
38092
+ contact: v.object({
38093
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38094
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38095
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38096
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38097
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38098
+ name: v.string().optional().describe("Display name of the contact."),
38099
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38100
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38101
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38102
+ username: v.string().optional().describe("Technical username or handle."),
38103
+ vias: v.array(v.object({
38104
+ contact_id: v.string().optional(),
38105
+ created_at: v.string().optional(),
38106
+ disable: v.boolean().optional(),
38107
+ disable_reason: v.string().optional(),
38108
+ metadata: v.looseObject({}).optional(),
38109
+ updated_at: v.string().optional(),
38110
+ via: v.string().optional()
38111
+ })).optional()
38112
+ }).optional().describe("Contact represents an external messaging identity."),
38113
+ id: v.string().optional(),
38114
+ permissions: v.object({
38115
+ can_add_members: v.boolean().optional(),
38116
+ can_change_members_permissions: v.boolean().optional(),
38117
+ can_change_thread_info: v.boolean().optional(),
38118
+ can_delete_messages: v.boolean().optional(),
38119
+ can_remove_members: v.boolean().optional(),
38120
+ can_send_messages: v.boolean().optional(),
38121
+ created_at: v.string().optional(),
38122
+ id: v.string().optional(),
38123
+ member_id: v.string().optional(),
38124
+ updated_at: v.string().optional()
38125
+ }).optional(),
38126
+ role: v.enum([
38127
+ "ROLE_UNSPECIFIED",
38128
+ "ROLE_MEMBER",
38129
+ "ROLE_ADMIN",
38130
+ "ROLE_OWNER",
38131
+ "ROLE_SUPERVISOR"
38132
+ ]).default("ROLE_UNSPECIFIED")
38133
+ }).optional().describe("The member, in the same shape as history's sender; set by GetUpdates."),
38134
+ member_id: v.string().optional(),
38135
+ read_up_to_seq: v.string().optional()
38136
+ }).describe("MemberReadState is one member's delivery/read horizon in a thread, as\nper-thread message seq (0 = nothing reached that state yet).")).optional().describe("Per-member read horizons (snapshot, matches GetUpdates model).\nClient derives inbox/outbox watermarks: own_last_read = inbox; MIN over others = outbox."),
37829
38137
  settings: v.object({
37830
38138
  created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
37831
38139
  domain_id: v.int().optional().describe("Domain identifier."),
@@ -37842,6 +38150,7 @@ v.object({
37842
38150
  ]).default("UNKNOWN").describe("Type of the thread."),
37843
38151
  unread_count: v.int().optional().describe("Number of unread messages in this thread for the calling participant.\nCounts content messages not yet read; the caller's own messages and\nsystem messages are excluded."),
37844
38152
  updated_at: v.string().optional().describe("Last update timestamp (Unix time, milliseconds)."),
38153
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this thread (set by Get; Search carries it on the response)."),
37845
38154
  variables: v.object({
37846
38155
  thread_id: v.string().optional().describe("Unique identifier for the thread."),
37847
38156
  variables: v.record(v.string(), v.object({
@@ -38150,6 +38459,1029 @@ v.object({
38150
38459
  id: v.string().optional(),
38151
38460
  tag: v.string().optional(),
38152
38461
  thread_id: v.string().optional()
38462
+ }), v.object({ cursor: v.string().optional().describe("From the previous response; empty on the first sync.") }), v.object({
38463
+ cursor: v.string().optional().describe("Pass back as cursor on the next call."),
38464
+ resync: v.boolean().optional().describe("Empty cursor, unusable cursor or more than 1000 changes: reload the thread list,\nthen continue from cursor."),
38465
+ threads: v.array(v.object({
38466
+ deleted_message_ids: v.array(v.string()).optional(),
38467
+ dialog: v.object({
38468
+ created_at: v.string().optional().describe("Thread creation timestamp (Unix time, milliseconds)."),
38469
+ description: v.string().optional().describe("Optional thread description."),
38470
+ id: v.string().optional().describe("Unique thread identifier."),
38471
+ last_msg: v.object({
38472
+ body: v.string().optional().describe("Message body content."),
38473
+ contact: v.object({
38474
+ email: v.string().optional(),
38475
+ name: v.string().optional(),
38476
+ phone: v.string().optional()
38477
+ }).optional(),
38478
+ created_at: v.string().optional().describe("Message creation timestamp (Unix time, milliseconds)."),
38479
+ deleted: v.boolean().optional().describe("True when the message was deleted by its author. Every content field\n(body, attachments, contact, location, interactive, metadata) is cleared,\nso clients should render a tombstone."),
38480
+ deleted_at: v.string().optional().describe("Unix time in milliseconds when the message was deleted."),
38481
+ deleted_by: v.object({
38482
+ contact: v.object({
38483
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38484
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38485
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38486
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38487
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38488
+ name: v.string().optional().describe("Display name of the contact."),
38489
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38490
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38491
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38492
+ username: v.string().optional().describe("Technical username or handle."),
38493
+ vias: v.array(v.object({
38494
+ contact_id: v.string().optional(),
38495
+ created_at: v.string().optional(),
38496
+ disable: v.boolean().optional(),
38497
+ disable_reason: v.string().optional(),
38498
+ metadata: v.looseObject({}).optional(),
38499
+ updated_at: v.string().optional(),
38500
+ via: v.string().optional()
38501
+ })).optional()
38502
+ }).optional().describe("Contact represents an external messaging identity."),
38503
+ id: v.string().optional(),
38504
+ permissions: v.object({
38505
+ can_add_members: v.boolean().optional(),
38506
+ can_change_members_permissions: v.boolean().optional(),
38507
+ can_change_thread_info: v.boolean().optional(),
38508
+ can_delete_messages: v.boolean().optional(),
38509
+ can_remove_members: v.boolean().optional(),
38510
+ can_send_messages: v.boolean().optional(),
38511
+ created_at: v.string().optional(),
38512
+ id: v.string().optional(),
38513
+ member_id: v.string().optional(),
38514
+ updated_at: v.string().optional()
38515
+ }).optional(),
38516
+ role: v.enum([
38517
+ "ROLE_UNSPECIFIED",
38518
+ "ROLE_MEMBER",
38519
+ "ROLE_ADMIN",
38520
+ "ROLE_OWNER",
38521
+ "ROLE_SUPERVISOR"
38522
+ ]).default("ROLE_UNSPECIFIED")
38523
+ }).optional().describe("Member who deleted the message, enriched exactly like sender; unset while\nthe message is live."),
38524
+ documents: v.array(v.object({
38525
+ created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
38526
+ file_id: v.string().optional().describe("File storage identifier."),
38527
+ id: v.string().optional().describe("Document identifier."),
38528
+ message_id: v.string().optional().describe("Identifier of the message this document belongs to."),
38529
+ mime: v.string().optional().describe("MIME type of the document."),
38530
+ name: v.string().optional().describe("Original file name."),
38531
+ size: v.string().optional().describe("File size in bytes."),
38532
+ url: v.string().optional().describe("Public signed URL for downloading the document.")
38533
+ }).describe("Document represents a file attachment\nassociated with a message.")).optional().describe("List of document attachments."),
38534
+ edited_at: v.string().optional().describe("Message last update timestamp (Unix time, milliseconds)."),
38535
+ forward_origin: v.object({
38536
+ kind: v.enum([
38537
+ "FORWARD_ORIGIN_KIND_UNSPECIFIED",
38538
+ "FORWARD_ORIGIN_KIND_INTERNAL",
38539
+ "FORWARD_ORIGIN_KIND_EXTERNAL_USER",
38540
+ "FORWARD_ORIGIN_KIND_EXTERNAL_HIDDEN_USER",
38541
+ "FORWARD_ORIGIN_KIND_EXTERNAL_CHAT"
38542
+ ]).default("FORWARD_ORIGIN_KIND_UNSPECIFIED").describe("ForwardOriginKind tells the client how to label a forwarded message and\nwhether the origin points at anything addressable inside Webitel.\n\n - FORWARD_ORIGIN_KIND_INTERNAL: Forwarded inside Webitel: sender_id and source_message_id are set.\n - FORWARD_ORIGIN_KIND_EXTERNAL_USER: Forwarded into the chat from an external messenger, author named.\n - FORWARD_ORIGIN_KIND_EXTERNAL_HIDDEN_USER: Same, but the author chose to hide their account, so there is no name.\n - FORWARD_ORIGIN_KIND_EXTERNAL_CHAT: Origin is an external group or channel rather than a person."),
38543
+ original_sent_at: v.string().optional().describe("When the original message was sent, Unix time in milliseconds."),
38544
+ sender_id: v.string().optional().describe("Contact id of the original author. Empty unless kind is INTERNAL."),
38545
+ sender_name: v.string().optional().describe("Display name of the original author — the \"from whom\" label."),
38546
+ source_message_id: v.string().optional().describe("Source message this copy was made from. Empty unless kind is INTERNAL,\nand cleared if the source is later purged.")
38547
+ }).optional().describe("Set when this message is a forward. Never populated for a deleted\nmessage: the tombstone must not leak the origin name."),
38548
+ id: v.string().optional().describe("Unique message identifier."),
38549
+ images: v.array(v.object({
38550
+ created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
38551
+ file_id: v.string().optional().describe("File storage identifier."),
38552
+ height: v.int().optional().describe("Image height in pixels."),
38553
+ id: v.string().optional().describe("Image identifier."),
38554
+ message_id: v.string().optional().describe("Identifier of the message this message belongs to."),
38555
+ mime: v.string().optional().describe("MIME type of the image."),
38556
+ url: v.string().optional().describe("Public signed URL for accessing the image."),
38557
+ width: v.int().optional().describe("Image width in pixels.")
38558
+ }).describe("Image represents an image attachment\nassociated with a message.")).optional().describe("List of image attachments."),
38559
+ interactive: v.object({
38560
+ documents: v.object({ documents: v.array(v.object({
38561
+ file_name: v.string().optional(),
38562
+ id: v.string().optional(),
38563
+ mime_type: v.string().optional(),
38564
+ size_bytes: v.string().optional(),
38565
+ url: v.string().optional()
38566
+ }).describe("Represents `Document` message with necessary fields\nto process it into frequently used `document`\nentity in messaging systems.")).optional().describe("Documents to be attached to the header of interactive message.\nMax allowed documents: 10.") }).optional().describe("Document attachments header."),
38567
+ images: v.object({ images: v.array(v.object({
38568
+ id: v.string().optional(),
38569
+ link: v.string().optional(),
38570
+ mime_type: v.string().optional(),
38571
+ name: v.string().optional()
38572
+ }).describe("Represents `Image` entity with\nnecessary fields.")).optional().describe("Images to be attached to the header of interactive message.\nMax allowed images: 10.") }).optional().describe("Images attachment header."),
38573
+ input_field_state: v.enum([
38574
+ "INPUT_FIELD_STATE_UNSPECIFIED",
38575
+ "INPUT_FIELD_STATE_REGULAR",
38576
+ "INPUT_FIELD_STATE_MINIMIZED",
38577
+ "INPUT_FIELD_STATE_HIDDEN"
38578
+ ]).default("INPUT_FIELD_STATE_UNSPECIFIED").describe("Whether the recipient may still type while this menu is displayed."),
38579
+ list_reply: v.object({
38580
+ main_button_title: v.string().optional().describe("Title of the main button, that on-click show up list."),
38581
+ sections: v.array(v.object({
38582
+ buttons: v.array(v.object({
38583
+ callback: v.object({ data: v.string().optional().describe("Opaque data payload passed back to the server upon interaction.") }).optional().describe("Triggers a backend event (callback) with associated metadata."),
38584
+ id: v.string().optional().describe("Unique idempotent identifier for the button.\nUsed by the frontend to track state and prevent duplicate interactions."),
38585
+ label: v.string().optional().describe("The human-readable label displayed on the button."),
38586
+ metadata: v.looseObject({}).optional().describe("Extensible metadata for UI/UX styling (e.g., \"color\", \"theme\", \"size\").\nUsage: Allows for future-proofing without breaking schema changes."),
38587
+ request: v.object({ action: v.string().optional().describe("The specific action to be performed by the client application.") }).optional().describe("Requests sensitive information from the client (e.g., location or contact)."),
38588
+ url: v.object({ url: v.string().optional().describe("Must be a valid absolute URI (e.g., https://example.com).") }).optional().describe("Directs the user to an external web resource.")
38589
+ }).describe("Defines a single interactive element within the keyboard.\nEach button must have a unique identifier and a specific action type.")).optional().describe("Collection of buttons within this section.\nMinimum of 1 button is required to prevent empty sections."),
38590
+ section: v.string().optional().describe("The header text for this section. Must be concise and descriptive.")
38591
+ }).describe("Represents a row of buttons grouped under a specific logical section header.\nUseful for creating categorized menus or structured interactive interfaces.")).optional().describe("List with sections with buttons.")
38592
+ }).optional().describe("List reply with main list button text and sections with buttons."),
38593
+ markup: v.object({ rows: v.array(v.object({ buttons: v.array(v.object({
38594
+ callback: v.object({ data: v.string().optional().describe("Opaque data payload passed back to the server upon interaction.") }).optional().describe("Triggers a backend event (callback) with associated metadata."),
38595
+ id: v.string().optional().describe("Unique idempotent identifier for the button.\nUsed by the frontend to track state and prevent duplicate interactions."),
38596
+ label: v.string().optional().describe("The human-readable label displayed on the button."),
38597
+ metadata: v.looseObject({}).optional().describe("Extensible metadata for UI/UX styling (e.g., \"color\", \"theme\", \"size\").\nUsage: Allows for future-proofing without breaking schema changes."),
38598
+ request: v.object({ action: v.string().optional().describe("The specific action to be performed by the client application.") }).optional().describe("Requests sensitive information from the client (e.g., location or contact)."),
38599
+ url: v.object({ url: v.string().optional().describe("Must be a valid absolute URI (e.g., https://example.com).") }).optional().describe("Directs the user to an external web resource.")
38600
+ }).describe("Defines a single interactive element within the keyboard.\nEach button must have a unique identifier and a specific action type.")).optional().describe("Horizontal collection of buttons.\nCapped at 10 to ensure UI responsiveness and prevent overflow.") }).describe("A standard horizontal row of interactive buttons without a section header.")).optional().describe("Rows of buttons matrix.") }).optional().describe("Markup matrix with buttons."),
38601
+ placement: v.enum([
38602
+ "MENU_PLACEMENT_UNSPECIFIED",
38603
+ "MENU_PLACEMENT_INLINE",
38604
+ "MENU_PLACEMENT_PERSISTENT"
38605
+ ]).default("MENU_PLACEMENT_UNSPECIFIED").describe("Where the menu is rendered. Channels that only support one placement ignore it."),
38606
+ single_use: v.boolean().optional().describe("Force to block user keyboard.")
38607
+ }).optional().describe("Interactive represents a rich message with UI elements."),
38608
+ location: v.object({
38609
+ address: v.string().optional(),
38610
+ latitude: v.number().optional(),
38611
+ longitude: v.number().optional(),
38612
+ name: v.string().optional()
38613
+ }).optional(),
38614
+ metadata: v.looseObject({}).optional().describe("Arbitrary message metadata.\nCan contain structured data depending on message type."),
38615
+ reacted_metadata: v.object({
38616
+ button_code: v.string().optional().describe("Button identifier."),
38617
+ callback_data: v.string().optional().describe("Optional callback payload."),
38618
+ in_reply_to: v.string().optional().describe("Original message ID."),
38619
+ reacted_at: v.string().optional().describe("Unix time in milliseconds when callback button was clicked."),
38620
+ reacted_by: v.object({
38621
+ contact: v.object({
38622
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38623
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38624
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38625
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38626
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38627
+ name: v.string().optional().describe("Display name of the contact."),
38628
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38629
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38630
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38631
+ username: v.string().optional().describe("Technical username or handle."),
38632
+ vias: v.array(v.object({
38633
+ contact_id: v.string().optional(),
38634
+ created_at: v.string().optional(),
38635
+ disable: v.boolean().optional(),
38636
+ disable_reason: v.string().optional(),
38637
+ metadata: v.looseObject({}).optional(),
38638
+ updated_at: v.string().optional(),
38639
+ via: v.string().optional()
38640
+ })).optional()
38641
+ }).optional().describe("Contact represents an external messaging identity."),
38642
+ id: v.string().optional(),
38643
+ permissions: v.object({
38644
+ can_add_members: v.boolean().optional(),
38645
+ can_change_members_permissions: v.boolean().optional(),
38646
+ can_change_thread_info: v.boolean().optional(),
38647
+ can_delete_messages: v.boolean().optional(),
38648
+ can_remove_members: v.boolean().optional(),
38649
+ can_send_messages: v.boolean().optional(),
38650
+ created_at: v.string().optional(),
38651
+ id: v.string().optional(),
38652
+ member_id: v.string().optional(),
38653
+ updated_at: v.string().optional()
38654
+ }).optional(),
38655
+ role: v.enum([
38656
+ "ROLE_UNSPECIFIED",
38657
+ "ROLE_MEMBER",
38658
+ "ROLE_ADMIN",
38659
+ "ROLE_OWNER",
38660
+ "ROLE_SUPERVISOR"
38661
+ ]).default("ROLE_UNSPECIFIED")
38662
+ }).optional().describe("User who clicked the button.")
38663
+ }).optional().describe("Metadata for button reaction for interactive message."),
38664
+ reactions: v.array(v.object({
38665
+ count: v.int().optional().describe("Number of members currently holding this reaction."),
38666
+ emoji: v.string().optional().describe("Unicode emoji this reaction aggregates."),
38667
+ last_reacted_at: v.string().optional().describe("Unix time in milliseconds of the most recent reaction with this emoji."),
38668
+ reacted_by_me: v.boolean().optional().describe("True when the requesting caller is one of the reactors."),
38669
+ reactor_ids: v.array(v.string()).optional().describe("Capped sample of reactor contact ids (for UI); not necessarily all of them.")
38670
+ }).describe("MessageReaction is one emoji aggregate on a history message.")).optional().describe("Emoji reactions currently held on the message, aggregated per emoji."),
38671
+ reply_to: v.object({
38672
+ attachment_address: v.string().optional(),
38673
+ attachment_kind: v.string().optional(),
38674
+ attachment_mime: v.string().optional(),
38675
+ attachment_name: v.string().optional(),
38676
+ body: v.string().optional(),
38677
+ created_at: v.string().optional(),
38678
+ is_deleted: v.boolean().optional(),
38679
+ message_id: v.string().optional(),
38680
+ sender: v.object({
38681
+ contact: v.object({
38682
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38683
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38684
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38685
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38686
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38687
+ name: v.string().optional().describe("Display name of the contact."),
38688
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38689
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38690
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38691
+ username: v.string().optional().describe("Technical username or handle."),
38692
+ vias: v.array(v.object({
38693
+ contact_id: v.string().optional(),
38694
+ created_at: v.string().optional(),
38695
+ disable: v.boolean().optional(),
38696
+ disable_reason: v.string().optional(),
38697
+ metadata: v.looseObject({}).optional(),
38698
+ updated_at: v.string().optional(),
38699
+ via: v.string().optional()
38700
+ })).optional()
38701
+ }).optional().describe("Contact represents an external messaging identity."),
38702
+ id: v.string().optional(),
38703
+ permissions: v.object({
38704
+ can_add_members: v.boolean().optional(),
38705
+ can_change_members_permissions: v.boolean().optional(),
38706
+ can_change_thread_info: v.boolean().optional(),
38707
+ can_delete_messages: v.boolean().optional(),
38708
+ can_remove_members: v.boolean().optional(),
38709
+ can_send_messages: v.boolean().optional(),
38710
+ created_at: v.string().optional(),
38711
+ id: v.string().optional(),
38712
+ member_id: v.string().optional(),
38713
+ updated_at: v.string().optional()
38714
+ }).optional(),
38715
+ role: v.enum([
38716
+ "ROLE_UNSPECIFIED",
38717
+ "ROLE_MEMBER",
38718
+ "ROLE_ADMIN",
38719
+ "ROLE_OWNER",
38720
+ "ROLE_SUPERVISOR"
38721
+ ]).default("ROLE_UNSPECIFIED")
38722
+ }).optional().describe("ThreadMember represents a thread participant\nwith optional type-specific settings."),
38723
+ sender_id: v.string().optional(),
38724
+ type: v.string().optional().describe("Kind of the quoted message: text, document, image, system, interactive,\nlocation or contact.")
38725
+ }).optional(),
38726
+ revision_count: v.int().optional().describe("Number of entries in the message's change history. Zero means the message\nwas never edited or deleted; otherwise GetMessageRevisions returns that\nmany entries."),
38727
+ sender: v.object({
38728
+ contact: v.object({
38729
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38730
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38731
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38732
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38733
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38734
+ name: v.string().optional().describe("Display name of the contact."),
38735
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38736
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38737
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38738
+ username: v.string().optional().describe("Technical username or handle."),
38739
+ vias: v.array(v.object({
38740
+ contact_id: v.string().optional(),
38741
+ created_at: v.string().optional(),
38742
+ disable: v.boolean().optional(),
38743
+ disable_reason: v.string().optional(),
38744
+ metadata: v.looseObject({}).optional(),
38745
+ updated_at: v.string().optional(),
38746
+ via: v.string().optional()
38747
+ })).optional()
38748
+ }).optional().describe("Contact represents an external messaging identity."),
38749
+ id: v.string().optional(),
38750
+ permissions: v.object({
38751
+ can_add_members: v.boolean().optional(),
38752
+ can_change_members_permissions: v.boolean().optional(),
38753
+ can_change_thread_info: v.boolean().optional(),
38754
+ can_delete_messages: v.boolean().optional(),
38755
+ can_remove_members: v.boolean().optional(),
38756
+ can_send_messages: v.boolean().optional(),
38757
+ created_at: v.string().optional(),
38758
+ id: v.string().optional(),
38759
+ member_id: v.string().optional(),
38760
+ updated_at: v.string().optional()
38761
+ }).optional(),
38762
+ role: v.enum([
38763
+ "ROLE_UNSPECIFIED",
38764
+ "ROLE_MEMBER",
38765
+ "ROLE_ADMIN",
38766
+ "ROLE_OWNER",
38767
+ "ROLE_SUPERVISOR"
38768
+ ]).default("ROLE_UNSPECIFIED")
38769
+ }).optional().describe("Sender user aggregated information."),
38770
+ seq: v.string().optional().describe("Per-thread monotonic sequence number, assigned on message creation."),
38771
+ system: v.object({
38772
+ message_id: v.string().optional().describe("ID of message for which system messages is binded."),
38773
+ metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
38774
+ type: v.string().optional().describe("Represents type of the message.")
38775
+ }).optional().describe("System message content."),
38776
+ thread_id: v.string().optional().describe("Identifier of the thread the message belongs to."),
38777
+ type: v.int().optional().describe("Message type identifier.")
38778
+ }).optional().describe("Last message of the linked thread."),
38779
+ members: v.array(v.object({
38780
+ contact: v.object({
38781
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38782
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38783
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38784
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38785
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38786
+ name: v.string().optional().describe("Display name of the contact."),
38787
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38788
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38789
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38790
+ username: v.string().optional().describe("Technical username or handle."),
38791
+ vias: v.array(v.object({
38792
+ contact_id: v.string().optional(),
38793
+ created_at: v.string().optional(),
38794
+ disable: v.boolean().optional(),
38795
+ disable_reason: v.string().optional(),
38796
+ metadata: v.looseObject({}).optional(),
38797
+ updated_at: v.string().optional(),
38798
+ via: v.string().optional()
38799
+ })).optional()
38800
+ }).optional().describe("Contact represents an external messaging identity."),
38801
+ id: v.string().optional(),
38802
+ permissions: v.object({
38803
+ can_add_members: v.boolean().optional(),
38804
+ can_change_members_permissions: v.boolean().optional(),
38805
+ can_change_thread_info: v.boolean().optional(),
38806
+ can_delete_messages: v.boolean().optional(),
38807
+ can_remove_members: v.boolean().optional(),
38808
+ can_send_messages: v.boolean().optional(),
38809
+ created_at: v.string().optional(),
38810
+ id: v.string().optional(),
38811
+ member_id: v.string().optional(),
38812
+ updated_at: v.string().optional()
38813
+ }).optional(),
38814
+ role: v.enum([
38815
+ "ROLE_UNSPECIFIED",
38816
+ "ROLE_MEMBER",
38817
+ "ROLE_ADMIN",
38818
+ "ROLE_OWNER",
38819
+ "ROLE_SUPERVISOR"
38820
+ ]).default("ROLE_UNSPECIFIED")
38821
+ }).describe("ThreadMember represents a thread participant\nwith optional type-specific settings.")).optional().describe("Detailed member information."),
38822
+ read_states: v.array(v.object({
38823
+ delivered_up_to_seq: v.string().optional(),
38824
+ member: v.object({
38825
+ contact: v.object({
38826
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38827
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38828
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38829
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38830
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38831
+ name: v.string().optional().describe("Display name of the contact."),
38832
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38833
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38834
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38835
+ username: v.string().optional().describe("Technical username or handle."),
38836
+ vias: v.array(v.object({
38837
+ contact_id: v.string().optional(),
38838
+ created_at: v.string().optional(),
38839
+ disable: v.boolean().optional(),
38840
+ disable_reason: v.string().optional(),
38841
+ metadata: v.looseObject({}).optional(),
38842
+ updated_at: v.string().optional(),
38843
+ via: v.string().optional()
38844
+ })).optional()
38845
+ }).optional().describe("Contact represents an external messaging identity."),
38846
+ id: v.string().optional(),
38847
+ permissions: v.object({
38848
+ can_add_members: v.boolean().optional(),
38849
+ can_change_members_permissions: v.boolean().optional(),
38850
+ can_change_thread_info: v.boolean().optional(),
38851
+ can_delete_messages: v.boolean().optional(),
38852
+ can_remove_members: v.boolean().optional(),
38853
+ can_send_messages: v.boolean().optional(),
38854
+ created_at: v.string().optional(),
38855
+ id: v.string().optional(),
38856
+ member_id: v.string().optional(),
38857
+ updated_at: v.string().optional()
38858
+ }).optional(),
38859
+ role: v.enum([
38860
+ "ROLE_UNSPECIFIED",
38861
+ "ROLE_MEMBER",
38862
+ "ROLE_ADMIN",
38863
+ "ROLE_OWNER",
38864
+ "ROLE_SUPERVISOR"
38865
+ ]).default("ROLE_UNSPECIFIED")
38866
+ }).optional().describe("The member, in the same shape as history's sender; set by GetUpdates."),
38867
+ member_id: v.string().optional(),
38868
+ read_up_to_seq: v.string().optional()
38869
+ }).describe("MemberReadState is one member's delivery/read horizon in a thread, as\nper-thread message seq (0 = nothing reached that state yet).")).optional().describe("Per-member read horizons (snapshot, matches GetUpdates model).\nClient derives inbox/outbox watermarks: own_last_read = inbox; MIN over others = outbox."),
38870
+ settings: v.object({
38871
+ created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
38872
+ domain_id: v.int().optional().describe("Domain identifier."),
38873
+ id: v.string().optional().describe("Settings identifier."),
38874
+ title: v.string().optional().describe("Custom title for the direct thread.\nUsually represents the display name of the conversation."),
38875
+ updated_at: v.string().optional().describe("Last update timestamp (Unix time, milliseconds).")
38876
+ }).optional().describe("User-specific settings for this thread."),
38877
+ subject: v.string().optional().describe("Thread subject or title."),
38878
+ type: v.enum([
38879
+ "UNKNOWN",
38880
+ "DIRECT",
38881
+ "GROUP",
38882
+ "CHANNEL"
38883
+ ]).default("UNKNOWN").describe("Type of the thread."),
38884
+ unread_count: v.int().optional().describe("Number of unread messages in this thread for the calling participant.\nCounts content messages not yet read; the caller's own messages and\nsystem messages are excluded."),
38885
+ updated_at: v.string().optional().describe("Last update timestamp (Unix time, milliseconds)."),
38886
+ updates_cursor: v.string().optional().describe("GetUpdates cursor read before this thread (set by Get; Search carries it on the response)."),
38887
+ variables: v.object({
38888
+ thread_id: v.string().optional().describe("Unique identifier for the thread."),
38889
+ variables: v.record(v.string(), v.object({
38890
+ set_at: v.string().optional().describe("Timestamp when the variable was set (Unix time, milliseconds)."),
38891
+ set_by: v.object({
38892
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38893
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38894
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38895
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38896
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38897
+ name: v.string().optional().describe("Display name of the contact."),
38898
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38899
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38900
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38901
+ username: v.string().optional().describe("Technical username or handle."),
38902
+ vias: v.array(v.object({
38903
+ contact_id: v.string().optional(),
38904
+ created_at: v.string().optional(),
38905
+ disable: v.boolean().optional(),
38906
+ disable_reason: v.string().optional(),
38907
+ metadata: v.looseObject({}).optional(),
38908
+ updated_at: v.string().optional(),
38909
+ via: v.string().optional()
38910
+ })).optional()
38911
+ }).optional().describe("Contact who set the variable."),
38912
+ value: v.unknown().optional().describe("Arbitrary structured value of the variable.\nSupports dynamic JSON-like content.")
38913
+ }).describe("VariableEntry represents a single variable value\nalong with metadata about who and when it was set.")).optional().describe("Key-value map of variables.\nKey is the variable name, value contains data and metadata.")
38914
+ }).optional().describe("Optional variables associated with the thread.")
38915
+ }).optional().describe("The thread itself, set when it is new to the caller (created or joined since cursor)."),
38916
+ left: v.boolean().optional().describe("The caller is no longer a member: drop the thread."),
38917
+ member_changes: v.array(v.object({
38918
+ action: v.enum([
38919
+ "THREAD_MEMBER_CHANGE_ACTION_UNSPECIFIED",
38920
+ "THREAD_MEMBER_CHANGE_ACTION_JOINED",
38921
+ "THREAD_MEMBER_CHANGE_ACTION_LEFT"
38922
+ ]).default("THREAD_MEMBER_CHANGE_ACTION_UNSPECIFIED"),
38923
+ by: v.object({
38924
+ contact: v.object({
38925
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38926
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38927
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38928
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38929
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38930
+ name: v.string().optional().describe("Display name of the contact."),
38931
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38932
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38933
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38934
+ username: v.string().optional().describe("Technical username or handle."),
38935
+ vias: v.array(v.object({
38936
+ contact_id: v.string().optional(),
38937
+ created_at: v.string().optional(),
38938
+ disable: v.boolean().optional(),
38939
+ disable_reason: v.string().optional(),
38940
+ metadata: v.looseObject({}).optional(),
38941
+ updated_at: v.string().optional(),
38942
+ via: v.string().optional()
38943
+ })).optional()
38944
+ }).optional().describe("Contact represents an external messaging identity."),
38945
+ id: v.string().optional(),
38946
+ permissions: v.object({
38947
+ can_add_members: v.boolean().optional(),
38948
+ can_change_members_permissions: v.boolean().optional(),
38949
+ can_change_thread_info: v.boolean().optional(),
38950
+ can_delete_messages: v.boolean().optional(),
38951
+ can_remove_members: v.boolean().optional(),
38952
+ can_send_messages: v.boolean().optional(),
38953
+ created_at: v.string().optional(),
38954
+ id: v.string().optional(),
38955
+ member_id: v.string().optional(),
38956
+ updated_at: v.string().optional()
38957
+ }).optional(),
38958
+ role: v.enum([
38959
+ "ROLE_UNSPECIFIED",
38960
+ "ROLE_MEMBER",
38961
+ "ROLE_ADMIN",
38962
+ "ROLE_OWNER",
38963
+ "ROLE_SUPERVISOR"
38964
+ ]).default("ROLE_UNSPECIFIED")
38965
+ }).optional().describe("Who made the change."),
38966
+ member: v.object({
38967
+ contact: v.object({
38968
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
38969
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
38970
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
38971
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
38972
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
38973
+ name: v.string().optional().describe("Display name of the contact."),
38974
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
38975
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
38976
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
38977
+ username: v.string().optional().describe("Technical username or handle."),
38978
+ vias: v.array(v.object({
38979
+ contact_id: v.string().optional(),
38980
+ created_at: v.string().optional(),
38981
+ disable: v.boolean().optional(),
38982
+ disable_reason: v.string().optional(),
38983
+ metadata: v.looseObject({}).optional(),
38984
+ updated_at: v.string().optional(),
38985
+ via: v.string().optional()
38986
+ })).optional()
38987
+ }).optional().describe("Contact represents an external messaging identity."),
38988
+ id: v.string().optional(),
38989
+ permissions: v.object({
38990
+ can_add_members: v.boolean().optional(),
38991
+ can_change_members_permissions: v.boolean().optional(),
38992
+ can_change_thread_info: v.boolean().optional(),
38993
+ can_delete_messages: v.boolean().optional(),
38994
+ can_remove_members: v.boolean().optional(),
38995
+ can_send_messages: v.boolean().optional(),
38996
+ created_at: v.string().optional(),
38997
+ id: v.string().optional(),
38998
+ member_id: v.string().optional(),
38999
+ updated_at: v.string().optional()
39000
+ }).optional(),
39001
+ role: v.enum([
39002
+ "ROLE_UNSPECIFIED",
39003
+ "ROLE_MEMBER",
39004
+ "ROLE_ADMIN",
39005
+ "ROLE_OWNER",
39006
+ "ROLE_SUPERVISOR"
39007
+ ]).default("ROLE_UNSPECIFIED")
39008
+ }).optional().describe("ThreadMember represents a thread participant\nwith optional type-specific settings.")
39009
+ })).optional(),
39010
+ messages: v.array(v.object({
39011
+ body: v.string().optional(),
39012
+ contact: v.object({
39013
+ email: v.string().optional(),
39014
+ name: v.string().optional(),
39015
+ phone: v.string().optional()
39016
+ }).optional(),
39017
+ created_at: v.string().optional(),
39018
+ documents: v.array(v.object({
39019
+ created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
39020
+ file_id: v.string().optional().describe("File storage identifier."),
39021
+ id: v.string().optional().describe("Document identifier."),
39022
+ message_id: v.string().optional().describe("Identifier of the message this document belongs to."),
39023
+ mime: v.string().optional().describe("MIME type of the document."),
39024
+ name: v.string().optional().describe("Original file name."),
39025
+ size: v.string().optional().describe("File size in bytes."),
39026
+ url: v.string().optional().describe("Public signed URL for downloading the document.")
39027
+ }).describe("Document represents a file attachment\nassociated with a message.")).optional(),
39028
+ edited_at: v.string().optional().describe("Set when the message was edited."),
39029
+ forward_origin: v.object({
39030
+ kind: v.enum([
39031
+ "FORWARD_ORIGIN_KIND_UNSPECIFIED",
39032
+ "FORWARD_ORIGIN_KIND_INTERNAL",
39033
+ "FORWARD_ORIGIN_KIND_EXTERNAL_USER",
39034
+ "FORWARD_ORIGIN_KIND_EXTERNAL_HIDDEN_USER",
39035
+ "FORWARD_ORIGIN_KIND_EXTERNAL_CHAT"
39036
+ ]).default("FORWARD_ORIGIN_KIND_UNSPECIFIED").describe("ForwardOriginKind tells the client how to label a forwarded message and\nwhether the origin points at anything addressable inside Webitel.\n\n - FORWARD_ORIGIN_KIND_INTERNAL: Forwarded inside Webitel: sender_id and source_message_id are set.\n - FORWARD_ORIGIN_KIND_EXTERNAL_USER: Forwarded into the chat from an external messenger, author named.\n - FORWARD_ORIGIN_KIND_EXTERNAL_HIDDEN_USER: Same, but the author chose to hide their account, so there is no name.\n - FORWARD_ORIGIN_KIND_EXTERNAL_CHAT: Origin is an external group or channel rather than a person."),
39037
+ original_sent_at: v.string().optional().describe("When the original message was sent, Unix time in milliseconds."),
39038
+ sender_id: v.string().optional().describe("Contact id of the original author. Empty unless kind is INTERNAL."),
39039
+ sender_name: v.string().optional().describe("Display name of the original author — the \"from whom\" label."),
39040
+ source_message_id: v.string().optional().describe("Source message this copy was made from. Empty unless kind is INTERNAL,\nand cleared if the source is later purged.")
39041
+ }).optional().describe("ForwardOrigin is a snapshot of the original author taken at forward time.\nUnlike ReplyToMessage it carries no enriched ThreadMember: the original author\nis generally not a member of the chat the copy landed in, so sender_name is\nthe only label a client can rely on."),
39042
+ id: v.string().optional(),
39043
+ images: v.array(v.object({
39044
+ created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
39045
+ file_id: v.string().optional().describe("File storage identifier."),
39046
+ height: v.int().optional().describe("Image height in pixels."),
39047
+ id: v.string().optional().describe("Image identifier."),
39048
+ message_id: v.string().optional().describe("Identifier of the message this message belongs to."),
39049
+ mime: v.string().optional().describe("MIME type of the image."),
39050
+ url: v.string().optional().describe("Public signed URL for accessing the image."),
39051
+ width: v.int().optional().describe("Image width in pixels.")
39052
+ }).describe("Image represents an image attachment\nassociated with a message.")).optional(),
39053
+ interactive: v.object({
39054
+ documents: v.object({ documents: v.array(v.object({
39055
+ file_name: v.string().optional(),
39056
+ id: v.string().optional(),
39057
+ mime_type: v.string().optional(),
39058
+ size_bytes: v.string().optional(),
39059
+ url: v.string().optional()
39060
+ }).describe("Represents `Document` message with necessary fields\nto process it into frequently used `document`\nentity in messaging systems.")).optional().describe("Documents to be attached to the header of interactive message.\nMax allowed documents: 10.") }).optional().describe("Document attachments header."),
39061
+ images: v.object({ images: v.array(v.object({
39062
+ id: v.string().optional(),
39063
+ link: v.string().optional(),
39064
+ mime_type: v.string().optional(),
39065
+ name: v.string().optional()
39066
+ }).describe("Represents `Image` entity with\nnecessary fields.")).optional().describe("Images to be attached to the header of interactive message.\nMax allowed images: 10.") }).optional().describe("Images attachment header."),
39067
+ input_field_state: v.enum([
39068
+ "INPUT_FIELD_STATE_UNSPECIFIED",
39069
+ "INPUT_FIELD_STATE_REGULAR",
39070
+ "INPUT_FIELD_STATE_MINIMIZED",
39071
+ "INPUT_FIELD_STATE_HIDDEN"
39072
+ ]).default("INPUT_FIELD_STATE_UNSPECIFIED").describe("Whether the recipient may still type while this menu is displayed."),
39073
+ list_reply: v.object({
39074
+ main_button_title: v.string().optional().describe("Title of the main button, that on-click show up list."),
39075
+ sections: v.array(v.object({
39076
+ buttons: v.array(v.object({
39077
+ callback: v.object({ data: v.string().optional().describe("Opaque data payload passed back to the server upon interaction.") }).optional().describe("Triggers a backend event (callback) with associated metadata."),
39078
+ id: v.string().optional().describe("Unique idempotent identifier for the button.\nUsed by the frontend to track state and prevent duplicate interactions."),
39079
+ label: v.string().optional().describe("The human-readable label displayed on the button."),
39080
+ metadata: v.looseObject({}).optional().describe("Extensible metadata for UI/UX styling (e.g., \"color\", \"theme\", \"size\").\nUsage: Allows for future-proofing without breaking schema changes."),
39081
+ request: v.object({ action: v.string().optional().describe("The specific action to be performed by the client application.") }).optional().describe("Requests sensitive information from the client (e.g., location or contact)."),
39082
+ url: v.object({ url: v.string().optional().describe("Must be a valid absolute URI (e.g., https://example.com).") }).optional().describe("Directs the user to an external web resource.")
39083
+ }).describe("Defines a single interactive element within the keyboard.\nEach button must have a unique identifier and a specific action type.")).optional().describe("Collection of buttons within this section.\nMinimum of 1 button is required to prevent empty sections."),
39084
+ section: v.string().optional().describe("The header text for this section. Must be concise and descriptive.")
39085
+ }).describe("Represents a row of buttons grouped under a specific logical section header.\nUseful for creating categorized menus or structured interactive interfaces.")).optional().describe("List with sections with buttons.")
39086
+ }).optional().describe("List reply with main list button text and sections with buttons."),
39087
+ markup: v.object({ rows: v.array(v.object({ buttons: v.array(v.object({
39088
+ callback: v.object({ data: v.string().optional().describe("Opaque data payload passed back to the server upon interaction.") }).optional().describe("Triggers a backend event (callback) with associated metadata."),
39089
+ id: v.string().optional().describe("Unique idempotent identifier for the button.\nUsed by the frontend to track state and prevent duplicate interactions."),
39090
+ label: v.string().optional().describe("The human-readable label displayed on the button."),
39091
+ metadata: v.looseObject({}).optional().describe("Extensible metadata for UI/UX styling (e.g., \"color\", \"theme\", \"size\").\nUsage: Allows for future-proofing without breaking schema changes."),
39092
+ request: v.object({ action: v.string().optional().describe("The specific action to be performed by the client application.") }).optional().describe("Requests sensitive information from the client (e.g., location or contact)."),
39093
+ url: v.object({ url: v.string().optional().describe("Must be a valid absolute URI (e.g., https://example.com).") }).optional().describe("Directs the user to an external web resource.")
39094
+ }).describe("Defines a single interactive element within the keyboard.\nEach button must have a unique identifier and a specific action type.")).optional().describe("Horizontal collection of buttons.\nCapped at 10 to ensure UI responsiveness and prevent overflow.") }).describe("A standard horizontal row of interactive buttons without a section header.")).optional().describe("Rows of buttons matrix.") }).optional().describe("Markup matrix with buttons."),
39095
+ placement: v.enum([
39096
+ "MENU_PLACEMENT_UNSPECIFIED",
39097
+ "MENU_PLACEMENT_INLINE",
39098
+ "MENU_PLACEMENT_PERSISTENT"
39099
+ ]).default("MENU_PLACEMENT_UNSPECIFIED").describe("Where the menu is rendered. Channels that only support one placement ignore it."),
39100
+ single_use: v.boolean().optional().describe("Force to block user keyboard.")
39101
+ }).optional().describe("Interactive represents a rich message with UI elements."),
39102
+ location: v.object({
39103
+ address: v.string().optional(),
39104
+ latitude: v.number().optional(),
39105
+ longitude: v.number().optional(),
39106
+ name: v.string().optional()
39107
+ }).optional(),
39108
+ metadata: v.looseObject({}).optional(),
39109
+ reactions: v.array(v.object({
39110
+ count: v.int().optional().describe("Number of members currently holding this reaction."),
39111
+ emoji: v.string().optional().describe("Unicode emoji this reaction aggregates."),
39112
+ last_reacted_at: v.string().optional().describe("Unix time in milliseconds of the most recent reaction with this emoji."),
39113
+ reacted_by_me: v.boolean().optional().describe("True when the requesting caller is one of the reactors."),
39114
+ reactor_ids: v.array(v.string()).optional().describe("Capped sample of reactor contact ids (for UI); not necessarily all of them.")
39115
+ }).describe("MessageReaction is one emoji aggregate on a history message.")).optional(),
39116
+ reply_to: v.object({
39117
+ attachment_address: v.string().optional(),
39118
+ attachment_kind: v.string().optional(),
39119
+ attachment_mime: v.string().optional(),
39120
+ attachment_name: v.string().optional(),
39121
+ body: v.string().optional(),
39122
+ created_at: v.string().optional(),
39123
+ is_deleted: v.boolean().optional(),
39124
+ message_id: v.string().optional(),
39125
+ sender: v.object({
39126
+ contact: v.object({
39127
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
39128
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
39129
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
39130
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
39131
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
39132
+ name: v.string().optional().describe("Display name of the contact."),
39133
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
39134
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
39135
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
39136
+ username: v.string().optional().describe("Technical username or handle."),
39137
+ vias: v.array(v.object({
39138
+ contact_id: v.string().optional(),
39139
+ created_at: v.string().optional(),
39140
+ disable: v.boolean().optional(),
39141
+ disable_reason: v.string().optional(),
39142
+ metadata: v.looseObject({}).optional(),
39143
+ updated_at: v.string().optional(),
39144
+ via: v.string().optional()
39145
+ })).optional()
39146
+ }).optional().describe("Contact represents an external messaging identity."),
39147
+ id: v.string().optional(),
39148
+ permissions: v.object({
39149
+ can_add_members: v.boolean().optional(),
39150
+ can_change_members_permissions: v.boolean().optional(),
39151
+ can_change_thread_info: v.boolean().optional(),
39152
+ can_delete_messages: v.boolean().optional(),
39153
+ can_remove_members: v.boolean().optional(),
39154
+ can_send_messages: v.boolean().optional(),
39155
+ created_at: v.string().optional(),
39156
+ id: v.string().optional(),
39157
+ member_id: v.string().optional(),
39158
+ updated_at: v.string().optional()
39159
+ }).optional(),
39160
+ role: v.enum([
39161
+ "ROLE_UNSPECIFIED",
39162
+ "ROLE_MEMBER",
39163
+ "ROLE_ADMIN",
39164
+ "ROLE_OWNER",
39165
+ "ROLE_SUPERVISOR"
39166
+ ]).default("ROLE_UNSPECIFIED")
39167
+ }).optional().describe("ThreadMember represents a thread participant\nwith optional type-specific settings."),
39168
+ sender_id: v.string().optional(),
39169
+ type: v.string().optional().describe("Kind of the quoted message: text, document, image, system, interactive,\nlocation or contact.")
39170
+ }).optional(),
39171
+ sender: v.object({
39172
+ contact: v.object({
39173
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
39174
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
39175
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
39176
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
39177
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
39178
+ name: v.string().optional().describe("Display name of the contact."),
39179
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
39180
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
39181
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
39182
+ username: v.string().optional().describe("Technical username or handle."),
39183
+ vias: v.array(v.object({
39184
+ contact_id: v.string().optional(),
39185
+ created_at: v.string().optional(),
39186
+ disable: v.boolean().optional(),
39187
+ disable_reason: v.string().optional(),
39188
+ metadata: v.looseObject({}).optional(),
39189
+ updated_at: v.string().optional(),
39190
+ via: v.string().optional()
39191
+ })).optional()
39192
+ }).optional().describe("Contact represents an external messaging identity."),
39193
+ id: v.string().optional(),
39194
+ permissions: v.object({
39195
+ can_add_members: v.boolean().optional(),
39196
+ can_change_members_permissions: v.boolean().optional(),
39197
+ can_change_thread_info: v.boolean().optional(),
39198
+ can_delete_messages: v.boolean().optional(),
39199
+ can_remove_members: v.boolean().optional(),
39200
+ can_send_messages: v.boolean().optional(),
39201
+ created_at: v.string().optional(),
39202
+ id: v.string().optional(),
39203
+ member_id: v.string().optional(),
39204
+ updated_at: v.string().optional()
39205
+ }).optional(),
39206
+ role: v.enum([
39207
+ "ROLE_UNSPECIFIED",
39208
+ "ROLE_MEMBER",
39209
+ "ROLE_ADMIN",
39210
+ "ROLE_OWNER",
39211
+ "ROLE_SUPERVISOR"
39212
+ ]).default("ROLE_UNSPECIFIED")
39213
+ }).optional().describe("ThreadMember represents a thread participant\nwith optional type-specific settings."),
39214
+ seq: v.string().optional(),
39215
+ system: v.object({
39216
+ message_id: v.string().optional().describe("ID of message for which system messages is binded."),
39217
+ metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
39218
+ type: v.string().optional().describe("Represents type of the message.")
39219
+ }).optional().describe("System represents domain structure for system event messages."),
39220
+ type: v.int().optional()
39221
+ }).describe("UpdatedMessage is what a client needs to render or re-render a message bubble.")).optional().describe("New or changed messages in their current state; upsert by id."),
39222
+ read_states: v.array(v.object({
39223
+ delivered_up_to_seq: v.string().optional(),
39224
+ member: v.object({
39225
+ contact: v.object({
39226
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
39227
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
39228
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
39229
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
39230
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
39231
+ name: v.string().optional().describe("Display name of the contact."),
39232
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
39233
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
39234
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
39235
+ username: v.string().optional().describe("Technical username or handle."),
39236
+ vias: v.array(v.object({
39237
+ contact_id: v.string().optional(),
39238
+ created_at: v.string().optional(),
39239
+ disable: v.boolean().optional(),
39240
+ disable_reason: v.string().optional(),
39241
+ metadata: v.looseObject({}).optional(),
39242
+ updated_at: v.string().optional(),
39243
+ via: v.string().optional()
39244
+ })).optional()
39245
+ }).optional().describe("Contact represents an external messaging identity."),
39246
+ id: v.string().optional(),
39247
+ permissions: v.object({
39248
+ can_add_members: v.boolean().optional(),
39249
+ can_change_members_permissions: v.boolean().optional(),
39250
+ can_change_thread_info: v.boolean().optional(),
39251
+ can_delete_messages: v.boolean().optional(),
39252
+ can_remove_members: v.boolean().optional(),
39253
+ can_send_messages: v.boolean().optional(),
39254
+ created_at: v.string().optional(),
39255
+ id: v.string().optional(),
39256
+ member_id: v.string().optional(),
39257
+ updated_at: v.string().optional()
39258
+ }).optional(),
39259
+ role: v.enum([
39260
+ "ROLE_UNSPECIFIED",
39261
+ "ROLE_MEMBER",
39262
+ "ROLE_ADMIN",
39263
+ "ROLE_OWNER",
39264
+ "ROLE_SUPERVISOR"
39265
+ ]).default("ROLE_UNSPECIFIED")
39266
+ }).optional().describe("The member, in the same shape as history's sender; set by GetUpdates."),
39267
+ member_id: v.string().optional(),
39268
+ read_up_to_seq: v.string().optional()
39269
+ }).describe("MemberReadState is one member's delivery/read horizon in a thread, as\nper-thread message seq (0 = nothing reached that state yet).")).optional().describe("Delivery/read horizons in message seq."),
39270
+ thread_id: v.string().optional(),
39271
+ top_message: v.object({
39272
+ body: v.string().optional(),
39273
+ contact: v.object({
39274
+ email: v.string().optional(),
39275
+ name: v.string().optional(),
39276
+ phone: v.string().optional()
39277
+ }).optional(),
39278
+ created_at: v.string().optional(),
39279
+ documents: v.array(v.object({
39280
+ created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
39281
+ file_id: v.string().optional().describe("File storage identifier."),
39282
+ id: v.string().optional().describe("Document identifier."),
39283
+ message_id: v.string().optional().describe("Identifier of the message this document belongs to."),
39284
+ mime: v.string().optional().describe("MIME type of the document."),
39285
+ name: v.string().optional().describe("Original file name."),
39286
+ size: v.string().optional().describe("File size in bytes."),
39287
+ url: v.string().optional().describe("Public signed URL for downloading the document.")
39288
+ }).describe("Document represents a file attachment\nassociated with a message.")).optional(),
39289
+ edited_at: v.string().optional().describe("Set when the message was edited."),
39290
+ forward_origin: v.object({
39291
+ kind: v.enum([
39292
+ "FORWARD_ORIGIN_KIND_UNSPECIFIED",
39293
+ "FORWARD_ORIGIN_KIND_INTERNAL",
39294
+ "FORWARD_ORIGIN_KIND_EXTERNAL_USER",
39295
+ "FORWARD_ORIGIN_KIND_EXTERNAL_HIDDEN_USER",
39296
+ "FORWARD_ORIGIN_KIND_EXTERNAL_CHAT"
39297
+ ]).default("FORWARD_ORIGIN_KIND_UNSPECIFIED").describe("ForwardOriginKind tells the client how to label a forwarded message and\nwhether the origin points at anything addressable inside Webitel.\n\n - FORWARD_ORIGIN_KIND_INTERNAL: Forwarded inside Webitel: sender_id and source_message_id are set.\n - FORWARD_ORIGIN_KIND_EXTERNAL_USER: Forwarded into the chat from an external messenger, author named.\n - FORWARD_ORIGIN_KIND_EXTERNAL_HIDDEN_USER: Same, but the author chose to hide their account, so there is no name.\n - FORWARD_ORIGIN_KIND_EXTERNAL_CHAT: Origin is an external group or channel rather than a person."),
39298
+ original_sent_at: v.string().optional().describe("When the original message was sent, Unix time in milliseconds."),
39299
+ sender_id: v.string().optional().describe("Contact id of the original author. Empty unless kind is INTERNAL."),
39300
+ sender_name: v.string().optional().describe("Display name of the original author — the \"from whom\" label."),
39301
+ source_message_id: v.string().optional().describe("Source message this copy was made from. Empty unless kind is INTERNAL,\nand cleared if the source is later purged.")
39302
+ }).optional().describe("ForwardOrigin is a snapshot of the original author taken at forward time.\nUnlike ReplyToMessage it carries no enriched ThreadMember: the original author\nis generally not a member of the chat the copy landed in, so sender_name is\nthe only label a client can rely on."),
39303
+ id: v.string().optional(),
39304
+ images: v.array(v.object({
39305
+ created_at: v.string().optional().describe("Creation timestamp (Unix time, milliseconds)."),
39306
+ file_id: v.string().optional().describe("File storage identifier."),
39307
+ height: v.int().optional().describe("Image height in pixels."),
39308
+ id: v.string().optional().describe("Image identifier."),
39309
+ message_id: v.string().optional().describe("Identifier of the message this message belongs to."),
39310
+ mime: v.string().optional().describe("MIME type of the image."),
39311
+ url: v.string().optional().describe("Public signed URL for accessing the image."),
39312
+ width: v.int().optional().describe("Image width in pixels.")
39313
+ }).describe("Image represents an image attachment\nassociated with a message.")).optional(),
39314
+ interactive: v.object({
39315
+ documents: v.object({ documents: v.array(v.object({
39316
+ file_name: v.string().optional(),
39317
+ id: v.string().optional(),
39318
+ mime_type: v.string().optional(),
39319
+ size_bytes: v.string().optional(),
39320
+ url: v.string().optional()
39321
+ }).describe("Represents `Document` message with necessary fields\nto process it into frequently used `document`\nentity in messaging systems.")).optional().describe("Documents to be attached to the header of interactive message.\nMax allowed documents: 10.") }).optional().describe("Document attachments header."),
39322
+ images: v.object({ images: v.array(v.object({
39323
+ id: v.string().optional(),
39324
+ link: v.string().optional(),
39325
+ mime_type: v.string().optional(),
39326
+ name: v.string().optional()
39327
+ }).describe("Represents `Image` entity with\nnecessary fields.")).optional().describe("Images to be attached to the header of interactive message.\nMax allowed images: 10.") }).optional().describe("Images attachment header."),
39328
+ input_field_state: v.enum([
39329
+ "INPUT_FIELD_STATE_UNSPECIFIED",
39330
+ "INPUT_FIELD_STATE_REGULAR",
39331
+ "INPUT_FIELD_STATE_MINIMIZED",
39332
+ "INPUT_FIELD_STATE_HIDDEN"
39333
+ ]).default("INPUT_FIELD_STATE_UNSPECIFIED").describe("Whether the recipient may still type while this menu is displayed."),
39334
+ list_reply: v.object({
39335
+ main_button_title: v.string().optional().describe("Title of the main button, that on-click show up list."),
39336
+ sections: v.array(v.object({
39337
+ buttons: v.array(v.object({
39338
+ callback: v.object({ data: v.string().optional().describe("Opaque data payload passed back to the server upon interaction.") }).optional().describe("Triggers a backend event (callback) with associated metadata."),
39339
+ id: v.string().optional().describe("Unique idempotent identifier for the button.\nUsed by the frontend to track state and prevent duplicate interactions."),
39340
+ label: v.string().optional().describe("The human-readable label displayed on the button."),
39341
+ metadata: v.looseObject({}).optional().describe("Extensible metadata for UI/UX styling (e.g., \"color\", \"theme\", \"size\").\nUsage: Allows for future-proofing without breaking schema changes."),
39342
+ request: v.object({ action: v.string().optional().describe("The specific action to be performed by the client application.") }).optional().describe("Requests sensitive information from the client (e.g., location or contact)."),
39343
+ url: v.object({ url: v.string().optional().describe("Must be a valid absolute URI (e.g., https://example.com).") }).optional().describe("Directs the user to an external web resource.")
39344
+ }).describe("Defines a single interactive element within the keyboard.\nEach button must have a unique identifier and a specific action type.")).optional().describe("Collection of buttons within this section.\nMinimum of 1 button is required to prevent empty sections."),
39345
+ section: v.string().optional().describe("The header text for this section. Must be concise and descriptive.")
39346
+ }).describe("Represents a row of buttons grouped under a specific logical section header.\nUseful for creating categorized menus or structured interactive interfaces.")).optional().describe("List with sections with buttons.")
39347
+ }).optional().describe("List reply with main list button text and sections with buttons."),
39348
+ markup: v.object({ rows: v.array(v.object({ buttons: v.array(v.object({
39349
+ callback: v.object({ data: v.string().optional().describe("Opaque data payload passed back to the server upon interaction.") }).optional().describe("Triggers a backend event (callback) with associated metadata."),
39350
+ id: v.string().optional().describe("Unique idempotent identifier for the button.\nUsed by the frontend to track state and prevent duplicate interactions."),
39351
+ label: v.string().optional().describe("The human-readable label displayed on the button."),
39352
+ metadata: v.looseObject({}).optional().describe("Extensible metadata for UI/UX styling (e.g., \"color\", \"theme\", \"size\").\nUsage: Allows for future-proofing without breaking schema changes."),
39353
+ request: v.object({ action: v.string().optional().describe("The specific action to be performed by the client application.") }).optional().describe("Requests sensitive information from the client (e.g., location or contact)."),
39354
+ url: v.object({ url: v.string().optional().describe("Must be a valid absolute URI (e.g., https://example.com).") }).optional().describe("Directs the user to an external web resource.")
39355
+ }).describe("Defines a single interactive element within the keyboard.\nEach button must have a unique identifier and a specific action type.")).optional().describe("Horizontal collection of buttons.\nCapped at 10 to ensure UI responsiveness and prevent overflow.") }).describe("A standard horizontal row of interactive buttons without a section header.")).optional().describe("Rows of buttons matrix.") }).optional().describe("Markup matrix with buttons."),
39356
+ placement: v.enum([
39357
+ "MENU_PLACEMENT_UNSPECIFIED",
39358
+ "MENU_PLACEMENT_INLINE",
39359
+ "MENU_PLACEMENT_PERSISTENT"
39360
+ ]).default("MENU_PLACEMENT_UNSPECIFIED").describe("Where the menu is rendered. Channels that only support one placement ignore it."),
39361
+ single_use: v.boolean().optional().describe("Force to block user keyboard.")
39362
+ }).optional().describe("Interactive represents a rich message with UI elements."),
39363
+ location: v.object({
39364
+ address: v.string().optional(),
39365
+ latitude: v.number().optional(),
39366
+ longitude: v.number().optional(),
39367
+ name: v.string().optional()
39368
+ }).optional(),
39369
+ metadata: v.looseObject({}).optional(),
39370
+ reactions: v.array(v.object({
39371
+ count: v.int().optional().describe("Number of members currently holding this reaction."),
39372
+ emoji: v.string().optional().describe("Unicode emoji this reaction aggregates."),
39373
+ last_reacted_at: v.string().optional().describe("Unix time in milliseconds of the most recent reaction with this emoji."),
39374
+ reacted_by_me: v.boolean().optional().describe("True when the requesting caller is one of the reactors."),
39375
+ reactor_ids: v.array(v.string()).optional().describe("Capped sample of reactor contact ids (for UI); not necessarily all of them.")
39376
+ }).describe("MessageReaction is one emoji aggregate on a history message.")).optional(),
39377
+ reply_to: v.object({
39378
+ attachment_address: v.string().optional(),
39379
+ attachment_kind: v.string().optional(),
39380
+ attachment_mime: v.string().optional(),
39381
+ attachment_name: v.string().optional(),
39382
+ body: v.string().optional(),
39383
+ created_at: v.string().optional(),
39384
+ is_deleted: v.boolean().optional(),
39385
+ message_id: v.string().optional(),
39386
+ sender: v.object({
39387
+ contact: v.object({
39388
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
39389
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
39390
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
39391
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
39392
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
39393
+ name: v.string().optional().describe("Display name of the contact."),
39394
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
39395
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
39396
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
39397
+ username: v.string().optional().describe("Technical username or handle."),
39398
+ vias: v.array(v.object({
39399
+ contact_id: v.string().optional(),
39400
+ created_at: v.string().optional(),
39401
+ disable: v.boolean().optional(),
39402
+ disable_reason: v.string().optional(),
39403
+ metadata: v.looseObject({}).optional(),
39404
+ updated_at: v.string().optional(),
39405
+ via: v.string().optional()
39406
+ })).optional()
39407
+ }).optional().describe("Contact represents an external messaging identity."),
39408
+ id: v.string().optional(),
39409
+ permissions: v.object({
39410
+ can_add_members: v.boolean().optional(),
39411
+ can_change_members_permissions: v.boolean().optional(),
39412
+ can_change_thread_info: v.boolean().optional(),
39413
+ can_delete_messages: v.boolean().optional(),
39414
+ can_remove_members: v.boolean().optional(),
39415
+ can_send_messages: v.boolean().optional(),
39416
+ created_at: v.string().optional(),
39417
+ id: v.string().optional(),
39418
+ member_id: v.string().optional(),
39419
+ updated_at: v.string().optional()
39420
+ }).optional(),
39421
+ role: v.enum([
39422
+ "ROLE_UNSPECIFIED",
39423
+ "ROLE_MEMBER",
39424
+ "ROLE_ADMIN",
39425
+ "ROLE_OWNER",
39426
+ "ROLE_SUPERVISOR"
39427
+ ]).default("ROLE_UNSPECIFIED")
39428
+ }).optional().describe("ThreadMember represents a thread participant\nwith optional type-specific settings."),
39429
+ sender_id: v.string().optional(),
39430
+ type: v.string().optional().describe("Kind of the quoted message: text, document, image, system, interactive,\nlocation or contact.")
39431
+ }).optional(),
39432
+ sender: v.object({
39433
+ contact: v.object({
39434
+ app_id: v.string().optional().describe("Identifier of the specific integration app or bot."),
39435
+ created_at: v.string().optional().describe("Record creation timestamp (Unix Epoch in milliseconds)."),
39436
+ is_bot: v.boolean().optional().describe("Represents if usere is real person or automatic script."),
39437
+ iss: v.string().optional().describe("Provider-specific unique identifier (Issuer ID)."),
39438
+ metadata: v.record(v.string(), v.string()).optional().describe("Additional dynamic attributes provided by the messenger."),
39439
+ name: v.string().optional().describe("Display name of the contact."),
39440
+ sub: v.string().optional().describe("Associated internal system subject/identifier."),
39441
+ type: v.string().optional().describe("Channel type (e.g., 'webchat', 'telegram')."),
39442
+ updated_at: v.string().optional().describe("Last record update timestamp (Unix Epoch in milliseconds)."),
39443
+ username: v.string().optional().describe("Technical username or handle."),
39444
+ vias: v.array(v.object({
39445
+ contact_id: v.string().optional(),
39446
+ created_at: v.string().optional(),
39447
+ disable: v.boolean().optional(),
39448
+ disable_reason: v.string().optional(),
39449
+ metadata: v.looseObject({}).optional(),
39450
+ updated_at: v.string().optional(),
39451
+ via: v.string().optional()
39452
+ })).optional()
39453
+ }).optional().describe("Contact represents an external messaging identity."),
39454
+ id: v.string().optional(),
39455
+ permissions: v.object({
39456
+ can_add_members: v.boolean().optional(),
39457
+ can_change_members_permissions: v.boolean().optional(),
39458
+ can_change_thread_info: v.boolean().optional(),
39459
+ can_delete_messages: v.boolean().optional(),
39460
+ can_remove_members: v.boolean().optional(),
39461
+ can_send_messages: v.boolean().optional(),
39462
+ created_at: v.string().optional(),
39463
+ id: v.string().optional(),
39464
+ member_id: v.string().optional(),
39465
+ updated_at: v.string().optional()
39466
+ }).optional(),
39467
+ role: v.enum([
39468
+ "ROLE_UNSPECIFIED",
39469
+ "ROLE_MEMBER",
39470
+ "ROLE_ADMIN",
39471
+ "ROLE_OWNER",
39472
+ "ROLE_SUPERVISOR"
39473
+ ]).default("ROLE_UNSPECIFIED")
39474
+ }).optional().describe("ThreadMember represents a thread participant\nwith optional type-specific settings."),
39475
+ seq: v.string().optional(),
39476
+ system: v.object({
39477
+ message_id: v.string().optional().describe("ID of message for which system messages is binded."),
39478
+ metadata: v.looseObject({}).optional().describe("Represents additional metadata binded into system message."),
39479
+ type: v.string().optional().describe("Represents type of the message.")
39480
+ }).optional().describe("System represents domain structure for system event messages."),
39481
+ type: v.int().optional()
39482
+ }).optional().describe("Newest message for the list preview; set with dialog."),
39483
+ unread_count: v.string().optional()
39484
+ })).optional().describe("Only threads that changed.")
38153
39485
  }), v.object({ gate_id: v.string() }), v.looseObject({}), v.object({ gate_id: v.string() }), v.object({ payload: v.string().optional() }), v.looseObject({}), v.object({ gate_id: v.string() }), v.looseObject({}), v.object({ gate_id: v.string() }), v.object({
38154
39486
  composer_input_disabled: v.boolean().optional(),
38155
39487
  items: v.array(v.object({