@codespar/sdk 0.16.16 → 0.16.19

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 (41) hide show
  1. package/README.md +38 -0
  2. package/dist/__tests__/api-client.test.js +58 -1
  3. package/dist/__tests__/api-client.test.js.map +1 -1
  4. package/dist/__tests__/payables.test.d.ts +2 -0
  5. package/dist/__tests__/payables.test.d.ts.map +1 -0
  6. package/dist/__tests__/payables.test.js +212 -0
  7. package/dist/__tests__/payables.test.js.map +1 -0
  8. package/dist/__tests__/shop-purchases.test.d.ts +2 -0
  9. package/dist/__tests__/shop-purchases.test.d.ts.map +1 -0
  10. package/dist/__tests__/shop-purchases.test.js +76 -0
  11. package/dist/__tests__/shop-purchases.test.js.map +1 -0
  12. package/dist/api/client.d.ts.map +1 -1
  13. package/dist/api/client.js +11 -3
  14. package/dist/api/client.js.map +1 -1
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +13 -2
  17. package/dist/errors.js.map +1 -1
  18. package/dist/generated/openapi.d.ts +4775 -894
  19. package/dist/generated/openapi.d.ts.map +1 -1
  20. package/dist/generated/operations.d.ts +109 -1
  21. package/dist/generated/operations.d.ts.map +1 -1
  22. package/dist/generated/operations.js +19 -1
  23. package/dist/generated/operations.js.map +1 -1
  24. package/dist/index.d.ts +20 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +24 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/internal/multipart.d.ts +26 -0
  29. package/dist/internal/multipart.d.ts.map +1 -0
  30. package/dist/internal/multipart.js +97 -0
  31. package/dist/internal/multipart.js.map +1 -0
  32. package/dist/payables.d.ts +57 -0
  33. package/dist/payables.d.ts.map +1 -0
  34. package/dist/payables.js +142 -0
  35. package/dist/payables.js.map +1 -0
  36. package/dist/session.d.ts.map +1 -1
  37. package/dist/session.js +42 -0
  38. package/dist/session.js.map +1 -1
  39. package/dist/types.d.ts +145 -1
  40. package/dist/types.d.ts.map +1 -1
  41. package/package.json +1 -1
package/README.md CHANGED
@@ -170,6 +170,44 @@ For everything the API exposes over REST beyond the session surface, see [REST c
170
170
  | `findTools(session, query)` | Search tools by name or description |
171
171
  | `loop(session, config)` | Run a Complete Loop workflow |
172
172
 
173
+ ## Pay documents and batches
174
+
175
+ `cs.payables` uploads boleto PDFs, Pix QR images and CSV/XLSX lists, builds a
176
+ batch, and pays the exact list you reviewed. Destinations are the ones the
177
+ rail resolved (beneficiary name, masked document), and a bare Pix key never
178
+ sets the amount.
179
+
180
+ ```ts
181
+ import { readFile } from "node:fs/promises";
182
+ import { CodeSpar, payableBatchFromError } from "@codespar/sdk";
183
+
184
+ const cs = new CodeSpar({ apiKey: process.env.CODESPAR_API_KEY });
185
+ const file = await cs.payables.files.upload(await readFile("conta.pdf"), { filename: "conta.pdf" });
186
+ let batch = await cs.payables.batches.create(
187
+ { fileIds: [file.file_id], items: [{ pixKey: "pessoa@example.com", amountMinor: 5000 }] },
188
+ { idempotencyKey: "batch-2026-10-24-001" },
189
+ );
190
+ // Complement what the files did not say, then pay the list you reviewed.
191
+ const missing = batch.items.find((i) => i.missing.includes("amount"));
192
+ if (missing) {
193
+ batch = await cs.payables.batches.updateItem(batch.batch_id, missing.item_id, {
194
+ expectedVersion: batch.version,
195
+ amountMinor: 1990,
196
+ });
197
+ }
198
+ try {
199
+ batch = await cs.payables.batches.pay(batch.batch_id, {
200
+ version: batch.version,
201
+ listHash: batch.list_hash,
202
+ mandateId: "mdt_example",
203
+ });
204
+ } catch (err) {
205
+ const current = payableBatchFromError(err); // 409: the list changed, confirm again
206
+ if (!current) throw err;
207
+ }
208
+ for (const item of batch.items) console.log(item.item_id, item.payment?.state);
209
+ ```
210
+
173
211
  ## REST client generated from the OpenAPI document
174
212
 
175
213
  `cs.api` reaches every operation the API publishes at
@@ -63,7 +63,12 @@ describe("coverage: every operation in the generated table is dispatchable", ()
63
63
  expect(headers.Accept, `${row.method} ${row.path} Accept`).toBe(row.accept);
64
64
  else
65
65
  expect(headers.Accept).toBeUndefined();
66
- if (row.body) {
66
+ if (row.body === "multipart/form-data") {
67
+ // fetch writes the Content-Type with the boundary from the FormData.
68
+ expect(headers["Content-Type"], `${row.method} ${row.path} Content-Type`).toBeUndefined();
69
+ expect(call.init.body).toBeInstanceOf(FormData);
70
+ }
71
+ else if (row.body) {
67
72
  expect(headers["Content-Type"], `${row.method} ${row.path} Content-Type`).toBe(row.body);
68
73
  expect(call.init.body).toBeDefined();
69
74
  }
@@ -149,6 +154,58 @@ describe("request shaping", () => {
149
154
  expect(headers["Content-Type"]).toBe("application/x-www-form-urlencoded");
150
155
  expect(String(calls[0].init.body)).toBe("grant_type=authorization_code&code=code-value");
151
156
  });
157
+ it("sends multipart bodies as FormData so fetch writes the boundary", async () => {
158
+ // Reading the body back through Request yields the boundary and the
159
+ // part bytes fetch would put on the wire.
160
+ const calls = stubFetch(() => json({ id: "doc_example" }, 201));
161
+ const api = client();
162
+ const bytes = new TextEncoder().encode("%PDF-1.7 example");
163
+ await api.request("post", "/v1/payables/documents", {
164
+ body: {
165
+ document: new File([bytes], "conta.pdf", { type: "application/pdf" }),
166
+ actor: "user_example",
167
+ },
168
+ });
169
+ const init = calls[0].init;
170
+ expect(init.headers["Content-Type"]).toBeUndefined();
171
+ const wire = new Request(calls[0].url, { method: "POST", body: init.body });
172
+ expect(wire.headers.get("content-type")).toMatch(/^multipart\/form-data; boundary=/);
173
+ const form = await wire.formData();
174
+ const part = form.get("document");
175
+ expect(part.name).toBe("conta.pdf");
176
+ expect(part.type).toBe("application/pdf");
177
+ expect(new Uint8Array(await part.arrayBuffer())).toEqual(bytes);
178
+ expect(form.get("actor")).toBe("user_example");
179
+ });
180
+ it("turns Buffer, ArrayBuffer and stream parts into file parts", async () => {
181
+ const calls = stubFetch(() => json({}, 201));
182
+ const api = client();
183
+ const { Readable } = await import("node:stream");
184
+ const sources = [
185
+ Buffer.from("buffer bytes"),
186
+ new TextEncoder().encode("buffer bytes").buffer,
187
+ Readable.from([Buffer.from("buffer "), Buffer.from("bytes")]),
188
+ new Blob(["buffer bytes"]).stream(),
189
+ ];
190
+ for (const document of sources) {
191
+ await api.request("post", "/v1/payables/documents", { body: { document } });
192
+ }
193
+ for (const call of calls) {
194
+ const form = await new Request(call.url, { method: "POST", body: call.init.body }).formData();
195
+ const part = form.get("document");
196
+ expect(await part.text()).toBe("buffer bytes");
197
+ expect(part.name).toBe("document");
198
+ }
199
+ expect(calls).toHaveLength(4);
200
+ });
201
+ it("passes a caller-built FormData through untouched", async () => {
202
+ const calls = stubFetch(() => json({}, 201));
203
+ const api = client();
204
+ const form = new FormData();
205
+ form.append("document", new Blob(["x"]), "x.png");
206
+ await api.request("post", "/v1/payables/documents", { body: form });
207
+ expect(calls[0].init.body).toBe(form);
208
+ });
152
209
  it("carries the project scope and per-call header parameters", async () => {
153
210
  const calls = stubFetch();
154
211
  const api = client({ projectId: "prj_abc123DEF456ghi7" });
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../../src/__tests__/api-client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../../src/__tests__/api-client.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=payables.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payables.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/payables.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * `cs.payables`: the wire each call sends to /v1/payables/files and
3
+ * /v1/payables/batches (snake_case, Idempotency-Key, multipart with a
4
+ * boundary), and that a 409 carrying the current batch surfaces as an
5
+ * error the caller can read the new list from, never as a success.
6
+ */
7
+ import { afterEach, describe, expect, it, vi } from "vitest";
8
+ import { Readable } from "node:stream";
9
+ import { CodeSpar, CodesparApiError, payableBatchFromError } from "../index.js";
10
+ const BASE = "https://api.example.test";
11
+ function json(status, body) {
12
+ return new Response(JSON.stringify(body), { status, headers: { "content-type": "application/json" } });
13
+ }
14
+ const BATCH = {
15
+ batch_id: "pbat_example",
16
+ status: "ready",
17
+ version: 3,
18
+ list_hash: "hash_v3",
19
+ currency: "BRL",
20
+ totals: { items: 1, payable_items: 1, excluded: 0, amount_minor: 5000 },
21
+ confirmation: null,
22
+ items: [
23
+ {
24
+ item_id: "pbl_AbCdEfGhIjKlMnOp",
25
+ position: 0,
26
+ origin: { file_id: null, page: null, row: null, kind: "manual" },
27
+ rail: "pix",
28
+ state: "ready",
29
+ missing: [],
30
+ destination: {
31
+ kind: "pix_key",
32
+ display: "***.456.789-**",
33
+ beneficiary_name: "Pessoa de Teste",
34
+ beneficiary_document_masked: "***.456.789-**",
35
+ due_date: null,
36
+ },
37
+ amount_minor: 5000,
38
+ amount_source: "stated_by_person",
39
+ description: "Aluguel",
40
+ reference: null,
41
+ checks: [{ code: "pix_key_resolved", status: "pass", message: "Chave encontrada" }],
42
+ payment: null,
43
+ },
44
+ ],
45
+ created_at: "2026-10-24T12:00:00.000Z",
46
+ source: "api",
47
+ conversation_id: null,
48
+ };
49
+ function client(answer) {
50
+ const seen = [];
51
+ vi.stubGlobal("fetch", async (url, init) => {
52
+ const s = {
53
+ url,
54
+ method: init.method ?? "GET",
55
+ headers: init.headers,
56
+ body: init.body,
57
+ };
58
+ seen.push(s);
59
+ return answer(s);
60
+ });
61
+ const cs = new CodeSpar({ apiKey: "csk_test_example", baseUrl: BASE, projectId: "prj_abc123DEF456ghi7" });
62
+ return { cs, seen };
63
+ }
64
+ afterEach(() => {
65
+ vi.unstubAllGlobals();
66
+ });
67
+ const FILE = {
68
+ file_id: "pfile_example",
69
+ kind: "pdf",
70
+ sha256: "0".repeat(64),
71
+ size_bytes: 16,
72
+ items_found: 1,
73
+ unresolved: 0,
74
+ expires_at: "2026-10-25T12:00:00.000Z",
75
+ };
76
+ async function partOf(s) {
77
+ const req = new Request(s.url, { method: "POST", body: s.body });
78
+ const form = await req.formData();
79
+ return { contentType: req.headers.get("content-type"), file: form.get("file") };
80
+ }
81
+ describe("cs.payables.files.upload", () => {
82
+ it("posts one multipart part named file, with the boundary fetch writes", async () => {
83
+ const { cs, seen } = client(() => json(201, FILE));
84
+ const bytes = new TextEncoder().encode("%PDF-1.7 example");
85
+ const file = await cs.payables.files.upload(new File([bytes], "conta.pdf", { type: "application/pdf" }));
86
+ expect(file).toEqual(FILE);
87
+ expect(seen[0].url).toBe(`${BASE}/v1/payables/files`);
88
+ expect(seen[0].method).toBe("POST");
89
+ expect(seen[0].headers["Content-Type"]).toBeUndefined();
90
+ expect(seen[0].headers.Authorization).toBe("Bearer csk_test_example");
91
+ expect(seen[0].headers["x-codespar-project"]).toBe("prj_abc123DEF456ghi7");
92
+ const { contentType, file: part } = await partOf(seen[0]);
93
+ expect(contentType).toMatch(/^multipart\/form-data; boundary=/);
94
+ expect(part.name).toBe("conta.pdf");
95
+ expect(part.type).toBe("application/pdf");
96
+ expect(new Uint8Array(await part.arrayBuffer())).toEqual(bytes);
97
+ });
98
+ it("accepts a Buffer, a Node stream and a web stream, with filename and type from the options", async () => {
99
+ const { cs, seen } = client(() => json(201, FILE));
100
+ await cs.payables.files.upload(Buffer.from("a,b\n1,2\n"), { filename: "lote.csv", contentType: "text/csv" });
101
+ await cs.payables.files.upload(Readable.from([Buffer.from("a,b\n"), Buffer.from("1,2\n")]), {
102
+ filename: "lote.csv",
103
+ });
104
+ await cs.payables.files.upload(new Blob(["a,b\n1,2\n"]).stream());
105
+ const parts = await Promise.all(seen.map(partOf));
106
+ for (const { file } of parts)
107
+ expect(await file.text()).toBe("a,b\n1,2\n");
108
+ expect(parts.map((p) => p.file.name)).toEqual(["lote.csv", "lote.csv", "document"]);
109
+ expect(parts[0].file.type).toBe("text/csv");
110
+ });
111
+ it("surfaces 413 payable_file_too_large as CodesparApiError with the code", async () => {
112
+ const { cs } = client(() => json(413, { error: { code: "payable_file_too_large", message: "Over 10 MB" }, request_id: "req_example" }));
113
+ const err = await cs.payables.files.upload(new Blob(["x"])).catch((e) => e);
114
+ expect(err).toBeInstanceOf(CodesparApiError);
115
+ expect(err.status).toBe(413);
116
+ expect(err.code).toBe("payable_file_too_large");
117
+ });
118
+ });
119
+ describe("cs.payables.batches", () => {
120
+ it("create sends snake_case items and an Idempotency-Key, the caller's when given", async () => {
121
+ const { cs, seen } = client(() => json(201, BATCH));
122
+ const batch = await cs.payables.batches.create({
123
+ fileIds: ["pfile_example"],
124
+ items: [{ pixKey: "pessoa@example.com", amountMinor: 5000, description: "Aluguel", reference: "ref-1" }],
125
+ source: "cli",
126
+ }, { idempotencyKey: "idem_example_0001" });
127
+ expect(batch).toEqual(BATCH);
128
+ expect(seen[0].url).toBe(`${BASE}/v1/payables/batches`);
129
+ expect(seen[0].headers["Idempotency-Key"]).toBe("idem_example_0001");
130
+ expect(seen[0].headers["Content-Type"]).toBe("application/json");
131
+ expect(JSON.parse(String(seen[0].body))).toEqual({
132
+ file_ids: ["pfile_example"],
133
+ items: [{ pix_key: "pessoa@example.com", amount_minor: 5000, description: "Aluguel", reference: "ref-1" }],
134
+ source: "cli",
135
+ });
136
+ });
137
+ it("create without a key still sends one, a fresh one per call", async () => {
138
+ const { cs, seen } = client(() => json(201, BATCH));
139
+ await cs.payables.batches.create({ items: [{ boletoLine: "23790000000000000000000000000000000000000000000" }] });
140
+ await cs.payables.batches.create({ items: [{ brCode: "000201example" }] });
141
+ const keys = seen.map((s) => s.headers["Idempotency-Key"]);
142
+ expect(keys[0]).toMatch(/^[0-9a-f-]{36}$/);
143
+ expect(keys[1]).not.toBe(keys[0]);
144
+ });
145
+ it("get, updateItem and addItems reach their paths with the expected version", async () => {
146
+ const { cs, seen } = client(() => json(200, BATCH));
147
+ await cs.payables.batches.get("pbat_example");
148
+ await cs.payables.batches.updateItem("pbat_example", "pbl_AbCdEfGhIjKlMnOp", { expectedVersion: 3, amountMinor: 5000 });
149
+ await cs.payables.batches.updateItem("pbat_example", "pbl_AbCdEfGhIjKlMnOp", { expectedVersion: 4, excluded: true });
150
+ await cs.payables.batches.addItems("pbat_example", {
151
+ expectedVersion: 5,
152
+ items: [{ pixKey: "+5511999990000", amountMinor: 1200 }],
153
+ });
154
+ expect(seen.map((s) => `${s.method} ${s.url.slice(BASE.length)}`)).toEqual([
155
+ "GET /v1/payables/batches/pbat_example",
156
+ "PATCH /v1/payables/batches/pbat_example/items/pbl_AbCdEfGhIjKlMnOp",
157
+ "PATCH /v1/payables/batches/pbat_example/items/pbl_AbCdEfGhIjKlMnOp",
158
+ "POST /v1/payables/batches/pbat_example/items",
159
+ ]);
160
+ expect(seen[0].body).toBeUndefined();
161
+ expect(JSON.parse(String(seen[1].body))).toEqual({ expected_version: 3, amount_minor: 5000 });
162
+ expect(JSON.parse(String(seen[2].body))).toEqual({ expected_version: 4, excluded: true });
163
+ expect(JSON.parse(String(seen[3].body))).toEqual({
164
+ expected_version: 5,
165
+ items: [{ pix_key: "+5511999990000", amount_minor: 1200 }],
166
+ });
167
+ });
168
+ it("pay binds to version and list_hash with a key derived from them", async () => {
169
+ const { cs, seen } = client(() => json(200, { ...BATCH, status: "completed" }));
170
+ await cs.payables.batches.pay("pbat_example", { version: 3, listHash: "hash_v3", mandateId: "mdt_example" });
171
+ await cs.payables.batches.pay("pbat_example", { version: 3, listHash: "hash_v3", mandateId: "mdt_example" });
172
+ expect(seen[0].url).toBe(`${BASE}/v1/payables/batches/pbat_example/pay`);
173
+ expect(JSON.parse(String(seen[0].body))).toEqual({ version: 3, list_hash: "hash_v3", mandate_id: "mdt_example" });
174
+ expect(seen[0].headers["Idempotency-Key"]).toBe("pay:pbat_example:3:hash_v3");
175
+ expect(seen[1].headers["Idempotency-Key"]).toBe(seen[0].headers["Idempotency-Key"]);
176
+ });
177
+ it("pay repeats the same call while the API answers executing with items still ready, then returns the last answer", async () => {
178
+ const second = { ...BATCH.items[0], item_id: "pbl_ZyXwVuTsRqPoNmLk", position: 1 };
179
+ const paid = { state: "executed", attempt_id: "att_1", receipt_id: "rcp_1", end_to_end_id: "E1", refusal: null };
180
+ const answers = [
181
+ { ...BATCH, status: "executing", items: [{ ...BATCH.items[0], state: "executed", payment: paid }, second] },
182
+ { ...BATCH, status: "completed", items: [{ ...BATCH.items[0], state: "executed", payment: paid }, { ...second, state: "executed", payment: { ...paid, attempt_id: "att_2" } }] },
183
+ ];
184
+ const { cs, seen } = client(() => json(200, answers.shift()));
185
+ const batch = await cs.payables.batches.pay("pbat_example", { version: 3, listHash: "hash_v3" });
186
+ expect(seen).toHaveLength(2);
187
+ expect(seen[1].headers["Idempotency-Key"]).toBe(seen[0].headers["Idempotency-Key"]);
188
+ expect(seen[1].body).toBe(seen[0].body);
189
+ expect(batch.status).toBe("completed");
190
+ });
191
+ it("pay does not repeat an executing batch with nothing left to send (an item waiting for approval)", async () => {
192
+ const { cs, seen } = client(() => json(200, { ...BATCH, status: "executing", items: [{ ...BATCH.items[0], state: "dispatching" }] }));
193
+ await cs.payables.batches.pay("pbat_example", { version: 3, listHash: "hash_v3" });
194
+ expect(seen).toHaveLength(1);
195
+ });
196
+ it("a 409 version mismatch is an error that carries the current batch", async () => {
197
+ const current = { ...BATCH, version: 4, list_hash: "hash_v4" };
198
+ const { cs } = client(() => json(409, {
199
+ error: { code: "payable_batch_version_mismatch", message: "The list changed", details: { batch: current } },
200
+ request_id: "req_example",
201
+ }));
202
+ const err = await cs.payables.batches
203
+ .pay("pbat_example", { version: 3, listHash: "hash_v3" })
204
+ .catch((e) => e);
205
+ expect(err).toBeInstanceOf(CodesparApiError);
206
+ expect(err.code).toBe("payable_batch_version_mismatch");
207
+ expect(err.message).toContain("The list changed");
208
+ expect(payableBatchFromError(err)).toEqual(current);
209
+ expect(payableBatchFromError(new Error("other"))).toBeUndefined();
210
+ });
211
+ });
212
+ //# sourceMappingURL=payables.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payables.test.js","sourceRoot":"","sources":["../../src/__tests__/payables.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shop-purchases.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shop-purchases.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/shop-purchases.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Shop v0.2 delegated purchases facade (`session.purchases`, `session.instruments`):
3
+ * the wire it sends to `/v1/shop/agent/*`, what it returns, and that a refusal
4
+ * (a key without the delegated scope answers 403 `forbidden`) surfaces as an
5
+ * error, never as an empty success.
6
+ */
7
+ import { afterEach, describe, expect, it, vi } from "vitest";
8
+ import { CodesparApiError } from "../errors.js";
9
+ import { createSession } from "../session.js";
10
+ const originalFetch = globalThis.fetch;
11
+ afterEach(() => {
12
+ globalThis.fetch = originalFetch;
13
+ });
14
+ const PURCHASE = {
15
+ id: "prp_AbCdEfGhIjKlMnOp",
16
+ kind: "purchase",
17
+ state: "drafted",
18
+ run_state: "ready",
19
+ awaiting: null,
20
+ merchant: { id: "test-merchant", name: "Loja de teste CodeSpar" },
21
+ items: [{ sku_id: "cafe-especial-250g", name: "Café", quantity: 1, unit_price_minor: 4590 }],
22
+ total_minor: 4590,
23
+ currency: "BRL",
24
+ payment_method: "card",
25
+ order: null,
26
+ receipt: null,
27
+ failure: null,
28
+ next_action: "a person presses Pagar on the dashboard",
29
+ };
30
+ async function sessionWith(answer) {
31
+ const seen = [];
32
+ globalThis.fetch = vi.fn(async (url, init) => {
33
+ const json = (status, body) => new Response(JSON.stringify(body), { status, headers: { "content-type": "application/json" } });
34
+ if (url.endsWith("/v1/sessions")) {
35
+ return json(201, { id: "ses_k1", org_id: "org_t", user_id: "u", servers: [], status: "active", created_at: new Date().toISOString(), closed_at: null });
36
+ }
37
+ const s = { url, method: init?.method ?? "GET", body: init?.body ? JSON.parse(init.body) : null, auth: init?.headers?.Authorization };
38
+ seen.push(s);
39
+ const a = answer(s);
40
+ return json(a.status, a.body);
41
+ });
42
+ const session = await createSession("u", { servers: [] }, { baseUrl: "https://api.example.com", apiKey: "csk_test_k1", timeout: 10_000 });
43
+ return { session, seen };
44
+ }
45
+ describe("session.purchases", () => {
46
+ it("create proposes with the wire's snake_case and returns the purchase, never an order", async () => {
47
+ const { session, seen } = await sessionWith(() => ({ status: 201, body: { purchase: PURCHASE, proposal: null, idempotent_replay: false } }));
48
+ const made = await session.purchases.create({ agentId: "ag_1", merchant: "test-merchant", items: [{ skuId: "cafe-especial-250g", quantity: 1 }], idempotencyKey: "idem_k1_0001" });
49
+ expect(seen[0]).toMatchObject({
50
+ url: "https://api.example.com/v1/shop/agent/purchases",
51
+ method: "POST",
52
+ body: { agent_id: "ag_1", merchant: "test-merchant", items: [{ sku_id: "cafe-especial-250g", quantity: 1 }], payment_method: "card", idempotency_key: "idem_k1_0001" },
53
+ auth: "Bearer csk_test_k1",
54
+ });
55
+ expect(made.purchase).toMatchObject({ id: PURCHASE.id, state: "drafted", order: null });
56
+ });
57
+ it("get reads where the purchase stands", async () => {
58
+ const { session, seen } = await sessionWith(() => ({ status: 200, body: { purchase: { ...PURCHASE, state: "succeeded", run_state: "completed", receipt: { funding_origin: "external_card", wallet_debit: false } } } }));
59
+ const p = await session.purchases.get(PURCHASE.id);
60
+ expect(seen[0].url).toBe(`https://api.example.com/v1/shop/agent/purchases/${PURCHASE.id}`);
61
+ expect(p.receipt).toEqual({ funding_origin: "external_card", wallet_debit: false });
62
+ });
63
+ it("a key without the delegated scope gets an error, not an empty success", async () => {
64
+ const { session } = await sessionWith(() => ({ status: 403, body: { error: "forbidden", message: "missing scope shop:purchases:write", status: 403 } }));
65
+ await expect(session.purchases.create({ agentId: "ag_1", merchant: "test-merchant", items: [{ skuId: "x", quantity: 1 }], idempotencyKey: "idem_k1_0002" })).rejects.toBeInstanceOf(CodesparApiError);
66
+ });
67
+ });
68
+ describe("session.instruments", () => {
69
+ it("lists a person's cards masked", async () => {
70
+ const { session, seen } = await sessionWith(() => ({ status: 200, body: { instruments: [{ id: "cfs_AAAAAAAA", kind: "byo_card", brand: "visa", last4: "4242", status: "active" }] } }));
71
+ const list = await session.instruments.list({ owner: "user_ana" });
72
+ expect(seen[0].url).toBe("https://api.example.com/v1/shop/agent/instruments?owner=user_ana");
73
+ expect(list).toEqual([{ id: "cfs_AAAAAAAA", kind: "byo_card", brand: "visa", last4: "4242", status: "active" }]);
74
+ });
75
+ });
76
+ //# sourceMappingURL=shop-purchases.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shop-purchases.test.js","sourceRoot":"","sources":["../../src/__tests__/shop-purchases.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;AACvC,SAAS,CAAC,GAAG,EAAE;IACb,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC;AACnC,CAAC,CAAC,CAAC;AASH,MAAM,QAAQ,GAAG;IACf,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,wBAAwB,EAAE;IACjE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAC5F,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,KAAK;IACf,cAAc,EAAE,MAAM;IACtB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,yCAAyC;CACvD,CAAC;AAEF,KAAK,UAAU,WAAW,CAAC,MAAyD;IAClF,MAAM,IAAI,GAAW,EAAE,CAAC;IACxB,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,IAA2E,EAAqB,EAAE;QAC7I,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,IAAa,EAAY,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC1J,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1J,CAAC;QACD,MAAM,CAAC,GAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAC5I,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAA4B,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1I,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;QACnG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7I,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAU,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC;QACpL,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC5B,GAAG,EAAE,iDAAiD;YACtD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE;YACtK,IAAI,EAAE,oBAAoB;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzN,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,SAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mDAAmD,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5F,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,oCAAoC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACzJ,MAAM,MAAM,CAAC,OAAO,CAAC,SAAU,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACzM,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACxL,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC9F,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,OAAO,EACP,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AASpB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAoFD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,eAAe;IAQnC,8EAA8E;IAC9E,MAAM,CAAC,UAAU,IAAI,aAAa,CAAC;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IAIxE;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EACnD,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAM1C;;;;OAIG;IACH,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EACpD,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAM3C,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAG1F,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAG7F,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAG1F,KAAK,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAGhG,MAAM,CAAC,CAAC,SAAS,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAIrF,QAAQ;YA0DR,MAAM;IA6BpB,OAAO,CAAC,cAAc;CAMvB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,OAAO,EACP,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AAUpB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAyFD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,eAAe;IAQnC,8EAA8E;IAC9E,MAAM,CAAC,UAAU,IAAI,aAAa,CAAC;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IAIxE;;;;;OAKG;IACH,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EACnD,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAM1C;;;;OAIG;IACH,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EACpD,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAM3C,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAG1F,IAAI,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAG7F,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAG1F,KAAK,CAAC,CAAC,SAAS,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAGhG,MAAM,CAAC,CAAC,SAAS,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAIrF,QAAQ;YA+DR,MAAM;IA6BpB,OAAO,CAAC,cAAc;CAMvB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAElE"}
@@ -14,10 +14,12 @@
14
14
  */
15
15
  import { API_OPERATIONS } from "../generated/operations.js";
16
16
  import { fetchWithTimeout, validateTimeout } from "../internal/fetch.js";
17
+ import { toFormData } from "../internal/multipart.js";
17
18
  import { CodesparApiError, TimeoutError, networkErrorToApiError, throwFromResponse, } from "../errors.js";
18
19
  const OPERATION_INDEX = new Map(API_OPERATIONS.map((row) => [`${row.method} ${row.path}`, row]));
19
20
  const SSE = "text/event-stream";
20
21
  const FORM = "application/x-www-form-urlencoded";
22
+ const MULTIPART = "multipart/form-data";
21
23
  function appendQuery(url, query) {
22
24
  if (!query || typeof query !== "object")
23
25
  return;
@@ -53,9 +55,11 @@ function expandPath(template, params) {
53
55
  }
54
56
  return expanded;
55
57
  }
56
- function serialiseBody(contentType, body) {
58
+ async function serialiseBody(contentType, body) {
57
59
  if (body === undefined)
58
60
  return undefined;
61
+ if (contentType === MULTIPART)
62
+ return toFormData(body);
59
63
  if (contentType === FORM) {
60
64
  const form = new URLSearchParams();
61
65
  for (const [k, v] of Object.entries(body)) {
@@ -145,8 +149,12 @@ export class ApiClient {
145
149
  const headers = { ...this.headers };
146
150
  if (row.accept)
147
151
  headers.Accept = row.accept;
148
- if (row.body && opts.body !== undefined)
152
+ // multipart is left to fetch, which writes the boundary into the
153
+ // Content-Type; a hand-set "multipart/form-data" has none and the
154
+ // server cannot split the parts.
155
+ if (row.body && row.body !== MULTIPART && opts.body !== undefined) {
149
156
  headers["Content-Type"] = row.body;
157
+ }
150
158
  for (const [k, v] of Object.entries((opts.header ?? {}))) {
151
159
  if (v !== undefined && v !== null)
152
160
  headers[k] = String(v);
@@ -154,7 +162,7 @@ export class ApiClient {
154
162
  const init = {
155
163
  method: method.toUpperCase(),
156
164
  headers,
157
- body: row.body ? serialiseBody(row.body, opts.body) : undefined,
165
+ body: row.body ? await serialiseBody(row.body, opts.body) : undefined,
158
166
  };
159
167
  if (row.accept === SSE) {
160
168
  return this.stream(url, init, what, timeout, opts.signal, mode);