samva 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/AGENTS.md +7 -0
  2. package/README.md +14 -7
  3. package/dist/client/sdk.gen.d.ts +322 -143
  4. package/dist/client/sdk.gen.js +1085 -332
  5. package/dist/client/types.gen.d.ts +1342 -479
  6. package/dist/effect/agents.d.ts +119 -0
  7. package/dist/effect/agents.js +29 -0
  8. package/dist/effect/analytics.d.ts +1 -1
  9. package/dist/effect/analytics.js +1 -1
  10. package/dist/effect/api-keys.d.ts +6 -6
  11. package/dist/effect/attachments.d.ts +1 -1
  12. package/dist/effect/brands.d.ts +2 -0
  13. package/dist/effect/campaigns.d.ts +275 -25
  14. package/dist/effect/campaigns.js +7 -1
  15. package/dist/effect/contact-groups.d.ts +9 -9
  16. package/dist/effect/contacts.d.ts +74 -81
  17. package/dist/effect/contacts.js +7 -3
  18. package/dist/effect/conversations.d.ts +14 -6
  19. package/dist/effect/email.d.ts +34 -34
  20. package/dist/effect/errors.d.ts +1 -1
  21. package/dist/effect/errors.js +2 -2
  22. package/dist/effect/extension-installations.d.ts +3 -3
  23. package/dist/effect/extensions.d.ts +6 -6
  24. package/dist/effect/generated/agents.d.ts +6 -28
  25. package/dist/effect/generated/agents.js +270 -0
  26. package/dist/effect/generated/analytics.d.ts +3 -3
  27. package/dist/effect/generated/analytics.js +1 -1
  28. package/dist/effect/generated/api-keys.d.ts +6 -6
  29. package/dist/effect/generated/api-keys.js +2 -2
  30. package/dist/effect/generated/attachments.d.ts +3 -3
  31. package/dist/effect/generated/attachments.js +1 -1
  32. package/dist/effect/generated/brands.d.ts +16 -0
  33. package/dist/effect/generated/campaigns.d.ts +1181 -302
  34. package/dist/effect/generated/campaigns.js +169 -36
  35. package/dist/effect/generated/contact-events.d.ts +3 -3
  36. package/dist/effect/generated/contact-events.js +1 -1
  37. package/dist/effect/generated/contact-groups.d.ts +9 -9
  38. package/dist/effect/generated/contact-groups.js +7 -7
  39. package/dist/effect/generated/contacts.d.ts +2063 -290
  40. package/dist/effect/generated/contacts.js +343 -75
  41. package/dist/effect/generated/conversations.d.ts +14 -6
  42. package/dist/effect/generated/conversations.js +6 -6
  43. package/dist/effect/generated/email.d.ts +55 -70
  44. package/dist/effect/generated/email.js +18 -21
  45. package/dist/effect/generated/extension-installations.d.ts +3 -3
  46. package/dist/effect/generated/extension-installations.js +1 -1
  47. package/dist/effect/generated/extensions.d.ts +6 -6
  48. package/dist/effect/generated/extensions.js +2 -2
  49. package/dist/effect/generated/index.d.ts +5 -3
  50. package/dist/effect/generated/journeys.d.ts +9 -9
  51. package/dist/effect/generated/journeys.js +3 -3
  52. package/dist/effect/generated/mailboxes.d.ts +466 -712
  53. package/dist/effect/generated/mailboxes.js +22 -14
  54. package/dist/effect/generated/messages.d.ts +53 -29
  55. package/dist/effect/generated/messages.js +9 -5
  56. package/dist/effect/generated/namespaces.d.ts +3 -3
  57. package/dist/effect/generated/namespaces.js +1 -1
  58. package/dist/effect/generated/operations.d.ts +3 -3
  59. package/dist/effect/generated/operations.js +1 -1
  60. package/dist/effect/generated/organizations.d.ts +0 -9
  61. package/dist/effect/generated/organizations.js +1 -4
  62. package/dist/effect/generated/scheduled-messages.d.ts +69 -20
  63. package/dist/effect/generated/scheduled-messages.js +22 -3
  64. package/dist/effect/generated/shared.d.ts +431 -177
  65. package/dist/effect/generated/shared.js +216 -108
  66. package/dist/effect/generated/subscriptions.d.ts +4 -7
  67. package/dist/effect/generated/subscriptions.js +3 -4
  68. package/dist/effect/generated/templates.d.ts +71 -407
  69. package/dist/effect/generated/templates.js +23 -23
  70. package/dist/effect/generated/topic-forms.d.ts +656 -0
  71. package/dist/effect/generated/topic-forms.js +145 -0
  72. package/dist/effect/generated/{unsubscribe-groups.d.ts → topics.d.ts} +640 -435
  73. package/dist/effect/generated/topics.js +267 -0
  74. package/dist/effect/generated/webhooks.d.ts +6 -6
  75. package/dist/effect/generated/webhooks.js +2 -2
  76. package/dist/effect/generated-metadata.d.ts +78 -24
  77. package/dist/effect/generated-metadata.js +61 -27
  78. package/dist/effect/index.d.ts +3 -1
  79. package/dist/effect/index.js +5 -3
  80. package/dist/effect/internal/operation.js +4 -3
  81. package/dist/effect/internal/send.d.ts +4 -4
  82. package/dist/effect/journeys.d.ts +119 -119
  83. package/dist/effect/mailboxes.d.ts +137 -121
  84. package/dist/effect/messages.d.ts +19 -11
  85. package/dist/effect/namespaces.d.ts +3 -3
  86. package/dist/effect/operations.d.ts +3 -3
  87. package/dist/effect/scheduled-messages.d.ts +6 -6
  88. package/dist/effect/subscriptions.d.ts +1 -2
  89. package/dist/effect/templates.d.ts +13 -13
  90. package/dist/effect/topic-forms.d.ts +30 -0
  91. package/dist/effect/topic-forms.js +21 -0
  92. package/dist/effect/topics.d.ts +94 -0
  93. package/dist/effect/topics.js +29 -0
  94. package/dist/effect/webhooks.d.ts +6 -6
  95. package/dist/index.js +2 -2
  96. package/dist/package.js +1 -1
  97. package/dist/promises/errors.gen.d.ts +65 -8
  98. package/dist/promises/errors.gen.js +139 -7
  99. package/dist/promises/index.d.ts +7 -3
  100. package/dist/promises/index.js +9 -5
  101. package/dist/promises/types.gen.d.ts +1 -1
  102. package/dist/service-map.d.ts +117 -23
  103. package/dist/service-map.js +71 -10
  104. package/package.json +17 -9
  105. package/dist/effect/generated/unsubscribe-groups.js +0 -284
  106. package/dist/effect/unsubscribe-groups.d.ts +0 -74
  107. package/dist/effect/unsubscribe-groups.js +0 -29
@@ -0,0 +1,267 @@
1
+ import { ApiKeySecurityMiddleware, BillingProviderError, ConflictError, ContactId, Cursor, EmailSenderId, ForbiddenError, GatewayTimeoutError, InternalError, MailboxId, NamespaceId, PaymentRequiredError, ResourceNotFoundError, TemplateId, TopicContactRef, TopicId, UnauthorizedError, ValidationError } from "./shared.js";
2
+ import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
3
+ import * as Schema from "effect/Schema";
4
+ //#region src/effect/generated/topics.ts
5
+ const TopicSubscriptionCounts = /* @__PURE__ */ Schema.Struct({ email: Schema.Struct({
6
+ subscribed: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" })).check(Schema.isLessThanOrEqualTo(9007199254740991).annotate({ expected: "a value less than or equal to 9007199254740991" })),
7
+ unsubscribed: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" })).check(Schema.isLessThanOrEqualTo(9007199254740991).annotate({ expected: "a value less than or equal to 9007199254740991" }))
8
+ }) }).annotate({ identifier: "TopicSubscriptionCounts" });
9
+ const TopicSetSubscriptionsResult = /* @__PURE__ */ Schema.Struct({ updated: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" })).check(Schema.isLessThanOrEqualTo(9007199254740991).annotate({ expected: "a value less than or equal to 9007199254740991" })) }).annotate({ identifier: "TopicSetSubscriptionsResult" });
10
+ const TopicSubscription = /* @__PURE__ */ Schema.Struct({
11
+ contactId: ContactId,
12
+ channel: Schema.Literal("email"),
13
+ status: Schema.Union([Schema.Literal("subscribed"), Schema.Literal("unsubscribed")]),
14
+ source: Schema.String,
15
+ subscribedAt: Schema.Union([Schema.String, Schema.Null]),
16
+ unsubscribedAt: Schema.Union([Schema.String, Schema.Null]),
17
+ createdAt: Schema.String,
18
+ updatedAt: Schema.String
19
+ }).annotate({ identifier: "TopicSubscription" });
20
+ const TopicSubscriptionCheck = /* @__PURE__ */ Schema.Struct({
21
+ contactId: Schema.Union([ContactId, Schema.Null]),
22
+ channel: Schema.Literal("email"),
23
+ topics: Schema.Array(Schema.Struct({
24
+ topicId: TopicId,
25
+ topicName: Schema.String,
26
+ status: Schema.Union([Schema.Literal("subscribed"), Schema.Literal("unsubscribed")])
27
+ }))
28
+ }).annotate({ identifier: "TopicSubscriptionCheck" });
29
+ const Topic = /* @__PURE__ */ Schema.Struct({
30
+ id: TopicId,
31
+ namespaceId: Schema.Union([NamespaceId, Schema.Null]),
32
+ name: Schema.String,
33
+ description: Schema.Union([Schema.String, Schema.Null]),
34
+ default: Schema.Union([Schema.Literal("opt_out"), Schema.Literal("opt_in")]),
35
+ isDefault: Schema.Boolean,
36
+ defaultSenderId: Schema.Union([EmailSenderId, Schema.Null]),
37
+ replyMailboxId: Schema.Union([MailboxId, Schema.Null]),
38
+ templateId: Schema.Union([TemplateId, Schema.Null]),
39
+ subscriptions: TopicSubscriptionCounts,
40
+ createdAt: Schema.String,
41
+ updatedAt: Schema.String
42
+ }).annotate({ identifier: "Topic" });
43
+ const TopicSubscriptionPage = /* @__PURE__ */ Schema.Struct({
44
+ items: Schema.Array(TopicSubscription),
45
+ nextCursor: Schema.Union([Schema.String, Schema.Null])
46
+ }).annotate({ identifier: "TopicSubscriptionPage" });
47
+ const TopicList = /* @__PURE__ */ Schema.Struct({ items: Schema.Array(Topic).check(Schema.isMaxLength(200).annotate({ expected: "a value with a length of at most 200" })) }).annotate({ identifier: "TopicList" });
48
+ const TopicsListQuery = /* @__PURE__ */ Schema.Struct({ namespaceId: Schema.optionalKey(Schema.Union([NamespaceId, Schema.Null])) });
49
+ const TopicsList200 = TopicList;
50
+ const TopicsList401 = UnauthorizedError;
51
+ const TopicsList403 = ForbiddenError;
52
+ const TopicsList422 = ValidationError;
53
+ const TopicsList500 = InternalError;
54
+ const TopicsList504 = GatewayTimeoutError;
55
+ const TopicsCreateRequestJson = /* @__PURE__ */ Schema.Struct({
56
+ name: Schema.String.check(Schema.isMinLength(1).annotate({ expected: "a value with a length of at least 1" })),
57
+ description: Schema.optionalKey(Schema.Union([Schema.Union([Schema.String, Schema.Null]), Schema.Null])),
58
+ namespaceId: Schema.optionalKey(Schema.Union([Schema.Union([NamespaceId, Schema.Null]), Schema.Null])),
59
+ default: Schema.optionalKey(Schema.Union([Schema.Union([Schema.Literal("opt_out"), Schema.Literal("opt_in")]), Schema.Null])),
60
+ defaultSenderId: Schema.optionalKey(Schema.Union([Schema.Union([EmailSenderId, Schema.Null]), Schema.Null])),
61
+ replyMailboxId: Schema.optionalKey(Schema.Union([Schema.Union([MailboxId, Schema.Null]), Schema.Null])),
62
+ templateId: Schema.optionalKey(Schema.Union([Schema.Union([TemplateId, Schema.Null]), Schema.Null]))
63
+ });
64
+ const TopicsCreate201 = Topic;
65
+ const TopicsCreate401 = UnauthorizedError;
66
+ const TopicsCreate403 = ForbiddenError;
67
+ const TopicsCreate404 = ResourceNotFoundError;
68
+ const TopicsCreate409 = ConflictError;
69
+ const TopicsCreate422 = ValidationError;
70
+ const TopicsCreate500 = InternalError;
71
+ const TopicsCreate504 = GatewayTimeoutError;
72
+ const TopicsGetPathParams = /* @__PURE__ */ Schema.Struct({ id: TopicId });
73
+ const TopicsGet200 = Topic;
74
+ const TopicsGet401 = UnauthorizedError;
75
+ const TopicsGet403 = ForbiddenError;
76
+ const TopicsGet404 = ResourceNotFoundError;
77
+ const TopicsGet422 = ValidationError;
78
+ const TopicsGet500 = InternalError;
79
+ const TopicsGet504 = GatewayTimeoutError;
80
+ const TopicsRemovePathParams = /* @__PURE__ */ Schema.Struct({ id: TopicId });
81
+ const TopicsRemove200 = /* @__PURE__ */ Schema.Struct({ success: Schema.Boolean });
82
+ const TopicsRemove401 = UnauthorizedError;
83
+ const TopicsRemove403 = ForbiddenError;
84
+ const TopicsRemove404 = ResourceNotFoundError;
85
+ const TopicsRemove409 = ConflictError;
86
+ const TopicsRemove422 = ValidationError;
87
+ const TopicsRemove500 = InternalError;
88
+ const TopicsRemove504 = GatewayTimeoutError;
89
+ const TopicsUpdatePathParams = /* @__PURE__ */ Schema.Struct({ id: TopicId });
90
+ const TopicsUpdateRequestJson = /* @__PURE__ */ Schema.Struct({
91
+ name: Schema.optionalKey(Schema.Union([Schema.String.check(Schema.isMinLength(1).annotate({ expected: "a value with a length of at least 1" })), Schema.Null])),
92
+ description: Schema.optionalKey(Schema.Union([Schema.Union([Schema.String, Schema.Null]), Schema.Null])),
93
+ default: Schema.optionalKey(Schema.Union([Schema.Union([Schema.Literal("opt_out"), Schema.Literal("opt_in")]), Schema.Null])),
94
+ defaultSenderId: Schema.optionalKey(Schema.Union([Schema.Union([EmailSenderId, Schema.Null]), Schema.Null])),
95
+ replyMailboxId: Schema.optionalKey(Schema.Union([Schema.Union([MailboxId, Schema.Null]), Schema.Null])),
96
+ templateId: Schema.optionalKey(Schema.Union([Schema.Union([TemplateId, Schema.Null]), Schema.Null]))
97
+ });
98
+ const TopicsUpdate200 = Topic;
99
+ const TopicsUpdate401 = UnauthorizedError;
100
+ const TopicsUpdate403 = ForbiddenError;
101
+ const TopicsUpdate404 = ResourceNotFoundError;
102
+ const TopicsUpdate422 = ValidationError;
103
+ const TopicsUpdate500 = InternalError;
104
+ const TopicsUpdate504 = GatewayTimeoutError;
105
+ const TopicsSetDefaultPathParams = /* @__PURE__ */ Schema.Struct({ id: TopicId });
106
+ const TopicsSetDefault200 = Topic;
107
+ const TopicsSetDefault401 = UnauthorizedError;
108
+ const TopicsSetDefault403 = ForbiddenError;
109
+ const TopicsSetDefault404 = ResourceNotFoundError;
110
+ const TopicsSetDefault422 = ValidationError;
111
+ const TopicsSetDefault500 = InternalError;
112
+ const TopicsSetDefault504 = GatewayTimeoutError;
113
+ const TopicsListSubscriptionsPathParams = /* @__PURE__ */ Schema.Struct({ id: TopicId });
114
+ const TopicsListSubscriptionsQuery = /* @__PURE__ */ Schema.Struct({
115
+ limit: Schema.optionalKey(Schema.Union([Schema.Finite.annotate({ description: "Items per page, at most 100." }).check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isLessThanOrEqualTo(100).annotate({ expected: "a value less than or equal to 100" })).check(Schema.isGreaterThan(0).annotate({ expected: "a value greater than 0" })), Schema.Null])),
116
+ cursor: Schema.optionalKey(Schema.Union([Cursor, Schema.Null])),
117
+ channel: Schema.optionalKey(Schema.Union([Schema.Literal("email"), Schema.Null])),
118
+ status: Schema.optionalKey(Schema.Union([Schema.Union([Schema.Literal("subscribed"), Schema.Literal("unsubscribed")]), Schema.Null]))
119
+ });
120
+ const TopicsListSubscriptions200 = TopicSubscriptionPage;
121
+ const TopicsListSubscriptions401 = UnauthorizedError;
122
+ const TopicsListSubscriptions403 = ForbiddenError;
123
+ const TopicsListSubscriptions404 = ResourceNotFoundError;
124
+ const TopicsListSubscriptions422 = ValidationError;
125
+ const TopicsListSubscriptions500 = InternalError;
126
+ const TopicsListSubscriptions504 = GatewayTimeoutError;
127
+ const TopicsSetSubscriptionsPathParams = /* @__PURE__ */ Schema.Struct({ id: TopicId });
128
+ const TopicsSetSubscriptionsRequestJson = /* @__PURE__ */ Schema.Struct({
129
+ contacts: Schema.Array(TopicContactRef).check(Schema.isMinLength(1).annotate({ expected: "a value with a length of at least 1" })).check(Schema.isMaxLength(1e3).annotate({ expected: "a value with a length of at most 1000" })),
130
+ channel: Schema.Literal("email"),
131
+ status: Schema.Union([Schema.Literal("subscribed"), Schema.Literal("unsubscribed")]),
132
+ source: Schema.optionalKey(Schema.Union([Schema.String.check(Schema.isMinLength(1).annotate({ expected: "a value with a length of at least 1" })).check(Schema.isMaxCodePoints(512).annotate({ expected: "a string with at most 512 code points" })).check(Schema.isMaxLength(512).annotate({ expected: "a value with a length of at most 512" })), Schema.Null]))
133
+ });
134
+ const TopicsSetSubscriptions200 = TopicSetSubscriptionsResult;
135
+ const TopicsSetSubscriptions401 = UnauthorizedError;
136
+ const TopicsSetSubscriptions402 = PaymentRequiredError;
137
+ const TopicsSetSubscriptions403 = ForbiddenError;
138
+ const TopicsSetSubscriptions404 = ResourceNotFoundError;
139
+ const TopicsSetSubscriptions422 = ValidationError;
140
+ const TopicsSetSubscriptions500 = InternalError;
141
+ const TopicsSetSubscriptions502 = BillingProviderError;
142
+ const TopicsSetSubscriptions504 = GatewayTimeoutError;
143
+ const TopicsCheckSubscriptionQuery = /* @__PURE__ */ Schema.Struct({
144
+ contactId: Schema.optionalKey(Schema.Union([ContactId, Schema.Null])),
145
+ email: Schema.optionalKey(Schema.Union([Schema.String, Schema.Null])),
146
+ phone: Schema.optionalKey(Schema.Union([Schema.String, Schema.Null])),
147
+ namespaceId: Schema.optionalKey(Schema.Union([NamespaceId, Schema.Null])),
148
+ channel: Schema.Literal("email"),
149
+ topicIds: Schema.optionalKey(Schema.Union([Schema.String, Schema.Null]))
150
+ });
151
+ const TopicsCheckSubscription200 = TopicSubscriptionCheck;
152
+ const TopicsCheckSubscription401 = UnauthorizedError;
153
+ const TopicsCheckSubscription403 = ForbiddenError;
154
+ const TopicsCheckSubscription404 = ResourceNotFoundError;
155
+ const TopicsCheckSubscription422 = ValidationError;
156
+ const TopicsCheckSubscription500 = InternalError;
157
+ const TopicsCheckSubscription504 = GatewayTimeoutError;
158
+ var TopicsGroup = class extends HttpApiGroup.make("Topics").add(HttpApiEndpoint.get("topicsList", "/v1/topics", {
159
+ query: TopicsListQuery,
160
+ success: TopicsList200,
161
+ error: [
162
+ TopicsList401.pipe(HttpApiSchema.status(401)),
163
+ TopicsList403.pipe(HttpApiSchema.status(403)),
164
+ TopicsList422.pipe(HttpApiSchema.status(422)),
165
+ TopicsList500,
166
+ TopicsList504.pipe(HttpApiSchema.status(504))
167
+ ]
168
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.list").annotate(OpenApi.Summary, "List topics").annotate(OpenApi.Description, "Lists visible topics, default first then by name. The organization holds at most 200 topics, so the list is bounded and unpaged."), HttpApiEndpoint.post("topicsCreate", "/v1/topics", {
169
+ payload: TopicsCreateRequestJson,
170
+ success: TopicsCreate201.pipe(HttpApiSchema.status(201)),
171
+ error: [
172
+ TopicsCreate401.pipe(HttpApiSchema.status(401)),
173
+ TopicsCreate403.pipe(HttpApiSchema.status(403)),
174
+ TopicsCreate404.pipe(HttpApiSchema.status(404)),
175
+ TopicsCreate409.pipe(HttpApiSchema.status(409)),
176
+ TopicsCreate422.pipe(HttpApiSchema.status(422)),
177
+ TopicsCreate500,
178
+ TopicsCreate504.pipe(HttpApiSchema.status(504))
179
+ ]
180
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.create").annotate(OpenApi.Summary, "Create a topic").annotate(OpenApi.Description, "Creates a topic in the caller's or requested namespace. The subscription default is opt_out when omitted. Publishing defaults must be compatible with that namespace. An organization holds at most 200 topics."), HttpApiEndpoint.get("topicsGet", "/v1/topics/:id", {
181
+ params: TopicsGetPathParams,
182
+ success: TopicsGet200,
183
+ error: [
184
+ TopicsGet401.pipe(HttpApiSchema.status(401)),
185
+ TopicsGet403.pipe(HttpApiSchema.status(403)),
186
+ TopicsGet404.pipe(HttpApiSchema.status(404)),
187
+ TopicsGet422.pipe(HttpApiSchema.status(422)),
188
+ TopicsGet500,
189
+ TopicsGet504.pipe(HttpApiSchema.status(504))
190
+ ]
191
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.get").annotate(OpenApi.Summary, "Get a topic").annotate(OpenApi.Description, "Returns a visible topic, its publishing defaults, and explicit subscription counts by channel and status. Individual subscriptions are read through listSubscriptions."), HttpApiEndpoint.delete("topicsRemove", "/v1/topics/:id", {
192
+ params: TopicsRemovePathParams,
193
+ success: TopicsRemove200,
194
+ error: [
195
+ TopicsRemove401.pipe(HttpApiSchema.status(401)),
196
+ TopicsRemove403.pipe(HttpApiSchema.status(403)),
197
+ TopicsRemove404.pipe(HttpApiSchema.status(404)),
198
+ TopicsRemove409.pipe(HttpApiSchema.status(409)),
199
+ TopicsRemove422.pipe(HttpApiSchema.status(422)),
200
+ TopicsRemove500,
201
+ TopicsRemove504.pipe(HttpApiSchema.status(504))
202
+ ]
203
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.remove").annotate(OpenApi.Summary, "Delete a topic").annotate(OpenApi.Description, "Refuses the default topic and any topic a scheduled or running campaign uses."), HttpApiEndpoint.patch("topicsUpdate", "/v1/topics/:id", {
204
+ params: TopicsUpdatePathParams,
205
+ payload: TopicsUpdateRequestJson,
206
+ success: TopicsUpdate200,
207
+ error: [
208
+ TopicsUpdate401.pipe(HttpApiSchema.status(401)),
209
+ TopicsUpdate403.pipe(HttpApiSchema.status(403)),
210
+ TopicsUpdate404.pipe(HttpApiSchema.status(404)),
211
+ TopicsUpdate422.pipe(HttpApiSchema.status(422)),
212
+ TopicsUpdate500,
213
+ TopicsUpdate504.pipe(HttpApiSchema.status(504))
214
+ ]
215
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.update").annotate(OpenApi.Summary, "Update a topic").annotate(OpenApi.Description, "Updates named fields. Changing the default does not change any explicit subscription status. Null clears a publishing default."), HttpApiEndpoint.post("topicsSetDefault", "/v1/topics/:id/default", {
216
+ params: TopicsSetDefaultPathParams,
217
+ success: TopicsSetDefault200,
218
+ error: [
219
+ TopicsSetDefault401.pipe(HttpApiSchema.status(401)),
220
+ TopicsSetDefault403.pipe(HttpApiSchema.status(403)),
221
+ TopicsSetDefault404.pipe(HttpApiSchema.status(404)),
222
+ TopicsSetDefault422.pipe(HttpApiSchema.status(422)),
223
+ TopicsSetDefault500,
224
+ TopicsSetDefault504.pipe(HttpApiSchema.status(504))
225
+ ]
226
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.setDefault").annotate(OpenApi.Summary, "Make a topic the default").annotate(OpenApi.Description, "Makes this the default category of messages in its namespace. Existing explicit subscription statuses remain unchanged."), HttpApiEndpoint.get("topicsListSubscriptions", "/v1/topics/:id/subscriptions", {
227
+ params: TopicsListSubscriptionsPathParams,
228
+ query: TopicsListSubscriptionsQuery,
229
+ success: TopicsListSubscriptions200,
230
+ error: [
231
+ TopicsListSubscriptions401.pipe(HttpApiSchema.status(401)),
232
+ TopicsListSubscriptions403.pipe(HttpApiSchema.status(403)),
233
+ TopicsListSubscriptions404.pipe(HttpApiSchema.status(404)),
234
+ TopicsListSubscriptions422.pipe(HttpApiSchema.status(422)),
235
+ TopicsListSubscriptions500,
236
+ TopicsListSubscriptions504.pipe(HttpApiSchema.status(504))
237
+ ]
238
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.listSubscriptions").annotate(OpenApi.Summary, "List topic subscriptions").annotate(OpenApi.Description, "Returns explicit per-channel subscriptions, newest first, optionally filtered by channel and status. Pass nextCursor as cursor to continue; nextCursor is null on the last page. Contacts without an explicit subscription are absent from this list."), HttpApiEndpoint.post("topicsSetSubscriptions", "/v1/topics/:id/subscriptions", {
239
+ params: TopicsSetSubscriptionsPathParams,
240
+ payload: TopicsSetSubscriptionsRequestJson,
241
+ success: TopicsSetSubscriptions200,
242
+ error: [
243
+ TopicsSetSubscriptions401.pipe(HttpApiSchema.status(401)),
244
+ TopicsSetSubscriptions402.pipe(HttpApiSchema.status(402)),
245
+ TopicsSetSubscriptions403.pipe(HttpApiSchema.status(403)),
246
+ TopicsSetSubscriptions404.pipe(HttpApiSchema.status(404)),
247
+ TopicsSetSubscriptions422.pipe(HttpApiSchema.status(422)),
248
+ TopicsSetSubscriptions500,
249
+ TopicsSetSubscriptions502.pipe(HttpApiSchema.status(502)),
250
+ TopicsSetSubscriptions504.pipe(HttpApiSchema.status(504))
251
+ ]
252
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.setSubscriptions").annotate(OpenApi.Summary, "Set topic subscriptions").annotate(OpenApi.Description, "Upserts explicit subscribed or unsubscribed status for one channel. Each contact is named by ID, email, or phone. New addresses create contacts in the topic's namespace. Repeating the same status is idempotent."), HttpApiEndpoint.get("topicsCheckSubscription", "/v1/topics/check", {
253
+ query: TopicsCheckSubscriptionQuery,
254
+ success: TopicsCheckSubscription200,
255
+ error: [
256
+ TopicsCheckSubscription401.pipe(HttpApiSchema.status(401)),
257
+ TopicsCheckSubscription403.pipe(HttpApiSchema.status(403)),
258
+ TopicsCheckSubscription404.pipe(HttpApiSchema.status(404)),
259
+ TopicsCheckSubscription422.pipe(HttpApiSchema.status(422)),
260
+ TopicsCheckSubscription500,
261
+ TopicsCheckSubscription504.pipe(HttpApiSchema.status(504))
262
+ ]
263
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "topics.checkSubscription").annotate(OpenApi.Summary, "Check topic subscriptions").annotate(OpenApi.Description, "Name exactly one contactId, email, or phone and a channel. Returns effective status, using the topic default when no explicit subscription exists. topicIds is an optional comma-separated list. Addresses resolve within the requested namespace; an unknown address returns contactId null and the effective defaults.")).annotate(OpenApi.Description, "Topics and per-channel contact subscriptions") {};
264
+ //#endregion
265
+ export { Topic, TopicList, TopicSetSubscriptionsResult, TopicSubscription, TopicSubscriptionCheck, TopicSubscriptionCounts, TopicSubscriptionPage, TopicsCheckSubscription200, TopicsCheckSubscription401, TopicsCheckSubscription403, TopicsCheckSubscription404, TopicsCheckSubscription422, TopicsCheckSubscription500, TopicsCheckSubscription504, TopicsCheckSubscriptionQuery, TopicsCreate201, TopicsCreate401, TopicsCreate403, TopicsCreate404, TopicsCreate409, TopicsCreate422, TopicsCreate500, TopicsCreate504, TopicsCreateRequestJson, TopicsGet200, TopicsGet401, TopicsGet403, TopicsGet404, TopicsGet422, TopicsGet500, TopicsGet504, TopicsGetPathParams, TopicsGroup, TopicsList200, TopicsList401, TopicsList403, TopicsList422, TopicsList500, TopicsList504, TopicsListQuery, TopicsListSubscriptions200, TopicsListSubscriptions401, TopicsListSubscriptions403, TopicsListSubscriptions404, TopicsListSubscriptions422, TopicsListSubscriptions500, TopicsListSubscriptions504, TopicsListSubscriptionsPathParams, TopicsListSubscriptionsQuery, TopicsRemove200, TopicsRemove401, TopicsRemove403, TopicsRemove404, TopicsRemove409, TopicsRemove422, TopicsRemove500, TopicsRemove504, TopicsRemovePathParams, TopicsSetDefault200, TopicsSetDefault401, TopicsSetDefault403, TopicsSetDefault404, TopicsSetDefault422, TopicsSetDefault500, TopicsSetDefault504, TopicsSetDefaultPathParams, TopicsSetSubscriptions200, TopicsSetSubscriptions401, TopicsSetSubscriptions402, TopicsSetSubscriptions403, TopicsSetSubscriptions404, TopicsSetSubscriptions422, TopicsSetSubscriptions500, TopicsSetSubscriptions502, TopicsSetSubscriptions504, TopicsSetSubscriptionsPathParams, TopicsSetSubscriptionsRequestJson, TopicsUpdate200, TopicsUpdate401, TopicsUpdate403, TopicsUpdate404, TopicsUpdate422, TopicsUpdate500, TopicsUpdate504, TopicsUpdatePathParams, TopicsUpdateRequestJson };
266
+
267
+ //# sourceMappingURL=topics.js.map
@@ -228,13 +228,13 @@ export declare const WebhookEndpointPage: Schema.Struct<{
228
228
  readonly nextCursor: Schema.Union<readonly [Schema.String, Schema.Null]>;
229
229
  }>;
230
230
  export type WebhooksListQuery = {
231
- readonly limit?: string | null;
231
+ readonly limit?: number | null;
232
232
  readonly cursor?: Cursor | null;
233
233
  readonly search?: string | null;
234
234
  readonly status?: "active" | "disabled" | null;
235
235
  };
236
236
  export declare const WebhooksListQuery: Schema.Struct<{
237
- readonly limit: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
237
+ readonly limit: Schema.optionalKey<Schema.Union<readonly [Schema.Finite, Schema.Null]>>;
238
238
  readonly cursor: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
239
239
  readonly search: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
240
240
  readonly status: Schema.optionalKey<Schema.Union<readonly [Schema.Union<readonly [Schema.Literal<"active">, Schema.Literal<"disabled">]>, Schema.Null]>>;
@@ -494,11 +494,11 @@ export declare const WebhooksGetLogsPathParams: Schema.Struct<{
494
494
  readonly id: Schema.brand<Schema.String, "WebhookEndpointId">;
495
495
  }>;
496
496
  export type WebhooksGetLogsQuery = {
497
- readonly limit?: string | null;
497
+ readonly limit?: number | null;
498
498
  readonly cursor?: Cursor | null;
499
499
  };
500
500
  export declare const WebhooksGetLogsQuery: Schema.Struct<{
501
- readonly limit: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
501
+ readonly limit: Schema.optionalKey<Schema.Union<readonly [Schema.Finite, Schema.Null]>>;
502
502
  readonly cursor: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
503
503
  }>;
504
504
  export type WebhooksGetLogs200 = WebhookDeliveryPage;
@@ -930,7 +930,7 @@ declare const WebhooksGroup_base: HttpApiGroup.HttpApiGroup<"Webhooks", HttpApiE
930
930
  }>, never, never> | typeof InternalError>, ApiKeySecurityMiddleware, never> | HttpApiEndpoint.HttpApiEndpoint<"webhooksGetLogs", "GET", "/v1/webhooks/:id/logs", Schema.toCodecStringTree<Schema.Struct<{
931
931
  readonly id: Schema.brand<Schema.String, "WebhookEndpointId">;
932
932
  }>>, Schema.toCodecStringTree<Schema.Struct<{
933
- readonly limit: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
933
+ readonly limit: Schema.optionalKey<Schema.Union<readonly [Schema.Finite, Schema.Null]>>;
934
934
  readonly cursor: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
935
935
  }>>, never, never, Schema.toCodecJson<Schema.Struct<{
936
936
  readonly items: Schema.$Array<Schema.Struct<{
@@ -1226,7 +1226,7 @@ declare const WebhooksGroup_base: HttpApiGroup.HttpApiGroup<"Webhooks", HttpApiE
1226
1226
  readonly message: Schema.String;
1227
1227
  readonly fields: Schema.optionalKey<Schema.Union<readonly [Schema.$Record<Schema.String, Schema.$Array<Schema.String>>, Schema.Null]>>;
1228
1228
  }>, never, never> | typeof InternalError>, ApiKeySecurityMiddleware, never> | HttpApiEndpoint.HttpApiEndpoint<"webhooksList", "GET", "/v1/webhooks", never, Schema.toCodecStringTree<Schema.Struct<{
1229
- readonly limit: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
1229
+ readonly limit: Schema.optionalKey<Schema.Union<readonly [Schema.Finite, Schema.Null]>>;
1230
1230
  readonly cursor: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
1231
1231
  readonly search: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.Null]>>;
1232
1232
  readonly status: Schema.optionalKey<Schema.Union<readonly [Schema.Union<readonly [Schema.Literal<"active">, Schema.Literal<"disabled">]>, Schema.Null]>>;
@@ -199,7 +199,7 @@ const WebhookEndpointPage = /* @__PURE__ */ Schema.Struct({
199
199
  nextCursor: Schema.Union([Schema.String, Schema.Null])
200
200
  }).annotate({ identifier: "WebhookEndpointPage" });
201
201
  const WebhooksListQuery = /* @__PURE__ */ Schema.Struct({
202
- limit: Schema.optionalKey(Schema.Union([Schema.String, Schema.Null])),
202
+ limit: Schema.optionalKey(Schema.Union([Schema.Finite.annotate({ description: "Items per page, at most 100." }).check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isLessThanOrEqualTo(100).annotate({ expected: "a value less than or equal to 100" })).check(Schema.isGreaterThan(0).annotate({ expected: "a value greater than 0" })), Schema.Null])),
203
203
  cursor: Schema.optionalKey(Schema.Union([Cursor, Schema.Null])),
204
204
  search: Schema.optionalKey(Schema.Union([Schema.String, Schema.Null])),
205
205
  status: Schema.optionalKey(Schema.Union([Schema.Union([Schema.Literal("active"), Schema.Literal("disabled")]), Schema.Null]))
@@ -368,7 +368,7 @@ const WebhooksRetryDelivery500 = InternalError;
368
368
  const WebhooksRetryDelivery504 = GatewayTimeoutError;
369
369
  const WebhooksGetLogsPathParams = /* @__PURE__ */ Schema.Struct({ id: WebhookEndpointId });
370
370
  const WebhooksGetLogsQuery = /* @__PURE__ */ Schema.Struct({
371
- limit: Schema.optionalKey(Schema.Union([Schema.String, Schema.Null])),
371
+ limit: Schema.optionalKey(Schema.Union([Schema.Finite.annotate({ description: "Items per page, at most 100." }).check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isLessThanOrEqualTo(100).annotate({ expected: "a value less than or equal to 100" })).check(Schema.isGreaterThan(0).annotate({ expected: "a value greater than 0" })), Schema.Null])),
372
372
  cursor: Schema.optionalKey(Schema.Union([Cursor, Schema.Null]))
373
373
  });
374
374
  const WebhooksGetLogs200 = WebhookDeliveryPage;
@@ -79,6 +79,10 @@ export declare const SamvaErrorMetadata: {
79
79
  readonly categories: readonly ["transient"];
80
80
  readonly retryable: true;
81
81
  };
82
+ readonly TemplateSourceError: {
83
+ readonly categories: readonly ["validation"];
84
+ readonly retryable: false;
85
+ };
82
86
  readonly UnauthorizedError: {
83
87
  readonly categories: readonly ["auth"];
84
88
  readonly retryable: false;
@@ -309,11 +313,26 @@ export declare const SamvaOperations: {
309
313
  readonly method: "GET";
310
314
  readonly paginated: true;
311
315
  };
316
+ readonly campaignsGetRunReport: {
317
+ readonly group: "Campaigns";
318
+ readonly method: "GET";
319
+ readonly paginated: false;
320
+ };
312
321
  readonly campaignsResumeRun: {
313
322
  readonly group: "Campaigns";
314
323
  readonly method: "POST";
315
324
  readonly paginated: false;
316
325
  };
326
+ readonly campaignsPreview: {
327
+ readonly group: "Campaigns";
328
+ readonly method: "POST";
329
+ readonly paginated: false;
330
+ };
331
+ readonly campaignsSendTest: {
332
+ readonly group: "Campaigns";
333
+ readonly method: "POST";
334
+ readonly paginated: false;
335
+ };
317
336
  readonly contactGroupsList: {
318
337
  readonly group: "Contact Groups";
319
338
  readonly method: "GET";
@@ -439,11 +458,6 @@ export declare const SamvaOperations: {
439
458
  readonly method: "POST";
440
459
  readonly paginated: false;
441
460
  };
442
- readonly contactsBulkImport: {
443
- readonly group: "Contacts";
444
- readonly method: "POST";
445
- readonly paginated: false;
446
- };
447
461
  readonly contactsBulkUpdateStatus: {
448
462
  readonly group: "Contacts";
449
463
  readonly method: "POST";
@@ -469,6 +483,21 @@ export declare const SamvaOperations: {
469
483
  readonly method: "POST";
470
484
  readonly paginated: false;
471
485
  };
486
+ readonly contactsStartImport: {
487
+ readonly group: "Contacts";
488
+ readonly method: "POST";
489
+ readonly paginated: false;
490
+ };
491
+ readonly contactsGetImportJob: {
492
+ readonly group: "Contacts";
493
+ readonly method: "GET";
494
+ readonly paginated: false;
495
+ };
496
+ readonly contactsPlanImport: {
497
+ readonly group: "Contacts";
498
+ readonly method: "POST";
499
+ readonly paginated: false;
500
+ };
472
501
  readonly conversationsList: {
473
502
  readonly group: "Conversations";
474
503
  readonly method: "GET";
@@ -1689,48 +1718,73 @@ export declare const SamvaOperations: {
1689
1718
  readonly method: "POST";
1690
1719
  readonly paginated: false;
1691
1720
  };
1692
- readonly unsubscribeList: {
1693
- readonly group: "Unsubscribe Groups";
1721
+ readonly topicsList: {
1722
+ readonly group: "Topics";
1694
1723
  readonly method: "GET";
1695
1724
  readonly paginated: false;
1696
1725
  };
1697
- readonly unsubscribeCreate: {
1698
- readonly group: "Unsubscribe Groups";
1726
+ readonly topicsCreate: {
1727
+ readonly group: "Topics";
1699
1728
  readonly method: "POST";
1700
1729
  readonly paginated: false;
1701
1730
  };
1702
- readonly unsubscribeRemove: {
1703
- readonly group: "Unsubscribe Groups";
1731
+ readonly topicsGet: {
1732
+ readonly group: "Topics";
1733
+ readonly method: "GET";
1734
+ readonly paginated: false;
1735
+ };
1736
+ readonly topicsRemove: {
1737
+ readonly group: "Topics";
1704
1738
  readonly method: "DELETE";
1705
1739
  readonly paginated: false;
1706
1740
  };
1707
- readonly unsubscribeUpdate: {
1708
- readonly group: "Unsubscribe Groups";
1741
+ readonly topicsUpdate: {
1742
+ readonly group: "Topics";
1709
1743
  readonly method: "PATCH";
1710
1744
  readonly paginated: false;
1711
1745
  };
1712
- readonly unsubscribeSetDefault: {
1713
- readonly group: "Unsubscribe Groups";
1746
+ readonly topicsSetDefault: {
1747
+ readonly group: "Topics";
1714
1748
  readonly method: "POST";
1715
1749
  readonly paginated: false;
1716
1750
  };
1717
- readonly unsubscribeListMembers: {
1718
- readonly group: "Unsubscribe Groups";
1751
+ readonly topicFormsList: {
1752
+ readonly group: "Topic forms";
1719
1753
  readonly method: "GET";
1720
- readonly paginated: true;
1754
+ readonly paginated: false;
1721
1755
  };
1722
- readonly unsubscribeAddMembers: {
1723
- readonly group: "Unsubscribe Groups";
1756
+ readonly topicFormsCreate: {
1757
+ readonly group: "Topic forms";
1724
1758
  readonly method: "POST";
1725
1759
  readonly paginated: false;
1726
1760
  };
1727
- readonly unsubscribeRemoveMembers: {
1728
- readonly group: "Unsubscribe Groups";
1761
+ readonly topicFormsGet: {
1762
+ readonly group: "Topic forms";
1763
+ readonly method: "GET";
1764
+ readonly paginated: false;
1765
+ };
1766
+ readonly topicFormsRemove: {
1767
+ readonly group: "Topic forms";
1729
1768
  readonly method: "DELETE";
1730
1769
  readonly paginated: false;
1731
1770
  };
1732
- readonly unsubscribeCheckSubscription: {
1733
- readonly group: "Unsubscribe Groups";
1771
+ readonly topicFormsUpdate: {
1772
+ readonly group: "Topic forms";
1773
+ readonly method: "PATCH";
1774
+ readonly paginated: false;
1775
+ };
1776
+ readonly topicsListSubscriptions: {
1777
+ readonly group: "Topics";
1778
+ readonly method: "GET";
1779
+ readonly paginated: true;
1780
+ };
1781
+ readonly topicsSetSubscriptions: {
1782
+ readonly group: "Topics";
1783
+ readonly method: "POST";
1784
+ readonly paginated: false;
1785
+ };
1786
+ readonly topicsCheckSubscription: {
1787
+ readonly group: "Topics";
1734
1788
  readonly method: "GET";
1735
1789
  readonly paginated: false;
1736
1790
  };