@peable.to/contracts 0.4.0 → 1.0.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 (316) hide show
  1. package/dist/cjs/common/address.js +81 -0
  2. package/dist/cjs/common/envelopes.js +101 -0
  3. package/dist/cjs/common/objects.js +85 -0
  4. package/dist/cjs/common/params.js +211 -0
  5. package/dist/cjs/common/primitives.js +39 -0
  6. package/dist/cjs/contributions.js +22 -0
  7. package/dist/cjs/index.js +40 -137
  8. package/dist/cjs/openapi/document.js +297 -0
  9. package/dist/cjs/openapi/index.js +7 -0
  10. package/dist/cjs/openapi/webhooks.js +17 -0
  11. package/dist/cjs/resources/billingEngine/billingPortal.js +237 -0
  12. package/dist/cjs/resources/billingEngine/creditNotes.js +189 -0
  13. package/dist/cjs/resources/billingEngine/customerBalanceTransactions.js +90 -0
  14. package/dist/cjs/resources/billingEngine/index.js +43 -0
  15. package/dist/cjs/resources/billingEngine/invoiceItems.js +155 -0
  16. package/dist/cjs/resources/billingEngine/invoices.js +509 -0
  17. package/dist/cjs/resources/billingEngine/params.js +43 -0
  18. package/dist/cjs/resources/billingEngine/public.js +326 -0
  19. package/dist/cjs/resources/billingEngine/subscriptions.js +476 -0
  20. package/dist/cjs/resources/catalog/billing.js +755 -0
  21. package/dist/cjs/resources/catalog/billingSettings.js +131 -0
  22. package/dist/cjs/resources/catalog/coupons.js +222 -0
  23. package/dist/cjs/resources/catalog/entitlements.js +257 -0
  24. package/dist/cjs/resources/catalog/index.js +58 -0
  25. package/dist/cjs/resources/catalog/meters.js +279 -0
  26. package/dist/cjs/resources/catalog/prices.js +423 -0
  27. package/dist/cjs/resources/catalog/products.js +228 -0
  28. package/dist/cjs/resources/catalog/promotionCodes.js +174 -0
  29. package/dist/cjs/resources/catalog/shared.js +75 -0
  30. package/dist/cjs/resources/catalog/testClocks.js +127 -0
  31. package/dist/cjs/resources/checkout/checkoutSessions.js +582 -0
  32. package/dist/cjs/resources/checkout/contributions.js +172 -0
  33. package/dist/cjs/resources/checkout/files.js +133 -0
  34. package/dist/cjs/resources/checkout/index.js +57 -0
  35. package/dist/cjs/resources/checkout/merchants.js +290 -0
  36. package/dist/cjs/resources/checkout/paymentLinks.js +330 -0
  37. package/dist/cjs/resources/checkout/paymentMethodConfigurations.js +262 -0
  38. package/dist/cjs/resources/checkout/shared.js +368 -0
  39. package/dist/cjs/resources/connect/account.js +332 -0
  40. package/dist/cjs/resources/connect/applicationFees.js +113 -0
  41. package/dist/cjs/resources/connect/balance.js +212 -0
  42. package/dist/cjs/resources/connect/connectedAccounts.js +260 -0
  43. package/dist/cjs/resources/connect/index.js +51 -0
  44. package/dist/cjs/resources/connect/onboarding.js +82 -0
  45. package/dist/cjs/resources/connect/payouts.js +196 -0
  46. package/dist/cjs/resources/connect/reporting.js +235 -0
  47. package/dist/cjs/resources/connect/requestLogs.js +110 -0
  48. package/dist/cjs/resources/connect/transfers.js +227 -0
  49. package/dist/cjs/resources/core/customers.js +194 -0
  50. package/dist/cjs/resources/core/index.js +23 -0
  51. package/dist/cjs/resources/core/paymentMethods.js +134 -0
  52. package/dist/cjs/resources/events/events.js +357 -0
  53. package/dist/cjs/resources/events/index.js +29 -0
  54. package/dist/cjs/resources/events/webhookDeliveries.js +93 -0
  55. package/dist/cjs/resources/events/webhookEndpoints.js +215 -0
  56. package/dist/cjs/resources/payments/charges.js +157 -0
  57. package/dist/cjs/resources/payments/disputes.js +204 -0
  58. package/dist/cjs/resources/payments/index.js +41 -0
  59. package/dist/cjs/resources/payments/paymentIntents.js +529 -0
  60. package/dist/cjs/resources/payments/refunds.js +245 -0
  61. package/dist/cjs/resources/payments/setupIntents.js +158 -0
  62. package/dist/cjs/resources/payments/social.js +182 -0
  63. package/dist/cjs/resources/payments/testHelpers.js +39 -0
  64. package/dist/cjs/resources/tax/assessments.js +217 -0
  65. package/dist/cjs/resources/tax/businessProfile.js +99 -0
  66. package/dist/cjs/resources/tax/calculations.js +176 -0
  67. package/dist/cjs/resources/tax/capabilities.js +42 -0
  68. package/dist/cjs/resources/tax/codes.js +37 -0
  69. package/dist/cjs/resources/tax/complianceActions.js +56 -0
  70. package/dist/cjs/resources/tax/deadlines.js +59 -0
  71. package/dist/cjs/resources/tax/documents.js +128 -0
  72. package/dist/cjs/resources/tax/index.js +80 -0
  73. package/dist/cjs/resources/tax/locationEvidence.js +131 -0
  74. package/dist/cjs/resources/tax/operatingLocations.js +98 -0
  75. package/dist/cjs/resources/tax/products.js +67 -0
  76. package/dist/cjs/resources/tax/registrationDeclarations.js +124 -0
  77. package/dist/cjs/resources/tax/registrations.js +82 -0
  78. package/dist/cjs/resources/tax/reports.js +92 -0
  79. package/dist/cjs/resources/tax/reviewItems.js +116 -0
  80. package/dist/cjs/resources/tax/ruleSet.js +68 -0
  81. package/dist/cjs/resources/tax/salesDestinations.js +94 -0
  82. package/dist/cjs/resources/tax/settings.js +104 -0
  83. package/dist/cjs/resources/tax/shared.js +62 -0
  84. package/dist/cjs/resources/tax/transactions.js +102 -0
  85. package/dist/cjs/route.js +22 -0
  86. package/dist/cjs/routes.js +31 -0
  87. package/dist/cjs/vocabulary/billingPortal.js +15 -0
  88. package/dist/cjs/vocabulary/catalog.js +110 -0
  89. package/dist/cjs/vocabulary/checkout.js +53 -0
  90. package/dist/cjs/vocabulary/connect.js +95 -0
  91. package/dist/cjs/vocabulary/errors.js +174 -0
  92. package/dist/cjs/vocabulary/events.js +176 -0
  93. package/dist/cjs/vocabulary/files.js +44 -0
  94. package/dist/cjs/vocabulary/index.js +37 -0
  95. package/dist/cjs/vocabulary/invoices.js +52 -0
  96. package/dist/cjs/vocabulary/lists.js +22 -0
  97. package/dist/cjs/vocabulary/merchants.js +23 -0
  98. package/dist/cjs/vocabulary/money.js +104 -0
  99. package/dist/cjs/vocabulary/paymentMethodConfigurations.js +36 -0
  100. package/dist/cjs/vocabulary/payments.js +195 -0
  101. package/dist/cjs/vocabulary/reporting.js +27 -0
  102. package/dist/cjs/vocabulary/subscriptions.js +60 -0
  103. package/dist/cjs/vocabulary/tax.js +237 -0
  104. package/dist/cjs/vocabulary/version.js +12 -0
  105. package/dist/esm/common/address.js +76 -0
  106. package/dist/esm/common/envelopes.js +95 -0
  107. package/dist/esm/common/objects.js +74 -0
  108. package/dist/esm/common/params.js +203 -0
  109. package/dist/esm/common/primitives.js +35 -0
  110. package/dist/esm/contributions.js +5 -0
  111. package/dist/esm/index.js +26 -134
  112. package/dist/esm/openapi/document.js +294 -0
  113. package/dist/esm/openapi/index.js +2 -0
  114. package/dist/esm/openapi/webhooks.js +14 -0
  115. package/dist/esm/resources/billingEngine/billingPortal.js +234 -0
  116. package/dist/esm/resources/billingEngine/creditNotes.js +186 -0
  117. package/dist/esm/resources/billingEngine/customerBalanceTransactions.js +87 -0
  118. package/dist/esm/resources/billingEngine/index.js +26 -0
  119. package/dist/esm/resources/billingEngine/invoiceItems.js +152 -0
  120. package/dist/esm/resources/billingEngine/invoices.js +506 -0
  121. package/dist/esm/resources/billingEngine/params.js +39 -0
  122. package/dist/esm/resources/billingEngine/public.js +323 -0
  123. package/dist/esm/resources/billingEngine/subscriptions.js +473 -0
  124. package/dist/esm/resources/catalog/billing.js +752 -0
  125. package/dist/esm/resources/catalog/billingSettings.js +128 -0
  126. package/dist/esm/resources/catalog/coupons.js +219 -0
  127. package/dist/esm/resources/catalog/entitlements.js +254 -0
  128. package/dist/esm/resources/catalog/index.js +38 -0
  129. package/dist/esm/resources/catalog/meters.js +276 -0
  130. package/dist/esm/resources/catalog/prices.js +419 -0
  131. package/dist/esm/resources/catalog/products.js +225 -0
  132. package/dist/esm/resources/catalog/promotionCodes.js +171 -0
  133. package/dist/esm/resources/catalog/shared.js +67 -0
  134. package/dist/esm/resources/catalog/testClocks.js +124 -0
  135. package/dist/esm/resources/checkout/checkoutSessions.js +579 -0
  136. package/dist/esm/resources/checkout/contributions.js +167 -0
  137. package/dist/esm/resources/checkout/files.js +130 -0
  138. package/dist/esm/resources/checkout/index.js +25 -0
  139. package/dist/esm/resources/checkout/merchants.js +287 -0
  140. package/dist/esm/resources/checkout/paymentLinks.js +327 -0
  141. package/dist/esm/resources/checkout/paymentMethodConfigurations.js +259 -0
  142. package/dist/esm/resources/checkout/shared.js +363 -0
  143. package/dist/esm/resources/connect/account.js +329 -0
  144. package/dist/esm/resources/connect/applicationFees.js +110 -0
  145. package/dist/esm/resources/connect/balance.js +209 -0
  146. package/dist/esm/resources/connect/connectedAccounts.js +257 -0
  147. package/dist/esm/resources/connect/index.js +34 -0
  148. package/dist/esm/resources/connect/onboarding.js +79 -0
  149. package/dist/esm/resources/connect/payouts.js +193 -0
  150. package/dist/esm/resources/connect/reporting.js +232 -0
  151. package/dist/esm/resources/connect/requestLogs.js +107 -0
  152. package/dist/esm/resources/connect/transfers.js +224 -0
  153. package/dist/esm/resources/core/customers.js +191 -0
  154. package/dist/esm/resources/core/index.js +6 -0
  155. package/dist/esm/resources/core/paymentMethods.js +131 -0
  156. package/dist/esm/resources/events/events.js +353 -0
  157. package/dist/esm/resources/events/index.js +12 -0
  158. package/dist/esm/resources/events/webhookDeliveries.js +90 -0
  159. package/dist/esm/resources/events/webhookEndpoints.js +212 -0
  160. package/dist/esm/resources/payments/charges.js +154 -0
  161. package/dist/esm/resources/payments/disputes.js +201 -0
  162. package/dist/esm/resources/payments/index.js +24 -0
  163. package/dist/esm/resources/payments/paymentIntents.js +526 -0
  164. package/dist/esm/resources/payments/refunds.js +242 -0
  165. package/dist/esm/resources/payments/setupIntents.js +155 -0
  166. package/dist/esm/resources/payments/social.js +179 -0
  167. package/dist/esm/resources/payments/testHelpers.js +36 -0
  168. package/dist/esm/resources/tax/assessments.js +214 -0
  169. package/dist/esm/resources/tax/businessProfile.js +96 -0
  170. package/dist/esm/resources/tax/calculations.js +173 -0
  171. package/dist/esm/resources/tax/capabilities.js +39 -0
  172. package/dist/esm/resources/tax/codes.js +34 -0
  173. package/dist/esm/resources/tax/complianceActions.js +53 -0
  174. package/dist/esm/resources/tax/deadlines.js +56 -0
  175. package/dist/esm/resources/tax/documents.js +125 -0
  176. package/dist/esm/resources/tax/index.js +63 -0
  177. package/dist/esm/resources/tax/locationEvidence.js +128 -0
  178. package/dist/esm/resources/tax/operatingLocations.js +95 -0
  179. package/dist/esm/resources/tax/products.js +64 -0
  180. package/dist/esm/resources/tax/registrationDeclarations.js +121 -0
  181. package/dist/esm/resources/tax/registrations.js +79 -0
  182. package/dist/esm/resources/tax/reports.js +89 -0
  183. package/dist/esm/resources/tax/reviewItems.js +113 -0
  184. package/dist/esm/resources/tax/ruleSet.js +65 -0
  185. package/dist/esm/resources/tax/salesDestinations.js +91 -0
  186. package/dist/esm/resources/tax/settings.js +101 -0
  187. package/dist/esm/resources/tax/shared.js +58 -0
  188. package/dist/esm/resources/tax/transactions.js +99 -0
  189. package/dist/esm/route.js +16 -0
  190. package/dist/esm/routes.js +27 -0
  191. package/dist/esm/vocabulary/billingPortal.js +12 -0
  192. package/dist/esm/vocabulary/catalog.js +106 -0
  193. package/dist/esm/vocabulary/checkout.js +50 -0
  194. package/dist/esm/vocabulary/connect.js +92 -0
  195. package/dist/esm/vocabulary/errors.js +169 -0
  196. package/dist/esm/vocabulary/events.js +173 -0
  197. package/dist/esm/vocabulary/files.js +41 -0
  198. package/dist/esm/vocabulary/index.js +21 -0
  199. package/dist/esm/vocabulary/invoices.js +49 -0
  200. package/dist/esm/vocabulary/lists.js +19 -0
  201. package/dist/esm/vocabulary/merchants.js +20 -0
  202. package/dist/esm/vocabulary/money.js +98 -0
  203. package/dist/esm/vocabulary/paymentMethodConfigurations.js +33 -0
  204. package/dist/esm/vocabulary/payments.js +192 -0
  205. package/dist/esm/vocabulary/reporting.js +24 -0
  206. package/dist/esm/vocabulary/subscriptions.js +57 -0
  207. package/dist/esm/vocabulary/tax.js +233 -0
  208. package/dist/esm/vocabulary/version.js +9 -0
  209. package/dist/types/common/address.d.ts +62 -0
  210. package/dist/types/common/envelopes.d.ts +88 -0
  211. package/dist/types/common/objects.d.ts +107 -0
  212. package/dist/types/common/params.d.ts +156 -0
  213. package/dist/types/common/primitives.d.ts +56 -0
  214. package/dist/types/contributions.d.ts +1 -0
  215. package/dist/types/index.d.ts +16 -171
  216. package/dist/types/openapi/document.d.ts +16 -0
  217. package/dist/types/openapi/index.d.ts +2 -0
  218. package/dist/types/openapi/webhooks.d.ts +15 -0
  219. package/dist/types/resources/billingEngine/billingPortal.d.ts +742 -0
  220. package/dist/types/resources/billingEngine/creditNotes.d.ts +655 -0
  221. package/dist/types/resources/billingEngine/customerBalanceTransactions.d.ts +282 -0
  222. package/dist/types/resources/billingEngine/index.d.ts +6071 -0
  223. package/dist/types/resources/billingEngine/invoiceItems.d.ts +502 -0
  224. package/dist/types/resources/billingEngine/invoices.d.ts +2547 -0
  225. package/dist/types/resources/billingEngine/params.d.ts +51 -0
  226. package/dist/types/resources/billingEngine/public.d.ts +1860 -0
  227. package/dist/types/resources/billingEngine/subscriptions.d.ts +1519 -0
  228. package/dist/types/resources/catalog/billing.d.ts +1723 -0
  229. package/dist/types/resources/catalog/billingSettings.d.ts +160 -0
  230. package/dist/types/resources/catalog/coupons.d.ts +403 -0
  231. package/dist/types/resources/catalog/entitlements.d.ts +422 -0
  232. package/dist/types/resources/catalog/index.d.ts +3155 -0
  233. package/dist/types/resources/catalog/meters.d.ts +474 -0
  234. package/dist/types/resources/catalog/prices.d.ts +1091 -0
  235. package/dist/types/resources/catalog/products.d.ts +430 -0
  236. package/dist/types/resources/catalog/promotionCodes.d.ts +369 -0
  237. package/dist/types/resources/catalog/shared.d.ts +34 -0
  238. package/dist/types/resources/catalog/testClocks.d.ts +220 -0
  239. package/dist/types/resources/checkout/checkoutSessions.d.ts +3207 -0
  240. package/dist/types/resources/checkout/contributions.d.ts +375 -0
  241. package/dist/types/resources/checkout/files.d.ts +280 -0
  242. package/dist/types/resources/checkout/index.d.ts +5678 -0
  243. package/dist/types/resources/checkout/merchants.d.ts +395 -0
  244. package/dist/types/resources/checkout/paymentLinks.d.ts +1728 -0
  245. package/dist/types/resources/checkout/paymentMethodConfigurations.d.ts +2104 -0
  246. package/dist/types/resources/checkout/shared.d.ts +419 -0
  247. package/dist/types/resources/connect/account.d.ts +483 -0
  248. package/dist/types/resources/connect/applicationFees.d.ts +198 -0
  249. package/dist/types/resources/connect/balance.d.ts +399 -0
  250. package/dist/types/resources/connect/connectedAccounts.d.ts +494 -0
  251. package/dist/types/resources/connect/index.d.ts +2094 -0
  252. package/dist/types/resources/connect/onboarding.d.ts +95 -0
  253. package/dist/types/resources/connect/payouts.d.ts +527 -0
  254. package/dist/types/resources/connect/reporting.d.ts +506 -0
  255. package/dist/types/resources/connect/requestLogs.d.ts +236 -0
  256. package/dist/types/resources/connect/transfers.d.ts +436 -0
  257. package/dist/types/resources/core/customers.d.ts +619 -0
  258. package/dist/types/resources/core/index.d.ts +679 -0
  259. package/dist/types/resources/core/paymentMethods.d.ts +336 -0
  260. package/dist/types/resources/events/events.d.ts +731 -0
  261. package/dist/types/resources/events/index.d.ts +1727 -0
  262. package/dist/types/resources/events/webhookDeliveries.d.ts +436 -0
  263. package/dist/types/resources/events/webhookEndpoints.d.ts +1502 -0
  264. package/dist/types/resources/payments/charges.d.ts +390 -0
  265. package/dist/types/resources/payments/disputes.d.ts +822 -0
  266. package/dist/types/resources/payments/index.d.ts +3517 -0
  267. package/dist/types/resources/payments/paymentIntents.d.ts +2080 -0
  268. package/dist/types/resources/payments/refunds.d.ts +684 -0
  269. package/dist/types/resources/payments/setupIntents.d.ts +391 -0
  270. package/dist/types/resources/payments/social.d.ts +266 -0
  271. package/dist/types/resources/payments/testHelpers.d.ts +178 -0
  272. package/dist/types/resources/tax/assessments.d.ts +787 -0
  273. package/dist/types/resources/tax/businessProfile.d.ts +134 -0
  274. package/dist/types/resources/tax/calculations.d.ts +261 -0
  275. package/dist/types/resources/tax/capabilities.d.ts +81 -0
  276. package/dist/types/resources/tax/codes.d.ts +29 -0
  277. package/dist/types/resources/tax/complianceActions.d.ts +97 -0
  278. package/dist/types/resources/tax/deadlines.d.ts +133 -0
  279. package/dist/types/resources/tax/documents.d.ts +257 -0
  280. package/dist/types/resources/tax/index.d.ts +1946 -0
  281. package/dist/types/resources/tax/locationEvidence.d.ts +246 -0
  282. package/dist/types/resources/tax/operatingLocations.d.ts +170 -0
  283. package/dist/types/resources/tax/products.d.ts +68 -0
  284. package/dist/types/resources/tax/registrationDeclarations.d.ts +270 -0
  285. package/dist/types/resources/tax/registrations.d.ts +103 -0
  286. package/dist/types/resources/tax/reports.d.ts +129 -0
  287. package/dist/types/resources/tax/reviewItems.d.ts +226 -0
  288. package/dist/types/resources/tax/ruleSet.d.ts +219 -0
  289. package/dist/types/resources/tax/salesDestinations.d.ts +158 -0
  290. package/dist/types/resources/tax/settings.d.ts +122 -0
  291. package/dist/types/resources/tax/shared.d.ts +43 -0
  292. package/dist/types/resources/tax/transactions.d.ts +404 -0
  293. package/dist/types/route.d.ts +86 -0
  294. package/dist/types/routes.d.ts +23 -0
  295. package/dist/types/vocabulary/billingPortal.d.ts +15 -0
  296. package/dist/types/vocabulary/catalog.d.ts +97 -0
  297. package/dist/types/vocabulary/checkout.d.ts +49 -0
  298. package/dist/types/vocabulary/connect.d.ts +62 -0
  299. package/dist/types/vocabulary/errors.d.ts +145 -0
  300. package/dist/types/vocabulary/events.d.ts +171 -0
  301. package/dist/types/vocabulary/files.d.ts +30 -0
  302. package/dist/types/vocabulary/index.d.ts +17 -0
  303. package/dist/types/vocabulary/invoices.d.ts +39 -0
  304. package/dist/types/vocabulary/lists.d.ts +9 -0
  305. package/dist/types/vocabulary/merchants.d.ts +9 -0
  306. package/dist/types/vocabulary/money.d.ts +59 -0
  307. package/dist/types/vocabulary/paymentMethodConfigurations.d.ts +22 -0
  308. package/dist/types/vocabulary/payments.d.ts +117 -0
  309. package/dist/types/vocabulary/reporting.d.ts +18 -0
  310. package/dist/types/vocabulary/subscriptions.d.ts +45 -0
  311. package/dist/types/vocabulary/tax.d.ts +163 -0
  312. package/dist/types/vocabulary/version.d.ts +10 -0
  313. package/package.json +51 -11
  314. package/dist/cjs/openapi.js +0 -165
  315. package/dist/esm/openapi.js +0 -161
  316. package/dist/types/openapi.d.ts +0 -148
@@ -0,0 +1,186 @@
1
+ import { z } from 'zod';
2
+ import { listOf } from '../../common/envelopes.js';
3
+ import { defineComponent, defineObject, expandable } from '../../common/objects.js';
4
+ import { expandOnlyQuery, expandParam, idParam, listQuery, metadataCreateParam, queryInteger, } from '../../common/params.js';
5
+ import { amount, currency, livemode, metadata, unixSeconds } from '../../common/primitives.js';
6
+ import { defineRoute } from '../../route.js';
7
+ import { CREDIT_NOTE_LINE_TYPES, CREDIT_NOTE_REASONS, CREDIT_NOTE_STATUSES, CREDIT_NOTE_TYPES, } from '../../vocabulary/invoices.js';
8
+ import { invoiceActionParams } from './invoices.js';
9
+ import { amountParam, quantityParam, shortText } from './params.js';
10
+ /**
11
+ * Credit notes (`cn_…`, ADR 0018 §4): a finalized invoice credited — on an
12
+ * `open` one it reduces what is due; on a `paid` one it is given back
13
+ * (refunded through the invoice's payment, credited to the customer balance,
14
+ * or recorded as returned outside Orbit).
15
+ */
16
+ export const creditNoteLineItemSchema = defineComponent('CreditNoteLineItem', z
17
+ .object({
18
+ id: z.string(),
19
+ object: z.literal('credit_note_line_item'),
20
+ type: z.enum(CREDIT_NOTE_LINE_TYPES),
21
+ invoice_line_item: z.string().nullable().describe('The invoice line (`il_…`) it credits.'),
22
+ description: z.string().nullable(),
23
+ quantity: z.number().int().nullable(),
24
+ amount: amount.describe('Before tax; tax-inclusive when the invoice line is.'),
25
+ tax_amount: amount,
26
+ })
27
+ .strict());
28
+ export const creditNoteSchema = defineObject('credit_note', 'CreditNote', z
29
+ .object({
30
+ id: z.string(),
31
+ object: z.literal('credit_note'),
32
+ livemode,
33
+ number: z.string().describe('`<invoice number>-CN-<nn>`.'),
34
+ invoice: expandable('invoice', '`in_…`, or the Invoice with `expand[]=invoice`.'),
35
+ customer: expandable('customer', '`cus_…`, or the Customer with `expand[]=customer`.'),
36
+ status: z.enum(CREDIT_NOTE_STATUSES),
37
+ type: z.enum(CREDIT_NOTE_TYPES),
38
+ reason: z.enum(CREDIT_NOTE_REASONS).nullable(),
39
+ currency,
40
+ lines: listOf(creditNoteLineItemSchema),
41
+ subtotal: amount,
42
+ tax: amount,
43
+ total: amount.describe('What is credited, tax included.'),
44
+ refund_amount: amount.describe("Of `total`: refunded through the invoice's payment."),
45
+ credit_amount: amount.describe('Of `total`: credited to the customer balance.'),
46
+ out_of_band_amount: amount.describe('Of `total`: recorded as returned outside Orbit.'),
47
+ refund: z.string().nullable().describe('The Refund (`re_…`) when part of it was refunded.'),
48
+ customer_balance_transaction: z
49
+ .string()
50
+ .nullable()
51
+ .describe('The customer balance transaction (`cbtxn_…`) of `credit_amount`.'),
52
+ memo: z.string().nullable(),
53
+ metadata,
54
+ voided_at: unixSeconds.nullable(),
55
+ created: unixSeconds,
56
+ })
57
+ .strict());
58
+ const creditNoteFields = {
59
+ invoice: idParam,
60
+ amount: amountParam
61
+ .optional()
62
+ .describe('Credit this much of the invoice, tax included, spread over its lines.'),
63
+ reason: z.enum(CREDIT_NOTE_REASONS).optional(),
64
+ memo: shortText(5000).optional(),
65
+ refund_amount: amountParam.optional(),
66
+ credit_amount: amountParam.optional(),
67
+ out_of_band_amount: amountParam.optional(),
68
+ };
69
+ const creditNoteLineFields = {
70
+ type: z.enum(CREDIT_NOTE_LINE_TYPES),
71
+ invoice_line_item: idParam.optional(),
72
+ amount: amountParam
73
+ .optional()
74
+ .describe('For an invoice line: the amount of it to credit (default all of it).'),
75
+ description: shortText(500).optional(),
76
+ };
77
+ /**
78
+ * Credit `lines`, or a whole `amount` (custom).
79
+ *
80
+ * On a `paid` invoice the credit must be distributed: `refund_amount` (through
81
+ * the invoice's payment; card only), `credit_amount` (to the customer balance)
82
+ * and `out_of_band_amount` must add up to the total. Omitted, all of it is
83
+ * refunded on a card invoice and credited to the balance otherwise. On an
84
+ * `open` invoice it reduces `amount_due` and none of the three apply.
85
+ */
86
+ export const createCreditNoteParams = z
87
+ .object({
88
+ ...creditNoteFields,
89
+ lines: z
90
+ .array(z.object({ ...creditNoteLineFields, quantity: quantityParam.optional() }).strict())
91
+ .min(1)
92
+ .max(100)
93
+ .optional(),
94
+ metadata: metadataCreateParam.optional(),
95
+ expand: expandParam.optional(),
96
+ })
97
+ .strict();
98
+ /** The create's fields as a query (`lines[0][type]=…`). */
99
+ export const previewCreditNoteQuery = z
100
+ .object({
101
+ ...creditNoteFields,
102
+ lines: z
103
+ .array(z
104
+ .object({ ...creditNoteLineFields, quantity: queryInteger({ min: 0 }).optional() })
105
+ .strict())
106
+ .max(100)
107
+ .optional(),
108
+ })
109
+ .strict();
110
+ export const voidCreditNoteParams = invoiceActionParams;
111
+ export const listCreditNotesQuery = listQuery({
112
+ invoice: idParam.optional(),
113
+ customer: idParam.optional(),
114
+ });
115
+ const creditNoteId = { id: 'The credit note (`cn_…`).' };
116
+ export const creditNoteRoutes = [
117
+ defineRoute({
118
+ operationId: 'createCreditNote',
119
+ method: 'post',
120
+ path: '/v1/credit_notes',
121
+ tag: 'Credit notes',
122
+ summary: 'Issue a credit note',
123
+ auth: 'service',
124
+ scope: 'payments:write',
125
+ idempotent: true,
126
+ body: createCreditNoteParams,
127
+ response: creditNoteSchema,
128
+ sdk: 'creditNotes.create',
129
+ expandable: 'credit_note',
130
+ }),
131
+ defineRoute({
132
+ operationId: 'listCreditNotes',
133
+ method: 'get',
134
+ path: '/v1/credit_notes',
135
+ tag: 'Credit notes',
136
+ summary: 'List credit notes',
137
+ auth: 'service',
138
+ scope: 'payments:read',
139
+ query: listCreditNotesQuery,
140
+ response: listOf(creditNoteSchema),
141
+ sdk: 'creditNotes.list',
142
+ expandable: 'credit_note',
143
+ }),
144
+ defineRoute({
145
+ operationId: 'previewCreditNote',
146
+ method: 'get',
147
+ path: '/v1/credit_notes/preview',
148
+ tag: 'Credit notes',
149
+ summary: 'Preview a credit note',
150
+ description: 'The note `POST /v1/credit_notes` would issue with the same fields, computed and never stored (its `id` and `number` are empty).',
151
+ auth: 'service',
152
+ scope: 'payments:read',
153
+ query: previewCreditNoteQuery,
154
+ response: creditNoteSchema,
155
+ sdk: 'creditNotes.preview',
156
+ }),
157
+ defineRoute({
158
+ operationId: 'retrieveCreditNote',
159
+ method: 'get',
160
+ path: '/v1/credit_notes/{id}',
161
+ tag: 'Credit notes',
162
+ summary: 'Retrieve a credit note',
163
+ auth: 'service',
164
+ scope: 'payments:read',
165
+ params: creditNoteId,
166
+ query: expandOnlyQuery,
167
+ response: creditNoteSchema,
168
+ sdk: 'creditNotes.retrieve',
169
+ expandable: 'credit_note',
170
+ }),
171
+ defineRoute({
172
+ operationId: 'voidCreditNote',
173
+ method: 'post',
174
+ path: '/v1/credit_notes/{id}/void',
175
+ tag: 'Credit notes',
176
+ summary: 'Void a credit note',
177
+ auth: 'service',
178
+ scope: 'payments:write',
179
+ idempotent: true,
180
+ params: creditNoteId,
181
+ body: voidCreditNoteParams,
182
+ response: creditNoteSchema,
183
+ sdk: 'creditNotes.voidCreditNote',
184
+ expandable: 'credit_note',
185
+ }),
186
+ ];
@@ -0,0 +1,87 @@
1
+ import { z } from 'zod';
2
+ import { listOf } from '../../common/envelopes.js';
3
+ import { defineObject, expandable } from '../../common/objects.js';
4
+ import { expandOnlyQuery, expandParam, listQuery, metadataCreateParam } from '../../common/params.js';
5
+ import { currency, livemode, metadata, signedAmount, unixSeconds } from '../../common/primitives.js';
6
+ import { defineRoute } from '../../route.js';
7
+ import { CUSTOMER_BALANCE_TRANSACTION_TYPES } from '../../vocabulary/invoices.js';
8
+ import { currencyParam, shortText, signedAmountParam } from './params.js';
9
+ /**
10
+ * The customer balance ledger (`cbtxn_…`, ADR 0018 §3): every movement of a
11
+ * customer's balance. Negative is credit the customer holds (Stripe's
12
+ * convention), applied to their next invoice when it finalizes.
13
+ */
14
+ export const customerBalanceTransactionSchema = defineObject('customer_balance_transaction', 'CustomerBalanceTransaction', z
15
+ .object({
16
+ id: z.string(),
17
+ object: z.literal('customer_balance_transaction'),
18
+ livemode,
19
+ customer: expandable('customer', '`cus_…`, or the Customer with `expand[]=customer`.'),
20
+ type: z.enum(CUSTOMER_BALANCE_TRANSACTION_TYPES),
21
+ amount: signedAmount.describe('SIGNED: negative credits the customer, positive debits.'),
22
+ currency,
23
+ ending_balance: signedAmount.describe('SIGNED: the balance after this transaction.'),
24
+ description: z.string().nullable(),
25
+ invoice: expandable('invoice', 'The invoice it moved with (`in_…`, or the Invoice with `expand[]=invoice`).').nullable(),
26
+ credit_note: z.string().nullable().describe('The credit note (`cn_…`) it came from.'),
27
+ metadata,
28
+ created: unixSeconds,
29
+ })
30
+ .strict());
31
+ /** An adjustment: a negative `amount` credits the customer, a positive one adds to what they owe. */
32
+ export const createCustomerBalanceTransactionParams = z
33
+ .object({
34
+ amount: signedAmountParam.describe('SIGNED: negative credits the customer, positive debits.'),
35
+ currency: currencyParam,
36
+ description: shortText(350).optional(),
37
+ metadata: metadataCreateParam.optional(),
38
+ expand: expandParam.optional(),
39
+ })
40
+ .strict();
41
+ export const listCustomerBalanceTransactionsQuery = listQuery({});
42
+ const customerId = 'The customer (`cus_…`).';
43
+ export const customerBalanceTransactionRoutes = [
44
+ defineRoute({
45
+ operationId: 'createCustomerBalanceTransaction',
46
+ method: 'post',
47
+ path: '/v1/customers/{id}/balance_transactions',
48
+ tag: 'Customer balance',
49
+ summary: "Adjust a customer's balance",
50
+ auth: 'service',
51
+ scope: 'payments:write',
52
+ idempotent: true,
53
+ params: { id: customerId },
54
+ body: createCustomerBalanceTransactionParams,
55
+ response: customerBalanceTransactionSchema,
56
+ sdk: 'customerBalanceTransactions.create',
57
+ expandable: 'customer_balance_transaction',
58
+ }),
59
+ defineRoute({
60
+ operationId: 'listCustomerBalanceTransactions',
61
+ method: 'get',
62
+ path: '/v1/customers/{id}/balance_transactions',
63
+ tag: 'Customer balance',
64
+ summary: "List a customer's balance transactions",
65
+ auth: 'service',
66
+ scope: 'payments:read',
67
+ params: { id: customerId },
68
+ query: listCustomerBalanceTransactionsQuery,
69
+ response: listOf(customerBalanceTransactionSchema),
70
+ sdk: 'customerBalanceTransactions.list',
71
+ expandable: 'customer_balance_transaction',
72
+ }),
73
+ defineRoute({
74
+ operationId: 'retrieveCustomerBalanceTransaction',
75
+ method: 'get',
76
+ path: '/v1/customers/{id}/balance_transactions/{transaction}',
77
+ tag: 'Customer balance',
78
+ summary: 'Retrieve a customer balance transaction',
79
+ auth: 'service',
80
+ scope: 'payments:read',
81
+ params: { id: customerId, transaction: 'The balance transaction (`cbtxn_…`).' },
82
+ query: expandOnlyQuery,
83
+ response: customerBalanceTransactionSchema,
84
+ sdk: 'customerBalanceTransactions.retrieve',
85
+ expandable: 'customer_balance_transaction',
86
+ }),
87
+ ];
@@ -0,0 +1,26 @@
1
+ // Contracts of this group: one module per resource, re-exported here, and
2
+ // their routes concatenated into `billingEngineRoutes`.
3
+ import { billingPortalRoutes } from './billingPortal.js';
4
+ import { creditNoteRoutes } from './creditNotes.js';
5
+ import { customerBalanceTransactionRoutes } from './customerBalanceTransactions.js';
6
+ import { invoiceItemRoutes } from './invoiceItems.js';
7
+ import { invoiceRoutes } from './invoices.js';
8
+ import { publicBillingRoutes } from './public.js';
9
+ import { subscriptionRoutes } from './subscriptions.js';
10
+ export * from './billingPortal.js';
11
+ export * from './creditNotes.js';
12
+ export * from './customerBalanceTransactions.js';
13
+ export * from './invoiceItems.js';
14
+ export * from './invoices.js';
15
+ export * from './public.js';
16
+ export * from './subscriptions.js';
17
+ /** Orbit's native billing engine (ADR 0018): subscriptions, invoices, credit notes, the balance ledger and the customer portal. */
18
+ export const billingEngineRoutes = [
19
+ ...subscriptionRoutes,
20
+ ...invoiceRoutes,
21
+ ...invoiceItemRoutes,
22
+ ...creditNoteRoutes,
23
+ ...customerBalanceTransactionRoutes,
24
+ ...billingPortalRoutes,
25
+ ...publicBillingRoutes,
26
+ ];
@@ -0,0 +1,152 @@
1
+ import { z } from 'zod';
2
+ import { embedded } from '../../common/objects.js';
3
+ import { priceDataParams } from '../catalog/prices.js';
4
+ import { deletedOf, listOf } from '../../common/envelopes.js';
5
+ import { defineComponent, defineObject, expandable } from '../../common/objects.js';
6
+ import { expandOnlyQuery, expandParam, idParam, listQuery, metadataCreateParam, metadataUpdateParam, queryBoolean, unixSecondsParam, } from '../../common/params.js';
7
+ import { amount, currency, livemode, metadata, signedAmount, unixSeconds, } from '../../common/primitives.js';
8
+ import { defineRoute } from '../../route.js';
9
+ import { amountParam, currencyParam, quantityParam, shortText } from './params.js';
10
+ /**
11
+ * Invoice items (`ii_…`, ADR 0018 §2): a charge waiting for an invoice — a
12
+ * pending item is pulled into the customer's next invoice (a subscription's
13
+ * renewal, or a manual invoice with `pending_invoice_items_behavior=include`),
14
+ * or it is created directly on a draft.
15
+ */
16
+ export const invoiceItemSchema = defineObject('invoiceitem', 'InvoiceItem', z
17
+ .object({
18
+ id: z.string(),
19
+ object: z.literal('invoiceitem'),
20
+ livemode,
21
+ customer: expandable('customer', '`cus_…`, or the Customer with `expand[]=customer`.'),
22
+ invoice: expandable('invoice', 'The draft it is on (`in_…`, or the Invoice with `expand[]=invoice`); `null` while pending.').nullable(),
23
+ subscription: expandable('subscription', '`sub_…`, or the Subscription with `expand[]=subscription`.').nullable(),
24
+ subscription_item: z.string().nullable(),
25
+ price: embedded('price', 'The Price, embedded; `null` for a fixed amount.').nullable(),
26
+ quantity: z.number().int().nonnegative(),
27
+ unit_amount: amount
28
+ .nullable()
29
+ .describe('Base units per unit; `null` for a proration (an amount for a period, not per unit).'),
30
+ amount: signedAmount.describe('SIGNED (an engine-made proration credit is negative).'),
31
+ currency,
32
+ description: z.string().nullable(),
33
+ discountable: z.boolean(),
34
+ period: z.object({ start: unixSeconds, end: unixSeconds }).strict(),
35
+ proration: z.boolean(),
36
+ metadata,
37
+ date: unixSeconds,
38
+ })
39
+ .strict());
40
+ export const deletedInvoiceItemSchema = defineComponent('DeletedInvoiceItem', deletedOf('invoiceitem'));
41
+ /**
42
+ * A price (`price` or `price_data`) times `quantity`, or a fixed `amount` +
43
+ * `currency`. Never negative — a credit is a credit note or a customer balance
44
+ * transaction.
45
+ */
46
+ export const createInvoiceItemParams = z
47
+ .object({
48
+ customer: idParam,
49
+ invoice: idParam.optional().describe('A draft to put it on; absent, it is pending.'),
50
+ subscription: idParam.optional(),
51
+ price: idParam.optional(),
52
+ price_data: priceDataParams
53
+ .optional()
54
+ .describe('A one-off per-unit price of an existing product, for an item that names no stored price.'),
55
+ quantity: quantityParam.optional(),
56
+ amount: amountParam.optional(),
57
+ currency: currencyParam.optional(),
58
+ description: shortText(500).optional(),
59
+ discountable: z.boolean().optional(),
60
+ period: z.object({ start: unixSecondsParam, end: unixSecondsParam }).strict().optional(),
61
+ metadata: metadataCreateParam.optional(),
62
+ expand: expandParam.optional(),
63
+ })
64
+ .strict();
65
+ /** Pending items, or items on a draft. A field sent as `""` is cleared; `metadata` is a patch. */
66
+ export const updateInvoiceItemParams = z
67
+ .object({
68
+ description: z.union([shortText(500), z.literal('')]).optional(),
69
+ quantity: quantityParam.optional(),
70
+ discountable: z.boolean().optional(),
71
+ metadata: metadataUpdateParam.optional(),
72
+ expand: expandParam.optional(),
73
+ })
74
+ .strict();
75
+ export const listInvoiceItemsQuery = listQuery({
76
+ customer: idParam.optional(),
77
+ invoice: idParam.optional(),
78
+ pending: queryBoolean.optional().describe('Only items not on any invoice yet.'),
79
+ });
80
+ const invoiceItemId = { id: 'The invoice item (`ii_…`).' };
81
+ export const invoiceItemRoutes = [
82
+ defineRoute({
83
+ operationId: 'createInvoiceItem',
84
+ method: 'post',
85
+ path: '/v1/invoiceitems',
86
+ tag: 'Invoice items',
87
+ summary: 'Create an invoice item',
88
+ auth: 'service',
89
+ scope: 'payments:write',
90
+ idempotent: true,
91
+ body: createInvoiceItemParams,
92
+ response: invoiceItemSchema,
93
+ sdk: 'invoiceItems.create',
94
+ expandable: 'invoiceitem',
95
+ }),
96
+ defineRoute({
97
+ operationId: 'listInvoiceItems',
98
+ method: 'get',
99
+ path: '/v1/invoiceitems',
100
+ tag: 'Invoice items',
101
+ summary: 'List invoice items',
102
+ auth: 'service',
103
+ scope: 'payments:read',
104
+ query: listInvoiceItemsQuery,
105
+ response: listOf(invoiceItemSchema),
106
+ sdk: 'invoiceItems.list',
107
+ expandable: 'invoiceitem',
108
+ }),
109
+ defineRoute({
110
+ operationId: 'retrieveInvoiceItem',
111
+ method: 'get',
112
+ path: '/v1/invoiceitems/{id}',
113
+ tag: 'Invoice items',
114
+ summary: 'Retrieve an invoice item',
115
+ auth: 'service',
116
+ scope: 'payments:read',
117
+ params: invoiceItemId,
118
+ query: expandOnlyQuery,
119
+ response: invoiceItemSchema,
120
+ sdk: 'invoiceItems.retrieve',
121
+ expandable: 'invoiceitem',
122
+ }),
123
+ defineRoute({
124
+ operationId: 'updateInvoiceItem',
125
+ method: 'post',
126
+ path: '/v1/invoiceitems/{id}',
127
+ tag: 'Invoice items',
128
+ summary: 'Update an invoice item',
129
+ description: 'While it is pending or on a draft.',
130
+ auth: 'service',
131
+ scope: 'payments:write',
132
+ idempotent: true,
133
+ params: invoiceItemId,
134
+ body: updateInvoiceItemParams,
135
+ response: invoiceItemSchema,
136
+ sdk: 'invoiceItems.update',
137
+ expandable: 'invoiceitem',
138
+ }),
139
+ defineRoute({
140
+ operationId: 'deleteInvoiceItem',
141
+ method: 'delete',
142
+ path: '/v1/invoiceitems/{id}',
143
+ tag: 'Invoice items',
144
+ summary: 'Delete an invoice item',
145
+ description: 'While it is pending or on a draft.',
146
+ auth: 'service',
147
+ scope: 'payments:write',
148
+ params: invoiceItemId,
149
+ response: deletedInvoiceItemSchema,
150
+ sdk: 'invoiceItems.del',
151
+ }),
152
+ ];