listbee 0.4.0 → 0.6.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 (175) hide show
  1. package/README.md +187 -381
  2. package/dist/cjs/base-client.d.ts +9 -29
  3. package/dist/cjs/base-client.js +58 -14
  4. package/dist/cjs/base-client.js.map +1 -1
  5. package/dist/cjs/client.d.ts +17 -13
  6. package/dist/cjs/client.js +14 -11
  7. package/dist/cjs/client.js.map +1 -1
  8. package/dist/cjs/errors.d.ts +12 -0
  9. package/dist/cjs/errors.js +31 -1
  10. package/dist/cjs/errors.js.map +1 -1
  11. package/dist/cjs/generated/api-types.d.ts +4089 -0
  12. package/dist/cjs/generated/api-types.js +7 -0
  13. package/dist/cjs/generated/api-types.js.map +1 -0
  14. package/dist/cjs/generated/enums.d.ts +94 -0
  15. package/dist/cjs/generated/enums.js +87 -0
  16. package/dist/cjs/generated/enums.js.map +1 -0
  17. package/dist/cjs/generated/operations.d.ts +233 -0
  18. package/dist/cjs/generated/operations.js +39 -0
  19. package/dist/cjs/generated/operations.js.map +1 -0
  20. package/dist/cjs/generated/types.d.ts +68 -0
  21. package/dist/cjs/{types/order.js → generated/types.js} +1 -4
  22. package/dist/cjs/generated/types.js.map +1 -0
  23. package/dist/cjs/index.d.ts +7 -13
  24. package/dist/cjs/index.js +22 -15
  25. package/dist/cjs/index.js.map +1 -1
  26. package/dist/cjs/resources/account.d.ts +11 -6
  27. package/dist/cjs/resources/account.js +19 -8
  28. package/dist/cjs/resources/account.js.map +1 -1
  29. package/dist/cjs/resources/api-keys.d.ts +18 -4
  30. package/dist/cjs/resources/api-keys.js +17 -1
  31. package/dist/cjs/resources/api-keys.js.map +1 -1
  32. package/dist/cjs/resources/customers.d.ts +23 -0
  33. package/dist/cjs/resources/customers.js +44 -0
  34. package/dist/cjs/resources/customers.js.map +1 -0
  35. package/dist/cjs/resources/files.d.ts +27 -0
  36. package/dist/cjs/resources/files.js +37 -0
  37. package/dist/cjs/resources/files.js.map +1 -0
  38. package/dist/cjs/resources/index.d.ts +3 -1
  39. package/dist/cjs/resources/index.js +7 -3
  40. package/dist/cjs/resources/index.js.map +1 -1
  41. package/dist/cjs/resources/listings.d.ts +35 -35
  42. package/dist/cjs/resources/listings.js +51 -116
  43. package/dist/cjs/resources/listings.js.map +1 -1
  44. package/dist/cjs/resources/orders.d.ts +28 -16
  45. package/dist/cjs/resources/orders.js +43 -40
  46. package/dist/cjs/resources/orders.js.map +1 -1
  47. package/dist/cjs/resources/signup.d.ts +21 -9
  48. package/dist/cjs/resources/signup.js +20 -3
  49. package/dist/cjs/resources/signup.js.map +1 -1
  50. package/dist/cjs/resources/stripe.d.ts +18 -6
  51. package/dist/cjs/resources/stripe.js +18 -7
  52. package/dist/cjs/resources/stripe.js.map +1 -1
  53. package/dist/cjs/resources/webhooks.d.ts +59 -3
  54. package/dist/cjs/resources/webhooks.js +102 -21
  55. package/dist/cjs/resources/webhooks.js.map +1 -1
  56. package/dist/cjs/types/index.d.ts +4 -10
  57. package/dist/cjs/types/index.js +17 -10
  58. package/dist/cjs/types/index.js.map +1 -1
  59. package/dist/cjs/types/shared.d.ts +25 -145
  60. package/dist/cjs/types/shared.js +12 -66
  61. package/dist/cjs/types/shared.js.map +1 -1
  62. package/dist/esm/base-client.d.ts +9 -29
  63. package/dist/esm/base-client.js +56 -12
  64. package/dist/esm/base-client.js.map +1 -1
  65. package/dist/esm/client.d.ts +17 -13
  66. package/dist/esm/client.js +14 -11
  67. package/dist/esm/client.js.map +1 -1
  68. package/dist/esm/errors.d.ts +12 -0
  69. package/dist/esm/errors.js +27 -0
  70. package/dist/esm/errors.js.map +1 -1
  71. package/dist/esm/generated/api-types.d.ts +4089 -0
  72. package/dist/esm/generated/api-types.js +6 -0
  73. package/dist/esm/generated/api-types.js.map +1 -0
  74. package/dist/esm/generated/enums.d.ts +94 -0
  75. package/dist/esm/generated/enums.js +84 -0
  76. package/dist/esm/generated/enums.js.map +1 -0
  77. package/dist/esm/generated/operations.d.ts +233 -0
  78. package/dist/esm/generated/operations.js +36 -0
  79. package/dist/esm/generated/operations.js.map +1 -0
  80. package/dist/esm/generated/types.d.ts +68 -0
  81. package/dist/esm/generated/types.js +2 -0
  82. package/dist/esm/generated/types.js.map +1 -0
  83. package/dist/esm/index.d.ts +7 -13
  84. package/dist/esm/index.js +5 -4
  85. package/dist/esm/index.js.map +1 -1
  86. package/dist/esm/resources/account.d.ts +11 -6
  87. package/dist/esm/resources/account.js +19 -8
  88. package/dist/esm/resources/account.js.map +1 -1
  89. package/dist/esm/resources/api-keys.d.ts +18 -4
  90. package/dist/esm/resources/api-keys.js +17 -1
  91. package/dist/esm/resources/api-keys.js.map +1 -1
  92. package/dist/esm/resources/customers.d.ts +23 -0
  93. package/dist/esm/resources/customers.js +39 -0
  94. package/dist/esm/resources/customers.js.map +1 -0
  95. package/dist/esm/resources/files.d.ts +27 -0
  96. package/dist/esm/resources/files.js +33 -0
  97. package/dist/esm/resources/files.js.map +1 -0
  98. package/dist/esm/resources/index.d.ts +3 -1
  99. package/dist/esm/resources/index.js +3 -1
  100. package/dist/esm/resources/index.js.map +1 -1
  101. package/dist/esm/resources/listings.d.ts +35 -35
  102. package/dist/esm/resources/listings.js +50 -116
  103. package/dist/esm/resources/listings.js.map +1 -1
  104. package/dist/esm/resources/orders.d.ts +28 -16
  105. package/dist/esm/resources/orders.js +43 -40
  106. package/dist/esm/resources/orders.js.map +1 -1
  107. package/dist/esm/resources/signup.d.ts +21 -9
  108. package/dist/esm/resources/signup.js +20 -3
  109. package/dist/esm/resources/signup.js.map +1 -1
  110. package/dist/esm/resources/stripe.d.ts +18 -6
  111. package/dist/esm/resources/stripe.js +18 -7
  112. package/dist/esm/resources/stripe.js.map +1 -1
  113. package/dist/esm/resources/webhooks.d.ts +59 -3
  114. package/dist/esm/resources/webhooks.js +101 -21
  115. package/dist/esm/resources/webhooks.js.map +1 -1
  116. package/dist/esm/types/index.d.ts +4 -10
  117. package/dist/esm/types/index.js +2 -1
  118. package/dist/esm/types/index.js.map +1 -1
  119. package/dist/esm/types/shared.d.ts +25 -145
  120. package/dist/esm/types/shared.js +10 -65
  121. package/dist/esm/types/shared.js.map +1 -1
  122. package/package.json +4 -82
  123. package/dist/cjs/resources/stores.d.ts +0 -31
  124. package/dist/cjs/resources/stores.js +0 -67
  125. package/dist/cjs/resources/stores.js.map +0 -1
  126. package/dist/cjs/types/account.d.ts +0 -47
  127. package/dist/cjs/types/account.js +0 -6
  128. package/dist/cjs/types/account.js.map +0 -1
  129. package/dist/cjs/types/api-key.d.ts +0 -18
  130. package/dist/cjs/types/api-key.js +0 -6
  131. package/dist/cjs/types/api-key.js.map +0 -1
  132. package/dist/cjs/types/listing.d.ts +0 -189
  133. package/dist/cjs/types/listing.js +0 -6
  134. package/dist/cjs/types/listing.js.map +0 -1
  135. package/dist/cjs/types/order.d.ts +0 -74
  136. package/dist/cjs/types/order.js.map +0 -1
  137. package/dist/cjs/types/signup.d.ts +0 -24
  138. package/dist/cjs/types/signup.js +0 -6
  139. package/dist/cjs/types/signup.js.map +0 -1
  140. package/dist/cjs/types/store.d.ts +0 -70
  141. package/dist/cjs/types/store.js +0 -6
  142. package/dist/cjs/types/store.js.map +0 -1
  143. package/dist/cjs/types/stripe.d.ts +0 -12
  144. package/dist/cjs/types/stripe.js +0 -6
  145. package/dist/cjs/types/stripe.js.map +0 -1
  146. package/dist/cjs/types/webhook.d.ts +0 -88
  147. package/dist/cjs/types/webhook.js +0 -6
  148. package/dist/cjs/types/webhook.js.map +0 -1
  149. package/dist/esm/resources/stores.d.ts +0 -31
  150. package/dist/esm/resources/stores.js +0 -63
  151. package/dist/esm/resources/stores.js.map +0 -1
  152. package/dist/esm/types/account.d.ts +0 -47
  153. package/dist/esm/types/account.js +0 -5
  154. package/dist/esm/types/account.js.map +0 -1
  155. package/dist/esm/types/api-key.d.ts +0 -18
  156. package/dist/esm/types/api-key.js +0 -5
  157. package/dist/esm/types/api-key.js.map +0 -1
  158. package/dist/esm/types/listing.d.ts +0 -189
  159. package/dist/esm/types/listing.js +0 -5
  160. package/dist/esm/types/listing.js.map +0 -1
  161. package/dist/esm/types/order.d.ts +0 -74
  162. package/dist/esm/types/order.js +0 -5
  163. package/dist/esm/types/order.js.map +0 -1
  164. package/dist/esm/types/signup.d.ts +0 -24
  165. package/dist/esm/types/signup.js +0 -5
  166. package/dist/esm/types/signup.js.map +0 -1
  167. package/dist/esm/types/store.d.ts +0 -70
  168. package/dist/esm/types/store.js +0 -5
  169. package/dist/esm/types/store.js.map +0 -1
  170. package/dist/esm/types/stripe.d.ts +0 -12
  171. package/dist/esm/types/stripe.js +0 -5
  172. package/dist/esm/types/stripe.js.map +0 -1
  173. package/dist/esm/types/webhook.d.ts +0 -88
  174. package/dist/esm/types/webhook.js +0 -5
  175. package/dist/esm/types/webhook.js.map +0 -1
@@ -0,0 +1,4089 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+ export interface paths {
6
+ "/v1/account": {
7
+ parameters: {
8
+ query?: never;
9
+ header?: never;
10
+ path?: never;
11
+ cookie?: never;
12
+ };
13
+ /**
14
+ * Get account
15
+ * @description Account status and readiness. Check readiness.operational — if false, readiness.actions lists what's needed. readiness.next is the highest-priority action.
16
+ */
17
+ get: operations["get_account"];
18
+ /**
19
+ * Update account
20
+ * @description Update account profile and settings. Supports display_name, bio, avatar (file token from POST /v1/files), and ga_measurement_id.
21
+ */
22
+ put: operations["update_account"];
23
+ /**
24
+ * Create account
25
+ * @description Start account creation or re-authentication. Sends a 6-digit OTP to the email. Idempotent — calling again re-sends. No authentication required.
26
+ */
27
+ post: operations["create_account"];
28
+ /**
29
+ * Delete account
30
+ * @description Permanently delete the authenticated account. PII is anonymized, API keys revoked, webhooks disabled. Order history is retained for accounting. This action is irreversible.
31
+ */
32
+ delete: operations["delete_account"];
33
+ options?: never;
34
+ head?: never;
35
+ patch?: never;
36
+ trace?: never;
37
+ };
38
+ "/v1/account/verify/otp": {
39
+ parameters: {
40
+ query?: never;
41
+ header?: never;
42
+ path?: never;
43
+ cookie?: never;
44
+ };
45
+ get?: never;
46
+ put?: never;
47
+ /**
48
+ * Verify OTP
49
+ * @description Verify OTP code. Returns account and API key. Works for both new and returning accounts.
50
+ */
51
+ post: operations["verify_otp"];
52
+ delete?: never;
53
+ options?: never;
54
+ head?: never;
55
+ patch?: never;
56
+ trace?: never;
57
+ };
58
+ "/v1/api-keys": {
59
+ parameters: {
60
+ query?: never;
61
+ header?: never;
62
+ path?: never;
63
+ cookie?: never;
64
+ };
65
+ /**
66
+ * List API keys
67
+ * @description List all API keys for the authenticated account with full key values.
68
+ */
69
+ get: operations["list_api_keys"];
70
+ put?: never;
71
+ /**
72
+ * Create API key
73
+ * @description Create a new API key. The full key value is included in the response and always retrievable via list_api_keys.
74
+ */
75
+ post: operations["create_api_key"];
76
+ delete?: never;
77
+ options?: never;
78
+ head?: never;
79
+ patch?: never;
80
+ trace?: never;
81
+ };
82
+ "/v1/api-keys/{key_id}": {
83
+ parameters: {
84
+ query?: never;
85
+ header?: never;
86
+ path?: never;
87
+ cookie?: never;
88
+ };
89
+ get?: never;
90
+ put?: never;
91
+ post?: never;
92
+ /**
93
+ * Delete API key
94
+ * @description Revoke an API key. Cannot delete the key you are currently authenticating with.
95
+ */
96
+ delete: operations["delete_api_key"];
97
+ options?: never;
98
+ head?: never;
99
+ patch?: never;
100
+ trace?: never;
101
+ };
102
+ "/v1/customers": {
103
+ parameters: {
104
+ query?: never;
105
+ header?: never;
106
+ path?: never;
107
+ cookie?: never;
108
+ };
109
+ /**
110
+ * List customers
111
+ * @description List customers (buyers) for the authenticated account. Customers are auto-created when a buyer completes their first order. Use this endpoint to get buyer email addresses for marketing, analyze purchasing patterns, or identify repeat customers. Sorted by most recent purchase first.
112
+ */
113
+ get: operations["list_customers"];
114
+ put?: never;
115
+ post?: never;
116
+ delete?: never;
117
+ options?: never;
118
+ head?: never;
119
+ patch?: never;
120
+ trace?: never;
121
+ };
122
+ "/v1/customers/{customer_id}": {
123
+ parameters: {
124
+ query?: never;
125
+ header?: never;
126
+ path?: never;
127
+ cookie?: never;
128
+ };
129
+ /**
130
+ * Get customer
131
+ * @description Get a single customer by ID. Customers are auto-created from order data — they represent unique buyer email addresses that have purchased from the seller.
132
+ */
133
+ get: operations["get_customer"];
134
+ put?: never;
135
+ post?: never;
136
+ delete?: never;
137
+ options?: never;
138
+ head?: never;
139
+ patch?: never;
140
+ trace?: never;
141
+ };
142
+ "/v1/files": {
143
+ parameters: {
144
+ query?: never;
145
+ header?: never;
146
+ path?: never;
147
+ cookie?: never;
148
+ };
149
+ get?: never;
150
+ put?: never;
151
+ /**
152
+ * Upload file
153
+ * @description Upload a file for use as a listing deliverable. Returns a file token valid for 24 hours. Pass the token to PUT /v1/listings/{listing_id}/deliverables or POST /v1/orders/{id}/deliver to attach the file. Max size: 25 MB. Accepted types: PDF, EPUB, ZIP, images, audio, video, Office documents.
154
+ */
155
+ post: operations["upload_file"];
156
+ delete?: never;
157
+ options?: never;
158
+ head?: never;
159
+ patch?: never;
160
+ trace?: never;
161
+ };
162
+ "/v1/listings": {
163
+ parameters: {
164
+ query?: never;
165
+ header?: never;
166
+ path?: never;
167
+ cookie?: never;
168
+ };
169
+ /**
170
+ * List listings
171
+ * @description List all listings for the authenticated account. Filter by status. Cursor-paginated. Each listing includes readiness — check readiness.sellable to see if it can accept orders.
172
+ */
173
+ get: operations["list_listings"];
174
+ put?: never;
175
+ /**
176
+ * Create listing
177
+ * @description Create a listing to sell digital content. Returns product page URL and readiness. If readiness.sellable is false, follow readiness.actions to resolve. readiness.next is the first action to take. When your account uses a Stripe test key, checkout URLs point to Stripe test mode.
178
+ */
179
+ post: operations["create_listing"];
180
+ delete?: never;
181
+ options?: never;
182
+ head?: never;
183
+ patch?: never;
184
+ trace?: never;
185
+ };
186
+ "/v1/listings/{listing_id}": {
187
+ parameters: {
188
+ query?: never;
189
+ header?: never;
190
+ path?: never;
191
+ cookie?: never;
192
+ };
193
+ /**
194
+ * Get listing
195
+ * @description Get a single listing by ID. Check readiness.sellable — if false, readiness.actions tells you what's needed.
196
+ */
197
+ get: operations["get_listing"];
198
+ /**
199
+ * Update listing
200
+ * @description Update listing fields. Slug can be changed while in draft status — input is slugified, conflicts get a random suffix. Returns updated listing with readiness.
201
+ */
202
+ put: operations["update_listing"];
203
+ post?: never;
204
+ /**
205
+ * Delete listing
206
+ * @description Delete a listing by ID and its stored content. Irreversible.
207
+ */
208
+ delete: operations["delete_listing"];
209
+ options?: never;
210
+ head?: never;
211
+ patch?: never;
212
+ trace?: never;
213
+ };
214
+ "/v1/listings/{listing_id}/deliverables": {
215
+ parameters: {
216
+ query?: never;
217
+ header?: never;
218
+ path?: never;
219
+ cookie?: never;
220
+ };
221
+ get?: never;
222
+ /**
223
+ * Set deliverables
224
+ * @description Replace all deliverables on a draft listing. Accepts an array of up to 3 deliverables (file, url, text). File tokens must be obtained via POST /v1/files first. Old file deliverables are automatically cleaned up from storage.
225
+ */
226
+ put: operations["set_deliverables"];
227
+ post?: never;
228
+ /**
229
+ * Remove deliverables
230
+ * @description Remove all deliverables from a draft listing. Demotes the listing to external fulfillment. Draft only — returns 409 if the listing is published.
231
+ */
232
+ delete: operations["remove_deliverables"];
233
+ options?: never;
234
+ head?: never;
235
+ patch?: never;
236
+ trace?: never;
237
+ };
238
+ "/v1/listings/{listing_id}/publish": {
239
+ parameters: {
240
+ query?: never;
241
+ header?: never;
242
+ path?: never;
243
+ cookie?: never;
244
+ };
245
+ get?: never;
246
+ put?: never;
247
+ /**
248
+ * Publish listing
249
+ * @description Validate and publish a draft listing. Transitions to published state — the listing becomes live, buyable, and immutable. Fails with 409 and readiness actions if requirements are not met.
250
+ */
251
+ post: operations["publish_listing"];
252
+ delete?: never;
253
+ options?: never;
254
+ head?: never;
255
+ patch?: never;
256
+ trace?: never;
257
+ };
258
+ "/v1/orders": {
259
+ parameters: {
260
+ query?: never;
261
+ header?: never;
262
+ path?: never;
263
+ cookie?: never;
264
+ };
265
+ /**
266
+ * List orders
267
+ * @description List orders for the authenticated account. Filter by status, listing, and date range. Paginated. Order lifecycle: PENDING (checkout started, buyer data captured) → PAID (payment confirmed, order.paid webhook fires) → FULFILLED (content delivered or goods shipped). Terminal states: CANCELED (payment failed or abandoned), FAILED (system error). Managed listings auto-fulfill on payment. External listings stay in PAID until the seller calls fulfill() or ship().
268
+ */
269
+ get: operations["list_orders"];
270
+ put?: never;
271
+ post?: never;
272
+ delete?: never;
273
+ options?: never;
274
+ head?: never;
275
+ patch?: never;
276
+ trace?: never;
277
+ };
278
+ "/v1/orders/{order_id}": {
279
+ parameters: {
280
+ query?: never;
281
+ header?: never;
282
+ path?: never;
283
+ cookie?: never;
284
+ };
285
+ /**
286
+ * Get order
287
+ * @description Get a single order by ID. Order lifecycle: PENDING → PAID → FULFILLED. Managed listings auto-fulfill. External listings require fulfill() or ship() after payment.
288
+ */
289
+ get: operations["get_order"];
290
+ put?: never;
291
+ post?: never;
292
+ delete?: never;
293
+ options?: never;
294
+ head?: never;
295
+ patch?: never;
296
+ trace?: never;
297
+ };
298
+ "/v1/orders/{order_id}/refund": {
299
+ parameters: {
300
+ query?: never;
301
+ header?: never;
302
+ path?: never;
303
+ cookie?: never;
304
+ };
305
+ get?: never;
306
+ put?: never;
307
+ /**
308
+ * Refund order
309
+ * @description Issue a full refund for an order. The refund is processed through Stripe on the seller's connected account. Only orders with status `paid` or `fulfilled` can be refunded. If the order is already refunded, returns the order as-is (idempotent). The order's refund_amount and refunded_at update asynchronously via Stripe webhook.
310
+ */
311
+ post: operations["refund_order"];
312
+ delete?: never;
313
+ options?: never;
314
+ head?: never;
315
+ patch?: never;
316
+ trace?: never;
317
+ };
318
+ "/v1/orders/{order_id}/deliver": {
319
+ parameters: {
320
+ query?: never;
321
+ header?: never;
322
+ path?: never;
323
+ cookie?: never;
324
+ };
325
+ get?: never;
326
+ put?: never;
327
+ /**
328
+ * Deliver order
329
+ * @description Mark an order as fulfilled and push a deliverable for ListBee to deliver. Transitions PAID → FULFILLED. Only valid for orders on EXTERNAL listings. Fires order.fulfilled webhook with the full order snapshot. Idempotent — calling on an already-fulfilled order returns 200.
330
+ */
331
+ post: operations["deliver_order"];
332
+ delete?: never;
333
+ options?: never;
334
+ head?: never;
335
+ patch?: never;
336
+ trace?: never;
337
+ };
338
+ "/v1/orders/{order_id}/ship": {
339
+ parameters: {
340
+ query?: never;
341
+ header?: never;
342
+ path?: never;
343
+ cookie?: never;
344
+ };
345
+ get?: never;
346
+ put?: never;
347
+ /**
348
+ * Ship order
349
+ * @description Record shipping info (carrier + tracking code) and transition the order from PAID → FULFILLED. Only valid for orders on EXTERNAL listings with physical goods. Fires order.fulfilled webhook with shipping details in the payload. Idempotent when called with the same tracking code.
350
+ */
351
+ post: operations["ship_order"];
352
+ delete?: never;
353
+ options?: never;
354
+ head?: never;
355
+ patch?: never;
356
+ trace?: never;
357
+ };
358
+ "/v1/account/stripe/connect": {
359
+ parameters: {
360
+ query?: never;
361
+ header?: never;
362
+ path?: never;
363
+ cookie?: never;
364
+ };
365
+ get?: never;
366
+ put?: never;
367
+ /**
368
+ * Start Stripe Connect onboarding
369
+ * @description Start Stripe Connect guided onboarding. Returns a URL to redirect the human to. The human completes Stripe's identity and bank account verification flow. On completion, Stripe fires an account.updated webhook and ListBee marks the account as connected. The stripe_account_id is saved immediately — payment_config is set only after webhook confirmation.
370
+ */
371
+ post: operations["start_stripe_connect"];
372
+ delete?: never;
373
+ options?: never;
374
+ head?: never;
375
+ patch?: never;
376
+ trace?: never;
377
+ };
378
+ "/v1/account/stripe": {
379
+ parameters: {
380
+ query?: never;
381
+ header?: never;
382
+ path?: never;
383
+ cookie?: never;
384
+ };
385
+ get?: never;
386
+ put?: never;
387
+ post?: never;
388
+ /**
389
+ * Disconnect Stripe
390
+ * @description Remove Stripe configuration from the account. The account will no longer accept payments until a new Connect session is completed.
391
+ */
392
+ delete: operations["disconnect_stripe"];
393
+ options?: never;
394
+ head?: never;
395
+ patch?: never;
396
+ trace?: never;
397
+ };
398
+ "/v1/webhooks": {
399
+ parameters: {
400
+ query?: never;
401
+ header?: never;
402
+ path?: never;
403
+ cookie?: never;
404
+ };
405
+ /**
406
+ * List webhooks
407
+ * @description List all webhook endpoints for the authenticated account. Use POST /v1/webhooks to register new endpoints. All order event payloads include the full order snapshot — no follow-up API calls needed.
408
+ */
409
+ get: operations["list_webhooks"];
410
+ put?: never;
411
+ /**
412
+ * Create webhook
413
+ * @description Register a webhook endpoint. Returns the endpoint with its signing secret — store it, shown once. All order events (order.paid, order.fulfilled, order.shipped, order.refunded, order.disputed, order.dispute_closed, order.canceled) include a full order snapshot in the payload: order_id, listing_id, listing_slug, buyer_email, amount, currency, status, checkout_data, shipping_address, timestamps, carrier/tracking, and deliverable info. Agents never need a follow-up API call after receiving a webhook. See the WebhookPayloadExample schema for the full payload shape.
414
+ */
415
+ post: operations["create_webhook"];
416
+ delete?: never;
417
+ options?: never;
418
+ head?: never;
419
+ patch?: never;
420
+ trace?: never;
421
+ };
422
+ "/v1/webhooks/{webhook_id}": {
423
+ parameters: {
424
+ query?: never;
425
+ header?: never;
426
+ path?: never;
427
+ cookie?: never;
428
+ };
429
+ get?: never;
430
+ /**
431
+ * Update webhook
432
+ * @description Update a webhook endpoint. Only provided fields are changed.
433
+ */
434
+ put: operations["update_webhook"];
435
+ post?: never;
436
+ /**
437
+ * Delete webhook
438
+ * @description Delete a webhook endpoint. Irreversible.
439
+ */
440
+ delete: operations["delete_webhook"];
441
+ options?: never;
442
+ head?: never;
443
+ patch?: never;
444
+ trace?: never;
445
+ };
446
+ "/v1/webhooks/{webhook_id}/events": {
447
+ parameters: {
448
+ query?: never;
449
+ header?: never;
450
+ path?: never;
451
+ cookie?: never;
452
+ };
453
+ /**
454
+ * List webhook delivery events
455
+ * @description List delivery event history for a webhook endpoint. Use to debug failed deliveries.
456
+ */
457
+ get: operations["list_webhook_events"];
458
+ put?: never;
459
+ post?: never;
460
+ delete?: never;
461
+ options?: never;
462
+ head?: never;
463
+ patch?: never;
464
+ trace?: never;
465
+ };
466
+ "/v1/webhooks/{webhook_id}/events/{event_id}/retry": {
467
+ parameters: {
468
+ query?: never;
469
+ header?: never;
470
+ path?: never;
471
+ cookie?: never;
472
+ };
473
+ get?: never;
474
+ put?: never;
475
+ /**
476
+ * Retry a webhook event
477
+ * @description Reset a failed webhook event and re-dispatch for immediate delivery. Clears attempts, failed_at, last_error, and delivered_at, then enqueues a new delivery.
478
+ */
479
+ post: operations["retry_webhook_event"];
480
+ delete?: never;
481
+ options?: never;
482
+ head?: never;
483
+ patch?: never;
484
+ trace?: never;
485
+ };
486
+ "/v1/webhooks/{webhook_id}/test": {
487
+ parameters: {
488
+ query?: never;
489
+ header?: never;
490
+ path?: never;
491
+ cookie?: never;
492
+ };
493
+ get?: never;
494
+ put?: never;
495
+ /**
496
+ * Test webhook
497
+ * @description Send a test event to a webhook endpoint and return the delivery result. Does not persist an event record.
498
+ */
499
+ post: operations["test_webhook"];
500
+ delete?: never;
501
+ options?: never;
502
+ head?: never;
503
+ patch?: never;
504
+ trace?: never;
505
+ };
506
+ }
507
+ export type webhooks = Record<string, never>;
508
+ export interface components {
509
+ schemas: {
510
+ /** AccountReadiness */
511
+ AccountReadiness: {
512
+ /**
513
+ * Operational
514
+ * @description True when the account can sell. False means actions are needed.
515
+ * @example true
516
+ */
517
+ operational: boolean;
518
+ /**
519
+ * Actions
520
+ * @description What's needed to make this account operational. Empty when operational is true.
521
+ */
522
+ actions?: components["schemas"]["Action"][];
523
+ /**
524
+ * Next
525
+ * @description Code of the highest-priority action.
526
+ * @example connect_stripe
527
+ */
528
+ next?: string | null;
529
+ };
530
+ /** AccountResponse */
531
+ AccountResponse: {
532
+ /**
533
+ * Object
534
+ * @description Object type identifier. Always `account`.
535
+ * @default account
536
+ * @example account
537
+ * @constant
538
+ */
539
+ object: "account";
540
+ /**
541
+ * Id
542
+ * @description Unique identifier
543
+ * @example acc_7kQ2xY9mN3pR5tW1
544
+ */
545
+ id: string;
546
+ /**
547
+ * Email
548
+ * @description Account email address
549
+ * @example seller@example.com
550
+ */
551
+ email: string;
552
+ /**
553
+ * Display Name
554
+ * @description Seller name shown on product pages.
555
+ * @example Acme Digital
556
+ */
557
+ display_name?: string | null;
558
+ /**
559
+ * Bio
560
+ * @description Short seller bio shown on product pages.
561
+ * @example We create premium digital tools for modern marketers.
562
+ */
563
+ bio?: string | null;
564
+ /**
565
+ * Has Avatar
566
+ * @description true if avatar image exists. Upload via POST /v1/files, set via PUT /v1/account.
567
+ * @example true
568
+ */
569
+ has_avatar: boolean;
570
+ /**
571
+ * Plan
572
+ * @description Current plan tier. Values: free (15% fee), growth (5% fee), scale (3% fee).
573
+ * @example free
574
+ * @example growth
575
+ * @example scale
576
+ */
577
+ plan: string;
578
+ /**
579
+ * Fee Rate
580
+ * @description Transaction fee rate as decimal string. Determined by plan: free=0.15, growth=0.05, scale=0.03. Applied as platform fee on each order.
581
+ * @example 0.10
582
+ * @example 0.05
583
+ */
584
+ fee_rate: string;
585
+ /**
586
+ * Billing Status
587
+ * @description Subscription billing status. `active` = payments current. `past_due` = payment failed, service continues during grace period. `unpaid` = grace period expired, listings may be blocked.
588
+ * @example active
589
+ * @example past_due
590
+ */
591
+ billing_status: string;
592
+ /**
593
+ * Currency
594
+ * @description Account currency (ISO 4217, lowercase). Set automatically from Stripe Connect. Cannot be changed after connection.
595
+ * @example usd
596
+ * @example eur
597
+ */
598
+ currency?: string | null;
599
+ /**
600
+ * Ga Measurement Id
601
+ * @description Google Analytics 4 Measurement ID (G-XXXXXXXXXX). Set via PUT /v1/account. Injected on all your product pages and thank-you pages
602
+ * @example G-ABC123XYZ
603
+ */
604
+ ga_measurement_id?: string | null;
605
+ /** @description Account aggregate statistics. */
606
+ stats: components["schemas"]["AccountStats"];
607
+ /** @description Account operational readiness. `operational` is true when the account can sell. If false, `actions` lists what's needed with kind (api/human), resolve details, and `next` points to the highest-priority action. */
608
+ readiness: components["schemas"]["AccountReadiness"];
609
+ /**
610
+ * Created At
611
+ * Format: date-time
612
+ * @description Time at which the account was created
613
+ * @example 2026-03-15T10:00:00Z
614
+ */
615
+ created_at: string;
616
+ };
617
+ /** AccountStats */
618
+ AccountStats: {
619
+ /**
620
+ * Total Revenue
621
+ * @description Total revenue in smallest currency unit (completed orders)
622
+ * @example 145000
623
+ */
624
+ total_revenue: number;
625
+ /**
626
+ * Total Orders
627
+ * @description Total number of orders this month
628
+ * @example 47
629
+ */
630
+ total_orders: number;
631
+ /**
632
+ * Total Listings
633
+ * @description Total number of listings
634
+ * @example 12
635
+ */
636
+ total_listings: number;
637
+ };
638
+ /** Action */
639
+ Action: {
640
+ /**
641
+ * @description Machine-readable action identifier for automation branching.
642
+ * @example connect_stripe
643
+ */
644
+ code: components["schemas"]["ActionCode"];
645
+ /**
646
+ * @description Whether an agent can execute this directly (api) or needs human interaction (human).
647
+ * @example api
648
+ */
649
+ kind: components["schemas"]["ActionKind"];
650
+ /**
651
+ * Message
652
+ * @description Human-readable explanation. AI agents relay this to users.
653
+ * @example Set Stripe secret key to accept payments
654
+ */
655
+ message: string;
656
+ /** @description How to resolve this action. */
657
+ resolve: components["schemas"]["ActionResolve"];
658
+ };
659
+ /**
660
+ * ActionCode
661
+ * @enum {string}
662
+ */
663
+ ActionCode: "connect_stripe" | "enable_charges" | "update_billing" | "configure_webhook" | "publish_listing" | "webhook_disabled";
664
+ /**
665
+ * ActionKind
666
+ * @enum {string}
667
+ */
668
+ ActionKind: "api" | "human";
669
+ /** ActionResolve */
670
+ ActionResolve: {
671
+ /**
672
+ * Method
673
+ * @description How to resolve: HTTP method (POST, GET) for kind=api, 'redirect' for kind=human.
674
+ * @example POST
675
+ */
676
+ method: string;
677
+ /**
678
+ * Endpoint
679
+ * @description API endpoint path for kind=api actions.
680
+ * @example /v1/account/stripe-key
681
+ */
682
+ endpoint?: string | null;
683
+ /**
684
+ * Url
685
+ * @description Full URL for kind=human actions (browser redirect).
686
+ * @example https://console.listbee.so/connect/stripe
687
+ */
688
+ url?: string | null;
689
+ /**
690
+ * Params
691
+ * @description Example request body for kind=api actions.
692
+ * @example {
693
+ * "secret_key": "sk_live_..."
694
+ * }
695
+ */
696
+ params?: {
697
+ [key: string]: unknown;
698
+ } | null;
699
+ };
700
+ /** ApiKeyListResponse */
701
+ ApiKeyListResponse: {
702
+ /**
703
+ * Object
704
+ * @description Object type identifier.
705
+ * @default list
706
+ * @example list
707
+ * @constant
708
+ */
709
+ object: "list";
710
+ /**
711
+ * Data
712
+ * @description List of API keys
713
+ */
714
+ data: components["schemas"]["ApiKeyResponse"][];
715
+ /**
716
+ * Has More
717
+ * @description Always false — API keys are not paginated.
718
+ * @default false
719
+ * @example false
720
+ */
721
+ has_more: boolean;
722
+ /**
723
+ * Cursor
724
+ * @description Always null — API keys are not paginated.
725
+ * @example null
726
+ */
727
+ cursor?: string | null;
728
+ };
729
+ /** ApiKeyResponse */
730
+ ApiKeyResponse: {
731
+ /**
732
+ * Object
733
+ * @description Object type identifier.
734
+ * @default api_key
735
+ * @example api_key
736
+ * @constant
737
+ */
738
+ object: "api_key";
739
+ /**
740
+ * Id
741
+ * @description API key entity ID
742
+ * @example ak_7kQ2xY9mN3pR5tW1vB8a
743
+ */
744
+ id: string;
745
+ /**
746
+ * Name
747
+ * @description Human-readable label
748
+ * @example n8n production
749
+ */
750
+ name: string;
751
+ /**
752
+ * Prefix
753
+ * @description First 8 characters of the key value
754
+ * @example lb_abc12
755
+ */
756
+ prefix: string;
757
+ /**
758
+ * Key
759
+ * @description Full API key value. Use as Bearer token for all authenticated requests.
760
+ * @example lb_abc123def456ghi789
761
+ */
762
+ key: string;
763
+ /**
764
+ * Created At
765
+ * Format: date-time
766
+ * @description When the key was created
767
+ * @example 2026-04-01T10:00:00Z
768
+ */
769
+ created_at: string;
770
+ };
771
+ /**
772
+ * BlurMode
773
+ * @enum {string}
774
+ */
775
+ BlurMode: "true" | "false" | "auto";
776
+ /** Body_upload_file */
777
+ Body_upload_file: {
778
+ /**
779
+ * File
780
+ * @description The file to upload
781
+ */
782
+ file: string;
783
+ };
784
+ /**
785
+ * CheckoutFieldInput
786
+ * @description A field to collect from the buyer at checkout.
787
+ */
788
+ CheckoutFieldInput: {
789
+ /**
790
+ * Key
791
+ * @description Unique key for this field
792
+ * @example size
793
+ * @example note
794
+ */
795
+ key: string;
796
+ /**
797
+ * @description Field type
798
+ * @example text
799
+ */
800
+ type: components["schemas"]["CheckoutFieldType"];
801
+ /**
802
+ * Label
803
+ * @description Label shown to buyer
804
+ * @example Shoe size
805
+ */
806
+ label: string;
807
+ /**
808
+ * Required
809
+ * @description Whether this field is required
810
+ * @default true
811
+ * @example true
812
+ */
813
+ required: boolean;
814
+ /**
815
+ * Options
816
+ * @description Options for select fields
817
+ * @example [
818
+ * "S",
819
+ * "M",
820
+ * "L"
821
+ * ]
822
+ */
823
+ options?: string[] | null;
824
+ };
825
+ /**
826
+ * CheckoutFieldType
827
+ * @description Types of fields that can be collected at checkout.
828
+ * @enum {string}
829
+ */
830
+ CheckoutFieldType: "address" | "text" | "select" | "date";
831
+ /** CreateAccountRequest */
832
+ CreateAccountRequest: {
833
+ /**
834
+ * Email
835
+ * Format: email
836
+ * @description Account email. OTP will be sent here. Agent tip: use AgentMail or similar for autonomous OTP handling.
837
+ * @example seller@example.com
838
+ */
839
+ email: string;
840
+ };
841
+ /** CreateAccountResponse */
842
+ CreateAccountResponse: {
843
+ /**
844
+ * Object
845
+ * @description Object type.
846
+ * @default account_session
847
+ * @example account_session
848
+ * @constant
849
+ */
850
+ object: "account_session";
851
+ /**
852
+ * Email
853
+ * @description Email the OTP was sent to.
854
+ * @example seller@example.com
855
+ */
856
+ email: string;
857
+ /**
858
+ * Status
859
+ * @description Always otp_sent on success.
860
+ * @default otp_sent
861
+ * @example otp_sent
862
+ * @constant
863
+ */
864
+ status: "otp_sent";
865
+ /**
866
+ * Message
867
+ * @description Human-readable instruction.
868
+ * @default Check your email for a 6-digit verification code.
869
+ * @example Check your email for a 6-digit verification code.
870
+ */
871
+ message: string;
872
+ };
873
+ /** CreateApiKeyRequest */
874
+ CreateApiKeyRequest: {
875
+ /**
876
+ * Name
877
+ * @description Human-readable label for this API key.
878
+ * @example n8n production
879
+ * @example claude-code
880
+ */
881
+ name: string;
882
+ };
883
+ /**
884
+ * CreateListingRequest
885
+ * @description All optional display fields (name, description, tagline, highlights, cta, badges, cover, reviews, faqs) appear on the product page buyers see.
886
+ */
887
+ CreateListingRequest: {
888
+ /**
889
+ * Checkout Schema
890
+ * @description Custom fields to collect from the buyer at checkout (e.g. size, color, shipping address). Email is always collected.
891
+ * @example [
892
+ * {
893
+ * "key": "size",
894
+ * "label": "Size",
895
+ * "options": [
896
+ * "S",
897
+ * "M",
898
+ * "L"
899
+ * ],
900
+ * "type": "select"
901
+ * }
902
+ * ]
903
+ */
904
+ checkout_schema?: components["schemas"]["CheckoutFieldInput"][] | null;
905
+ /**
906
+ * Name
907
+ * @description Product name shown on the product page
908
+ * @example SEO Playbook 2026
909
+ * @example Premium Stock Picks
910
+ */
911
+ name: string;
912
+ /**
913
+ * Price
914
+ * @description Price in cents (smallest currency unit). Examples: $5 = 500, $29 = 2900, $99.99 = 9999.
915
+ * @example 500
916
+ * @example 2900
917
+ * @example 9999
918
+ */
919
+ price: number;
920
+ /**
921
+ * Stock
922
+ * @description Stock quantity. null = unlimited (default), 0 = out of stock, positive integer = sell N then stop. Auto-decrements on each order.
923
+ * @example null
924
+ * @example 100
925
+ * @example 0
926
+ */
927
+ stock?: number | null;
928
+ /**
929
+ * Description
930
+ * @description Product description shown on the product page. Improves buyer conversion. Plain text, max 5000 chars.
931
+ * @example A comprehensive guide to modern SEO techniques.
932
+ */
933
+ description?: string | null;
934
+ /**
935
+ * Tagline
936
+ * @description Short tagline shown below the product name on the product page. Max 140 chars.
937
+ * @example Updated for 2026 algorithm changes
938
+ */
939
+ tagline?: string | null;
940
+ /**
941
+ * Highlights
942
+ * @description Bullet-point features shown as badges on the product page. Max 10 items. Each should be short (2-4 words).
943
+ * @example [
944
+ * "50+ pages",
945
+ * "Actionable tips",
946
+ * "Free updates"
947
+ * ]
948
+ */
949
+ highlights?: string[] | null;
950
+ /**
951
+ * Cta
952
+ * @description Buy button text on the product page. Defaults to 'Buy Now' if omitted. Max 60 chars.
953
+ * @example Get Instant Access
954
+ * @example Download Now
955
+ */
956
+ cta?: string | null;
957
+ /**
958
+ * Cover
959
+ * @description Cover image file token from POST /v1/files. Shown prominently on the product page. Recommended: 1200x630px.
960
+ * @example file_tok_abc123
961
+ */
962
+ cover?: string | null;
963
+ /**
964
+ * Metadata
965
+ * @description Arbitrary key-value pairs forwarded in webhook event payloads. Use for your own tracking (campaign IDs, source tags).
966
+ * @example {
967
+ * "campaign": "launch-week",
968
+ * "source": "n8n"
969
+ * }
970
+ */
971
+ metadata?: {
972
+ [key: string]: unknown;
973
+ } | null;
974
+ /**
975
+ * Utm Source
976
+ * @description UTM source tag for Google Analytics. Defaults to 'listbee' if omitted
977
+ * @example google
978
+ * @example newsletter
979
+ * @example twitter
980
+ */
981
+ utm_source?: string | null;
982
+ /**
983
+ * Utm Medium
984
+ * @description UTM medium tag for Google Analytics. Defaults to 'product_page' if omitted
985
+ * @example cpc
986
+ * @example email
987
+ * @example social
988
+ */
989
+ utm_medium?: string | null;
990
+ /**
991
+ * Utm Campaign
992
+ * @description UTM campaign tag for Google Analytics. Defaults to the listing slug if omitted
993
+ * @example spring-sale
994
+ * @example launch-week
995
+ */
996
+ utm_campaign?: string | null;
997
+ /**
998
+ * Compare At Price
999
+ * @description Strikethrough price in cents (smallest currency unit). Must be greater than price. Examples: $39 = 3900.
1000
+ * @example 3900
1001
+ * @example 4900
1002
+ */
1003
+ compare_at_price?: number | null;
1004
+ /**
1005
+ * Badges
1006
+ * @description Short promotional badges shown on the product page (e.g. 'Best seller', 'Limited time'). Max 10 items.
1007
+ * @example [
1008
+ * "Limited time",
1009
+ * "Best seller"
1010
+ * ]
1011
+ */
1012
+ badges?: string[] | null;
1013
+ /**
1014
+ * @description Cover image blur mode. 'true' always blurs, 'false' never blurs, 'auto' blurs when deliverable is an image file.
1015
+ * @default auto
1016
+ * @example auto
1017
+ */
1018
+ cover_blur: components["schemas"]["BlurMode"];
1019
+ /**
1020
+ * Rating
1021
+ * @description Seller-provided aggregate star rating (1-5). Shown on the product page. Values outside range clamped.
1022
+ * @example 4.8
1023
+ * @example 4.5
1024
+ */
1025
+ rating?: number | null;
1026
+ /**
1027
+ * Rating Count
1028
+ * @description Seller-provided review or purchase count shown alongside the rating on the product page.
1029
+ * @example 1243
1030
+ * @example 89
1031
+ */
1032
+ rating_count?: number | null;
1033
+ /**
1034
+ * Reviews
1035
+ * @description Featured review cards shown on the product page. Seller-provided, not buyer-submitted. Max 10.
1036
+ * @example [
1037
+ * {
1038
+ * "content": "Best decision I've made for my health.",
1039
+ * "name": "Clara D.",
1040
+ * "rating": 4.5
1041
+ * }
1042
+ * ]
1043
+ */
1044
+ reviews?: components["schemas"]["ReviewInput"][] | null;
1045
+ /**
1046
+ * Faqs
1047
+ * @description FAQ accordion shown on the product page. Answers common buyer questions. Max 10 items.
1048
+ * @example [
1049
+ * {
1050
+ * "a": "Yes, completely beginner-friendly.",
1051
+ * "q": "Is this for beginners?"
1052
+ * }
1053
+ * ]
1054
+ */
1055
+ faqs?: components["schemas"]["FaqItemInput"][] | null;
1056
+ };
1057
+ /** CreateWebhookRequest */
1058
+ CreateWebhookRequest: {
1059
+ /**
1060
+ * Name
1061
+ * @description A name to help you identify this endpoint in the dashboard
1062
+ * @example Order notifications
1063
+ */
1064
+ name: string;
1065
+ /**
1066
+ * Url
1067
+ * Format: uri
1068
+ * @description The HTTPS URL that will receive POST requests for each event
1069
+ * @example https://example.com/webhooks/listbee
1070
+ */
1071
+ url: string;
1072
+ /**
1073
+ * Events
1074
+ * @description Event types to subscribe to. Empty = all events. Available: order.paid, order.fulfilled, order.shipped, order.refunded, order.disputed, order.dispute_closed, order.canceled, listing.created, listing.updated, listing.out_of_stock, listing.deleted.
1075
+ * @example [
1076
+ * "order.paid"
1077
+ * ]
1078
+ */
1079
+ events?: components["schemas"]["WebhookEventType"][];
1080
+ };
1081
+ /** CustomerListResponse */
1082
+ CustomerListResponse: {
1083
+ /**
1084
+ * Object
1085
+ * @description Object type identifier.
1086
+ * @default list
1087
+ * @example list
1088
+ * @constant
1089
+ */
1090
+ object: "list";
1091
+ /**
1092
+ * Data
1093
+ * @description Array of customer objects.
1094
+ */
1095
+ data: components["schemas"]["CustomerResponse"][];
1096
+ /**
1097
+ * Cursor
1098
+ * @description Cursor for next page.
1099
+ */
1100
+ cursor?: string | null;
1101
+ /**
1102
+ * Has More
1103
+ * @description Whether more results exist.
1104
+ * @example false
1105
+ */
1106
+ has_more: boolean;
1107
+ };
1108
+ /** CustomerResponse */
1109
+ CustomerResponse: {
1110
+ /**
1111
+ * Object
1112
+ * @description Object type identifier. Always `customer`.
1113
+ * @default customer
1114
+ * @example customer
1115
+ * @constant
1116
+ */
1117
+ object: "customer";
1118
+ /**
1119
+ * Id
1120
+ * @description Unique identifier.
1121
+ * @example cus_7kQ2xY9mN3pR5tW1vB8a01
1122
+ */
1123
+ id: string;
1124
+ /**
1125
+ * Email
1126
+ * @description Buyer email address.
1127
+ * @example alice@example.com
1128
+ */
1129
+ email: string;
1130
+ /**
1131
+ * Total Orders
1132
+ * @description Total number of completed orders from this buyer.
1133
+ * @example 3
1134
+ */
1135
+ total_orders: number;
1136
+ /**
1137
+ * Total Spent
1138
+ * @description Total amount spent in cents (smallest currency unit).
1139
+ * @example 8700
1140
+ */
1141
+ total_spent: number;
1142
+ /**
1143
+ * Currency
1144
+ * @description Currency code.
1145
+ * @example usd
1146
+ */
1147
+ currency: string;
1148
+ /**
1149
+ * First Order At
1150
+ * @description When this buyer first purchased.
1151
+ * @example 2026-03-15T10:00:00Z
1152
+ */
1153
+ first_order_at?: string | null;
1154
+ /**
1155
+ * Last Order At
1156
+ * @description When this buyer most recently purchased.
1157
+ * @example 2026-04-01T14:30:00Z
1158
+ */
1159
+ last_order_at?: string | null;
1160
+ /**
1161
+ * Created At
1162
+ * Format: date-time
1163
+ * @description When this customer record was created.
1164
+ * @example 2026-03-15T10:00:00Z
1165
+ */
1166
+ created_at: string;
1167
+ };
1168
+ /**
1169
+ * DeliverOrderRequest
1170
+ * @description Push deliverables for a specific order. Marks order as fulfilled.
1171
+ */
1172
+ DeliverOrderRequest: {
1173
+ /**
1174
+ * Deliverables
1175
+ * @description Array of deliverables to attach. Max 3. Mixed types allowed.
1176
+ * @example [
1177
+ * {
1178
+ * "token": "file_7kQ2xY9mN3pR5tW1vB8a01",
1179
+ * "type": "file"
1180
+ * },
1181
+ * {
1182
+ * "type": "url",
1183
+ * "value": "https://example.com/bonus"
1184
+ * }
1185
+ * ]
1186
+ */
1187
+ deliverables: components["schemas"]["DeliverableInputRequest"][];
1188
+ };
1189
+ /**
1190
+ * DeliverableInputRequest
1191
+ * @description Typed deliverable input. Shared by PUT /deliverables and POST /deliver.
1192
+ */
1193
+ DeliverableInputRequest: {
1194
+ /**
1195
+ * @description Deliverable type: `file` (uploaded via POST /v1/files), `url` (redirect), or `text` (literal string).
1196
+ * @example file
1197
+ */
1198
+ type: components["schemas"]["DeliverableType"];
1199
+ /**
1200
+ * Token
1201
+ * @description File token from POST /v1/files. Required when type is `file`.
1202
+ * @example file_7kQ2xY9mN3pR5tW1vB8a01
1203
+ */
1204
+ token?: string | null;
1205
+ /**
1206
+ * Value
1207
+ * @description URL (https required) or text content. Required when type is `url` or `text`.
1208
+ * @example https://example.com/secret-area
1209
+ */
1210
+ value?: string | null;
1211
+ };
1212
+ /** DeliverableResponse */
1213
+ DeliverableResponse: {
1214
+ /**
1215
+ * Object
1216
+ * @description Object type identifier.
1217
+ * @default deliverable
1218
+ * @example deliverable
1219
+ * @constant
1220
+ */
1221
+ object: "deliverable";
1222
+ /**
1223
+ * @description Deliverable type.
1224
+ * @example file
1225
+ */
1226
+ type: components["schemas"]["DeliverableType"];
1227
+ /**
1228
+ * @description Processing status.
1229
+ * @example ready
1230
+ */
1231
+ status: components["schemas"]["DeliverableStatus"];
1232
+ /**
1233
+ * Filename
1234
+ * @description Original filename (file type only).
1235
+ * @example ebook.pdf
1236
+ */
1237
+ filename?: string | null;
1238
+ /**
1239
+ * Size
1240
+ * @description File size in bytes (file type only).
1241
+ * @example 2458631
1242
+ */
1243
+ size?: number | null;
1244
+ /**
1245
+ * Mime Type
1246
+ * @description MIME type (file type only).
1247
+ * @example application/pdf
1248
+ */
1249
+ mime_type?: string | null;
1250
+ /**
1251
+ * Url
1252
+ * @description Redirect URL (url type only).
1253
+ * @example https://example.com/secret
1254
+ */
1255
+ url?: string | null;
1256
+ /**
1257
+ * Content
1258
+ * @description Text content (text type only).
1259
+ * @example Buy signal: AAPL
1260
+ */
1261
+ content?: string | null;
1262
+ };
1263
+ /**
1264
+ * DeliverableStatus
1265
+ * @enum {string}
1266
+ */
1267
+ DeliverableStatus: "processing" | "ready" | "failed";
1268
+ /**
1269
+ * DeliverableType
1270
+ * @enum {string}
1271
+ */
1272
+ DeliverableType: "file" | "url" | "text";
1273
+ /** FaqItemInput */
1274
+ FaqItemInput: {
1275
+ /**
1276
+ * Q
1277
+ * @description Question text
1278
+ * @example Is this for beginners?
1279
+ */
1280
+ q: string;
1281
+ /**
1282
+ * A
1283
+ * @description Answer text
1284
+ * @example Yes, completely beginner-friendly.
1285
+ */
1286
+ a: string;
1287
+ };
1288
+ /** FileResponse */
1289
+ FileResponse: {
1290
+ /**
1291
+ * Object
1292
+ * @description Object type identifier. Always `file`.
1293
+ * @default file
1294
+ * @example file
1295
+ * @constant
1296
+ */
1297
+ object: "file";
1298
+ /**
1299
+ * Id
1300
+ * @description File token. Pass as 'token' to set_deliverables, or as 'cover'/'avatar' to create/update listing/account.
1301
+ * @example file_7kQ2xY9mN3pR5tW1vB8a01
1302
+ */
1303
+ id: string;
1304
+ /**
1305
+ * Filename
1306
+ * @description Original filename
1307
+ * @example ebook.pdf
1308
+ */
1309
+ filename: string;
1310
+ /**
1311
+ * Size
1312
+ * @description File size in bytes
1313
+ * @example 2458631
1314
+ */
1315
+ size: number;
1316
+ /**
1317
+ * Mime Type
1318
+ * @description MIME type
1319
+ * @example application/pdf
1320
+ */
1321
+ mime_type: string;
1322
+ /**
1323
+ * Purpose
1324
+ * @description File purpose: 'deliverable' (listing content), 'cover' (listing cover image), or 'avatar' (account avatar).
1325
+ * @example deliverable
1326
+ */
1327
+ purpose: string;
1328
+ /**
1329
+ * Expires At
1330
+ * Format: date-time
1331
+ * @description Token expires at this time. Upload a new file after expiry.
1332
+ * @example 2026-04-03T15:00:00Z
1333
+ */
1334
+ expires_at: string;
1335
+ /**
1336
+ * Created At
1337
+ * Format: date-time
1338
+ * @description Time at which the file was uploaded
1339
+ * @example 2026-04-03T14:00:00Z
1340
+ */
1341
+ created_at: string;
1342
+ };
1343
+ /**
1344
+ * FulfillmentMode
1345
+ * @enum {string}
1346
+ */
1347
+ FulfillmentMode: "managed" | "external";
1348
+ /** HTTPValidationError */
1349
+ HTTPValidationError: {
1350
+ /** Detail */
1351
+ detail?: components["schemas"]["ValidationError"][];
1352
+ };
1353
+ /** ListingListResponse */
1354
+ ListingListResponse: {
1355
+ /**
1356
+ * Object
1357
+ * @description Object type identifier. Always `list`.
1358
+ * @default list
1359
+ * @example list
1360
+ * @constant
1361
+ */
1362
+ object: "list";
1363
+ /**
1364
+ * Data
1365
+ * @description Array of listing objects.
1366
+ */
1367
+ data: components["schemas"]["ListingResponse"][];
1368
+ /**
1369
+ * Total Count
1370
+ * @description Total number of matching resources across all pages
1371
+ * @default 0
1372
+ * @example 47
1373
+ */
1374
+ total_count: number;
1375
+ /**
1376
+ * Cursor
1377
+ * @description Pass as `cursor` query param to fetch the next page
1378
+ * @example lst_7kQ2xY9mN3pR5tW1vB8a
1379
+ */
1380
+ cursor?: string | null;
1381
+ /**
1382
+ * Has More
1383
+ * @description True if more results exist beyond this page
1384
+ * @default false
1385
+ * @example false
1386
+ */
1387
+ has_more: boolean;
1388
+ };
1389
+ /** ListingReadiness */
1390
+ ListingReadiness: {
1391
+ /**
1392
+ * Sellable
1393
+ * @description True when buyers can purchase. False means actions are needed.
1394
+ * @example true
1395
+ */
1396
+ sellable: boolean;
1397
+ /**
1398
+ * Actions
1399
+ * @description What's needed to make this listing sellable. Empty when sellable is true.
1400
+ */
1401
+ actions?: components["schemas"]["Action"][];
1402
+ /**
1403
+ * Next
1404
+ * @description Code of the highest-priority action. Agents execute this first.
1405
+ * @example connect_stripe
1406
+ */
1407
+ next?: string | null;
1408
+ };
1409
+ /** ListingResponse */
1410
+ ListingResponse: {
1411
+ /**
1412
+ * Object
1413
+ * @description Object type identifier. Always `listing`.
1414
+ * @default listing
1415
+ * @example listing
1416
+ * @constant
1417
+ */
1418
+ object: "listing";
1419
+ /**
1420
+ * Id
1421
+ * @description Unique identifier
1422
+ * @example lst_7kQ2xY9mN3pR5tW1vB8a
1423
+ */
1424
+ id: string;
1425
+ /**
1426
+ * Slug
1427
+ * @description URL slug for the product page
1428
+ * @example seo-playbook
1429
+ */
1430
+ slug: string;
1431
+ /**
1432
+ * Name
1433
+ * @description Product name shown on the product page
1434
+ * @example SEO Playbook 2026
1435
+ */
1436
+ name: string;
1437
+ /**
1438
+ * Description
1439
+ * @description Product description shown on the product page. Plain text.
1440
+ * @example A comprehensive guide to modern SEO.
1441
+ */
1442
+ description?: string | null;
1443
+ /**
1444
+ * Tagline
1445
+ * @description Short tagline shown below the product name on the product page.
1446
+ * @example Updated for 2026 algorithm changes
1447
+ */
1448
+ tagline?: string | null;
1449
+ /**
1450
+ * Highlights
1451
+ * @description Bullet-point features shown as badges on the product page.
1452
+ * @example [
1453
+ * "50+ pages",
1454
+ * "Actionable tips"
1455
+ * ]
1456
+ */
1457
+ highlights: string[];
1458
+ /**
1459
+ * Cta
1460
+ * @description Buy button text on the product page. Defaults to 'Buy Now' if omitted.
1461
+ * @example Get Instant Access
1462
+ */
1463
+ cta?: string | null;
1464
+ /**
1465
+ * Price
1466
+ * @description Price in cents (smallest currency unit). Examples: $5 = 500, $29 = 2900, $99.99 = 9999.
1467
+ * @example 500
1468
+ * @example 2900
1469
+ * @example 9999
1470
+ */
1471
+ price: number;
1472
+ /**
1473
+ * Deliverables
1474
+ * @description Array of deliverables attached to this listing. Empty for external fulfillment.
1475
+ */
1476
+ deliverables?: components["schemas"]["DeliverableResponse"][];
1477
+ /**
1478
+ * Has Deliverables
1479
+ * @description `true` if all deliverables have content and listing uses managed fulfillment
1480
+ * @example true
1481
+ */
1482
+ has_deliverables: boolean;
1483
+ /**
1484
+ * @description Who delivers after payment. `managed` = ListBee, `external` = seller/app.
1485
+ * @example managed
1486
+ */
1487
+ fulfillment: components["schemas"]["FulfillmentMode"];
1488
+ /**
1489
+ * Checkout Schema
1490
+ * @description Custom fields collected from the buyer at checkout
1491
+ */
1492
+ checkout_schema?: components["schemas"]["CheckoutFieldInput"][] | null;
1493
+ /**
1494
+ * Has Cover
1495
+ * @description True if a cover image exists (uploaded or generated)
1496
+ * @example true
1497
+ */
1498
+ has_cover: boolean;
1499
+ /**
1500
+ * Compare At Price
1501
+ * @description Strikethrough price in smallest currency unit
1502
+ * @example 3900
1503
+ */
1504
+ compare_at_price?: number | null;
1505
+ /**
1506
+ * Badges
1507
+ * @description Short promotional badges shown on the product page (e.g. 'Best seller', 'Limited time').
1508
+ * @example [
1509
+ * "Limited time"
1510
+ * ]
1511
+ */
1512
+ badges?: string[];
1513
+ /**
1514
+ * @description Cover image blur mode. 'true' always blurs, 'false' never blurs, 'auto' blurs when deliverable is an image file.
1515
+ * @default auto
1516
+ * @example auto
1517
+ */
1518
+ cover_blur: components["schemas"]["BlurMode"];
1519
+ /**
1520
+ * Rating
1521
+ * @description Seller-provided aggregate star rating (1-5). Shown on the product page.
1522
+ * @example 4.8
1523
+ */
1524
+ rating?: number | null;
1525
+ /**
1526
+ * Rating Count
1527
+ * @description Seller-provided review or purchase count shown alongside the rating on the product page.
1528
+ * @example 1243
1529
+ */
1530
+ rating_count?: number | null;
1531
+ /**
1532
+ * Reviews
1533
+ * @description Featured review cards shown on the product page. Seller-provided, not buyer-submitted.
1534
+ * @example []
1535
+ */
1536
+ reviews?: components["schemas"]["ReviewInput"][];
1537
+ /**
1538
+ * Faqs
1539
+ * @description FAQ accordion shown on the product page. Answers common buyer questions.
1540
+ * @example []
1541
+ */
1542
+ faqs?: components["schemas"]["FaqItemInput"][];
1543
+ /**
1544
+ * Metadata
1545
+ * @description Arbitrary key-value pairs forwarded in webhook event payloads. Set at creation or update.
1546
+ * @example {
1547
+ * "source": "n8n"
1548
+ * }
1549
+ */
1550
+ metadata?: {
1551
+ [key: string]: unknown;
1552
+ } | null;
1553
+ /**
1554
+ * Utm Source
1555
+ * @description UTM source tag for Google Analytics
1556
+ * @example google
1557
+ */
1558
+ utm_source?: string | null;
1559
+ /**
1560
+ * Utm Medium
1561
+ * @description UTM medium tag for Google Analytics
1562
+ * @example cpc
1563
+ */
1564
+ utm_medium?: string | null;
1565
+ /**
1566
+ * Utm Campaign
1567
+ * @description UTM campaign tag for Google Analytics
1568
+ * @example spring-sale
1569
+ */
1570
+ utm_campaign?: string | null;
1571
+ /**
1572
+ * @description Current listing status
1573
+ * @example published
1574
+ */
1575
+ status: components["schemas"]["ListingStatus"];
1576
+ /**
1577
+ * Stock
1578
+ * @description Stock quantity. null = unlimited, 0 = out of stock. Auto-decrements on each order.
1579
+ * @example null
1580
+ * @example 50
1581
+ * @example 0
1582
+ */
1583
+ stock?: number | null;
1584
+ /**
1585
+ * Url
1586
+ * @description Full product page URL — share this with buyers
1587
+ * @example https://buy.listbee.so/seo-playbook
1588
+ */
1589
+ url?: string | null;
1590
+ /**
1591
+ * Embed Url
1592
+ * @description Embeddable product page URL — use in iframes. Renders minimal version without header/footer.
1593
+ * @example https://buy.listbee.so/seo-playbook?embed=true
1594
+ */
1595
+ embed_url?: string | null;
1596
+ /** @description Monetization readiness. `sellable` is true when buyers can complete a purchase. If false, `actions` lists what's needed with kind (api/human), resolve details, and `next` points to the highest-priority action. */
1597
+ readiness: components["schemas"]["ListingReadiness"];
1598
+ /**
1599
+ * Created At
1600
+ * Format: date-time
1601
+ * @description Time at which the listing was created
1602
+ * @example 2026-04-01T12:00:00Z
1603
+ */
1604
+ created_at: string;
1605
+ };
1606
+ /**
1607
+ * ListingStatus
1608
+ * @enum {string}
1609
+ */
1610
+ ListingStatus: "draft" | "published";
1611
+ /** OrderListResponse */
1612
+ OrderListResponse: {
1613
+ /**
1614
+ * Object
1615
+ * @description Object type identifier. Always `list`.
1616
+ * @default list
1617
+ * @example list
1618
+ * @constant
1619
+ */
1620
+ object: "list";
1621
+ /**
1622
+ * Data
1623
+ * @description Array of order objects.
1624
+ */
1625
+ data: components["schemas"]["OrderResponse"][];
1626
+ /**
1627
+ * Total Count
1628
+ * @description Total number of matching resources across all pages
1629
+ * @default 0
1630
+ * @example 47
1631
+ */
1632
+ total_count: number;
1633
+ /**
1634
+ * Cursor
1635
+ * @description Pass as `cursor` query param to fetch the next page
1636
+ * @example lst_7kQ2xY9mN3pR5tW1vB8a
1637
+ */
1638
+ cursor?: string | null;
1639
+ /**
1640
+ * Has More
1641
+ * @description True if more results exist beyond this page
1642
+ * @default false
1643
+ * @example false
1644
+ */
1645
+ has_more: boolean;
1646
+ };
1647
+ /** OrderResponse */
1648
+ OrderResponse: {
1649
+ /**
1650
+ * Object
1651
+ * @description Object type identifier. Always `order`.
1652
+ * @default order
1653
+ * @example order
1654
+ * @constant
1655
+ */
1656
+ object: "order";
1657
+ /**
1658
+ * Id
1659
+ * @description Unique identifier
1660
+ * @example ord_9xM4kP7nR2qT5wY1
1661
+ */
1662
+ id: string;
1663
+ /**
1664
+ * Listing Id
1665
+ * @description ID of the purchased listing
1666
+ * @example lst_7kQ2xY9mN3pR5tW1vB8a
1667
+ */
1668
+ listing_id: string;
1669
+ /**
1670
+ * Buyer Email
1671
+ * @description Buyer's email address collected at Stripe Checkout. Use for customer communication.
1672
+ * @example buyer@example.com
1673
+ */
1674
+ buyer_email: string;
1675
+ /**
1676
+ * Amount
1677
+ * @description Amount paid in cents (smallest currency unit). $29.00 = 2900.
1678
+ * @example 2900
1679
+ */
1680
+ amount: number;
1681
+ /**
1682
+ * Currency
1683
+ * @description Three-letter ISO currency code, uppercase
1684
+ * @example USD
1685
+ */
1686
+ currency: string;
1687
+ /**
1688
+ * @description Current order status. Lifecycle: PENDING → PAID → FULFILLED. Terminal: CANCELED, FAILED.
1689
+ * @example paid
1690
+ */
1691
+ status: components["schemas"]["OrderStatus"];
1692
+ /**
1693
+ * Checkout Data
1694
+ * @description Custom checkout field values submitted by the buyer. Keys match the listing's checkout_schema.
1695
+ * @example {
1696
+ * "note": "Gift wrap please",
1697
+ * "size": "M"
1698
+ * }
1699
+ */
1700
+ checkout_data?: {
1701
+ [key: string]: unknown;
1702
+ } | null;
1703
+ /** @description Shipping address if collected */
1704
+ shipping_address?: components["schemas"]["ShippingAddressResponse"] | null;
1705
+ /**
1706
+ * Deliverables
1707
+ * @description Deliverables attached to this order. Auto-populated for managed fulfillment, or pushed via POST /deliver for external.
1708
+ */
1709
+ deliverables?: components["schemas"]["DeliverableResponse"][];
1710
+ /**
1711
+ * Carrier
1712
+ * @description Shipping carrier name
1713
+ * @example USPS
1714
+ */
1715
+ carrier?: string | null;
1716
+ /**
1717
+ * Tracking Code
1718
+ * @description Shipping tracking code
1719
+ * @example 9400111899223
1720
+ */
1721
+ tracking_code?: string | null;
1722
+ /**
1723
+ * Seller Note
1724
+ * @description Note from seller to buyer
1725
+ * @example Ships within 2 business days
1726
+ */
1727
+ seller_note?: string | null;
1728
+ /**
1729
+ * Stripe Payment Intent Id
1730
+ * @description Stripe PaymentIntent ID. Use for cross-referencing with Stripe dashboard or API.
1731
+ * @example pi_3abc123def456
1732
+ */
1733
+ stripe_payment_intent_id: string;
1734
+ /**
1735
+ * Platform Fee
1736
+ * @description Platform fee in cents deducted from this order. Amount seller receives = amount - platform_fee.
1737
+ * @default 0
1738
+ * @example 290
1739
+ */
1740
+ platform_fee: number;
1741
+ /**
1742
+ * Refund Amount
1743
+ * @description Amount refunded to buyer in cents. 0 if not refunded.
1744
+ * @default 0
1745
+ * @example 0
1746
+ * @example 2900
1747
+ */
1748
+ refund_amount: number;
1749
+ /**
1750
+ * Refunded At
1751
+ * @description When the refund was processed. null if not refunded.
1752
+ * @example 2026-04-01T15:30:00Z
1753
+ */
1754
+ refunded_at?: string | null;
1755
+ /**
1756
+ * Dispute Status
1757
+ * @description Stripe dispute status if disputed. Values: needs_response, under_review, won, lost.
1758
+ * @example needs_response
1759
+ */
1760
+ dispute_status?: string | null;
1761
+ /**
1762
+ * Dispute Reason
1763
+ * @description Reason for the dispute as reported by the buyer's bank.
1764
+ * @example product_not_received
1765
+ * @example fraudulent
1766
+ */
1767
+ dispute_reason?: string | null;
1768
+ /**
1769
+ * Dispute Amount
1770
+ * @description Disputed amount in cents. 0 if not disputed.
1771
+ * @default 0
1772
+ * @example 0
1773
+ * @example 2900
1774
+ */
1775
+ dispute_amount: number;
1776
+ /**
1777
+ * Disputed At
1778
+ * @description When the dispute was opened. null if not disputed.
1779
+ * @example 2026-04-02T10:00:00Z
1780
+ */
1781
+ disputed_at?: string | null;
1782
+ /**
1783
+ * Shipped At
1784
+ * @description When shipping tracking was added
1785
+ * @example 2026-04-02T16:00:00Z
1786
+ */
1787
+ shipped_at?: string | null;
1788
+ /**
1789
+ * Paid At
1790
+ * @description When payment was confirmed
1791
+ * @example 2026-04-02T14:30:00Z
1792
+ */
1793
+ paid_at?: string | null;
1794
+ /**
1795
+ * Fulfilled At
1796
+ * @description When order was fulfilled
1797
+ * @example 2026-04-02T15:00:00Z
1798
+ */
1799
+ fulfilled_at?: string | null;
1800
+ /**
1801
+ * Created At
1802
+ * Format: date-time
1803
+ * @description Time at which the order was created
1804
+ * @example 2026-04-02T14:00:00Z
1805
+ */
1806
+ created_at: string;
1807
+ };
1808
+ /**
1809
+ * OrderStatus
1810
+ * @enum {string}
1811
+ */
1812
+ OrderStatus: "pending" | "paid" | "fulfilled" | "canceled" | "failed";
1813
+ /**
1814
+ * ProblemDetail
1815
+ * @description RFC 9457 Problem Details for HTTP APIs.
1816
+ */
1817
+ ProblemDetail: {
1818
+ /**
1819
+ * Type
1820
+ * @description URI identifying the error type. Points to documentation.
1821
+ * @example https://docs.listbee.so/errors/invalid-request
1822
+ */
1823
+ type: string;
1824
+ /**
1825
+ * Title
1826
+ * @description Short, stable, human-readable label for the error category.
1827
+ * @example Invalid Request
1828
+ */
1829
+ title: string;
1830
+ /**
1831
+ * Status
1832
+ * @description HTTP status code echoed in the body.
1833
+ * @example 422
1834
+ */
1835
+ status: number;
1836
+ /**
1837
+ * Detail
1838
+ * @description Specific explanation of what went wrong.
1839
+ * @example Price must be greater than 0
1840
+ */
1841
+ detail: string;
1842
+ /**
1843
+ * Code
1844
+ * @description Machine-readable error code for programmatic handling.
1845
+ * @example invalid_price
1846
+ */
1847
+ code: string;
1848
+ /**
1849
+ * Param
1850
+ * @description The request field that caused the error, if applicable.
1851
+ * @example price
1852
+ */
1853
+ param?: string | null;
1854
+ };
1855
+ /** ReviewInput */
1856
+ ReviewInput: {
1857
+ /**
1858
+ * Name
1859
+ * @description Reviewer display name
1860
+ * @example Clara D.
1861
+ */
1862
+ name: string;
1863
+ /**
1864
+ * Rating
1865
+ * @description Star rating (1–5). Values outside this range are clamped automatically
1866
+ * @example 4.5
1867
+ */
1868
+ rating: number;
1869
+ /**
1870
+ * Content
1871
+ * @description Review body text
1872
+ * @example Excellent quality content.
1873
+ */
1874
+ content: string;
1875
+ };
1876
+ /**
1877
+ * SetDeliverablesRequest
1878
+ * @description Replace all deliverables on a listing.
1879
+ */
1880
+ SetDeliverablesRequest: {
1881
+ /**
1882
+ * Deliverables
1883
+ * @description Array of deliverables. Max 3. Mixed types allowed.
1884
+ * @example [
1885
+ * {
1886
+ * "token": "file_7kQ2xY9mN3pR5tW1vB8a01",
1887
+ * "type": "file"
1888
+ * }
1889
+ * ]
1890
+ */
1891
+ deliverables: components["schemas"]["DeliverableInputRequest"][];
1892
+ };
1893
+ /**
1894
+ * ShipOrderRequest
1895
+ * @description Add shipping tracking to an order.
1896
+ */
1897
+ ShipOrderRequest: {
1898
+ /**
1899
+ * Carrier
1900
+ * @description Shipping carrier name
1901
+ * @example USPS
1902
+ * @example FedEx
1903
+ * @example DHL
1904
+ */
1905
+ carrier: string;
1906
+ /**
1907
+ * Tracking Code
1908
+ * @description Tracking number
1909
+ * @example 9400111899223
1910
+ */
1911
+ tracking_code: string;
1912
+ /**
1913
+ * Seller Note
1914
+ * @description Note to include with tracking notification
1915
+ * @example Enjoy your purchase!
1916
+ */
1917
+ seller_note?: string | null;
1918
+ };
1919
+ /** ShippingAddressResponse */
1920
+ ShippingAddressResponse: {
1921
+ /**
1922
+ * Name
1923
+ * @description Recipient full name
1924
+ * @example Jane Doe
1925
+ */
1926
+ name: string;
1927
+ /**
1928
+ * Line1
1929
+ * @description Street address line 1
1930
+ * @example 123 Main St
1931
+ */
1932
+ line1: string;
1933
+ /**
1934
+ * Line2
1935
+ * @description Street address line 2 (apartment, suite, etc.)
1936
+ * @example Apt 4B
1937
+ */
1938
+ line2?: string | null;
1939
+ /**
1940
+ * City
1941
+ * @description City or municipality
1942
+ * @example Austin
1943
+ */
1944
+ city: string;
1945
+ /**
1946
+ * State
1947
+ * @description State, province, or region
1948
+ * @example TX
1949
+ */
1950
+ state?: string | null;
1951
+ /**
1952
+ * Postal Code
1953
+ * @description Postal or ZIP code
1954
+ * @example 78701
1955
+ */
1956
+ postal_code: string;
1957
+ /**
1958
+ * Country
1959
+ * @description ISO 3166-1 alpha-2 country code
1960
+ * @example US
1961
+ */
1962
+ country: string;
1963
+ /**
1964
+ * Phone
1965
+ * @description Phone number in E.164 format
1966
+ * @example +15125551234
1967
+ */
1968
+ phone?: string | null;
1969
+ };
1970
+ /** StripeConnectSessionResponse */
1971
+ StripeConnectSessionResponse: {
1972
+ /**
1973
+ * Object
1974
+ * @description Object type.
1975
+ * @default stripe_connect_session
1976
+ * @example stripe_connect_session
1977
+ * @constant
1978
+ */
1979
+ object: "stripe_connect_session";
1980
+ /**
1981
+ * Url
1982
+ * @description Stripe onboarding URL. Redirect the human here.
1983
+ * @example https://connect.stripe.com/setup/...
1984
+ */
1985
+ url: string;
1986
+ /**
1987
+ * Expires At
1988
+ * Format: date-time
1989
+ * @description When this URL expires.
1990
+ * @example 2026-04-03T16:00:00Z
1991
+ */
1992
+ expires_at: string;
1993
+ };
1994
+ /**
1995
+ * UpdateAccountRequest
1996
+ * @description Partial update for account settings.
1997
+ */
1998
+ UpdateAccountRequest: {
1999
+ /**
2000
+ * Display Name
2001
+ * @description Seller name shown on product pages. Improves buyer trust and conversion. If not set, buyers see a generic seller label.
2002
+ * @example Acme Digital
2003
+ * @example Sarah's Templates
2004
+ */
2005
+ display_name?: string | null;
2006
+ /**
2007
+ * Bio
2008
+ * @description Short seller bio shown on product pages. Plain text. Helps buyers understand who they're buying from.
2009
+ * @example We create premium digital tools for modern marketers.
2010
+ */
2011
+ bio?: string | null;
2012
+ /**
2013
+ * Avatar
2014
+ * @description Avatar image file token from POST /v1/files. Replaces any existing avatar. Shown on product pages next to seller name.
2015
+ * @example file_tok_abc123
2016
+ */
2017
+ avatar?: string | null;
2018
+ /**
2019
+ * Ga Measurement Id
2020
+ * @description Google Analytics 4 Measurement ID (G-XXXXXXXXXX). Set to null to remove
2021
+ * @example G-ABC123XYZ
2022
+ */
2023
+ ga_measurement_id?: string | null;
2024
+ };
2025
+ /**
2026
+ * UpdateListingRequest
2027
+ * @description Partial update — only provided fields are changed.
2028
+ */
2029
+ UpdateListingRequest: {
2030
+ /**
2031
+ * Name
2032
+ * @description Product name
2033
+ * @example SEO Playbook 2026
2034
+ */
2035
+ name?: string | null;
2036
+ /**
2037
+ * Slug
2038
+ * @description URL slug for the product page (e.g. 'seo-playbook'). Only changeable in draft. Auto-slugified. On conflict, random suffix appended.
2039
+ * @example seo-playbook-2026
2040
+ */
2041
+ slug?: string | null;
2042
+ /**
2043
+ * Price
2044
+ * @description Price in cents (smallest currency unit). Examples: $5 = 500, $29 = 2900, $99.99 = 9999.
2045
+ * @example 500
2046
+ * @example 2900
2047
+ * @example 9999
2048
+ */
2049
+ price?: number | null;
2050
+ /**
2051
+ * Stock
2052
+ * @description Stock quantity. null = unlimited, 0 = out of stock, positive integer = sell N then stop.
2053
+ * @example 100
2054
+ * @example 0
2055
+ */
2056
+ stock?: number | null;
2057
+ /**
2058
+ * Checkout Schema
2059
+ * @description Custom fields to collect from the buyer at checkout. Replaces existing schema.
2060
+ * @example [
2061
+ * {
2062
+ * "key": "size",
2063
+ * "label": "Size",
2064
+ * "options": [
2065
+ * "S",
2066
+ * "M",
2067
+ * "L"
2068
+ * ],
2069
+ * "type": "select"
2070
+ * }
2071
+ * ]
2072
+ */
2073
+ checkout_schema?: components["schemas"]["CheckoutFieldInput"][] | null;
2074
+ /**
2075
+ * Description
2076
+ * @description Product description shown on the product page. Improves buyer conversion. Plain text, max 5000 chars.
2077
+ * @example A comprehensive guide to modern SEO.
2078
+ */
2079
+ description?: string | null;
2080
+ /**
2081
+ * Tagline
2082
+ * @description Short tagline shown below the product name on the product page. Max 140 chars.
2083
+ * @example Updated for 2026
2084
+ */
2085
+ tagline?: string | null;
2086
+ /**
2087
+ * Highlights
2088
+ * @description Bullet-point features shown as badges on the product page. Max 10 items. Each should be short (2-4 words).
2089
+ * @example [
2090
+ * "50+ pages",
2091
+ * "Free updates"
2092
+ * ]
2093
+ */
2094
+ highlights?: string[] | null;
2095
+ /**
2096
+ * Cta
2097
+ * @description Buy button text on the product page. Defaults to 'Buy Now' if omitted. Max 60 chars.
2098
+ * @example Get Instant Access
2099
+ */
2100
+ cta?: string | null;
2101
+ /**
2102
+ * Cover
2103
+ * @description Cover image file token from POST /v1/files. Shown prominently on the product page. Recommended: 1200x630px.
2104
+ * @example file_tok_abc123
2105
+ */
2106
+ cover?: string | null;
2107
+ /**
2108
+ * Metadata
2109
+ * @description Arbitrary key-value pairs forwarded in webhook event payloads. Use for your own tracking (campaign IDs, source tags).
2110
+ * @example {
2111
+ * "source": "n8n"
2112
+ * }
2113
+ */
2114
+ metadata?: {
2115
+ [key: string]: unknown;
2116
+ } | null;
2117
+ /**
2118
+ * Utm Source
2119
+ * @description UTM source tag for Google Analytics
2120
+ * @example google
2121
+ */
2122
+ utm_source?: string | null;
2123
+ /**
2124
+ * Utm Medium
2125
+ * @description UTM medium tag for Google Analytics
2126
+ * @example cpc
2127
+ */
2128
+ utm_medium?: string | null;
2129
+ /**
2130
+ * Utm Campaign
2131
+ * @description UTM campaign tag for Google Analytics
2132
+ * @example spring-sale
2133
+ */
2134
+ utm_campaign?: string | null;
2135
+ /**
2136
+ * Compare At Price
2137
+ * @description Strikethrough price in cents (smallest currency unit). Must be greater than price. Examples: $39 = 3900.
2138
+ * @example 3900
2139
+ * @example 4900
2140
+ */
2141
+ compare_at_price?: number | null;
2142
+ /**
2143
+ * Badges
2144
+ * @description Short promotional badges shown on the product page (e.g. 'Best seller', 'Limited time'). Max 10 items.
2145
+ * @example [
2146
+ * "Best seller"
2147
+ * ]
2148
+ */
2149
+ badges?: string[] | null;
2150
+ /**
2151
+ * @description Cover image blur mode. 'true' always blurs, 'false' never blurs, 'auto' blurs when deliverable is an image file.
2152
+ * @example auto
2153
+ */
2154
+ cover_blur?: components["schemas"]["BlurMode"] | null;
2155
+ /**
2156
+ * Rating
2157
+ * @description Seller-provided aggregate star rating (1-5). Shown on the product page. Values outside range clamped.
2158
+ * @example 4.8
2159
+ */
2160
+ rating?: number | null;
2161
+ /**
2162
+ * Rating Count
2163
+ * @description Seller-provided review or purchase count shown alongside the rating on the product page.
2164
+ * @example 1243
2165
+ */
2166
+ rating_count?: number | null;
2167
+ /**
2168
+ * Reviews
2169
+ * @description Featured review cards shown on the product page. Seller-provided, not buyer-submitted. Max 10.
2170
+ */
2171
+ reviews?: components["schemas"]["ReviewInput"][] | null;
2172
+ /**
2173
+ * Faqs
2174
+ * @description FAQ accordion shown on the product page. Answers common buyer questions. Max 10 items.
2175
+ */
2176
+ faqs?: components["schemas"]["FaqItemInput"][] | null;
2177
+ };
2178
+ /** UpdateWebhookRequest */
2179
+ UpdateWebhookRequest: {
2180
+ /**
2181
+ * Name
2182
+ * @description Display name
2183
+ * @example Order notifications
2184
+ */
2185
+ name?: string | null;
2186
+ /**
2187
+ * Url
2188
+ * @description HTTPS endpoint URL
2189
+ * @example https://example.com/webhooks/listbee
2190
+ */
2191
+ url?: string | null;
2192
+ /**
2193
+ * Events
2194
+ * @description Replaces the current event subscriptions. Empty list subscribes to all events
2195
+ * @example [
2196
+ * "order.paid"
2197
+ * ]
2198
+ */
2199
+ events?: components["schemas"]["WebhookEventType"][] | null;
2200
+ /**
2201
+ * Enabled
2202
+ * @description Set to `false` to pause delivery without deleting the endpoint
2203
+ * @example true
2204
+ */
2205
+ enabled?: boolean | null;
2206
+ };
2207
+ /** ValidationError */
2208
+ ValidationError: {
2209
+ /** Location */
2210
+ loc: (string | number)[];
2211
+ /** Message */
2212
+ msg: string;
2213
+ /** Error Type */
2214
+ type: string;
2215
+ /** Input */
2216
+ input?: unknown;
2217
+ /** Context */
2218
+ ctx?: Record<string, never>;
2219
+ };
2220
+ /** VerifyOtpRequest */
2221
+ VerifyOtpRequest: {
2222
+ /**
2223
+ * Email
2224
+ * Format: email
2225
+ * @description Email used in account creation.
2226
+ * @example seller@example.com
2227
+ */
2228
+ email: string;
2229
+ /**
2230
+ * Code
2231
+ * @description 6-digit OTP code from email.
2232
+ * @example 482901
2233
+ */
2234
+ code: string;
2235
+ };
2236
+ /** VerifyOtpResponse */
2237
+ VerifyOtpResponse: {
2238
+ /**
2239
+ * Object
2240
+ * @description Object type.
2241
+ * @default verify_result
2242
+ * @example verify_result
2243
+ * @constant
2244
+ */
2245
+ object: "verify_result";
2246
+ /** @description The created or existing account with readiness. */
2247
+ account: components["schemas"]["AccountResponse"];
2248
+ /**
2249
+ * Api Key
2250
+ * @description API key for authenticating all subsequent requests. Always returned — store it, use it as Bearer token.
2251
+ * @example lb_abc123...
2252
+ */
2253
+ api_key: string;
2254
+ };
2255
+ /** WebhookEventListResponse */
2256
+ WebhookEventListResponse: {
2257
+ /**
2258
+ * Object
2259
+ * @description Object type identifier. Always `list`.
2260
+ * @default list
2261
+ * @example list
2262
+ * @constant
2263
+ */
2264
+ object: "list";
2265
+ /**
2266
+ * Data
2267
+ * @description Array of webhook event objects.
2268
+ */
2269
+ data: components["schemas"]["WebhookEventResponse"][];
2270
+ /**
2271
+ * Cursor
2272
+ * @description Pass as `cursor` query param to fetch the next page
2273
+ * @example lst_7kQ2xY9mN3pR5tW1vB8a
2274
+ */
2275
+ cursor?: string | null;
2276
+ /**
2277
+ * Has More
2278
+ * @description True if more results exist beyond this page
2279
+ * @default false
2280
+ * @example false
2281
+ */
2282
+ has_more: boolean;
2283
+ };
2284
+ /** WebhookEventResponse */
2285
+ WebhookEventResponse: {
2286
+ /**
2287
+ * Object
2288
+ * @description Object type identifier. Always `webhook_event`.
2289
+ * @default webhook_event
2290
+ * @example webhook_event
2291
+ * @constant
2292
+ */
2293
+ object: "webhook_event";
2294
+ /**
2295
+ * Id
2296
+ * @description Unique event ID
2297
+ * @example evt_7kQ2xY9mN3pR5tW1
2298
+ */
2299
+ id: string;
2300
+ /**
2301
+ * @description The event type that triggered this delivery
2302
+ * @example order.paid
2303
+ */
2304
+ event_type: components["schemas"]["WebhookEventType"];
2305
+ /**
2306
+ * Status
2307
+ * @description Computed status: `delivered` if delivered_at is set, `failed` if attempts >= max_retries, otherwise `pending`.
2308
+ * @example delivered
2309
+ * @enum {string}
2310
+ */
2311
+ status: "pending" | "delivered" | "failed";
2312
+ /**
2313
+ * Attempts
2314
+ * @description Number of delivery attempts made
2315
+ * @example 1
2316
+ */
2317
+ attempts: number;
2318
+ /**
2319
+ * Max Retries
2320
+ * @description Maximum delivery attempts before marking as failed
2321
+ * @example 5
2322
+ */
2323
+ max_retries: number;
2324
+ /**
2325
+ * Response Status
2326
+ * @description HTTP status code from the last delivery attempt
2327
+ * @example 200
2328
+ */
2329
+ response_status?: number | null;
2330
+ /**
2331
+ * Last Error
2332
+ * @description Error message from the last failed attempt
2333
+ * @example null
2334
+ */
2335
+ last_error?: string | null;
2336
+ /**
2337
+ * Created At
2338
+ * Format: date-time
2339
+ * @description Time at which the event was created
2340
+ * @example 2026-04-03T14:30:00Z
2341
+ */
2342
+ created_at: string;
2343
+ /**
2344
+ * Delivered At
2345
+ * @description Time at which the event was successfully delivered
2346
+ * @example 2026-04-03T14:30:01Z
2347
+ */
2348
+ delivered_at?: string | null;
2349
+ /**
2350
+ * Failed At
2351
+ * @description Time at which the event permanently failed (all retries exhausted)
2352
+ * @example null
2353
+ */
2354
+ failed_at?: string | null;
2355
+ /**
2356
+ * Next Retry At
2357
+ * @description Expected time for the next delivery retry
2358
+ * @example null
2359
+ */
2360
+ next_retry_at?: string | null;
2361
+ };
2362
+ /**
2363
+ * WebhookEventType
2364
+ * @enum {string}
2365
+ */
2366
+ WebhookEventType: "order.paid" | "order.fulfilled" | "order.shipped" | "order.refunded" | "order.disputed" | "order.dispute_closed" | "order.canceled" | "listing.created" | "listing.updated" | "listing.out_of_stock" | "listing.deleted" | "customer.created";
2367
+ /** WebhookListResponse */
2368
+ WebhookListResponse: {
2369
+ /**
2370
+ * Object
2371
+ * @description Object type identifier. Always `list`.
2372
+ * @default list
2373
+ * @example list
2374
+ * @constant
2375
+ */
2376
+ object: "list";
2377
+ /**
2378
+ * Data
2379
+ * @description Array of webhook objects.
2380
+ */
2381
+ data: components["schemas"]["WebhookResponse"][];
2382
+ };
2383
+ /** WebhookReadiness */
2384
+ WebhookReadiness: {
2385
+ /**
2386
+ * Ready
2387
+ * @description True when the webhook is active and receiving events.
2388
+ * @example true
2389
+ */
2390
+ ready: boolean;
2391
+ /**
2392
+ * Actions
2393
+ * @description Steps to fix the webhook.
2394
+ */
2395
+ actions?: components["schemas"]["Action"][];
2396
+ /**
2397
+ * Next
2398
+ * @description Highest-priority action code.
2399
+ * @example null
2400
+ */
2401
+ next?: string | null;
2402
+ };
2403
+ /** WebhookResponse */
2404
+ WebhookResponse: {
2405
+ /**
2406
+ * Object
2407
+ * @description Object type identifier. Always `webhook`.
2408
+ * @default webhook
2409
+ * @example webhook
2410
+ * @constant
2411
+ */
2412
+ object: "webhook";
2413
+ /**
2414
+ * Id
2415
+ * @description Unique identifier
2416
+ * @example wh_3mK8nP2qR5tW7xY1
2417
+ */
2418
+ id: string;
2419
+ /**
2420
+ * Name
2421
+ * @description Display name
2422
+ * @example Order notifications
2423
+ */
2424
+ name: string;
2425
+ /**
2426
+ * Url
2427
+ * @description Endpoint URL
2428
+ * @example https://example.com/webhooks/listbee
2429
+ */
2430
+ url: string;
2431
+ /**
2432
+ * Secret
2433
+ * @description HMAC-SHA256 signing secret. Use to verify webhook payload signatures. See docs for verification examples.
2434
+ * @example whsec_a1b2c3d4e5f6
2435
+ */
2436
+ secret: string;
2437
+ /**
2438
+ * Events
2439
+ * @description Subscribed event types. Empty means all events
2440
+ * @example [
2441
+ * "order.paid"
2442
+ * ]
2443
+ */
2444
+ events: components["schemas"]["WebhookEventType"][];
2445
+ /**
2446
+ * Enabled
2447
+ * @description `false` when delivery is paused
2448
+ * @example true
2449
+ */
2450
+ enabled: boolean;
2451
+ /**
2452
+ * Disabled Reason
2453
+ * @description Reason the webhook was disabled. `consecutive_failures` when auto-disabled after repeated delivery failures.
2454
+ * @example null
2455
+ */
2456
+ disabled_reason?: string | null;
2457
+ /** @description Readiness status with actionable steps if the webhook needs attention. */
2458
+ readiness: components["schemas"]["WebhookReadiness"];
2459
+ /**
2460
+ * Created At
2461
+ * Format: date-time
2462
+ * @description Time at which the endpoint was created
2463
+ * @example 2026-04-01T09:00:00Z
2464
+ */
2465
+ created_at: string;
2466
+ };
2467
+ /** WebhookTestResponse */
2468
+ WebhookTestResponse: {
2469
+ /**
2470
+ * Object
2471
+ * @description Object type identifier. Always `webhook_test`.
2472
+ * @default webhook_test
2473
+ * @example webhook_test
2474
+ * @constant
2475
+ */
2476
+ object: "webhook_test";
2477
+ /**
2478
+ * Success
2479
+ * @description `true` if the endpoint returned a 2xx status code
2480
+ * @example true
2481
+ */
2482
+ success: boolean;
2483
+ /**
2484
+ * Status Code
2485
+ * @description HTTP status code returned by the endpoint
2486
+ * @example 200
2487
+ */
2488
+ status_code?: number | null;
2489
+ /**
2490
+ * Response Body
2491
+ * @description Response body from the endpoint, truncated to 2000 characters
2492
+ * @example OK
2493
+ */
2494
+ response_body?: string | null;
2495
+ /**
2496
+ * Error
2497
+ * @description Error message if delivery failed entirely
2498
+ * @example null
2499
+ */
2500
+ error?: string | null;
2501
+ };
2502
+ };
2503
+ responses: never;
2504
+ parameters: never;
2505
+ requestBodies: never;
2506
+ headers: never;
2507
+ pathItems: never;
2508
+ }
2509
+ export type $defs = Record<string, never>;
2510
+ export interface operations {
2511
+ get_account: {
2512
+ parameters: {
2513
+ query?: never;
2514
+ header?: never;
2515
+ path?: never;
2516
+ cookie?: never;
2517
+ };
2518
+ requestBody?: never;
2519
+ responses: {
2520
+ /** @description Successful Response */
2521
+ 200: {
2522
+ headers: {
2523
+ [name: string]: unknown;
2524
+ };
2525
+ content: {
2526
+ "application/json": components["schemas"]["AccountResponse"];
2527
+ };
2528
+ };
2529
+ /** @description Invalid or missing API key. */
2530
+ 401: {
2531
+ headers: {
2532
+ [name: string]: unknown;
2533
+ };
2534
+ content: {
2535
+ "application/json": components["schemas"]["ProblemDetail"];
2536
+ };
2537
+ };
2538
+ };
2539
+ };
2540
+ update_account: {
2541
+ parameters: {
2542
+ query?: never;
2543
+ header?: never;
2544
+ path?: never;
2545
+ cookie?: never;
2546
+ };
2547
+ requestBody: {
2548
+ content: {
2549
+ "application/json": components["schemas"]["UpdateAccountRequest"];
2550
+ };
2551
+ };
2552
+ responses: {
2553
+ /** @description Successful Response */
2554
+ 200: {
2555
+ headers: {
2556
+ [name: string]: unknown;
2557
+ };
2558
+ content: {
2559
+ "application/json": components["schemas"]["AccountResponse"];
2560
+ };
2561
+ };
2562
+ /** @description Invalid or missing API key. */
2563
+ 401: {
2564
+ headers: {
2565
+ [name: string]: unknown;
2566
+ };
2567
+ content: {
2568
+ "application/json": components["schemas"]["ProblemDetail"];
2569
+ };
2570
+ };
2571
+ /** @description Validation error. */
2572
+ 422: {
2573
+ headers: {
2574
+ [name: string]: unknown;
2575
+ };
2576
+ content: {
2577
+ "application/json": components["schemas"]["ProblemDetail"];
2578
+ };
2579
+ };
2580
+ };
2581
+ };
2582
+ create_account: {
2583
+ parameters: {
2584
+ query?: never;
2585
+ header?: never;
2586
+ path?: never;
2587
+ cookie?: never;
2588
+ };
2589
+ requestBody: {
2590
+ content: {
2591
+ "application/json": components["schemas"]["CreateAccountRequest"];
2592
+ };
2593
+ };
2594
+ responses: {
2595
+ /** @description Successful Response */
2596
+ 200: {
2597
+ headers: {
2598
+ [name: string]: unknown;
2599
+ };
2600
+ content: {
2601
+ "application/json": components["schemas"]["CreateAccountResponse"];
2602
+ };
2603
+ };
2604
+ /** @description Blocked email domain. */
2605
+ 422: {
2606
+ headers: {
2607
+ [name: string]: unknown;
2608
+ };
2609
+ content: {
2610
+ "application/json": components["schemas"]["ProblemDetail"];
2611
+ };
2612
+ };
2613
+ /** @description Too many OTP requests. */
2614
+ 429: {
2615
+ headers: {
2616
+ [name: string]: unknown;
2617
+ };
2618
+ content: {
2619
+ "application/json": components["schemas"]["ProblemDetail"];
2620
+ };
2621
+ };
2622
+ };
2623
+ };
2624
+ delete_account: {
2625
+ parameters: {
2626
+ query?: never;
2627
+ header?: never;
2628
+ path?: never;
2629
+ cookie?: never;
2630
+ };
2631
+ requestBody?: never;
2632
+ responses: {
2633
+ /** @description Successful Response */
2634
+ 204: {
2635
+ headers: {
2636
+ [name: string]: unknown;
2637
+ };
2638
+ content?: never;
2639
+ };
2640
+ /** @description Invalid or missing API key. */
2641
+ 401: {
2642
+ headers: {
2643
+ [name: string]: unknown;
2644
+ };
2645
+ content: {
2646
+ "application/json": components["schemas"]["ProblemDetail"];
2647
+ };
2648
+ };
2649
+ };
2650
+ };
2651
+ verify_otp: {
2652
+ parameters: {
2653
+ query?: never;
2654
+ header?: never;
2655
+ path?: never;
2656
+ cookie?: never;
2657
+ };
2658
+ requestBody: {
2659
+ content: {
2660
+ "application/json": components["schemas"]["VerifyOtpRequest"];
2661
+ };
2662
+ };
2663
+ responses: {
2664
+ /** @description Successful Response */
2665
+ 201: {
2666
+ headers: {
2667
+ [name: string]: unknown;
2668
+ };
2669
+ content: {
2670
+ "application/json": components["schemas"]["VerifyOtpResponse"];
2671
+ };
2672
+ };
2673
+ /** @description Invalid or expired OTP code. */
2674
+ 401: {
2675
+ headers: {
2676
+ [name: string]: unknown;
2677
+ };
2678
+ content: {
2679
+ "application/json": components["schemas"]["ProblemDetail"];
2680
+ };
2681
+ };
2682
+ /** @description Validation Error */
2683
+ 422: {
2684
+ headers: {
2685
+ [name: string]: unknown;
2686
+ };
2687
+ content: {
2688
+ "application/json": components["schemas"]["HTTPValidationError"];
2689
+ };
2690
+ };
2691
+ /** @description Too many verification attempts. */
2692
+ 429: {
2693
+ headers: {
2694
+ [name: string]: unknown;
2695
+ };
2696
+ content: {
2697
+ "application/json": components["schemas"]["ProblemDetail"];
2698
+ };
2699
+ };
2700
+ };
2701
+ };
2702
+ list_api_keys: {
2703
+ parameters: {
2704
+ query?: never;
2705
+ header?: never;
2706
+ path?: never;
2707
+ cookie?: never;
2708
+ };
2709
+ requestBody?: never;
2710
+ responses: {
2711
+ /** @description Successful Response */
2712
+ 200: {
2713
+ headers: {
2714
+ [name: string]: unknown;
2715
+ };
2716
+ content: {
2717
+ "application/json": components["schemas"]["ApiKeyListResponse"];
2718
+ };
2719
+ };
2720
+ /** @description Invalid or missing API key. */
2721
+ 401: {
2722
+ headers: {
2723
+ [name: string]: unknown;
2724
+ };
2725
+ content: {
2726
+ "application/json": components["schemas"]["ProblemDetail"];
2727
+ };
2728
+ };
2729
+ };
2730
+ };
2731
+ create_api_key: {
2732
+ parameters: {
2733
+ query?: never;
2734
+ header?: never;
2735
+ path?: never;
2736
+ cookie?: never;
2737
+ };
2738
+ requestBody: {
2739
+ content: {
2740
+ "application/json": components["schemas"]["CreateApiKeyRequest"];
2741
+ };
2742
+ };
2743
+ responses: {
2744
+ /** @description Successful Response */
2745
+ 201: {
2746
+ headers: {
2747
+ [name: string]: unknown;
2748
+ };
2749
+ content: {
2750
+ "application/json": components["schemas"]["ApiKeyResponse"];
2751
+ };
2752
+ };
2753
+ /** @description Invalid or missing API key. */
2754
+ 401: {
2755
+ headers: {
2756
+ [name: string]: unknown;
2757
+ };
2758
+ content: {
2759
+ "application/json": components["schemas"]["ProblemDetail"];
2760
+ };
2761
+ };
2762
+ /** @description Validation Error */
2763
+ 422: {
2764
+ headers: {
2765
+ [name: string]: unknown;
2766
+ };
2767
+ content: {
2768
+ "application/json": components["schemas"]["HTTPValidationError"];
2769
+ };
2770
+ };
2771
+ };
2772
+ };
2773
+ delete_api_key: {
2774
+ parameters: {
2775
+ query?: never;
2776
+ header?: never;
2777
+ path: {
2778
+ /** @description API key ID. */
2779
+ key_id: string;
2780
+ };
2781
+ cookie?: never;
2782
+ };
2783
+ requestBody?: never;
2784
+ responses: {
2785
+ /** @description Successful Response */
2786
+ 204: {
2787
+ headers: {
2788
+ [name: string]: unknown;
2789
+ };
2790
+ content?: never;
2791
+ };
2792
+ /** @description Invalid or missing API key. */
2793
+ 401: {
2794
+ headers: {
2795
+ [name: string]: unknown;
2796
+ };
2797
+ content: {
2798
+ "application/json": components["schemas"]["ProblemDetail"];
2799
+ };
2800
+ };
2801
+ /** @description API key not found. */
2802
+ 404: {
2803
+ headers: {
2804
+ [name: string]: unknown;
2805
+ };
2806
+ content: {
2807
+ "application/json": components["schemas"]["ProblemDetail"];
2808
+ };
2809
+ };
2810
+ /** @description Cannot delete the key used for this request. */
2811
+ 409: {
2812
+ headers: {
2813
+ [name: string]: unknown;
2814
+ };
2815
+ content: {
2816
+ "application/json": components["schemas"]["ProblemDetail"];
2817
+ };
2818
+ };
2819
+ /** @description Validation Error */
2820
+ 422: {
2821
+ headers: {
2822
+ [name: string]: unknown;
2823
+ };
2824
+ content: {
2825
+ "application/json": components["schemas"]["HTTPValidationError"];
2826
+ };
2827
+ };
2828
+ };
2829
+ };
2830
+ list_customers: {
2831
+ parameters: {
2832
+ query?: {
2833
+ /** @description Filter by exact buyer email address. */
2834
+ email?: string | null;
2835
+ /** @description Only customers created after this ISO 8601 datetime. */
2836
+ created_after?: string | null;
2837
+ /** @description Only customers created before this ISO 8601 datetime. */
2838
+ created_before?: string | null;
2839
+ /** @description Pagination cursor from a previous response. */
2840
+ cursor?: string | null;
2841
+ /** @description Maximum number of customers to return. */
2842
+ limit?: number;
2843
+ };
2844
+ header?: never;
2845
+ path?: never;
2846
+ cookie?: never;
2847
+ };
2848
+ requestBody?: never;
2849
+ responses: {
2850
+ /** @description Successful Response */
2851
+ 200: {
2852
+ headers: {
2853
+ [name: string]: unknown;
2854
+ };
2855
+ content: {
2856
+ "application/json": components["schemas"]["CustomerListResponse"];
2857
+ };
2858
+ };
2859
+ /** @description Invalid or missing API key. */
2860
+ 401: {
2861
+ headers: {
2862
+ [name: string]: unknown;
2863
+ };
2864
+ content: {
2865
+ "application/json": components["schemas"]["ProblemDetail"];
2866
+ };
2867
+ };
2868
+ /** @description Validation Error */
2869
+ 422: {
2870
+ headers: {
2871
+ [name: string]: unknown;
2872
+ };
2873
+ content: {
2874
+ "application/json": components["schemas"]["HTTPValidationError"];
2875
+ };
2876
+ };
2877
+ };
2878
+ };
2879
+ get_customer: {
2880
+ parameters: {
2881
+ query?: never;
2882
+ header?: never;
2883
+ path: {
2884
+ /** @description Customer ID. */
2885
+ customer_id: string;
2886
+ };
2887
+ cookie?: never;
2888
+ };
2889
+ requestBody?: never;
2890
+ responses: {
2891
+ /** @description Successful Response */
2892
+ 200: {
2893
+ headers: {
2894
+ [name: string]: unknown;
2895
+ };
2896
+ content: {
2897
+ "application/json": components["schemas"]["CustomerResponse"];
2898
+ };
2899
+ };
2900
+ /** @description Invalid or missing API key. */
2901
+ 401: {
2902
+ headers: {
2903
+ [name: string]: unknown;
2904
+ };
2905
+ content: {
2906
+ "application/json": components["schemas"]["ProblemDetail"];
2907
+ };
2908
+ };
2909
+ /** @description Customer not found. */
2910
+ 404: {
2911
+ headers: {
2912
+ [name: string]: unknown;
2913
+ };
2914
+ content: {
2915
+ "application/json": components["schemas"]["ProblemDetail"];
2916
+ };
2917
+ };
2918
+ /** @description Validation Error */
2919
+ 422: {
2920
+ headers: {
2921
+ [name: string]: unknown;
2922
+ };
2923
+ content: {
2924
+ "application/json": components["schemas"]["HTTPValidationError"];
2925
+ };
2926
+ };
2927
+ };
2928
+ };
2929
+ upload_file: {
2930
+ parameters: {
2931
+ query?: never;
2932
+ header?: never;
2933
+ path?: never;
2934
+ cookie?: never;
2935
+ };
2936
+ requestBody: {
2937
+ content: {
2938
+ "multipart/form-data": components["schemas"]["Body_upload_file"];
2939
+ };
2940
+ };
2941
+ responses: {
2942
+ /** @description File uploaded. Token valid for 24 hours. */
2943
+ 201: {
2944
+ headers: {
2945
+ [name: string]: unknown;
2946
+ };
2947
+ content: {
2948
+ "application/json": components["schemas"]["FileResponse"];
2949
+ };
2950
+ };
2951
+ /** @description Invalid or missing API key. */
2952
+ 401: {
2953
+ headers: {
2954
+ [name: string]: unknown;
2955
+ };
2956
+ content: {
2957
+ "application/json": components["schemas"]["ProblemDetail"];
2958
+ };
2959
+ };
2960
+ /** @description File exceeds 25 MB. */
2961
+ 413: {
2962
+ headers: {
2963
+ [name: string]: unknown;
2964
+ };
2965
+ content: {
2966
+ "application/json": components["schemas"]["ProblemDetail"];
2967
+ };
2968
+ };
2969
+ /** @description Unsupported file type or missing file. */
2970
+ 422: {
2971
+ headers: {
2972
+ [name: string]: unknown;
2973
+ };
2974
+ content: {
2975
+ "application/json": components["schemas"]["ProblemDetail"];
2976
+ };
2977
+ };
2978
+ /** @description Rate limit exceeded. */
2979
+ 429: {
2980
+ headers: {
2981
+ [name: string]: unknown;
2982
+ };
2983
+ content: {
2984
+ "application/json": components["schemas"]["ProblemDetail"];
2985
+ };
2986
+ };
2987
+ };
2988
+ };
2989
+ list_listings: {
2990
+ parameters: {
2991
+ query?: {
2992
+ /** @description Filter by listing status. */
2993
+ status?: components["schemas"]["ListingStatus"] | null;
2994
+ /** @description Pagination cursor from a previous response. */
2995
+ cursor?: string | null;
2996
+ /** @description Maximum number of listings to return. */
2997
+ limit?: number;
2998
+ };
2999
+ header?: never;
3000
+ path?: never;
3001
+ cookie?: never;
3002
+ };
3003
+ requestBody?: never;
3004
+ responses: {
3005
+ /** @description Successful Response */
3006
+ 200: {
3007
+ headers: {
3008
+ [name: string]: unknown;
3009
+ };
3010
+ content: {
3011
+ "application/json": components["schemas"]["ListingListResponse"];
3012
+ };
3013
+ };
3014
+ /** @description Invalid or missing API key. */
3015
+ 401: {
3016
+ headers: {
3017
+ [name: string]: unknown;
3018
+ };
3019
+ content: {
3020
+ "application/json": components["schemas"]["ProblemDetail"];
3021
+ };
3022
+ };
3023
+ /** @description Validation Error */
3024
+ 422: {
3025
+ headers: {
3026
+ [name: string]: unknown;
3027
+ };
3028
+ content: {
3029
+ "application/json": components["schemas"]["HTTPValidationError"];
3030
+ };
3031
+ };
3032
+ };
3033
+ };
3034
+ create_listing: {
3035
+ parameters: {
3036
+ query?: never;
3037
+ header?: never;
3038
+ path?: never;
3039
+ cookie?: never;
3040
+ };
3041
+ requestBody: {
3042
+ content: {
3043
+ "application/json": components["schemas"]["CreateListingRequest"];
3044
+ };
3045
+ };
3046
+ responses: {
3047
+ /** @description Listing created and published. */
3048
+ 201: {
3049
+ headers: {
3050
+ [name: string]: unknown;
3051
+ };
3052
+ content: {
3053
+ "application/json": components["schemas"]["ListingResponse"];
3054
+ };
3055
+ };
3056
+ /** @description Invalid or missing API key. */
3057
+ 401: {
3058
+ headers: {
3059
+ [name: string]: unknown;
3060
+ };
3061
+ content: {
3062
+ "application/json": components["schemas"]["ProblemDetail"];
3063
+ };
3064
+ };
3065
+ /** @description Validation error (code: `validation_error`). Check `detail` for specifics: price must be positive, slug already exists, managed mode requires deliverables, deliverable URL unreachable or unsupported format, external mode cannot have deliverables. */
3066
+ 422: {
3067
+ headers: {
3068
+ [name: string]: unknown;
3069
+ };
3070
+ content: {
3071
+ "application/json": components["schemas"]["ProblemDetail"];
3072
+ };
3073
+ };
3074
+ /** @description Rate limit exceeded. Retry after the `Retry-After` header value. */
3075
+ 429: {
3076
+ headers: {
3077
+ [name: string]: unknown;
3078
+ };
3079
+ content: {
3080
+ "application/json": components["schemas"]["ProblemDetail"];
3081
+ };
3082
+ };
3083
+ };
3084
+ };
3085
+ get_listing: {
3086
+ parameters: {
3087
+ query?: never;
3088
+ header?: never;
3089
+ path: {
3090
+ /** @description Listing ID (lst_ prefixed). */
3091
+ listing_id: string;
3092
+ };
3093
+ cookie?: never;
3094
+ };
3095
+ requestBody?: never;
3096
+ responses: {
3097
+ /** @description Successful Response */
3098
+ 200: {
3099
+ headers: {
3100
+ [name: string]: unknown;
3101
+ };
3102
+ content: {
3103
+ "application/json": components["schemas"]["ListingResponse"];
3104
+ };
3105
+ };
3106
+ /** @description Invalid or missing API key. */
3107
+ 401: {
3108
+ headers: {
3109
+ [name: string]: unknown;
3110
+ };
3111
+ content: {
3112
+ "application/json": components["schemas"]["ProblemDetail"];
3113
+ };
3114
+ };
3115
+ /** @description Listing not found. */
3116
+ 404: {
3117
+ headers: {
3118
+ [name: string]: unknown;
3119
+ };
3120
+ content: {
3121
+ "application/json": components["schemas"]["ProblemDetail"];
3122
+ };
3123
+ };
3124
+ /** @description Validation Error */
3125
+ 422: {
3126
+ headers: {
3127
+ [name: string]: unknown;
3128
+ };
3129
+ content: {
3130
+ "application/json": components["schemas"]["HTTPValidationError"];
3131
+ };
3132
+ };
3133
+ };
3134
+ };
3135
+ update_listing: {
3136
+ parameters: {
3137
+ query?: never;
3138
+ header?: never;
3139
+ path: {
3140
+ /** @description Listing ID (lst_ prefixed). */
3141
+ listing_id: string;
3142
+ };
3143
+ cookie?: never;
3144
+ };
3145
+ requestBody: {
3146
+ content: {
3147
+ "application/json": components["schemas"]["UpdateListingRequest"];
3148
+ };
3149
+ };
3150
+ responses: {
3151
+ /** @description Successful Response */
3152
+ 200: {
3153
+ headers: {
3154
+ [name: string]: unknown;
3155
+ };
3156
+ content: {
3157
+ "application/json": components["schemas"]["ListingResponse"];
3158
+ };
3159
+ };
3160
+ /** @description Invalid or missing API key. */
3161
+ 401: {
3162
+ headers: {
3163
+ [name: string]: unknown;
3164
+ };
3165
+ content: {
3166
+ "application/json": components["schemas"]["ProblemDetail"];
3167
+ };
3168
+ };
3169
+ /** @description Listing not found. */
3170
+ 404: {
3171
+ headers: {
3172
+ [name: string]: unknown;
3173
+ };
3174
+ content: {
3175
+ "application/json": components["schemas"]["ProblemDetail"];
3176
+ };
3177
+ };
3178
+ /** @description Validation error. */
3179
+ 422: {
3180
+ headers: {
3181
+ [name: string]: unknown;
3182
+ };
3183
+ content: {
3184
+ "application/json": components["schemas"]["ProblemDetail"];
3185
+ };
3186
+ };
3187
+ };
3188
+ };
3189
+ delete_listing: {
3190
+ parameters: {
3191
+ query?: never;
3192
+ header?: never;
3193
+ path: {
3194
+ /** @description Listing ID (lst_ prefixed). */
3195
+ listing_id: string;
3196
+ };
3197
+ cookie?: never;
3198
+ };
3199
+ requestBody?: never;
3200
+ responses: {
3201
+ /** @description Successful Response */
3202
+ 204: {
3203
+ headers: {
3204
+ [name: string]: unknown;
3205
+ };
3206
+ content?: never;
3207
+ };
3208
+ /** @description Invalid or missing API key. */
3209
+ 401: {
3210
+ headers: {
3211
+ [name: string]: unknown;
3212
+ };
3213
+ content: {
3214
+ "application/json": components["schemas"]["ProblemDetail"];
3215
+ };
3216
+ };
3217
+ /** @description Listing not found. */
3218
+ 404: {
3219
+ headers: {
3220
+ [name: string]: unknown;
3221
+ };
3222
+ content: {
3223
+ "application/json": components["schemas"]["ProblemDetail"];
3224
+ };
3225
+ };
3226
+ /** @description Validation Error */
3227
+ 422: {
3228
+ headers: {
3229
+ [name: string]: unknown;
3230
+ };
3231
+ content: {
3232
+ "application/json": components["schemas"]["HTTPValidationError"];
3233
+ };
3234
+ };
3235
+ };
3236
+ };
3237
+ set_deliverables: {
3238
+ parameters: {
3239
+ query?: never;
3240
+ header?: never;
3241
+ path: {
3242
+ /** @description Listing ID. */
3243
+ listing_id: string;
3244
+ };
3245
+ cookie?: never;
3246
+ };
3247
+ requestBody: {
3248
+ content: {
3249
+ "application/json": components["schemas"]["SetDeliverablesRequest"];
3250
+ };
3251
+ };
3252
+ responses: {
3253
+ /** @description Successful Response */
3254
+ 200: {
3255
+ headers: {
3256
+ [name: string]: unknown;
3257
+ };
3258
+ content: {
3259
+ "application/json": components["schemas"]["ListingResponse"];
3260
+ };
3261
+ };
3262
+ /** @description Invalid or missing API key. */
3263
+ 401: {
3264
+ headers: {
3265
+ [name: string]: unknown;
3266
+ };
3267
+ content: {
3268
+ "application/json": components["schemas"]["ProblemDetail"];
3269
+ };
3270
+ };
3271
+ /** @description Listing not found or not owned by this account. */
3272
+ 404: {
3273
+ headers: {
3274
+ [name: string]: unknown;
3275
+ };
3276
+ content: {
3277
+ "application/json": components["schemas"]["ProblemDetail"];
3278
+ };
3279
+ };
3280
+ /** @description Listing is not in draft status. */
3281
+ 409: {
3282
+ headers: {
3283
+ [name: string]: unknown;
3284
+ };
3285
+ content: {
3286
+ "application/json": components["schemas"]["ProblemDetail"];
3287
+ };
3288
+ };
3289
+ /** @description Validation error (too many, invalid token, etc). */
3290
+ 422: {
3291
+ headers: {
3292
+ [name: string]: unknown;
3293
+ };
3294
+ content: {
3295
+ "application/json": components["schemas"]["ProblemDetail"];
3296
+ };
3297
+ };
3298
+ };
3299
+ };
3300
+ remove_deliverables: {
3301
+ parameters: {
3302
+ query?: never;
3303
+ header?: never;
3304
+ path: {
3305
+ /** @description Listing ID (lst_ prefixed). */
3306
+ listing_id: string;
3307
+ };
3308
+ cookie?: never;
3309
+ };
3310
+ requestBody?: never;
3311
+ responses: {
3312
+ /** @description Successful Response */
3313
+ 200: {
3314
+ headers: {
3315
+ [name: string]: unknown;
3316
+ };
3317
+ content: {
3318
+ "application/json": components["schemas"]["ListingResponse"];
3319
+ };
3320
+ };
3321
+ /** @description Invalid or missing API key. */
3322
+ 401: {
3323
+ headers: {
3324
+ [name: string]: unknown;
3325
+ };
3326
+ content: {
3327
+ "application/json": components["schemas"]["ProblemDetail"];
3328
+ };
3329
+ };
3330
+ /** @description Listing not found. */
3331
+ 404: {
3332
+ headers: {
3333
+ [name: string]: unknown;
3334
+ };
3335
+ content: {
3336
+ "application/json": components["schemas"]["ProblemDetail"];
3337
+ };
3338
+ };
3339
+ /** @description Listing is not in draft state. */
3340
+ 409: {
3341
+ headers: {
3342
+ [name: string]: unknown;
3343
+ };
3344
+ content: {
3345
+ "application/json": components["schemas"]["ProblemDetail"];
3346
+ };
3347
+ };
3348
+ /** @description Validation Error */
3349
+ 422: {
3350
+ headers: {
3351
+ [name: string]: unknown;
3352
+ };
3353
+ content: {
3354
+ "application/json": components["schemas"]["HTTPValidationError"];
3355
+ };
3356
+ };
3357
+ };
3358
+ };
3359
+ publish_listing: {
3360
+ parameters: {
3361
+ query?: never;
3362
+ header?: never;
3363
+ path: {
3364
+ /** @description Listing ID (lst_ prefixed). */
3365
+ listing_id: string;
3366
+ };
3367
+ cookie?: never;
3368
+ };
3369
+ requestBody?: never;
3370
+ responses: {
3371
+ /** @description Successful Response */
3372
+ 200: {
3373
+ headers: {
3374
+ [name: string]: unknown;
3375
+ };
3376
+ content: {
3377
+ "application/json": components["schemas"]["ListingResponse"];
3378
+ };
3379
+ };
3380
+ /** @description Invalid or missing API key. */
3381
+ 401: {
3382
+ headers: {
3383
+ [name: string]: unknown;
3384
+ };
3385
+ content: {
3386
+ "application/json": components["schemas"]["ProblemDetail"];
3387
+ };
3388
+ };
3389
+ /** @description Listing not found. */
3390
+ 404: {
3391
+ headers: {
3392
+ [name: string]: unknown;
3393
+ };
3394
+ content: {
3395
+ "application/json": components["schemas"]["ProblemDetail"];
3396
+ };
3397
+ };
3398
+ /** @description Publish requirements not met. */
3399
+ 409: {
3400
+ headers: {
3401
+ [name: string]: unknown;
3402
+ };
3403
+ content: {
3404
+ "application/json": components["schemas"]["ProblemDetail"];
3405
+ };
3406
+ };
3407
+ /** @description Validation Error */
3408
+ 422: {
3409
+ headers: {
3410
+ [name: string]: unknown;
3411
+ };
3412
+ content: {
3413
+ "application/json": components["schemas"]["HTTPValidationError"];
3414
+ };
3415
+ };
3416
+ };
3417
+ };
3418
+ list_orders: {
3419
+ parameters: {
3420
+ query?: {
3421
+ /** @description Filter orders by status. */
3422
+ status?: components["schemas"]["OrderStatus"] | null;
3423
+ /** @description Filter by listing ID (lst_ prefixed). */
3424
+ listing?: string | null;
3425
+ /** @description Filter by exact buyer email address. */
3426
+ buyer_email?: string | null;
3427
+ /** @description Only orders created after this ISO 8601 datetime. */
3428
+ created_after?: string | null;
3429
+ /** @description Only orders created before this ISO 8601 datetime. */
3430
+ created_before?: string | null;
3431
+ /** @description Pagination cursor from a previous response. */
3432
+ cursor?: string | null;
3433
+ /** @description Maximum number of orders to return. */
3434
+ limit?: number;
3435
+ };
3436
+ header?: never;
3437
+ path?: never;
3438
+ cookie?: never;
3439
+ };
3440
+ requestBody?: never;
3441
+ responses: {
3442
+ /** @description Successful Response */
3443
+ 200: {
3444
+ headers: {
3445
+ [name: string]: unknown;
3446
+ };
3447
+ content: {
3448
+ "application/json": components["schemas"]["OrderListResponse"];
3449
+ };
3450
+ };
3451
+ /** @description Invalid or missing API key. */
3452
+ 401: {
3453
+ headers: {
3454
+ [name: string]: unknown;
3455
+ };
3456
+ content: {
3457
+ "application/json": components["schemas"]["ProblemDetail"];
3458
+ };
3459
+ };
3460
+ /** @description Validation Error */
3461
+ 422: {
3462
+ headers: {
3463
+ [name: string]: unknown;
3464
+ };
3465
+ content: {
3466
+ "application/json": components["schemas"]["HTTPValidationError"];
3467
+ };
3468
+ };
3469
+ };
3470
+ };
3471
+ get_order: {
3472
+ parameters: {
3473
+ query?: never;
3474
+ header?: never;
3475
+ path: {
3476
+ /** @description Order ID. */
3477
+ order_id: string;
3478
+ };
3479
+ cookie?: never;
3480
+ };
3481
+ requestBody?: never;
3482
+ responses: {
3483
+ /** @description Successful Response */
3484
+ 200: {
3485
+ headers: {
3486
+ [name: string]: unknown;
3487
+ };
3488
+ content: {
3489
+ "application/json": components["schemas"]["OrderResponse"];
3490
+ };
3491
+ };
3492
+ /** @description Invalid or missing API key. */
3493
+ 401: {
3494
+ headers: {
3495
+ [name: string]: unknown;
3496
+ };
3497
+ content: {
3498
+ "application/json": components["schemas"]["ProblemDetail"];
3499
+ };
3500
+ };
3501
+ /** @description Order not found. */
3502
+ 404: {
3503
+ headers: {
3504
+ [name: string]: unknown;
3505
+ };
3506
+ content: {
3507
+ "application/json": components["schemas"]["ProblemDetail"];
3508
+ };
3509
+ };
3510
+ /** @description Validation Error */
3511
+ 422: {
3512
+ headers: {
3513
+ [name: string]: unknown;
3514
+ };
3515
+ content: {
3516
+ "application/json": components["schemas"]["HTTPValidationError"];
3517
+ };
3518
+ };
3519
+ };
3520
+ };
3521
+ refund_order: {
3522
+ parameters: {
3523
+ query?: never;
3524
+ header?: never;
3525
+ path: {
3526
+ /** @description Order ID. */
3527
+ order_id: string;
3528
+ };
3529
+ cookie?: never;
3530
+ };
3531
+ requestBody?: never;
3532
+ responses: {
3533
+ /** @description Successful Response */
3534
+ 200: {
3535
+ headers: {
3536
+ [name: string]: unknown;
3537
+ };
3538
+ content: {
3539
+ "application/json": components["schemas"]["OrderResponse"];
3540
+ };
3541
+ };
3542
+ /** @description Invalid or missing API key. */
3543
+ 401: {
3544
+ headers: {
3545
+ [name: string]: unknown;
3546
+ };
3547
+ content: {
3548
+ "application/json": components["schemas"]["ProblemDetail"];
3549
+ };
3550
+ };
3551
+ /** @description Order not found. */
3552
+ 404: {
3553
+ headers: {
3554
+ [name: string]: unknown;
3555
+ };
3556
+ content: {
3557
+ "application/json": components["schemas"]["ProblemDetail"];
3558
+ };
3559
+ };
3560
+ /** @description Order cannot be refunded (wrong status or no payment intent). */
3561
+ 422: {
3562
+ headers: {
3563
+ [name: string]: unknown;
3564
+ };
3565
+ content: {
3566
+ "application/json": components["schemas"]["ProblemDetail"];
3567
+ };
3568
+ };
3569
+ };
3570
+ };
3571
+ deliver_order: {
3572
+ parameters: {
3573
+ query?: never;
3574
+ header?: never;
3575
+ path: {
3576
+ /** @description Order ID. */
3577
+ order_id: string;
3578
+ };
3579
+ cookie?: never;
3580
+ };
3581
+ requestBody: {
3582
+ content: {
3583
+ "application/json": components["schemas"]["DeliverOrderRequest"];
3584
+ };
3585
+ };
3586
+ responses: {
3587
+ /** @description Successful Response */
3588
+ 200: {
3589
+ headers: {
3590
+ [name: string]: unknown;
3591
+ };
3592
+ content: {
3593
+ "application/json": components["schemas"]["OrderResponse"];
3594
+ };
3595
+ };
3596
+ /** @description Invalid or missing API key. */
3597
+ 401: {
3598
+ headers: {
3599
+ [name: string]: unknown;
3600
+ };
3601
+ content: {
3602
+ "application/json": components["schemas"]["ProblemDetail"];
3603
+ };
3604
+ };
3605
+ /** @description Order not found or not owned by this account. */
3606
+ 404: {
3607
+ headers: {
3608
+ [name: string]: unknown;
3609
+ };
3610
+ content: {
3611
+ "application/json": components["schemas"]["ProblemDetail"];
3612
+ };
3613
+ };
3614
+ /** @description Order cannot be fulfilled. Possible reasons: order not in PAID state, listing uses managed fulfillment (auto-fulfilled on payment), or deliverable URL unreachable. */
3615
+ 409: {
3616
+ headers: {
3617
+ [name: string]: unknown;
3618
+ };
3619
+ content: {
3620
+ "application/json": components["schemas"]["ProblemDetail"];
3621
+ };
3622
+ };
3623
+ /** @description Validation Error */
3624
+ 422: {
3625
+ headers: {
3626
+ [name: string]: unknown;
3627
+ };
3628
+ content: {
3629
+ "application/json": components["schemas"]["HTTPValidationError"];
3630
+ };
3631
+ };
3632
+ };
3633
+ };
3634
+ ship_order: {
3635
+ parameters: {
3636
+ query?: never;
3637
+ header?: never;
3638
+ path: {
3639
+ /** @description Order ID. */
3640
+ order_id: string;
3641
+ };
3642
+ cookie?: never;
3643
+ };
3644
+ requestBody: {
3645
+ content: {
3646
+ "application/json": components["schemas"]["ShipOrderRequest"];
3647
+ };
3648
+ };
3649
+ responses: {
3650
+ /** @description Successful Response */
3651
+ 200: {
3652
+ headers: {
3653
+ [name: string]: unknown;
3654
+ };
3655
+ content: {
3656
+ "application/json": components["schemas"]["OrderResponse"];
3657
+ };
3658
+ };
3659
+ /** @description Invalid or missing API key. */
3660
+ 401: {
3661
+ headers: {
3662
+ [name: string]: unknown;
3663
+ };
3664
+ content: {
3665
+ "application/json": components["schemas"]["ProblemDetail"];
3666
+ };
3667
+ };
3668
+ /** @description Order not found or not owned by this account. */
3669
+ 404: {
3670
+ headers: {
3671
+ [name: string]: unknown;
3672
+ };
3673
+ content: {
3674
+ "application/json": components["schemas"]["ProblemDetail"];
3675
+ };
3676
+ };
3677
+ /** @description Order cannot be shipped. Possible reasons: order not in PAID state, or listing uses managed fulfillment. */
3678
+ 409: {
3679
+ headers: {
3680
+ [name: string]: unknown;
3681
+ };
3682
+ content: {
3683
+ "application/json": components["schemas"]["ProblemDetail"];
3684
+ };
3685
+ };
3686
+ /** @description Validation Error */
3687
+ 422: {
3688
+ headers: {
3689
+ [name: string]: unknown;
3690
+ };
3691
+ content: {
3692
+ "application/json": components["schemas"]["HTTPValidationError"];
3693
+ };
3694
+ };
3695
+ };
3696
+ };
3697
+ start_stripe_connect: {
3698
+ parameters: {
3699
+ query?: never;
3700
+ header?: never;
3701
+ path?: never;
3702
+ cookie?: never;
3703
+ };
3704
+ requestBody?: never;
3705
+ responses: {
3706
+ /** @description Successful Response */
3707
+ 200: {
3708
+ headers: {
3709
+ [name: string]: unknown;
3710
+ };
3711
+ content: {
3712
+ "application/json": components["schemas"]["StripeConnectSessionResponse"];
3713
+ };
3714
+ };
3715
+ /** @description Invalid or missing API key. */
3716
+ 401: {
3717
+ headers: {
3718
+ [name: string]: unknown;
3719
+ };
3720
+ content: {
3721
+ "application/json": components["schemas"]["ProblemDetail"];
3722
+ };
3723
+ };
3724
+ };
3725
+ };
3726
+ disconnect_stripe: {
3727
+ parameters: {
3728
+ query?: never;
3729
+ header?: never;
3730
+ path?: never;
3731
+ cookie?: never;
3732
+ };
3733
+ requestBody?: never;
3734
+ responses: {
3735
+ /** @description Successful Response */
3736
+ 200: {
3737
+ headers: {
3738
+ [name: string]: unknown;
3739
+ };
3740
+ content: {
3741
+ "application/json": {
3742
+ [key: string]: unknown;
3743
+ };
3744
+ };
3745
+ };
3746
+ /** @description Invalid or missing API key. */
3747
+ 401: {
3748
+ headers: {
3749
+ [name: string]: unknown;
3750
+ };
3751
+ content: {
3752
+ "application/json": components["schemas"]["ProblemDetail"];
3753
+ };
3754
+ };
3755
+ };
3756
+ };
3757
+ list_webhooks: {
3758
+ parameters: {
3759
+ query?: never;
3760
+ header?: never;
3761
+ path?: never;
3762
+ cookie?: never;
3763
+ };
3764
+ requestBody?: never;
3765
+ responses: {
3766
+ /** @description Successful Response */
3767
+ 200: {
3768
+ headers: {
3769
+ [name: string]: unknown;
3770
+ };
3771
+ content: {
3772
+ "application/json": components["schemas"]["WebhookListResponse"];
3773
+ };
3774
+ };
3775
+ /** @description Invalid or missing API key. */
3776
+ 401: {
3777
+ headers: {
3778
+ [name: string]: unknown;
3779
+ };
3780
+ content: {
3781
+ "application/json": components["schemas"]["ProblemDetail"];
3782
+ };
3783
+ };
3784
+ };
3785
+ };
3786
+ create_webhook: {
3787
+ parameters: {
3788
+ query?: never;
3789
+ header?: never;
3790
+ path?: never;
3791
+ cookie?: never;
3792
+ };
3793
+ requestBody: {
3794
+ content: {
3795
+ "application/json": components["schemas"]["CreateWebhookRequest"];
3796
+ };
3797
+ };
3798
+ responses: {
3799
+ /** @description Successful Response */
3800
+ 201: {
3801
+ headers: {
3802
+ [name: string]: unknown;
3803
+ };
3804
+ content: {
3805
+ "application/json": components["schemas"]["WebhookResponse"];
3806
+ };
3807
+ };
3808
+ /** @description Invalid or missing API key. */
3809
+ 401: {
3810
+ headers: {
3811
+ [name: string]: unknown;
3812
+ };
3813
+ content: {
3814
+ "application/json": components["schemas"]["ProblemDetail"];
3815
+ };
3816
+ };
3817
+ /** @description Validation error. */
3818
+ 422: {
3819
+ headers: {
3820
+ [name: string]: unknown;
3821
+ };
3822
+ content: {
3823
+ "application/json": components["schemas"]["ProblemDetail"];
3824
+ };
3825
+ };
3826
+ };
3827
+ };
3828
+ update_webhook: {
3829
+ parameters: {
3830
+ query?: never;
3831
+ header?: never;
3832
+ path: {
3833
+ /** @description Webhook endpoint ID. */
3834
+ webhook_id: string;
3835
+ };
3836
+ cookie?: never;
3837
+ };
3838
+ requestBody: {
3839
+ content: {
3840
+ "application/json": components["schemas"]["UpdateWebhookRequest"];
3841
+ };
3842
+ };
3843
+ responses: {
3844
+ /** @description Successful Response */
3845
+ 200: {
3846
+ headers: {
3847
+ [name: string]: unknown;
3848
+ };
3849
+ content: {
3850
+ "application/json": components["schemas"]["WebhookResponse"];
3851
+ };
3852
+ };
3853
+ /** @description Invalid or missing API key. */
3854
+ 401: {
3855
+ headers: {
3856
+ [name: string]: unknown;
3857
+ };
3858
+ content: {
3859
+ "application/json": components["schemas"]["ProblemDetail"];
3860
+ };
3861
+ };
3862
+ /** @description Webhook not found. */
3863
+ 404: {
3864
+ headers: {
3865
+ [name: string]: unknown;
3866
+ };
3867
+ content: {
3868
+ "application/json": components["schemas"]["ProblemDetail"];
3869
+ };
3870
+ };
3871
+ /** @description Validation error. */
3872
+ 422: {
3873
+ headers: {
3874
+ [name: string]: unknown;
3875
+ };
3876
+ content: {
3877
+ "application/json": components["schemas"]["ProblemDetail"];
3878
+ };
3879
+ };
3880
+ };
3881
+ };
3882
+ delete_webhook: {
3883
+ parameters: {
3884
+ query?: never;
3885
+ header?: never;
3886
+ path: {
3887
+ /** @description Webhook endpoint ID. */
3888
+ webhook_id: string;
3889
+ };
3890
+ cookie?: never;
3891
+ };
3892
+ requestBody?: never;
3893
+ responses: {
3894
+ /** @description Successful Response */
3895
+ 204: {
3896
+ headers: {
3897
+ [name: string]: unknown;
3898
+ };
3899
+ content?: never;
3900
+ };
3901
+ /** @description Invalid or missing API key. */
3902
+ 401: {
3903
+ headers: {
3904
+ [name: string]: unknown;
3905
+ };
3906
+ content: {
3907
+ "application/json": components["schemas"]["ProblemDetail"];
3908
+ };
3909
+ };
3910
+ /** @description Webhook not found. */
3911
+ 404: {
3912
+ headers: {
3913
+ [name: string]: unknown;
3914
+ };
3915
+ content: {
3916
+ "application/json": components["schemas"]["ProblemDetail"];
3917
+ };
3918
+ };
3919
+ /** @description Validation Error */
3920
+ 422: {
3921
+ headers: {
3922
+ [name: string]: unknown;
3923
+ };
3924
+ content: {
3925
+ "application/json": components["schemas"]["HTTPValidationError"];
3926
+ };
3927
+ };
3928
+ };
3929
+ };
3930
+ list_webhook_events: {
3931
+ parameters: {
3932
+ query?: {
3933
+ /** @description Filter by delivery status. `true` for delivered, `false` for pending/failed. */
3934
+ delivered?: boolean | null;
3935
+ /** @description Pagination cursor from a previous response. */
3936
+ cursor?: string | null;
3937
+ /** @description Maximum number of events to return. */
3938
+ limit?: number;
3939
+ };
3940
+ header?: never;
3941
+ path: {
3942
+ /** @description Webhook endpoint ID. */
3943
+ webhook_id: string;
3944
+ };
3945
+ cookie?: never;
3946
+ };
3947
+ requestBody?: never;
3948
+ responses: {
3949
+ /** @description Successful Response */
3950
+ 200: {
3951
+ headers: {
3952
+ [name: string]: unknown;
3953
+ };
3954
+ content: {
3955
+ "application/json": components["schemas"]["WebhookEventListResponse"];
3956
+ };
3957
+ };
3958
+ /** @description Invalid or missing API key. */
3959
+ 401: {
3960
+ headers: {
3961
+ [name: string]: unknown;
3962
+ };
3963
+ content: {
3964
+ "application/json": components["schemas"]["ProblemDetail"];
3965
+ };
3966
+ };
3967
+ /** @description Webhook not found. */
3968
+ 404: {
3969
+ headers: {
3970
+ [name: string]: unknown;
3971
+ };
3972
+ content: {
3973
+ "application/json": components["schemas"]["ProblemDetail"];
3974
+ };
3975
+ };
3976
+ /** @description Validation Error */
3977
+ 422: {
3978
+ headers: {
3979
+ [name: string]: unknown;
3980
+ };
3981
+ content: {
3982
+ "application/json": components["schemas"]["HTTPValidationError"];
3983
+ };
3984
+ };
3985
+ };
3986
+ };
3987
+ retry_webhook_event: {
3988
+ parameters: {
3989
+ query?: never;
3990
+ header?: never;
3991
+ path: {
3992
+ /** @description Webhook endpoint ID. */
3993
+ webhook_id: string;
3994
+ /** @description Webhook event ID. */
3995
+ event_id: string;
3996
+ };
3997
+ cookie?: never;
3998
+ };
3999
+ requestBody?: never;
4000
+ responses: {
4001
+ /** @description Successful Response */
4002
+ 200: {
4003
+ headers: {
4004
+ [name: string]: unknown;
4005
+ };
4006
+ content: {
4007
+ "application/json": components["schemas"]["WebhookEventResponse"];
4008
+ };
4009
+ };
4010
+ /** @description Invalid or missing API key. */
4011
+ 401: {
4012
+ headers: {
4013
+ [name: string]: unknown;
4014
+ };
4015
+ content: {
4016
+ "application/json": components["schemas"]["ProblemDetail"];
4017
+ };
4018
+ };
4019
+ /** @description Webhook or event not found. */
4020
+ 404: {
4021
+ headers: {
4022
+ [name: string]: unknown;
4023
+ };
4024
+ content: {
4025
+ "application/json": components["schemas"]["ProblemDetail"];
4026
+ };
4027
+ };
4028
+ /** @description Validation Error */
4029
+ 422: {
4030
+ headers: {
4031
+ [name: string]: unknown;
4032
+ };
4033
+ content: {
4034
+ "application/json": components["schemas"]["HTTPValidationError"];
4035
+ };
4036
+ };
4037
+ };
4038
+ };
4039
+ test_webhook: {
4040
+ parameters: {
4041
+ query?: never;
4042
+ header?: never;
4043
+ path: {
4044
+ /** @description Webhook endpoint ID. */
4045
+ webhook_id: string;
4046
+ };
4047
+ cookie?: never;
4048
+ };
4049
+ requestBody?: never;
4050
+ responses: {
4051
+ /** @description Successful Response */
4052
+ 200: {
4053
+ headers: {
4054
+ [name: string]: unknown;
4055
+ };
4056
+ content: {
4057
+ "application/json": components["schemas"]["WebhookTestResponse"];
4058
+ };
4059
+ };
4060
+ /** @description Invalid or missing API key. */
4061
+ 401: {
4062
+ headers: {
4063
+ [name: string]: unknown;
4064
+ };
4065
+ content: {
4066
+ "application/json": components["schemas"]["ProblemDetail"];
4067
+ };
4068
+ };
4069
+ /** @description Webhook not found. */
4070
+ 404: {
4071
+ headers: {
4072
+ [name: string]: unknown;
4073
+ };
4074
+ content: {
4075
+ "application/json": components["schemas"]["ProblemDetail"];
4076
+ };
4077
+ };
4078
+ /** @description Validation Error */
4079
+ 422: {
4080
+ headers: {
4081
+ [name: string]: unknown;
4082
+ };
4083
+ content: {
4084
+ "application/json": components["schemas"]["HTTPValidationError"];
4085
+ };
4086
+ };
4087
+ };
4088
+ };
4089
+ }