samva 0.16.0 → 0.18.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 (167) hide show
  1. package/AGENTS.md +9 -1
  2. package/README.md +57 -1
  3. package/dist/{rolldown-runtime-D7D4PA-g.js → _virtual/_rolldown/runtime.js} +1 -1
  4. package/dist/client/client/client.gen.js +174 -0
  5. package/dist/client/client/utils.gen.js +177 -0
  6. package/dist/client/client.gen.js +8 -0
  7. package/dist/client/core/auth.gen.js +12 -0
  8. package/dist/client/core/bodySerializer.gen.js +6 -0
  9. package/dist/client/core/params.gen.js +77 -0
  10. package/dist/client/core/pathSerializer.gen.js +82 -0
  11. package/dist/client/core/serverSentEvents.gen.js +96 -0
  12. package/dist/client/core/utils.gen.js +78 -0
  13. package/dist/client/sdk.gen.d.ts +174 -3
  14. package/dist/{promises-KrA2nSLg.js → client/sdk.gen.js} +464 -2289
  15. package/dist/client/types.gen.d.ts +1126 -11
  16. package/dist/client-attribution.js +9 -0
  17. package/dist/effect/analytics.d.ts +6 -6
  18. package/dist/effect/analytics.js +11 -9
  19. package/dist/effect/api-keys.d.ts +13 -13
  20. package/dist/effect/api-keys.js +13 -12
  21. package/dist/effect/attachments.d.ts +4 -4
  22. package/dist/effect/attachments.js +9 -7
  23. package/dist/effect/brands.d.ts +7 -7
  24. package/dist/effect/brands.js +12 -10
  25. package/dist/effect/campaigns.d.ts +18 -18
  26. package/dist/effect/campaigns.js +17 -15
  27. package/dist/effect/categories.d.ts +2 -2
  28. package/dist/effect/categories.js +95 -1
  29. package/dist/effect/client.d.ts +1 -1
  30. package/dist/effect/client.js +4 -5
  31. package/dist/effect/contact-groups.d.ts +14 -14
  32. package/dist/effect/contact-groups.js +15 -13
  33. package/dist/effect/contacts.d.ts +77 -25
  34. package/dist/effect/contacts.js +27 -22
  35. package/dist/effect/conversations.d.ts +17 -17
  36. package/dist/effect/conversations.js +18 -16
  37. package/dist/effect/custom-fields.d.ts +4 -4
  38. package/dist/effect/custom-fields.js +9 -7
  39. package/dist/effect/email.d.ts +78 -77
  40. package/dist/effect/email.js +68 -65
  41. package/dist/effect/errors.d.ts +2 -0
  42. package/dist/effect/errors.js +3 -0
  43. package/dist/effect/events.d.ts +121 -0
  44. package/dist/effect/events.js +17 -0
  45. package/dist/effect/extension-installations.d.ts +11 -11
  46. package/dist/effect/extension-installations.js +14 -12
  47. package/dist/effect/extensions.d.ts +9 -9
  48. package/dist/effect/extensions.js +10 -8
  49. package/dist/effect/feedback.d.ts +2 -2
  50. package/dist/effect/feedback.js +6 -5
  51. package/dist/effect/generated/analytics.d.ts +715 -0
  52. package/dist/effect/generated/analytics.js +188 -0
  53. package/dist/effect/generated/api-keys.d.ts +1627 -0
  54. package/dist/effect/generated/api-keys.js +249 -0
  55. package/dist/effect/generated/attachments.d.ts +554 -0
  56. package/dist/effect/generated/attachments.js +125 -0
  57. package/dist/effect/generated/brands.d.ts +1118 -0
  58. package/dist/effect/generated/brands.js +155 -0
  59. package/dist/effect/generated/campaigns.d.ts +3783 -0
  60. package/dist/effect/generated/campaigns.js +491 -0
  61. package/dist/effect/generated/contact-events.d.ts +158 -0
  62. package/dist/effect/generated/contact-events.js +37 -0
  63. package/dist/effect/generated/contact-groups.d.ts +1445 -0
  64. package/dist/effect/generated/contact-groups.js +419 -0
  65. package/dist/effect/generated/contacts.d.ts +3789 -0
  66. package/dist/effect/generated/contacts.js +709 -0
  67. package/dist/effect/generated/conversations.d.ts +2870 -0
  68. package/dist/effect/generated/conversations.js +461 -0
  69. package/dist/effect/generated/custom-fields.d.ts +562 -0
  70. package/dist/effect/generated/custom-fields.js +162 -0
  71. package/dist/effect/generated/email.d.ts +10622 -0
  72. package/dist/effect/generated/email.js +2347 -0
  73. package/dist/effect/generated/events.d.ts +463 -0
  74. package/dist/effect/generated/events.js +70 -0
  75. package/dist/effect/generated/extension-installations.d.ts +1786 -0
  76. package/dist/effect/generated/extension-installations.js +382 -0
  77. package/dist/effect/generated/extensions.d.ts +927 -0
  78. package/dist/effect/generated/extensions.js +203 -0
  79. package/dist/effect/generated/feedback.d.ts +116 -0
  80. package/dist/effect/generated/feedback.js +43 -0
  81. package/dist/effect/generated/index.d.ts +61 -0
  82. package/dist/effect/generated/journeys.d.ts +6135 -0
  83. package/dist/effect/generated/journeys.js +464 -0
  84. package/dist/effect/generated/mailboxes.d.ts +13641 -0
  85. package/dist/effect/generated/mailboxes.js +2312 -0
  86. package/dist/effect/generated/media.d.ts +741 -0
  87. package/dist/effect/generated/media.js +181 -0
  88. package/dist/effect/generated/messages.d.ts +2355 -0
  89. package/dist/effect/generated/messages.js +671 -0
  90. package/dist/effect/generated/namespaces.d.ts +654 -0
  91. package/dist/effect/generated/namespaces.js +135 -0
  92. package/dist/effect/generated/operations.d.ts +514 -0
  93. package/dist/effect/generated/operations.js +80 -0
  94. package/dist/effect/generated/organizations.d.ts +1111 -0
  95. package/dist/effect/generated/organizations.js +231 -0
  96. package/dist/effect/generated/scheduled-messages.d.ts +1798 -0
  97. package/dist/effect/generated/scheduled-messages.js +190 -0
  98. package/dist/effect/generated/shared.d.ts +3250 -0
  99. package/dist/effect/generated/shared.js +1053 -0
  100. package/dist/effect/generated/subscriptions.d.ts +188 -0
  101. package/dist/effect/generated/subscriptions.js +61 -0
  102. package/dist/effect/generated/templates.d.ts +8177 -0
  103. package/dist/effect/generated/templates.js +2214 -0
  104. package/dist/effect/generated/unsubscribe-groups.d.ts +1153 -0
  105. package/dist/effect/generated/unsubscribe-groups.js +267 -0
  106. package/dist/effect/generated/webhooks.d.ts +1697 -0
  107. package/dist/effect/generated/webhooks.js +500 -0
  108. package/dist/effect/generated/whoami.d.ts +291 -0
  109. package/dist/effect/generated/whoami.js +54 -0
  110. package/dist/effect/generated-metadata.d.ts +1627 -0
  111. package/dist/effect/generated-metadata.js +919 -0
  112. package/dist/effect/index.d.ts +3 -2
  113. package/dist/effect/index.js +33 -31
  114. package/dist/effect/internal/client.d.ts +10 -7
  115. package/dist/effect/internal/client.js +69 -0
  116. package/dist/effect/internal/email-sender.d.ts +17 -0
  117. package/dist/effect/internal/email-sender.js +21 -0
  118. package/dist/effect/internal/mailbox-events.js +33 -0
  119. package/dist/effect/internal/operation.d.ts +12 -72
  120. package/dist/effect/internal/operation.js +116 -0
  121. package/dist/effect/internal/send.d.ts +60 -0
  122. package/dist/effect/internal/send.js +56 -0
  123. package/dist/effect/journeys.d.ts +2153 -0
  124. package/dist/effect/journeys.js +39 -0
  125. package/dist/effect/mailboxes.d.ts +80 -80
  126. package/dist/effect/mailboxes.js +135 -3
  127. package/dist/effect/media.d.ts +5 -5
  128. package/dist/effect/media.js +10 -8
  129. package/dist/effect/messages.d.ts +16 -16
  130. package/dist/effect/messages.js +15 -12
  131. package/dist/effect/namespaces.d.ts +7 -7
  132. package/dist/effect/namespaces.js +10 -8
  133. package/dist/effect/operations.d.ts +5 -5
  134. package/dist/effect/operations.js +8 -6
  135. package/dist/effect/organizations.d.ts +7 -7
  136. package/dist/effect/organizations.js +12 -10
  137. package/dist/effect/pagination.js +39 -0
  138. package/dist/effect/retry.js +3 -3
  139. package/dist/effect/runtime.js +25 -0
  140. package/dist/effect/scheduled-messages.d.ts +7 -7
  141. package/dist/effect/scheduled-messages.js +10 -8
  142. package/dist/effect/subscriptions.d.ts +1 -1
  143. package/dist/effect/subscriptions.js +5 -4
  144. package/dist/effect/templates.d.ts +40 -40
  145. package/dist/effect/templates.js +39 -37
  146. package/dist/effect/unsubscribe-groups.d.ts +11 -11
  147. package/dist/effect/unsubscribe-groups.js +14 -12
  148. package/dist/effect/webhooks.d.ts +23 -23
  149. package/dist/effect/webhooks.js +16 -14
  150. package/dist/effect/whoami.d.ts +1 -1
  151. package/dist/effect/whoami.js +5 -4
  152. package/dist/index.js +4 -3
  153. package/dist/{inline-attachments-Cegg6tTF.js → inline-attachments.js} +13 -7
  154. package/dist/{mailbox-events-VKR4f3qq.js → mailbox-events.js} +2 -2
  155. package/dist/{normalize-B79uJIeb.js → normalize.js} +2 -2
  156. package/dist/package.js +6 -0
  157. package/dist/promises/errors.gen.js +1340 -0
  158. package/dist/promises/index.d.ts +7 -3
  159. package/dist/promises/index.js +288 -3
  160. package/dist/promises/types.gen.d.ts +1 -1
  161. package/dist/service-map.d.ts +85 -0
  162. package/dist/{operation-BTXjPrwf.js → service-map.js} +58 -219
  163. package/package.json +17 -3
  164. package/dist/categories-DV51kr2H.js +0 -187
  165. package/dist/client-BMUew5Wp.js +0 -13794
  166. package/dist/effect/generated.d.ts +0 -64004
  167. package/dist/mailboxes-Thp5z0oX.js +0 -161
@@ -0,0 +1,188 @@
1
+ import { AbsoluteInstant } from "../runtime.js";
2
+ import { AnalyticsQueryError, ApiKeySecurityMiddleware, ForbiddenError, GatewayTimeoutError, InternalError, UnauthorizedError, ValidationError } from "./shared.js";
3
+ import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
4
+ import * as Schema from "effect/Schema";
5
+ //#region src/effect/generated/analytics.ts
6
+ const AnalyticsGetChannelStatsQuery = /* @__PURE__ */ Schema.Struct({
7
+ after: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null])),
8
+ before: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null]))
9
+ });
10
+ const AnalyticsGetChannelStats200 = /* @__PURE__ */ Schema.Struct({ email: Schema.Struct({
11
+ sent: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" })),
12
+ deliveryRate: Schema.Finite.check(Schema.isFinite().annotate({ expected: "a finite number" })),
13
+ uniqueOpenedMessages: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" })),
14
+ openTrackingEligibleDeliveredMessages: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" })),
15
+ uniqueMessageOpenRate: Schema.Finite.check(Schema.isFinite().annotate({ expected: "a finite number" })),
16
+ uniqueClickedMessages: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" })),
17
+ clickTrackingEligibleDeliveredMessages: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" })),
18
+ uniqueMessageClickRate: Schema.Finite.check(Schema.isFinite().annotate({ expected: "a finite number" })),
19
+ bounceRate: Schema.Finite.check(Schema.isFinite().annotate({ expected: "a finite number" }))
20
+ }) });
21
+ const AnalyticsGetChannelStats400 = AnalyticsQueryError;
22
+ const AnalyticsGetChannelStats401 = UnauthorizedError;
23
+ const AnalyticsGetChannelStats403 = ForbiddenError;
24
+ const AnalyticsGetChannelStats422 = ValidationError;
25
+ const AnalyticsGetChannelStats500 = InternalError;
26
+ const AnalyticsGetChannelStats504 = GatewayTimeoutError;
27
+ const AnalyticsGetDeliveryMetricsQuery = /* @__PURE__ */ Schema.Struct({
28
+ after: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null])),
29
+ before: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null])),
30
+ channel: Schema.optionalKey(Schema.Union([Schema.Literal("email"), Schema.Null]))
31
+ });
32
+ const AnalyticsGetDeliveryMetrics200 = /* @__PURE__ */ Schema.Struct({
33
+ deliveredRate: Schema.Finite.check(Schema.isFinite().annotate({ expected: "a finite number" })),
34
+ failedRate: Schema.Finite.check(Schema.isFinite().annotate({ expected: "a finite number" })),
35
+ pendingRate: Schema.Finite.check(Schema.isFinite().annotate({ expected: "a finite number" })),
36
+ avgDeliveryTimeMs: Schema.Finite.check(Schema.isFinite().annotate({ expected: "a finite number" }))
37
+ });
38
+ const AnalyticsGetDeliveryMetrics400 = AnalyticsQueryError;
39
+ const AnalyticsGetDeliveryMetrics401 = UnauthorizedError;
40
+ const AnalyticsGetDeliveryMetrics403 = ForbiddenError;
41
+ const AnalyticsGetDeliveryMetrics422 = ValidationError;
42
+ const AnalyticsGetDeliveryMetrics500 = InternalError;
43
+ const AnalyticsGetDeliveryMetrics504 = GatewayTimeoutError;
44
+ const AnalyticsExportDataRequestJson = /* @__PURE__ */ Schema.Struct({
45
+ after: AbsoluteInstant,
46
+ before: AbsoluteInstant,
47
+ format: Schema.optionalKey(Schema.Union([Schema.Union([Schema.Literal("csv"), Schema.Literal("json")]), Schema.Null])),
48
+ includeChannels: Schema.optionalKey(Schema.Union([Schema.Array(Schema.Literal("email")), Schema.Null]))
49
+ });
50
+ const AnalyticsExportData200 = /* @__PURE__ */ Schema.Struct({
51
+ content: Schema.String,
52
+ mimeType: Schema.String,
53
+ filename: Schema.String
54
+ });
55
+ const AnalyticsExportData400 = AnalyticsQueryError;
56
+ const AnalyticsExportData401 = UnauthorizedError;
57
+ const AnalyticsExportData403 = ForbiddenError;
58
+ const AnalyticsExportData422 = ValidationError;
59
+ const AnalyticsExportData500 = InternalError;
60
+ const AnalyticsExportData504 = GatewayTimeoutError;
61
+ const AnalyticsGetHourlyDistributionQuery = /* @__PURE__ */ Schema.Struct({
62
+ after: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null])),
63
+ before: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null]))
64
+ });
65
+ const AnalyticsGetHourlyDistribution200 = /* @__PURE__ */ Schema.Array(Schema.Struct({
66
+ hour: Schema.String,
67
+ count: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" }))
68
+ }));
69
+ const AnalyticsGetHourlyDistribution400 = AnalyticsQueryError;
70
+ const AnalyticsGetHourlyDistribution401 = UnauthorizedError;
71
+ const AnalyticsGetHourlyDistribution403 = ForbiddenError;
72
+ const AnalyticsGetHourlyDistribution422 = ValidationError;
73
+ const AnalyticsGetHourlyDistribution500 = InternalError;
74
+ const AnalyticsGetHourlyDistribution504 = GatewayTimeoutError;
75
+ const AnalyticsGetStatsQuery = /* @__PURE__ */ Schema.Struct({
76
+ after: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null])),
77
+ before: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null])),
78
+ groupBy: Schema.optionalKey(Schema.Union([Schema.Union([
79
+ Schema.Literal("day"),
80
+ Schema.Literal("week"),
81
+ Schema.Literal("month")
82
+ ]), Schema.Null])),
83
+ channel: Schema.optionalKey(Schema.Union([Schema.Literal("email"), Schema.Null]))
84
+ });
85
+ const AnalyticsGetStats200 = /* @__PURE__ */ Schema.Struct({ volumeHistory: Schema.Array(Schema.Struct({
86
+ date: Schema.String,
87
+ email: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" }))
88
+ })) });
89
+ const AnalyticsGetStats400 = AnalyticsQueryError;
90
+ const AnalyticsGetStats401 = UnauthorizedError;
91
+ const AnalyticsGetStats403 = ForbiddenError;
92
+ const AnalyticsGetStats422 = ValidationError;
93
+ const AnalyticsGetStats500 = InternalError;
94
+ const AnalyticsGetStats504 = GatewayTimeoutError;
95
+ const AnalyticsGetTopContactsQuery = /* @__PURE__ */ Schema.Struct({
96
+ after: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null])),
97
+ before: Schema.optionalKey(Schema.Union([AbsoluteInstant, Schema.Null])),
98
+ limit: Schema.optionalKey(Schema.Union([Schema.String, Schema.Null])),
99
+ sortBy: Schema.optionalKey(Schema.Union([Schema.Union([
100
+ Schema.Literal("sent"),
101
+ Schema.Literal("received"),
102
+ Schema.Literal("total")
103
+ ]), Schema.Null]))
104
+ });
105
+ const AnalyticsGetTopContacts200 = /* @__PURE__ */ Schema.Array(Schema.Struct({
106
+ id: Schema.String,
107
+ name: Schema.Union([Schema.String, Schema.Null]),
108
+ email: Schema.Union([Schema.String, Schema.Null]),
109
+ phone: Schema.Union([Schema.String, Schema.Null]),
110
+ messageCount: Schema.Finite.check(Schema.isInt().annotate({ expected: "an integer" })).check(Schema.isGreaterThanOrEqualTo(0).annotate({ expected: "a value greater than or equal to 0" }))
111
+ }));
112
+ const AnalyticsGetTopContacts400 = AnalyticsQueryError;
113
+ const AnalyticsGetTopContacts401 = UnauthorizedError;
114
+ const AnalyticsGetTopContacts403 = ForbiddenError;
115
+ const AnalyticsGetTopContacts422 = ValidationError;
116
+ const AnalyticsGetTopContacts500 = InternalError;
117
+ const AnalyticsGetTopContacts504 = GatewayTimeoutError;
118
+ var AnalyticsGroup = class extends HttpApiGroup.make("Analytics").add(HttpApiEndpoint.get("analyticsGetChannelStats", "/v1/analytics/channel-stats", {
119
+ query: AnalyticsGetChannelStatsQuery,
120
+ success: AnalyticsGetChannelStats200,
121
+ error: [
122
+ AnalyticsGetChannelStats400.pipe(HttpApiSchema.status(400)),
123
+ AnalyticsGetChannelStats401.pipe(HttpApiSchema.status(401)),
124
+ AnalyticsGetChannelStats403.pipe(HttpApiSchema.status(403)),
125
+ AnalyticsGetChannelStats422.pipe(HttpApiSchema.status(422)),
126
+ AnalyticsGetChannelStats500,
127
+ AnalyticsGetChannelStats504.pipe(HttpApiSchema.status(504))
128
+ ]
129
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "analytics.getChannelStats").annotate(OpenApi.Summary, "Get channel performance analytics").annotate(OpenApi.Description, "Returns aggregate delivery metrics plus unique-message email Open and Click rates over the selected date range. `sent` counts every outbound message accepted in the range; each rate is taken over the messages the channel actually attempted, so one still waiting to be sent neither helps nor hurts it. Each engagement rate uses the corresponding tracking-eligible delivered-message cohort; repeated provider observations do not inflate the numerator."), HttpApiEndpoint.get("analyticsGetDeliveryMetrics", "/v1/analytics/delivery-metrics", {
130
+ query: AnalyticsGetDeliveryMetricsQuery,
131
+ success: AnalyticsGetDeliveryMetrics200,
132
+ error: [
133
+ AnalyticsGetDeliveryMetrics400.pipe(HttpApiSchema.status(400)),
134
+ AnalyticsGetDeliveryMetrics401.pipe(HttpApiSchema.status(401)),
135
+ AnalyticsGetDeliveryMetrics403.pipe(HttpApiSchema.status(403)),
136
+ AnalyticsGetDeliveryMetrics422.pipe(HttpApiSchema.status(422)),
137
+ AnalyticsGetDeliveryMetrics500,
138
+ AnalyticsGetDeliveryMetrics504.pipe(HttpApiSchema.status(504))
139
+ ]
140
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "analytics.getDeliveryMetrics").annotate(OpenApi.Summary, "Get message delivery metrics").annotate(OpenApi.Description, "Returns delivered, failed, and pending rates plus average delivery time for the outbound messages accepted in the selected date range, optionally filtered by channel. Every accepted message falls into exactly one of the three, so they always sum to 100%: a complaint counts as delivered because the message arrived, a bounce counts as failed, and anything the provider has not resolved yet counts as pending. Mail your organization received is not rated here."), HttpApiEndpoint.post("analyticsExportData", "/v1/analytics/export", {
141
+ payload: AnalyticsExportDataRequestJson,
142
+ success: AnalyticsExportData200,
143
+ error: [
144
+ AnalyticsExportData400.pipe(HttpApiSchema.status(400)),
145
+ AnalyticsExportData401.pipe(HttpApiSchema.status(401)),
146
+ AnalyticsExportData403.pipe(HttpApiSchema.status(403)),
147
+ AnalyticsExportData422.pipe(HttpApiSchema.status(422)),
148
+ AnalyticsExportData500,
149
+ AnalyticsExportData504.pipe(HttpApiSchema.status(504))
150
+ ]
151
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "analytics.exportData").annotate(OpenApi.Summary, "Export messaging analytics data").annotate(OpenApi.Description, "Exports one record per outbound message accepted in the given date range as CSV or JSON and returns the file content inline. CSV follows RFC 4180: fields containing a quote, comma, or line break are quoted with embedded quotes doubled, and records are separated by CRLF. At most 10,000 records are returned, newest first."), HttpApiEndpoint.get("analyticsGetHourlyDistribution", "/v1/analytics/hourly-distribution", {
152
+ query: AnalyticsGetHourlyDistributionQuery,
153
+ success: AnalyticsGetHourlyDistribution200,
154
+ error: [
155
+ AnalyticsGetHourlyDistribution400.pipe(HttpApiSchema.status(400)),
156
+ AnalyticsGetHourlyDistribution401.pipe(HttpApiSchema.status(401)),
157
+ AnalyticsGetHourlyDistribution403.pipe(HttpApiSchema.status(403)),
158
+ AnalyticsGetHourlyDistribution422.pipe(HttpApiSchema.status(422)),
159
+ AnalyticsGetHourlyDistribution500,
160
+ AnalyticsGetHourlyDistribution504.pipe(HttpApiSchema.status(504))
161
+ ]
162
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "analytics.getHourlyDistribution").annotate(OpenApi.Summary, "Get hourly message distribution").annotate(OpenApi.Description, "Returns outbound message counts over the half-open selected instant range, bucketed by organization-local hour. Empty ranges return no rows; non-empty ranges include all 24 hours."), HttpApiEndpoint.get("analyticsGetStats", "/v1/analytics/stats", {
163
+ query: AnalyticsGetStatsQuery,
164
+ success: AnalyticsGetStats200,
165
+ error: [
166
+ AnalyticsGetStats400.pipe(HttpApiSchema.status(400)),
167
+ AnalyticsGetStats401.pipe(HttpApiSchema.status(401)),
168
+ AnalyticsGetStats403.pipe(HttpApiSchema.status(403)),
169
+ AnalyticsGetStats422.pipe(HttpApiSchema.status(422)),
170
+ AnalyticsGetStats500,
171
+ AnalyticsGetStats504.pipe(HttpApiSchema.status(504))
172
+ ]
173
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "analytics.getStats").annotate(OpenApi.Summary, "Get message volume analytics").annotate(OpenApi.Description, "Returns outbound message counts over the half-open selected instant range, grouped by organization-local calendar day, week, or month. A range with traffic returns every bucket in it, including the ones that saw none; a range with no outbound traffic at all returns no buckets. A range with no `before` runs through the current instant, so its quiet trailing buckets are reported as zero."), HttpApiEndpoint.get("analyticsGetTopContacts", "/v1/analytics/top-contacts", {
174
+ query: AnalyticsGetTopContactsQuery,
175
+ success: AnalyticsGetTopContacts200,
176
+ error: [
177
+ AnalyticsGetTopContacts400.pipe(HttpApiSchema.status(400)),
178
+ AnalyticsGetTopContacts401.pipe(HttpApiSchema.status(401)),
179
+ AnalyticsGetTopContacts403.pipe(HttpApiSchema.status(403)),
180
+ AnalyticsGetTopContacts422.pipe(HttpApiSchema.status(422)),
181
+ AnalyticsGetTopContacts500,
182
+ AnalyticsGetTopContacts504.pipe(HttpApiSchema.status(504))
183
+ ]
184
+ }).middleware(ApiKeySecurityMiddleware).annotate(OpenApi.Identifier, "analytics.getTopContacts").annotate(OpenApi.Summary, "List top contacts by message volume").annotate(OpenApi.Description, "Returns the contacts your organization exchanged the most messages with over the selected date range. `sortBy` chooses the traffic `messageCount` reports and ranks by: `sent` counts outbound messages addressed to the contact, `received` counts inbound messages the contact sent you, and `total` (the default) counts both. Contacts with no traffic in the range are omitted, and at most 100 are returned.")).annotate(OpenApi.Description, "Messaging analytics, channel stats, and data export. Every date range is half-open — `after` inclusive, `before` exclusive — and may span at most 366 days. Both bounds are absolute ISO-8601 instants carrying `Z` or a numeric offset; a bare calendar date is rejected, because reading it as UTC midnight would shift every bucket for an organization outside UTC. `AnalyticsQueryError` refuses a longer span and a `before` sent without an `after`, which bounds nothing. Omitting both bounds reports the organization's whole history. Calendar buckets follow the organization's timezone.") {};
185
+ //#endregion
186
+ export { AnalyticsExportData200, AnalyticsExportData400, AnalyticsExportData401, AnalyticsExportData403, AnalyticsExportData422, AnalyticsExportData500, AnalyticsExportData504, AnalyticsExportDataRequestJson, AnalyticsGetChannelStats200, AnalyticsGetChannelStats400, AnalyticsGetChannelStats401, AnalyticsGetChannelStats403, AnalyticsGetChannelStats422, AnalyticsGetChannelStats500, AnalyticsGetChannelStats504, AnalyticsGetChannelStatsQuery, AnalyticsGetDeliveryMetrics200, AnalyticsGetDeliveryMetrics400, AnalyticsGetDeliveryMetrics401, AnalyticsGetDeliveryMetrics403, AnalyticsGetDeliveryMetrics422, AnalyticsGetDeliveryMetrics500, AnalyticsGetDeliveryMetrics504, AnalyticsGetDeliveryMetricsQuery, AnalyticsGetHourlyDistribution200, AnalyticsGetHourlyDistribution400, AnalyticsGetHourlyDistribution401, AnalyticsGetHourlyDistribution403, AnalyticsGetHourlyDistribution422, AnalyticsGetHourlyDistribution500, AnalyticsGetHourlyDistribution504, AnalyticsGetHourlyDistributionQuery, AnalyticsGetStats200, AnalyticsGetStats400, AnalyticsGetStats401, AnalyticsGetStats403, AnalyticsGetStats422, AnalyticsGetStats500, AnalyticsGetStats504, AnalyticsGetStatsQuery, AnalyticsGetTopContacts200, AnalyticsGetTopContacts400, AnalyticsGetTopContacts401, AnalyticsGetTopContacts403, AnalyticsGetTopContacts422, AnalyticsGetTopContacts500, AnalyticsGetTopContacts504, AnalyticsGetTopContactsQuery, AnalyticsGroup };
187
+
188
+ //# sourceMappingURL=analytics.js.map