silon-sdk 0.2.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 (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +560 -0
  3. package/dist/client.d.ts +141 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +249 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/errors.d.ts +117 -0
  8. package/dist/errors.d.ts.map +1 -0
  9. package/dist/errors.js +199 -0
  10. package/dist/errors.js.map +1 -0
  11. package/dist/index.d.ts +51 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +36 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/internal/utils.d.ts +24 -0
  16. package/dist/internal/utils.d.ts.map +1 -0
  17. package/dist/internal/utils.js +58 -0
  18. package/dist/internal/utils.js.map +1 -0
  19. package/dist/pagination.d.ts +52 -0
  20. package/dist/pagination.d.ts.map +1 -0
  21. package/dist/pagination.js +80 -0
  22. package/dist/pagination.js.map +1 -0
  23. package/dist/resources/auth.d.ts +20 -0
  24. package/dist/resources/auth.d.ts.map +1 -0
  25. package/dist/resources/auth.js +41 -0
  26. package/dist/resources/auth.js.map +1 -0
  27. package/dist/resources/broadcasts.d.ts +63 -0
  28. package/dist/resources/broadcasts.d.ts.map +1 -0
  29. package/dist/resources/broadcasts.js +103 -0
  30. package/dist/resources/broadcasts.js.map +1 -0
  31. package/dist/resources/bulk.d.ts +60 -0
  32. package/dist/resources/bulk.d.ts.map +1 -0
  33. package/dist/resources/bulk.js +137 -0
  34. package/dist/resources/bulk.js.map +1 -0
  35. package/dist/resources/client-groups.d.ts +50 -0
  36. package/dist/resources/client-groups.d.ts.map +1 -0
  37. package/dist/resources/client-groups.js +97 -0
  38. package/dist/resources/client-groups.js.map +1 -0
  39. package/dist/resources/clients.d.ts +51 -0
  40. package/dist/resources/clients.d.ts.map +1 -0
  41. package/dist/resources/clients.js +99 -0
  42. package/dist/resources/clients.js.map +1 -0
  43. package/dist/resources/events.d.ts +22 -0
  44. package/dist/resources/events.d.ts.map +1 -0
  45. package/dist/resources/events.js +38 -0
  46. package/dist/resources/events.js.map +1 -0
  47. package/dist/resources/messages.d.ts +99 -0
  48. package/dist/resources/messages.d.ts.map +1 -0
  49. package/dist/resources/messages.js +167 -0
  50. package/dist/resources/messages.js.map +1 -0
  51. package/dist/resources/otp.d.ts +26 -0
  52. package/dist/resources/otp.d.ts.map +1 -0
  53. package/dist/resources/otp.js +40 -0
  54. package/dist/resources/otp.js.map +1 -0
  55. package/dist/resources/profile.d.ts +18 -0
  56. package/dist/resources/profile.d.ts.map +1 -0
  57. package/dist/resources/profile.js +40 -0
  58. package/dist/resources/profile.js.map +1 -0
  59. package/dist/resources/push.d.ts +45 -0
  60. package/dist/resources/push.d.ts.map +1 -0
  61. package/dist/resources/push.js +103 -0
  62. package/dist/resources/push.js.map +1 -0
  63. package/dist/resources/reports.d.ts +44 -0
  64. package/dist/resources/reports.d.ts.map +1 -0
  65. package/dist/resources/reports.js +127 -0
  66. package/dist/resources/reports.js.map +1 -0
  67. package/dist/resources/suppressions.d.ts +54 -0
  68. package/dist/resources/suppressions.d.ts.map +1 -0
  69. package/dist/resources/suppressions.js +79 -0
  70. package/dist/resources/suppressions.js.map +1 -0
  71. package/dist/resources/templates.d.ts +58 -0
  72. package/dist/resources/templates.d.ts.map +1 -0
  73. package/dist/resources/templates.js +96 -0
  74. package/dist/resources/templates.js.map +1 -0
  75. package/dist/resources/webhook-endpoints.d.ts +54 -0
  76. package/dist/resources/webhook-endpoints.d.ts.map +1 -0
  77. package/dist/resources/webhook-endpoints.js +96 -0
  78. package/dist/resources/webhook-endpoints.js.map +1 -0
  79. package/dist/resources/whatsapp-templates.d.ts +20 -0
  80. package/dist/resources/whatsapp-templates.d.ts.map +1 -0
  81. package/dist/resources/whatsapp-templates.js +33 -0
  82. package/dist/resources/whatsapp-templates.js.map +1 -0
  83. package/dist/types/auth.d.ts +34 -0
  84. package/dist/types/auth.d.ts.map +1 -0
  85. package/dist/types/auth.js +8 -0
  86. package/dist/types/auth.js.map +1 -0
  87. package/dist/types/broadcasts.d.ts +174 -0
  88. package/dist/types/broadcasts.d.ts.map +1 -0
  89. package/dist/types/broadcasts.js +8 -0
  90. package/dist/types/broadcasts.js.map +1 -0
  91. package/dist/types/bulk.d.ts +161 -0
  92. package/dist/types/bulk.d.ts.map +1 -0
  93. package/dist/types/bulk.js +8 -0
  94. package/dist/types/bulk.js.map +1 -0
  95. package/dist/types/client-groups.d.ts +52 -0
  96. package/dist/types/client-groups.d.ts.map +1 -0
  97. package/dist/types/client-groups.js +8 -0
  98. package/dist/types/client-groups.js.map +1 -0
  99. package/dist/types/clients.d.ts +64 -0
  100. package/dist/types/clients.d.ts.map +1 -0
  101. package/dist/types/clients.js +8 -0
  102. package/dist/types/clients.js.map +1 -0
  103. package/dist/types/events.d.ts +64 -0
  104. package/dist/types/events.d.ts.map +1 -0
  105. package/dist/types/events.js +9 -0
  106. package/dist/types/events.js.map +1 -0
  107. package/dist/types/messages.d.ts +334 -0
  108. package/dist/types/messages.d.ts.map +1 -0
  109. package/dist/types/messages.js +8 -0
  110. package/dist/types/messages.js.map +1 -0
  111. package/dist/types/otp.d.ts +61 -0
  112. package/dist/types/otp.d.ts.map +1 -0
  113. package/dist/types/otp.js +8 -0
  114. package/dist/types/otp.js.map +1 -0
  115. package/dist/types/profile.d.ts +37 -0
  116. package/dist/types/profile.d.ts.map +1 -0
  117. package/dist/types/profile.js +8 -0
  118. package/dist/types/profile.js.map +1 -0
  119. package/dist/types/push.d.ts +90 -0
  120. package/dist/types/push.d.ts.map +1 -0
  121. package/dist/types/push.js +8 -0
  122. package/dist/types/push.js.map +1 -0
  123. package/dist/types/reports.d.ts +109 -0
  124. package/dist/types/reports.d.ts.map +1 -0
  125. package/dist/types/reports.js +8 -0
  126. package/dist/types/reports.js.map +1 -0
  127. package/dist/types/suppressions.d.ts +72 -0
  128. package/dist/types/suppressions.d.ts.map +1 -0
  129. package/dist/types/suppressions.js +8 -0
  130. package/dist/types/suppressions.js.map +1 -0
  131. package/dist/types/templates.d.ts +96 -0
  132. package/dist/types/templates.d.ts.map +1 -0
  133. package/dist/types/templates.js +9 -0
  134. package/dist/types/templates.js.map +1 -0
  135. package/dist/types/webhook-endpoints.d.ts +123 -0
  136. package/dist/types/webhook-endpoints.d.ts.map +1 -0
  137. package/dist/types/webhook-endpoints.js +8 -0
  138. package/dist/types/webhook-endpoints.js.map +1 -0
  139. package/dist/types/whatsapp-templates.d.ts +59 -0
  140. package/dist/types/whatsapp-templates.d.ts.map +1 -0
  141. package/dist/types/whatsapp-templates.js +8 -0
  142. package/dist/types/whatsapp-templates.js.map +1 -0
  143. package/dist/version.d.ts +3 -0
  144. package/dist/version.d.ts.map +1 -0
  145. package/dist/version.js +3 -0
  146. package/dist/version.js.map +1 -0
  147. package/dist/webhooks.d.ts +48 -0
  148. package/dist/webhooks.d.ts.map +1 -0
  149. package/dist/webhooks.js +97 -0
  150. package/dist/webhooks.js.map +1 -0
  151. package/package.json +60 -0
@@ -0,0 +1,54 @@
1
+ /** The WebhookEndpoints resource — manage outbound webhook subscriptions. */
2
+ import type { Silon } from "../client.js";
3
+ import { Page } from "../pagination.js";
4
+ import type { WebhookAttempt, WebhookEndpoint, WebhookEndpointAttemptsParams, WebhookEndpointCreateParams, WebhookEndpointListParams, WebhookEndpointTestResult, WebhookEndpointUpdateParams, WebhookEndpointWithSecret } from "../types/webhook-endpoints.js";
5
+ /** `client.webhookEndpoints` — subscribe HTTPS URLs to the event stream. */
6
+ export declare class WebhookEndpoints {
7
+ #private;
8
+ constructor(client: Silon);
9
+ /** List endpoints, cursor-paginated (`GET /api/v1/webhook_endpoints`). */
10
+ list(params?: WebhookEndpointListParams): Promise<Page<WebhookEndpoint>>;
11
+ /**
12
+ * Subscribe an HTTPS URL to events (`POST /api/v1/webhook_endpoints`).
13
+ *
14
+ * The response includes the one-time signing `secret` (`whsec_`) — store
15
+ * it now, it is never returned again. `enabled_events` defaults to
16
+ * `["*"]` (everything). `livemode` (default `true`) fixes the endpoint's
17
+ * mode at create time: pass `false` to receive test-mode (`sk_test_`)
18
+ * events instead of live ones.
19
+ */
20
+ create(params: WebhookEndpointCreateParams): Promise<WebhookEndpointWithSecret>;
21
+ /** Fetch one endpoint (`GET /api/v1/webhook_endpoints/{id}`). */
22
+ retrieve(endpointId: string): Promise<WebhookEndpoint>;
23
+ /**
24
+ * Partial update (`PATCH /api/v1/webhook_endpoints/{id}`); set
25
+ * `{status: "disabled"}` to pause deliveries.
26
+ */
27
+ update(endpointId: string, params?: WebhookEndpointUpdateParams): Promise<WebhookEndpoint>;
28
+ /** Delete an endpoint (`DELETE /api/v1/webhook_endpoints/{id}`, 204). */
29
+ delete(endpointId: string): Promise<void>;
30
+ /**
31
+ * Synchronously POST a signed `ping` envelope to the endpoint's URL and
32
+ * report the outcome (`POST /api/v1/webhook_endpoints/{id}/test`; scope
33
+ * `webhooks:write`; no request body).
34
+ *
35
+ * A failing sink is NOT an HTTP error — the call resolves `200` with
36
+ * `delivered: false` and the reason in `error`. The endpoint id must match
37
+ * the KEY's mode (a live key tests livemode-true endpoints only, a test key
38
+ * livemode-false); a mode mismatch or unknown id rejects `404`. Test pings
39
+ * are never persisted and never appear in {@link listAttempts}.
40
+ */
41
+ test(endpointId: string): Promise<WebhookEndpointTestResult>;
42
+ /**
43
+ * List an endpoint's recorded delivery attempts, cursor-paginated
44
+ * (`GET /api/v1/webhook_endpoints/{id}/attempts`; scope `webhooks:read`).
45
+ * An unknown endpoint id rejects `404`.
46
+ *
47
+ * ```ts
48
+ * const page = await client.webhookEndpoints.listAttempts("we_01J1ABC");
49
+ * for await (const attempt of page.autoPaging()) { ... }
50
+ * ```
51
+ */
52
+ listAttempts(endpointId: string, params?: WebhookEndpointAttemptsParams): Promise<Page<WebhookAttempt>>;
53
+ }
54
+ //# sourceMappingURL=webhook-endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-endpoints.d.ts","sourceRoot":"","sources":["../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAuB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AAKvC,4EAA4E;AAC5E,qBAAa,gBAAgB;;gBAGf,MAAM,EAAE,KAAK;IAIzB,0EAA0E;IACpE,IAAI,CAAC,MAAM,GAAE,yBAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAQlF;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAWrF,iEAAiE;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ5D;;;OAGG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,2BAAgC,GACvC,OAAO,CAAC,eAAe,CAAC;IAe3B,yEAAyE;IACnE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C;;;;;;;;;;OAUG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAQlE;;;;;;;;;OASG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,6BAAkC,GACzC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;CAQjC"}
@@ -0,0 +1,96 @@
1
+ /** The WebhookEndpoints resource — manage outbound webhook subscriptions. */
2
+ import { dropNull } from "../internal/utils.js";
3
+ import { Page } from "../pagination.js";
4
+ // NOTE: no trailing slashes on this resource (SPEC 7).
5
+ const ENDPOINTS_PATH = "/api/v1/webhook_endpoints";
6
+ /** `client.webhookEndpoints` — subscribe HTTPS URLs to the event stream. */
7
+ export class WebhookEndpoints {
8
+ #client;
9
+ constructor(client) {
10
+ this.#client = client;
11
+ }
12
+ /** List endpoints, cursor-paginated (`GET /api/v1/webhook_endpoints`). */
13
+ async list(params = {}) {
14
+ const query = dropNull({ cursor: params.cursor, limit: params.limit });
15
+ const data = (await this.#client.request("GET", ENDPOINTS_PATH, {
16
+ query,
17
+ }));
18
+ return new Page(this.#client, ENDPOINTS_PATH, query, data);
19
+ }
20
+ /**
21
+ * Subscribe an HTTPS URL to events (`POST /api/v1/webhook_endpoints`).
22
+ *
23
+ * The response includes the one-time signing `secret` (`whsec_`) — store
24
+ * it now, it is never returned again. `enabled_events` defaults to
25
+ * `["*"]` (everything). `livemode` (default `true`) fixes the endpoint's
26
+ * mode at create time: pass `false` to receive test-mode (`sk_test_`)
27
+ * events instead of live ones.
28
+ */
29
+ async create(params) {
30
+ const body = dropNull({
31
+ url: params.url,
32
+ description: params.description,
33
+ enabled_events: params.enabled_events,
34
+ livemode: params.livemode,
35
+ });
36
+ const data = await this.#client.request("POST", ENDPOINTS_PATH, { body });
37
+ return data;
38
+ }
39
+ /** Fetch one endpoint (`GET /api/v1/webhook_endpoints/{id}`). */
40
+ async retrieve(endpointId) {
41
+ const data = await this.#client.request("GET", `${ENDPOINTS_PATH}/${encodeURIComponent(endpointId)}`);
42
+ return data;
43
+ }
44
+ /**
45
+ * Partial update (`PATCH /api/v1/webhook_endpoints/{id}`); set
46
+ * `{status: "disabled"}` to pause deliveries.
47
+ */
48
+ async update(endpointId, params = {}) {
49
+ const body = dropNull({
50
+ url: params.url,
51
+ description: params.description,
52
+ enabled_events: params.enabled_events,
53
+ status: params.status,
54
+ });
55
+ const data = await this.#client.request("PATCH", `${ENDPOINTS_PATH}/${encodeURIComponent(endpointId)}`, { body });
56
+ return data;
57
+ }
58
+ /** Delete an endpoint (`DELETE /api/v1/webhook_endpoints/{id}`, 204). */
59
+ async delete(endpointId) {
60
+ await this.#client.request("DELETE", `${ENDPOINTS_PATH}/${encodeURIComponent(endpointId)}`);
61
+ }
62
+ /**
63
+ * Synchronously POST a signed `ping` envelope to the endpoint's URL and
64
+ * report the outcome (`POST /api/v1/webhook_endpoints/{id}/test`; scope
65
+ * `webhooks:write`; no request body).
66
+ *
67
+ * A failing sink is NOT an HTTP error — the call resolves `200` with
68
+ * `delivered: false` and the reason in `error`. The endpoint id must match
69
+ * the KEY's mode (a live key tests livemode-true endpoints only, a test key
70
+ * livemode-false); a mode mismatch or unknown id rejects `404`. Test pings
71
+ * are never persisted and never appear in {@link listAttempts}.
72
+ */
73
+ async test(endpointId) {
74
+ const data = await this.#client.request("POST", `${ENDPOINTS_PATH}/${encodeURIComponent(endpointId)}/test`);
75
+ return data;
76
+ }
77
+ /**
78
+ * List an endpoint's recorded delivery attempts, cursor-paginated
79
+ * (`GET /api/v1/webhook_endpoints/{id}/attempts`; scope `webhooks:read`).
80
+ * An unknown endpoint id rejects `404`.
81
+ *
82
+ * ```ts
83
+ * const page = await client.webhookEndpoints.listAttempts("we_01J1ABC");
84
+ * for await (const attempt of page.autoPaging()) { ... }
85
+ * ```
86
+ */
87
+ async listAttempts(endpointId, params = {}) {
88
+ const path = `${ENDPOINTS_PATH}/${encodeURIComponent(endpointId)}/attempts`;
89
+ const query = dropNull({ cursor: params.cursor, limit: params.limit });
90
+ const data = (await this.#client.request("GET", path, {
91
+ query,
92
+ }));
93
+ return new Page(this.#client, path, query, data);
94
+ }
95
+ }
96
+ //# sourceMappingURL=webhook-endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-endpoints.js","sourceRoot":"","sources":["../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** The WhatsAppTemplates resource — approved templates synced from Meta. */
2
+ import type { Silon } from "../client.js";
3
+ import type { WhatsAppTemplate, WhatsAppTemplateList, WhatsAppTemplateListParams } from "../types/whatsapp-templates.js";
4
+ /** `client.whatsappTemplates` — approved WhatsApp templates. */
5
+ export declare class WhatsAppTemplates {
6
+ #private;
7
+ constructor(client: Silon);
8
+ /**
9
+ * List approved WhatsApp templates (`GET /api/v1/whatsapp/templates/`),
10
+ * optionally filtered by `name`, `language` and/or `waba_id` (query
11
+ * parameters).
12
+ */
13
+ list(params?: WhatsAppTemplateListParams): Promise<WhatsAppTemplateList>;
14
+ /**
15
+ * One template with its `components` + variables
16
+ * (`GET /api/v1/whatsapp/templates/{id}/`).
17
+ */
18
+ retrieve(templateId: number): Promise<WhatsAppTemplate>;
19
+ }
20
+ //# sourceMappingURL=whatsapp-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-templates.d.ts","sourceRoot":"","sources":["../../src/resources/whatsapp-templates.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,gCAAgC,CAAC;AAIxC,gEAAgE;AAChE,qBAAa,iBAAiB;;gBAGhB,MAAM,EAAE,KAAK;IAIzB;;;;OAIG;IACG,IAAI,CAAC,MAAM,GAAE,0BAA+B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAUlF;;;OAGG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAI9D"}
@@ -0,0 +1,33 @@
1
+ /** The WhatsAppTemplates resource — approved templates synced from Meta. */
2
+ import { dropNull } from "../internal/utils.js";
3
+ const TEMPLATES_PATH = "/api/v1/whatsapp/templates/";
4
+ /** `client.whatsappTemplates` — approved WhatsApp templates. */
5
+ export class WhatsAppTemplates {
6
+ #client;
7
+ constructor(client) {
8
+ this.#client = client;
9
+ }
10
+ /**
11
+ * List approved WhatsApp templates (`GET /api/v1/whatsapp/templates/`),
12
+ * optionally filtered by `name`, `language` and/or `waba_id` (query
13
+ * parameters).
14
+ */
15
+ async list(params = {}) {
16
+ const query = dropNull({
17
+ name: params.name,
18
+ language: params.language,
19
+ waba_id: params.waba_id,
20
+ });
21
+ const data = await this.#client.request("GET", TEMPLATES_PATH, { query });
22
+ return data;
23
+ }
24
+ /**
25
+ * One template with its `components` + variables
26
+ * (`GET /api/v1/whatsapp/templates/{id}/`).
27
+ */
28
+ async retrieve(templateId) {
29
+ const data = await this.#client.request("GET", `${TEMPLATES_PATH}${templateId}/`);
30
+ return data;
31
+ }
32
+ }
33
+ //# sourceMappingURL=whatsapp-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-templates.js","sourceRoot":"","sources":["../../src/resources/whatsapp-templates.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAG5E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAOhD,MAAM,cAAc,GAAG,6BAA6B,CAAC;AAErD,gEAAgE;AAChE,MAAM,OAAO,iBAAiB;IACnB,OAAO,CAAQ;IAExB,YAAY,MAAa;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,SAAqC,EAAE;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAgB,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,OAAO,IAA4B,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,UAAkB;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,cAAc,GAAG,UAAU,GAAG,CAAC,CAAC;QAClF,OAAO,IAAwB,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Types for the Auth resource.
3
+ *
4
+ * Field names mirror the wire format exactly (snake_case) and date-times are
5
+ * ISO-8601 strings — this SDK performs no casing or date transformation.
6
+ */
7
+ import type { UserProfile } from "./profile.js";
8
+ /** Parameters for {@link Auth.signup} (`POST /api/v1/signup/`). */
9
+ export interface SignupParams {
10
+ email: string;
11
+ first_name: string;
12
+ last_name: string;
13
+ phone_number: string;
14
+ password: string;
15
+ civil_id?: string | null;
16
+ /** Preferred language, e.g. `"en"`, `"ar"`. */
17
+ default_language?: string | null;
18
+ /** Link the account to an existing CRM contact. */
19
+ client_id?: string | null;
20
+ }
21
+ /** 201 body of `POST /api/v1/signup/` — the created profile. */
22
+ export interface SignupResult extends UserProfile {
23
+ }
24
+ /** Parameters for the deprecated {@link Auth.login} (`POST /api/v1/login/`). */
25
+ export interface LoginParams {
26
+ username: string;
27
+ password: string;
28
+ }
29
+ /** Body of the deprecated `POST /api/v1/login/`. */
30
+ export interface LoginResult {
31
+ /** Bearer token — prefer a scoped `sk_live_` API key instead. */
32
+ token: string;
33
+ }
34
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,gEAAgE;AAChE,MAAM,WAAW,YAAa,SAAQ,WAAW;CAAG;AAEpD,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Types for the Auth resource.
3
+ *
4
+ * Field names mirror the wire format exactly (snake_case) and date-times are
5
+ * ISO-8601 strings — this SDK performs no casing or date transformation.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Types for the Broadcasts resource.
3
+ *
4
+ * Field names mirror the wire format exactly (snake_case) and date-times are
5
+ * ISO-8601 strings — this SDK performs no casing or date transformation.
6
+ */
7
+ /** Parameters for {@link Broadcasts.create} (`POST /api/v1/broadcasts/`). */
8
+ export interface BroadcastCreateParams {
9
+ /** Delivery channel, e.g. `"sms"`, `"whatsapp"`, `"email"`, `"push"`, `"web_push"`. Required. */
10
+ channel: string;
11
+ /**
12
+ * Audience selector: `{type: "client_group", slug}`,
13
+ * `{type: "client_ids", client_ids: [...]}` or `{type: "recipients",
14
+ * recipients: [{phone_number} | {email} | {client_id}, ...]}` (max 1,000
15
+ * rows; duplicates are deduped and counted in `skipped_count`). Required.
16
+ */
17
+ audience: Record<string, unknown>;
18
+ /** Message content, e.g. `{body}` or `{subject, body}` for email. */
19
+ content?: Record<string, unknown> | null;
20
+ /**
21
+ * Stored-template reference (`client.templates`), e.g. `{slug, context}`;
22
+ * pin an older immutable revision with an optional `version` (int)
23
+ * `{slug, version: 3}` (unknown version -> `422 template-version-not-found`).
24
+ */
25
+ template?: Record<string, unknown> | null;
26
+ /** Provider override, e.g. `"meta_cloud"`, `"twilio"`, `"fcm"`. */
27
+ provider?: string | null;
28
+ /** Sender override (honoured only by providers that support it). */
29
+ sender?: string | null;
30
+ /** Push only: application slug the device tokens belong to. */
31
+ application?: string | null;
32
+ /** Web-widget messages: the widget key. */
33
+ widget_key?: string | null;
34
+ /** Push priority, e.g. `"high"`. */
35
+ priority?: string | null;
36
+ /** Push time-to-live, in seconds. */
37
+ ttl?: number | null;
38
+ /** WhatsApp-specific free-form options. */
39
+ whatsapp?: Record<string, unknown> | null;
40
+ /** WhatsApp template block, e.g. `{name, language, variables}`. */
41
+ whatsapp_template?: Record<string, unknown> | null;
42
+ /**
43
+ * Schedule the broadcast: an ISO-8601 date-time string WITH a UTC offset
44
+ * (e.g. `"2026-07-15T09:00:00+03:00"`), strictly in the future and at most
45
+ * 90 days ahead — otherwise the server rejects with `422 send-at-invalid`
46
+ * (naive date-times are rejected too). The string is passed through
47
+ * verbatim (this SDK performs no date transformation — for a `Date`, call
48
+ * `.toISOString()` yourself). The envelope answers `status: "scheduled"`
49
+ * (`target_count` / `skipped_count` may be null when the audience resolves
50
+ * at dispatch time) and the same `id` tracks the broadcast through
51
+ * dispatch; cancel while still scheduled via {@link Broadcasts.cancel}.
52
+ */
53
+ send_at?: string | null;
54
+ /**
55
+ * Sent as the `Idempotency-Key` request header — NOT part of the JSON
56
+ * body. Auto-generated UUIDv4 when omitted, so retries never double-send.
57
+ */
58
+ idempotency_key?: string | null;
59
+ /**
60
+ * Extra JSON fields merged into the request body last (forward
61
+ * compatibility escape hatch) — NOT itself a wire field.
62
+ */
63
+ extra_body?: Record<string, unknown> | null;
64
+ }
65
+ /**
66
+ * Itemised skip counts on a broadcast / batch 202 envelope. Every key is
67
+ * always present (`0` when nothing was skipped for that reason), and the
68
+ * envelope's `skipped_count` stays the sum of the three — back-compatible.
69
+ */
70
+ export interface SkippedBreakdown {
71
+ /**
72
+ * Recipients on the workspace do-not-contact list (`client.suppressions`).
73
+ * Fan-outs skip suppressed recipients silently — never an error.
74
+ */
75
+ suppressed: number;
76
+ /** Recipients whose address type cannot ride the requested channel. */
77
+ wrong_channel: number;
78
+ /** Duplicate addresses deduped within the request. */
79
+ duplicate: number;
80
+ }
81
+ /**
82
+ * Envelope from `POST /api/v1/broadcasts/` (202) — also returned by
83
+ * {@link Broadcasts.cancel} (200, with `status: "canceled"`).
84
+ */
85
+ export interface BroadcastAccepted {
86
+ /**
87
+ * Opaque broadcast id, `br_` prefixed. Stable across the lifecycle of a
88
+ * scheduled broadcast: the same id resolves before and after dispatch.
89
+ */
90
+ id: string;
91
+ /** Always `"broadcast"`. */
92
+ object: string;
93
+ channel: string;
94
+ /**
95
+ * `"queued"` — or `"scheduled"` when the request carried `send_at`
96
+ * (`"canceled"` from the cancel endpoint).
97
+ */
98
+ status: string;
99
+ /**
100
+ * `false` when the broadcast ran in test mode (an `sk_test_` key): nothing
101
+ * reaches a provider and nothing is billed. `true` for live traffic.
102
+ */
103
+ livemode?: boolean;
104
+ /**
105
+ * Number of recipients targeted — null on scheduled broadcasts whose
106
+ * audience resolves at dispatch time.
107
+ */
108
+ target_count: number | null;
109
+ /**
110
+ * Number of recipients skipped (suppressed, wrong channel, duplicates) —
111
+ * null when `target_count` is null. Always the sum of the {@link skipped}
112
+ * breakdown.
113
+ */
114
+ skipped_count: number | null;
115
+ /**
116
+ * Itemised skip counts summing to `skipped_count` — null exactly when
117
+ * `target_count` is null (scheduled envelopes whose audience resolves at
118
+ * dispatch time); absent on servers predating the suppression feature.
119
+ */
120
+ skipped?: SkippedBreakdown | null;
121
+ }
122
+ /** Aggregate counts from `GET /api/v1/broadcasts/{broadcast_id}/`. */
123
+ export interface Broadcast {
124
+ /** Opaque broadcast id, `br_` prefixed. */
125
+ id: string;
126
+ channel: string;
127
+ /**
128
+ * `false` when the broadcast ran in test mode (an `sk_test_` key) — its
129
+ * per-recipient statuses are simulated.
130
+ */
131
+ livemode?: boolean;
132
+ /**
133
+ * Number of recipients targeted by the broadcast — may be null while
134
+ * `"scheduled"` on channels that resolve their audience at dispatch time.
135
+ */
136
+ target_count: number | null;
137
+ /** Recipients still waiting to be dispatched. */
138
+ queued: number;
139
+ /** Recipients dispatched successfully. */
140
+ sent: number;
141
+ /** Recipients whose dispatch failed. */
142
+ failed: number;
143
+ /** ISO-8601 date-time string. */
144
+ started_at?: string | null;
145
+ /** ISO-8601 date-time string; `null` while the broadcast is in progress. */
146
+ completed_at?: string | null;
147
+ /**
148
+ * `"scheduled"` before a `send_at` broadcast dispatches (`"canceled"`
149
+ * after a successful {@link Broadcasts.cancel}); once dispatched,
150
+ * `"completed"` when nothing is queued, otherwise `"in_progress"`
151
+ * (`"failed"` when a scheduled dispatch faulted before any recipient row
152
+ * was created).
153
+ */
154
+ status: string;
155
+ /** Scheduled broadcasts only: ISO-8601 date-time the broadcast will dispatch at. */
156
+ send_at?: string | null;
157
+ }
158
+ /** One per-recipient delivery row for a broadcast. */
159
+ export interface BroadcastDelivery {
160
+ id: string;
161
+ client_id?: string;
162
+ status: string;
163
+ /** ISO-8601 date-time string. */
164
+ sent_at?: string | null;
165
+ error?: string | null;
166
+ }
167
+ /** Query parameters for {@link Broadcasts.deliveries}. */
168
+ export interface BroadcastDeliveriesParams {
169
+ /** Opaque pagination cursor from a previous page. */
170
+ cursor?: string | null;
171
+ /** Page size. */
172
+ limit?: number | null;
173
+ }
174
+ //# sourceMappingURL=broadcasts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcasts.d.ts","sourceRoot":"","sources":["../../src/types/broadcasts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,iGAAiG;IACjG,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEzC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE1C,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE1C,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEnD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACnC;AAED,sEAAsE;AACtE,MAAM,WAAW,SAAS;IACxB,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,0DAA0D;AAC1D,MAAM,WAAW,yBAAyB;IACxC,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Types for the Broadcasts resource.
3
+ *
4
+ * Field names mirror the wire format exactly (snake_case) and date-times are
5
+ * ISO-8601 strings — this SDK performs no casing or date transformation.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=broadcasts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcasts.js","sourceRoot":"","sources":["../../src/types/broadcasts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Types for the Bulk resource.
3
+ *
4
+ * Field names mirror the wire format exactly (snake_case) and date-times are
5
+ * ISO-8601 strings — this SDK performs no casing or date transformation.
6
+ */
7
+ /** One row from `GET /api/v1/bulk/`. */
8
+ export interface BulkBatch {
9
+ id: number;
10
+ filename: string;
11
+ /** Recipients in this batch that were sent/read. */
12
+ success: number;
13
+ total: number;
14
+ channels?: unknown[];
15
+ /** ISO-8601 date-time string. */
16
+ created_at: string;
17
+ /** ISO-8601 date-time string; `null` until dispatch starts. */
18
+ sent_at?: string | null;
19
+ timezone?: string;
20
+ }
21
+ /** Per-recipient row embedded in a bulk batch detail. */
22
+ export interface BulkRecipient {
23
+ id: number;
24
+ client_id?: string;
25
+ phone_number?: string;
26
+ email?: string;
27
+ status?: string;
28
+ error?: string;
29
+ }
30
+ /** Full batch detail from `GET /api/v1/bulk/{id}/`. */
31
+ export interface BulkBatchDetail extends BulkBatch {
32
+ provider?: string;
33
+ applications?: unknown[];
34
+ web_applications?: unknown[];
35
+ sender?: string;
36
+ template?: unknown[];
37
+ subject?: string;
38
+ messages?: unknown[];
39
+ /** ISO-8601 date-time string. */
40
+ scheduled_at?: string | null;
41
+ recipients?: BulkRecipient[];
42
+ }
43
+ /** Body of `GET /api/v1/bulk/recipient/{id}/`. */
44
+ export interface BulkRecipientDetail {
45
+ id: number;
46
+ file_name?: string;
47
+ status?: string;
48
+ channel?: string;
49
+ provider?: string;
50
+ application?: string;
51
+ web_app?: string;
52
+ sender?: string;
53
+ template?: string;
54
+ subject?: string;
55
+ messages?: string;
56
+ /** ISO-8601 date-time string. */
57
+ created_at?: string | null;
58
+ /** ISO-8601 date-time string. */
59
+ scheduled_at?: string | null;
60
+ /** ISO-8601 date-time string. */
61
+ sent_at?: string | null;
62
+ }
63
+ /** One saved CSV listed by `GET /api/v1/bulk/files/`. */
64
+ export interface BulkFile {
65
+ /** Saved filename — pass as `bulk_file` to {@link Bulk.send}. */
66
+ name: string;
67
+ size: number;
68
+ /** ISO-8601 date-time string. */
69
+ modified_at: string;
70
+ }
71
+ /** Body of `GET /api/v1/bulk/files/`. */
72
+ export interface BulkFileList {
73
+ count: number;
74
+ results: BulkFile[];
75
+ }
76
+ /** 201 body of `POST /api/v1/bulk/files/`. */
77
+ export interface BulkFileUpload {
78
+ /** UUID-based saved filename; pass as `bulk_file` to {@link Bulk.send}. */
79
+ name: string;
80
+ original_filename: string;
81
+ size: number;
82
+ /** ISO-8601 date-time string. */
83
+ modified_at: string;
84
+ }
85
+ /** Success body of `POST /api/v1/bulk/send/`. */
86
+ export interface BulkSendResult {
87
+ ok: number;
88
+ message: string;
89
+ bulk_id: number;
90
+ queued: number;
91
+ failed: number;
92
+ filename: string;
93
+ }
94
+ /** Parameters for {@link Bulk.send} (`POST /api/v1/bulk/send/`). */
95
+ export interface BulkSendParams {
96
+ /**
97
+ * Inline recipient rows (each a column->value map, e.g.
98
+ * `{client_id, channel}`). Exactly one of `recipients` / `bulk_file` is
99
+ * required — enforced client-side.
100
+ */
101
+ recipients?: Array<Record<string, unknown>> | null;
102
+ /**
103
+ * Saved CSV name from {@link BulkFiles.upload} / {@link BulkFiles.list}.
104
+ * Exactly one of `recipients` / `bulk_file` is required.
105
+ */
106
+ bulk_file?: string | null;
107
+ /** Channel(s) to send on, e.g. `"sms"` or `"sms,whatsapp"`. */
108
+ channel?: string | null;
109
+ /** Message text (when not using a stored template). */
110
+ message?: string | null;
111
+ /** Stored-template slug. */
112
+ template?: string | null;
113
+ /** Email subject. */
114
+ subject?: string | null;
115
+ /** Sender override (honoured only by providers that support it). */
116
+ sender?: string | null;
117
+ /** Client-group slug to also target. */
118
+ group?: string | null;
119
+ /** Push: mobile application slug. */
120
+ application?: string | null;
121
+ /** Web push: web application slug. */
122
+ web_application?: string | null;
123
+ /** Template language, e.g. `"en"`, `"ar"`. */
124
+ language?: string | null;
125
+ /** Attachment references sent with the batch. */
126
+ files?: string[] | null;
127
+ /** Human label for the batch. */
128
+ name?: string | null;
129
+ /** Expire undelivered messages. */
130
+ expire?: boolean | null;
131
+ /** Drop duplicate recipients before sending. */
132
+ remove_duplicates?: boolean | null;
133
+ /** ISO-8601 date-time to schedule the batch for. */
134
+ scheduled_at?: string | null;
135
+ /** IANA timezone for `scheduled_at`, e.g. `"Asia/Kuwait"`. */
136
+ timezone?: string | null;
137
+ /** Query param: provider override, e.g. `"meta_cloud"`. */
138
+ provider?: string | null;
139
+ /** Query param: WhatsApp template name. */
140
+ whatsapp_template?: string | null;
141
+ /** Query param: WhatsApp template language. */
142
+ whatsapp_template_language?: string | null;
143
+ /** Query param: WhatsApp template variables (serialized). */
144
+ whatsapp_template_variables?: string | null;
145
+ }
146
+ /** Raw CSV content accepted by {@link BulkFiles.upload}. */
147
+ export type BulkFileContent = string | Uint8Array;
148
+ /**
149
+ * File input accepted by {@link BulkFiles.upload}: raw content (`string`,
150
+ * `Uint8Array`/`Buffer`) or a `{filename, content}` pair.
151
+ */
152
+ export type BulkFileInput = BulkFileContent | {
153
+ filename?: string;
154
+ content: BulkFileContent;
155
+ };
156
+ /** Options for {@link BulkFiles.upload}. */
157
+ export interface BulkFileUploadOptions {
158
+ /** Overrides the filename sent in the multipart part. */
159
+ filename?: string | null;
160
+ }
161
+ //# sourceMappingURL=bulk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk.d.ts","sourceRoot":"","sources":["../../src/types/bulk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Types for the Bulk resource.
3
+ *
4
+ * Field names mirror the wire format exactly (snake_case) and date-times are
5
+ * ISO-8601 strings — this SDK performs no casing or date transformation.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=bulk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk.js","sourceRoot":"","sources":["../../src/types/bulk.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}