@izapai/sdk 0.0.0 → 0.4.1

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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +173 -1
  3. package/dist/client.d.ts +20 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +41 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/errors.d.ts +41 -0
  8. package/dist/errors.d.ts.map +1 -0
  9. package/dist/errors.js +67 -0
  10. package/dist/errors.js.map +1 -0
  11. package/dist/generated/client/client.gen.d.ts +3 -0
  12. package/dist/generated/client/client.gen.d.ts.map +1 -0
  13. package/dist/generated/client/client.gen.js +217 -0
  14. package/dist/generated/client/client.gen.js.map +1 -0
  15. package/dist/generated/client/index.d.ts +11 -0
  16. package/dist/generated/client/index.d.ts.map +1 -0
  17. package/dist/generated/client/index.js +7 -0
  18. package/dist/generated/client/index.js.map +1 -0
  19. package/dist/generated/client/types.gen.d.ts +121 -0
  20. package/dist/generated/client/types.gen.d.ts.map +1 -0
  21. package/dist/generated/client/types.gen.js +3 -0
  22. package/dist/generated/client/types.gen.js.map +1 -0
  23. package/dist/generated/client/utils.gen.d.ts +38 -0
  24. package/dist/generated/client/utils.gen.d.ts.map +1 -0
  25. package/dist/generated/client/utils.gen.js +229 -0
  26. package/dist/generated/client/utils.gen.js.map +1 -0
  27. package/dist/generated/client.gen.d.ts +13 -0
  28. package/dist/generated/client.gen.d.ts.map +1 -0
  29. package/dist/generated/client.gen.js +4 -0
  30. package/dist/generated/client.gen.js.map +1 -0
  31. package/dist/generated/core/auth.gen.d.ts +26 -0
  32. package/dist/generated/core/auth.gen.d.ts.map +1 -0
  33. package/dist/generated/core/auth.gen.js +15 -0
  34. package/dist/generated/core/auth.gen.js.map +1 -0
  35. package/dist/generated/core/bodySerializer.gen.d.ts +26 -0
  36. package/dist/generated/core/bodySerializer.gen.d.ts.map +1 -0
  37. package/dist/generated/core/bodySerializer.gen.js +58 -0
  38. package/dist/generated/core/bodySerializer.gen.js.map +1 -0
  39. package/dist/generated/core/params.gen.d.ts +44 -0
  40. package/dist/generated/core/params.gen.d.ts.map +1 -0
  41. package/dist/generated/core/params.gen.js +110 -0
  42. package/dist/generated/core/params.gen.js.map +1 -0
  43. package/dist/generated/core/pathSerializer.gen.d.ts +34 -0
  44. package/dist/generated/core/pathSerializer.gen.d.ts.map +1 -0
  45. package/dist/generated/core/pathSerializer.gen.js +107 -0
  46. package/dist/generated/core/pathSerializer.gen.js.map +1 -0
  47. package/dist/generated/core/queryKeySerializer.gen.d.ts +19 -0
  48. package/dist/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  49. package/dist/generated/core/queryKeySerializer.gen.js +93 -0
  50. package/dist/generated/core/queryKeySerializer.gen.js.map +1 -0
  51. package/dist/generated/core/serverSentEvents.gen.d.ts +72 -0
  52. package/dist/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  53. package/dist/generated/core/serverSentEvents.gen.js +133 -0
  54. package/dist/generated/core/serverSentEvents.gen.js.map +1 -0
  55. package/dist/generated/core/types.gen.d.ts +84 -0
  56. package/dist/generated/core/types.gen.d.ts.map +1 -0
  57. package/dist/generated/core/types.gen.js +3 -0
  58. package/dist/generated/core/types.gen.js.map +1 -0
  59. package/dist/generated/core/utils.gen.d.ts +20 -0
  60. package/dist/generated/core/utils.gen.d.ts.map +1 -0
  61. package/dist/generated/core/utils.gen.js +88 -0
  62. package/dist/generated/core/utils.gen.js.map +1 -0
  63. package/dist/generated/index.d.ts +3 -0
  64. package/dist/generated/index.d.ts.map +1 -0
  65. package/dist/generated/index.js +3 -0
  66. package/dist/generated/index.js.map +1 -0
  67. package/dist/generated/sdk.gen.d.ts +474 -0
  68. package/dist/generated/sdk.gen.d.ts.map +1 -0
  69. package/dist/generated/sdk.gen.js +1035 -0
  70. package/dist/generated/sdk.gen.js.map +1 -0
  71. package/dist/generated/types.gen.d.ts +6277 -0
  72. package/dist/generated/types.gen.d.ts.map +1 -0
  73. package/dist/generated/types.gen.js +3 -0
  74. package/dist/generated/types.gen.js.map +1 -0
  75. package/dist/index.d.ts +8 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +7 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/retry.d.ts +18 -0
  80. package/dist/retry.d.ts.map +1 -0
  81. package/dist/retry.js +84 -0
  82. package/dist/retry.js.map +1 -0
  83. package/dist/version.d.ts +2 -0
  84. package/dist/version.d.ts.map +1 -0
  85. package/dist/version.js +2 -0
  86. package/dist/version.js.map +1 -0
  87. package/dist/webhooks.d.ts +127 -0
  88. package/dist/webhooks.d.ts.map +1 -0
  89. package/dist/webhooks.js +153 -0
  90. package/dist/webhooks.js.map +1 -0
  91. package/package.json +58 -3
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 iZap
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1 +1,173 @@
1
- Placeholder package. Install @izapai/sdk@0.3.0 or later.
1
+ # @izapai/sdk
2
+
3
+ TypeScript SDK for the [iZap](https://izap.ai) REST API: WhatsApp conversations,
4
+ message templates, bulk transmissions, business settings and outbound webhooks.
5
+
6
+ - Typed methods for every public operation, generated from iZap's public OpenAPI schema.
7
+ - Personal-access-token auth, automatic retries with backoff, and typed errors.
8
+ - `webhooks.verify()` for iZap's webhook signatures.
9
+
10
+ It is built for server-side use on Node.js 20 or later and ships as ESM with type
11
+ declarations. Full API reference: [devs.izap.ai](https://devs.izap.ai).
12
+
13
+ ## Install
14
+
15
+ ```bash
16
+ npm install @izapai/sdk
17
+ ```
18
+
19
+ ## Authenticate
20
+
21
+ Create a personal access token in the iZap dashboard under **User Settings → API
22
+ Keys**. API keys are available on plans that include the REST API. Tokens start with
23
+ `izap_pat_` and act as you, so keep them on the server and out of source control.
24
+
25
+ ```ts
26
+ import { createClient } from "@izapai/sdk";
27
+
28
+ const izap = createClient({
29
+ token: process.env.IZAP_TOKEN!, // izap_pat_…
30
+ businessId: process.env.IZAP_BUSINESS_ID, // sent as the `business-id` header
31
+ });
32
+ ```
33
+
34
+ `businessId` is optional. Most operations act on one business, and the header can
35
+ also be set per call: `izap.listWhatsAppTemplates({ headers: { "business-id": id } })`.
36
+ `izap.introspectToken()` tells you which user and business a token resolves to.
37
+
38
+ ## Send a message
39
+
40
+ ```ts
41
+ const { data: page } = await izap.listCurrentBusinessChats({
42
+ query: { page_size: 20 },
43
+ });
44
+ const chat = page.chats[0]!;
45
+
46
+ const { data: sent } = await izap.sendChatMessage({
47
+ path: { chat_id: chat.id },
48
+ body: { content: "Olá! Seu pedido já saiu para entrega." },
49
+ });
50
+ ```
51
+
52
+ The message is sent as a human agent, so the assistant does not reply to it. Outside
53
+ WhatsApp's 24-hour customer-service window, only an approved template can reach the
54
+ customer: use `izap.sendChatTemplateMessage()`.
55
+
56
+ ## List templates
57
+
58
+ ```ts
59
+ const { data } = await izap.listWhatsAppTemplates({
60
+ query: { status: "approved" },
61
+ });
62
+ for (const template of data.templates) {
63
+ console.log(template.name, template.language);
64
+ }
65
+ ```
66
+
67
+ Every method resolves to `{ data, request, response }`, so response headers are
68
+ available too.
69
+
70
+ ## Verify a webhook
71
+
72
+ iZap signs every webhook delivery (see
73
+ [Webhooks](https://devs.izap.ai/en/api-reference/webhooks)). Verify the **raw** request
74
+ body before trusting it; a body your framework has already parsed and re-serialized
75
+ no longer matches the signature.
76
+
77
+ ```ts
78
+ import { webhooks, WebhookVerificationError } from "@izapai/sdk";
79
+
80
+ // Express: app.post("/hooks/izap", express.raw({ type: "application/json" }), handler)
81
+ function handler(req, res) {
82
+ try {
83
+ const event = webhooks.verify({
84
+ payload: req.body, // Buffer or string: the raw body
85
+ headers: req.headers,
86
+ secret: process.env.IZAP_WEBHOOK_SECRET!, // izap_whsec_…
87
+ });
88
+ // event.id is stable across retries and resends: dedupe on it.
89
+ if (event.data.event === "message.received") {
90
+ console.log(event.data.message.text);
91
+ }
92
+ res.sendStatus(204);
93
+ } catch (error) {
94
+ if (error instanceof WebhookVerificationError) {
95
+ return res.status(400).send(error.code);
96
+ }
97
+ throw error;
98
+ }
99
+ }
100
+ ```
101
+
102
+ `verify()` requires the `izap-webhook-signature-v2` HMAC by default — it covers the
103
+ delivery id as well as the timestamp and body, closing a replay gap that v1 alone
104
+ has. Pass `allowV1: true` to accept a v1-only `izap-webhook-signature` header when
105
+ a delivery doesn't carry v2 (senders from before v2 shipped). Either check is
106
+ constant-time and rejects a delivery whose `izap-webhook-timestamp` is more than
107
+ `toleranceSec` (default 300) seconds from now. It throws `WebhookVerificationError` with a `code` of
108
+ `missing_header`, `invalid_timestamp`, `timestamp_out_of_tolerance`,
109
+ `invalid_signature` or `invalid_payload`. `webhooks.sign()` and `webhooks.signV2()`
110
+ produce a valid v1 or v2 signature for a payload, which helps when testing a receiver
111
+ locally.
112
+
113
+ ## Errors
114
+
115
+ Any non-2xx response throws `IzapApiError`:
116
+
117
+ ```ts
118
+ import { IzapApiError } from "@izapai/sdk";
119
+
120
+ try {
121
+ await izap.createWhatsAppTemplate({ body: template });
122
+ } catch (error) {
123
+ if (error instanceof IzapApiError) {
124
+ error.status; // e.g. 403 or 422
125
+ error.code; // a machine-readable code, when the API sends one
126
+ error.detail; // the body's `detail`: a string, an object, or validation issues
127
+ error.headers; // response headers
128
+ }
129
+ }
130
+ ```
131
+
132
+ Connection failures surface as the underlying `fetch` `TypeError`, and timeouts as a
133
+ `DOMException` named `TimeoutError`.
134
+
135
+ ## Retries and timeouts
136
+
137
+ | Option | Default | Meaning |
138
+ | ------------ | --------------------- | -------------------------------------------------- |
139
+ | `token` | required | Personal access token (`izap_pat_…`) |
140
+ | `businessId` | none | Default `business-id` header |
141
+ | `baseUrl` | `https://api.izap.ai` | API origin |
142
+ | `fetch` | `globalThis.fetch` | Custom fetch implementation |
143
+ | `maxRetries` | `2` | Retries after the first attempt |
144
+ | `timeoutMs` | `30000` | Per-attempt timeout, until response headers arrive |
145
+
146
+ Only idempotent requests (`GET`, `HEAD`, `OPTIONS`, `PUT`, `DELETE`) are retried, on
147
+ `429`, `502`, `503`, `504`, connection failures and timeouts. A `Retry-After` header
148
+ of up to 60 seconds is honoured; otherwise the delay backs off exponentially from
149
+ 0.5 s with jitter, up to 8 s. `POST` and `PATCH` are never retried, so a send is
150
+ never duplicated.
151
+
152
+ ## Development
153
+
154
+ The client under `src/generated/` is generated with
155
+ [`@hey-api/openapi-ts`](https://heyapi.dev) from `openapi/izap-public.json`, a copy of
156
+ iZap's public OpenAPI schema (the one served at `/api/v1/openapi.json`). The
157
+ hand-written layer in `src/` adds auth, retries, errors and webhooks.
158
+
159
+ ```bash
160
+ npm ci
161
+ npm run sync:schema # refresh openapi/izap-public.json (IZAP_OPENAPI_INPUT=<file|url> to pick the source)
162
+ npm run generate # regenerate src/generated/ (IZAP_OPENAPI_INPUT overrides the input)
163
+ npm run check:generated # fail if src/generated/ drifted from the schema
164
+ npm test # type-check (including examples/) and run the tests
165
+ npm run build # emit dist/
166
+ ```
167
+
168
+ Generating needs Node.js 22.18 or later; the published package runs on Node.js 20+.
169
+ Runnable samples live in [`examples/`](examples).
170
+
171
+ ## License
172
+
173
+ [MIT](LICENSE)
@@ -0,0 +1,20 @@
1
+ import { IzapApi } from "./generated/sdk.gen.js";
2
+ export declare const DEFAULT_BASE_URL = "https://api.izap.ai";
3
+ export interface IzapClientOptions {
4
+ /** Personal access token (`izap_pat_…`), sent as `Authorization: Bearer <token>`. */
5
+ token: string;
6
+ /** Default business for every request, sent as the `business-id` header. */
7
+ businessId?: string;
8
+ /** Defaults to https://api.izap.ai. */
9
+ baseUrl?: string;
10
+ /** Custom fetch implementation. Defaults to the global `fetch`. */
11
+ fetch?: typeof fetch;
12
+ /** Retries for idempotent requests on 429/502/503/504 and connection failures. Defaults to 2. */
13
+ maxRetries?: number;
14
+ /** Per-attempt timeout until response headers arrive. Defaults to 30000. */
15
+ timeoutMs?: number;
16
+ }
17
+ /** Every public iZap API operation, as a method. */
18
+ export type IzapClient = IzapApi;
19
+ export declare function createClient(options: IzapClientOptions): IzapClient;
20
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAMjD,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oDAAoD;AACpD,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC,wBAAgB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAiDnE"}
package/dist/client.js ADDED
@@ -0,0 +1,41 @@
1
+ import { createClient as createFetchClient, createConfig, } from "./generated/client/index.js";
2
+ import { IzapApi } from "./generated/sdk.gen.js";
3
+ import { IzapApiError } from "./errors.js";
4
+ import { createRetryingFetch } from "./retry.js";
5
+ import { VERSION } from "./version.js";
6
+ export const DEFAULT_BASE_URL = "https://api.izap.ai";
7
+ export function createClient(options) {
8
+ const { token, businessId, baseUrl = DEFAULT_BASE_URL, maxRetries = 2, timeoutMs = 30_000, } = options;
9
+ if (typeof token !== "string" || token.trim() === "") {
10
+ throw new TypeError("createClient: `token` is required (a personal access token, izap_pat_…).");
11
+ }
12
+ if (!Number.isInteger(maxRetries) || maxRetries < 0) {
13
+ throw new TypeError("createClient: `maxRetries` must be an integer >= 0.");
14
+ }
15
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
16
+ throw new TypeError("createClient: `timeoutMs` must be a positive number.");
17
+ }
18
+ const baseFetch = options.fetch ?? ((input, init) => globalThis.fetch(input, init));
19
+ const headers = {
20
+ "User-Agent": `izap-sdk-typescript/${VERSION}`,
21
+ };
22
+ if (businessId)
23
+ headers["business-id"] = businessId;
24
+ const client = createFetchClient(createConfig({
25
+ baseUrl: baseUrl.replace(/\/+$/, ""),
26
+ throwOnError: true,
27
+ headers,
28
+ auth: (auth) => (auth.scheme === "bearer" ? token : undefined),
29
+ fetch: createRetryingFetch({ fetch: baseFetch, maxRetries, timeoutMs }),
30
+ }));
31
+ client.interceptors.error.use((error, response, request) => response
32
+ ? new IzapApiError({
33
+ status: response.status,
34
+ body: error,
35
+ headers: response.headers,
36
+ request: request ? `${request.method} ${request.url}` : undefined,
37
+ })
38
+ : error);
39
+ return new IzapApi({ client });
40
+ }
41
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,iBAAiB,EACjC,YAAY,GACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAoBtD,MAAM,UAAU,YAAY,CAAC,OAA0B;IACrD,MAAM,EACJ,KAAK,EACL,UAAU,EACV,OAAO,GAAG,gBAAgB,EAC1B,UAAU,GAAG,CAAC,EACd,SAAS,GAAG,MAAM,GACnB,GAAG,OAAO,CAAC;IACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,SAAS,CACjB,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,GACb,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAA2B;QACtC,YAAY,EAAE,uBAAuB,OAAO,EAAE;KAC/C,CAAC;IACF,IAAI,UAAU;QAAE,OAAO,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;IAEpD,MAAM,MAAM,GAAG,iBAAiB,CAC9B,YAAY,CAAgB;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,YAAY,EAAE,IAAI;QAClB,OAAO;QACP,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,KAAK,EAAE,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;KACxE,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CACzD,QAAQ;QACN,CAAC,CAAC,IAAI,YAAY,CAAC;YACf,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC;QACJ,CAAC,CAAC,KAAK,CACV,CAAC;IAEF,OAAO,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,41 @@
1
+ /** One entry of a FastAPI request-validation error (HTTP 422). */
2
+ export interface ValidationIssue {
3
+ loc: Array<string | number>;
4
+ msg: string;
5
+ type: string;
6
+ [key: string]: unknown;
7
+ }
8
+ /** A structured `detail`, e.g. `{ "code": "plan_limit_event_webhooks", "message": "…" }`. */
9
+ export interface ErrorDetailObject {
10
+ code?: string;
11
+ message?: string;
12
+ [key: string]: unknown;
13
+ }
14
+ /**
15
+ * The `detail` of an iZap error body (`{"detail": …}`): a plain message, a
16
+ * structured object carrying a machine-readable `code`, or a list of validation issues.
17
+ */
18
+ export type ErrorDetail = string | ErrorDetailObject | ValidationIssue[];
19
+ /** Thrown for every non-2xx response from the iZap API. */
20
+ export declare class IzapApiError extends Error {
21
+ readonly name = "IzapApiError";
22
+ /** HTTP status code. */
23
+ readonly status: number;
24
+ /** Machine-readable error code, from `detail.code` or a top-level `code`, when present. */
25
+ readonly code: string | undefined;
26
+ /** The `detail` field of the error body, when the body had one. */
27
+ readonly detail: ErrorDetail | undefined;
28
+ /** The parsed JSON body, or the raw text when the body was not JSON. */
29
+ readonly body: unknown;
30
+ /** Response headers, e.g. `retry-after`. */
31
+ readonly headers: Headers;
32
+ /** `METHOD url` of the request that failed. */
33
+ readonly request: string | undefined;
34
+ constructor(init: {
35
+ status: number;
36
+ body: unknown;
37
+ headers?: Headers;
38
+ request?: string;
39
+ });
40
+ }
41
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,6FAA6F;AAC7F,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,iBAAiB,GAAG,eAAe,EAAE,CAAC;AAEzE,2DAA2D;AAC3D,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAkB,IAAI,kBAAkB;IACxC,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEzB,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;CAcF"}
package/dist/errors.js ADDED
@@ -0,0 +1,67 @@
1
+ /** Thrown for every non-2xx response from the iZap API. */
2
+ export class IzapApiError extends Error {
3
+ name = "IzapApiError";
4
+ /** HTTP status code. */
5
+ status;
6
+ /** Machine-readable error code, from `detail.code` or a top-level `code`, when present. */
7
+ code;
8
+ /** The `detail` field of the error body, when the body had one. */
9
+ detail;
10
+ /** The parsed JSON body, or the raw text when the body was not JSON. */
11
+ body;
12
+ /** Response headers, e.g. `retry-after`. */
13
+ headers;
14
+ /** `METHOD url` of the request that failed. */
15
+ request;
16
+ constructor(init) {
17
+ const detail = readDetail(init.body);
18
+ const code = readCode(init.body, detail);
19
+ const summary = summarize(init.body, detail) ?? `HTTP ${init.status}`;
20
+ super(`iZap API error ${init.status}${code ? ` (${code})` : ""}: ${summary}`);
21
+ this.status = init.status;
22
+ this.code = code;
23
+ this.detail = detail;
24
+ this.body = init.body;
25
+ this.headers = init.headers ?? new Headers();
26
+ this.request = init.request;
27
+ }
28
+ }
29
+ function isRecord(value) {
30
+ return typeof value === "object" && value !== null && !Array.isArray(value);
31
+ }
32
+ function readDetail(body) {
33
+ if (!isRecord(body))
34
+ return undefined;
35
+ const { detail } = body;
36
+ if (typeof detail === "string" || Array.isArray(detail) || isRecord(detail)) {
37
+ return detail;
38
+ }
39
+ return undefined;
40
+ }
41
+ function readCode(body, detail) {
42
+ if (isRecord(detail) && typeof detail.code === "string")
43
+ return detail.code;
44
+ if (isRecord(body) && typeof body.code === "string")
45
+ return body.code;
46
+ return undefined;
47
+ }
48
+ function summarize(body, detail) {
49
+ if (typeof detail === "string")
50
+ return detail;
51
+ if (Array.isArray(detail)) {
52
+ return detail
53
+ .map((issue) => issue?.loc ? `${issue.loc.join(".")}: ${issue.msg}` : String(issue))
54
+ .join("; ");
55
+ }
56
+ if (isRecord(detail)) {
57
+ return typeof detail.message === "string"
58
+ ? detail.message
59
+ : JSON.stringify(detail);
60
+ }
61
+ if (isRecord(body) && typeof body.message === "string")
62
+ return body.message;
63
+ if (typeof body === "string" && body.trim())
64
+ return body.trim().slice(0, 500);
65
+ return undefined;
66
+ }
67
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Client, Config } from './types.gen.js';
2
+ export declare const createClient: (config?: Config) => Client;
3
+ //# sourceMappingURL=client.gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.gen.d.ts","sourceRoot":"","sources":["../../../src/generated/client/client.gen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAA0C,MAAM,gBAAgB,CAAC;AAgB7F,eAAO,MAAM,YAAY,GAAI,SAAQ,MAAW,KAAG,MA+PlD,CAAC"}
@@ -0,0 +1,217 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ import { createSseClient } from '../core/serverSentEvents.gen.js';
3
+ import { getValidRequestBody } from '../core/utils.gen.js';
4
+ import { buildUrl, createConfig, createInterceptors, getParseAs, mergeConfigs, mergeHeaders, setAuthParams, } from './utils.gen.js';
5
+ export const createClient = (config = {}) => {
6
+ let _config = mergeConfigs(createConfig(), config);
7
+ const getConfig = () => ({ ..._config });
8
+ const setConfig = (config) => {
9
+ _config = mergeConfigs(_config, config);
10
+ return getConfig();
11
+ };
12
+ const interceptors = createInterceptors();
13
+ const beforeRequest = async (options) => {
14
+ const opts = {
15
+ ..._config,
16
+ ...options,
17
+ fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
18
+ headers: mergeHeaders(_config.headers, options.headers),
19
+ serializedBody: undefined,
20
+ };
21
+ if (opts.security) {
22
+ await setAuthParams(opts);
23
+ }
24
+ if (opts.requestValidator) {
25
+ await opts.requestValidator(opts);
26
+ }
27
+ if (opts.body !== undefined && opts.bodySerializer) {
28
+ opts.serializedBody = opts.bodySerializer(opts.body);
29
+ }
30
+ // remove Content-Type header if body is empty to avoid sending invalid requests
31
+ if (opts.body === undefined || opts.serializedBody === '') {
32
+ opts.headers.delete('Content-Type');
33
+ }
34
+ const resolvedOpts = opts;
35
+ const url = buildUrl(resolvedOpts);
36
+ return { opts: resolvedOpts, url };
37
+ };
38
+ const request = async (options) => {
39
+ const throwOnError = options.throwOnError ?? _config.throwOnError;
40
+ const responseStyle = options.responseStyle ?? _config.responseStyle;
41
+ let request;
42
+ let response;
43
+ try {
44
+ const { opts, url } = await beforeRequest(options);
45
+ const requestInit = {
46
+ redirect: 'follow',
47
+ ...opts,
48
+ body: getValidRequestBody(opts),
49
+ };
50
+ request = new Request(url, requestInit);
51
+ for (const fn of interceptors.request.fns) {
52
+ if (fn) {
53
+ request = await fn(request, opts);
54
+ }
55
+ }
56
+ // fetch must be assigned here, otherwise it would throw the error:
57
+ // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
58
+ const _fetch = opts.fetch;
59
+ response = await _fetch(request);
60
+ for (const fn of interceptors.response.fns) {
61
+ if (fn) {
62
+ response = await fn(response, request, opts);
63
+ }
64
+ }
65
+ const result = {
66
+ request,
67
+ response,
68
+ };
69
+ if (response.ok) {
70
+ const parseAs = (opts.parseAs === 'auto'
71
+ ? getParseAs(response.headers.get('Content-Type'))
72
+ : opts.parseAs) ?? 'json';
73
+ if (response.status === 204 || response.headers.get('Content-Length') === '0') {
74
+ let emptyData;
75
+ switch (parseAs) {
76
+ case 'arrayBuffer':
77
+ case 'blob':
78
+ case 'text':
79
+ emptyData = await response[parseAs]();
80
+ break;
81
+ case 'formData':
82
+ emptyData = new FormData();
83
+ break;
84
+ case 'stream':
85
+ emptyData = response.body;
86
+ break;
87
+ case 'json':
88
+ default:
89
+ emptyData = {};
90
+ break;
91
+ }
92
+ return opts.responseStyle === 'data'
93
+ ? emptyData
94
+ : {
95
+ data: emptyData,
96
+ ...result,
97
+ };
98
+ }
99
+ let data;
100
+ switch (parseAs) {
101
+ case 'arrayBuffer':
102
+ case 'blob':
103
+ case 'formData':
104
+ case 'text':
105
+ data = await response[parseAs]();
106
+ break;
107
+ case 'json': {
108
+ // Some servers return 200 with no Content-Length and empty body.
109
+ // response.json() would throw; read as text and parse if non-empty.
110
+ const text = await response.text();
111
+ data = text ? JSON.parse(text) : {};
112
+ break;
113
+ }
114
+ case 'stream':
115
+ return opts.responseStyle === 'data'
116
+ ? response.body
117
+ : {
118
+ data: response.body,
119
+ ...result,
120
+ };
121
+ }
122
+ if (parseAs === 'json') {
123
+ if (opts.responseValidator) {
124
+ await opts.responseValidator(data);
125
+ }
126
+ if (opts.responseTransformer) {
127
+ data = await opts.responseTransformer(data);
128
+ }
129
+ }
130
+ return opts.responseStyle === 'data'
131
+ ? data
132
+ : {
133
+ data,
134
+ ...result,
135
+ };
136
+ }
137
+ const textError = await response.text();
138
+ let jsonError;
139
+ try {
140
+ jsonError = JSON.parse(textError);
141
+ }
142
+ catch {
143
+ // noop
144
+ }
145
+ throw jsonError ?? textError;
146
+ }
147
+ catch (error) {
148
+ let finalError = error;
149
+ for (const fn of interceptors.error.fns) {
150
+ if (fn) {
151
+ finalError = await fn(finalError, response, request, options);
152
+ }
153
+ }
154
+ finalError = finalError || {};
155
+ if (throwOnError) {
156
+ throw finalError;
157
+ }
158
+ // TODO: we probably want to return error and improve types
159
+ return responseStyle === 'data'
160
+ ? undefined
161
+ : {
162
+ error: finalError,
163
+ request,
164
+ response,
165
+ };
166
+ }
167
+ };
168
+ const makeMethodFn = (method) => (options) => request({ ...options, method });
169
+ const makeSseFn = (method) => async (options) => {
170
+ const { opts, url } = await beforeRequest(options);
171
+ return createSseClient({
172
+ ...opts,
173
+ body: opts.body,
174
+ method,
175
+ onRequest: async (url, init) => {
176
+ let request = new Request(url, init);
177
+ for (const fn of interceptors.request.fns) {
178
+ if (fn) {
179
+ request = await fn(request, opts);
180
+ }
181
+ }
182
+ return request;
183
+ },
184
+ serializedBody: getValidRequestBody(opts),
185
+ url,
186
+ });
187
+ };
188
+ const _buildUrl = (options) => buildUrl({ ..._config, ...options });
189
+ return {
190
+ buildUrl: _buildUrl,
191
+ connect: makeMethodFn('CONNECT'),
192
+ delete: makeMethodFn('DELETE'),
193
+ get: makeMethodFn('GET'),
194
+ getConfig,
195
+ head: makeMethodFn('HEAD'),
196
+ interceptors,
197
+ options: makeMethodFn('OPTIONS'),
198
+ patch: makeMethodFn('PATCH'),
199
+ post: makeMethodFn('POST'),
200
+ put: makeMethodFn('PUT'),
201
+ request,
202
+ setConfig,
203
+ sse: {
204
+ connect: makeSseFn('CONNECT'),
205
+ delete: makeSseFn('DELETE'),
206
+ get: makeSseFn('GET'),
207
+ head: makeSseFn('HEAD'),
208
+ options: makeSseFn('OPTIONS'),
209
+ patch: makeSseFn('PATCH'),
210
+ post: makeSseFn('POST'),
211
+ put: makeSseFn('PUT'),
212
+ trace: makeSseFn('TRACE'),
213
+ },
214
+ trace: makeMethodFn('TRACE'),
215
+ };
216
+ };
217
+ //# sourceMappingURL=client.gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.gen.js","sourceRoot":"","sources":["../../../src/generated/client/client.gen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type { Auth } from '../core/auth.gen.js';
2
+ export type { QuerySerializerOptions } from '../core/bodySerializer.gen.js';
3
+ export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from '../core/bodySerializer.gen.js';
4
+ export { buildClientParams } from '../core/params.gen.js';
5
+ export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen.js';
6
+ export type { ServerSentEventsResult } from '../core/serverSentEvents.gen.js';
7
+ export type { ClientMeta } from '../core/types.gen.js';
8
+ export { createClient } from './client.gen.js';
9
+ export type { Client, ClientOptions, Config, CreateClientConfig, Options, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from './types.gen.js';
10
+ export { createConfig, mergeHeaders } from './utils.gen.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/client/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,MAAM,EACN,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from '../core/bodySerializer.gen.js';
3
+ export { buildClientParams } from '../core/params.gen.js';
4
+ export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen.js';
5
+ export { createClient } from './client.gen.js';
6
+ export { createConfig, mergeHeaders } from './utils.gen.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generated/client/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAIrD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAa/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}