@peable.to/contracts 0.4.0 → 1.1.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 (322) 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/dashboard.js +68 -0
  92. package/dist/cjs/vocabulary/errors.js +175 -0
  93. package/dist/cjs/vocabulary/events.js +176 -0
  94. package/dist/cjs/vocabulary/files.js +44 -0
  95. package/dist/cjs/vocabulary/identity.js +12 -0
  96. package/dist/cjs/vocabulary/index.js +39 -0
  97. package/dist/cjs/vocabulary/invoices.js +52 -0
  98. package/dist/cjs/vocabulary/lists.js +22 -0
  99. package/dist/cjs/vocabulary/merchants.js +23 -0
  100. package/dist/cjs/vocabulary/money.js +104 -0
  101. package/dist/cjs/vocabulary/paymentMethodConfigurations.js +36 -0
  102. package/dist/cjs/vocabulary/payments.js +195 -0
  103. package/dist/cjs/vocabulary/reporting.js +27 -0
  104. package/dist/cjs/vocabulary/subscriptions.js +60 -0
  105. package/dist/cjs/vocabulary/tax.js +237 -0
  106. package/dist/cjs/vocabulary/version.js +12 -0
  107. package/dist/esm/common/address.js +76 -0
  108. package/dist/esm/common/envelopes.js +95 -0
  109. package/dist/esm/common/objects.js +74 -0
  110. package/dist/esm/common/params.js +203 -0
  111. package/dist/esm/common/primitives.js +35 -0
  112. package/dist/esm/contributions.js +5 -0
  113. package/dist/esm/index.js +26 -134
  114. package/dist/esm/openapi/document.js +294 -0
  115. package/dist/esm/openapi/index.js +2 -0
  116. package/dist/esm/openapi/webhooks.js +14 -0
  117. package/dist/esm/resources/billingEngine/billingPortal.js +234 -0
  118. package/dist/esm/resources/billingEngine/creditNotes.js +186 -0
  119. package/dist/esm/resources/billingEngine/customerBalanceTransactions.js +87 -0
  120. package/dist/esm/resources/billingEngine/index.js +26 -0
  121. package/dist/esm/resources/billingEngine/invoiceItems.js +152 -0
  122. package/dist/esm/resources/billingEngine/invoices.js +506 -0
  123. package/dist/esm/resources/billingEngine/params.js +39 -0
  124. package/dist/esm/resources/billingEngine/public.js +323 -0
  125. package/dist/esm/resources/billingEngine/subscriptions.js +473 -0
  126. package/dist/esm/resources/catalog/billing.js +752 -0
  127. package/dist/esm/resources/catalog/billingSettings.js +128 -0
  128. package/dist/esm/resources/catalog/coupons.js +219 -0
  129. package/dist/esm/resources/catalog/entitlements.js +254 -0
  130. package/dist/esm/resources/catalog/index.js +38 -0
  131. package/dist/esm/resources/catalog/meters.js +276 -0
  132. package/dist/esm/resources/catalog/prices.js +419 -0
  133. package/dist/esm/resources/catalog/products.js +225 -0
  134. package/dist/esm/resources/catalog/promotionCodes.js +171 -0
  135. package/dist/esm/resources/catalog/shared.js +67 -0
  136. package/dist/esm/resources/catalog/testClocks.js +124 -0
  137. package/dist/esm/resources/checkout/checkoutSessions.js +579 -0
  138. package/dist/esm/resources/checkout/contributions.js +167 -0
  139. package/dist/esm/resources/checkout/files.js +130 -0
  140. package/dist/esm/resources/checkout/index.js +25 -0
  141. package/dist/esm/resources/checkout/merchants.js +287 -0
  142. package/dist/esm/resources/checkout/paymentLinks.js +327 -0
  143. package/dist/esm/resources/checkout/paymentMethodConfigurations.js +259 -0
  144. package/dist/esm/resources/checkout/shared.js +363 -0
  145. package/dist/esm/resources/connect/account.js +329 -0
  146. package/dist/esm/resources/connect/applicationFees.js +110 -0
  147. package/dist/esm/resources/connect/balance.js +209 -0
  148. package/dist/esm/resources/connect/connectedAccounts.js +257 -0
  149. package/dist/esm/resources/connect/index.js +34 -0
  150. package/dist/esm/resources/connect/onboarding.js +79 -0
  151. package/dist/esm/resources/connect/payouts.js +193 -0
  152. package/dist/esm/resources/connect/reporting.js +232 -0
  153. package/dist/esm/resources/connect/requestLogs.js +107 -0
  154. package/dist/esm/resources/connect/transfers.js +224 -0
  155. package/dist/esm/resources/core/customers.js +191 -0
  156. package/dist/esm/resources/core/index.js +6 -0
  157. package/dist/esm/resources/core/paymentMethods.js +131 -0
  158. package/dist/esm/resources/events/events.js +353 -0
  159. package/dist/esm/resources/events/index.js +12 -0
  160. package/dist/esm/resources/events/webhookDeliveries.js +90 -0
  161. package/dist/esm/resources/events/webhookEndpoints.js +212 -0
  162. package/dist/esm/resources/payments/charges.js +154 -0
  163. package/dist/esm/resources/payments/disputes.js +201 -0
  164. package/dist/esm/resources/payments/index.js +24 -0
  165. package/dist/esm/resources/payments/paymentIntents.js +526 -0
  166. package/dist/esm/resources/payments/refunds.js +242 -0
  167. package/dist/esm/resources/payments/setupIntents.js +155 -0
  168. package/dist/esm/resources/payments/social.js +179 -0
  169. package/dist/esm/resources/payments/testHelpers.js +36 -0
  170. package/dist/esm/resources/tax/assessments.js +214 -0
  171. package/dist/esm/resources/tax/businessProfile.js +96 -0
  172. package/dist/esm/resources/tax/calculations.js +173 -0
  173. package/dist/esm/resources/tax/capabilities.js +39 -0
  174. package/dist/esm/resources/tax/codes.js +34 -0
  175. package/dist/esm/resources/tax/complianceActions.js +53 -0
  176. package/dist/esm/resources/tax/deadlines.js +56 -0
  177. package/dist/esm/resources/tax/documents.js +125 -0
  178. package/dist/esm/resources/tax/index.js +63 -0
  179. package/dist/esm/resources/tax/locationEvidence.js +128 -0
  180. package/dist/esm/resources/tax/operatingLocations.js +95 -0
  181. package/dist/esm/resources/tax/products.js +64 -0
  182. package/dist/esm/resources/tax/registrationDeclarations.js +121 -0
  183. package/dist/esm/resources/tax/registrations.js +79 -0
  184. package/dist/esm/resources/tax/reports.js +89 -0
  185. package/dist/esm/resources/tax/reviewItems.js +113 -0
  186. package/dist/esm/resources/tax/ruleSet.js +65 -0
  187. package/dist/esm/resources/tax/salesDestinations.js +91 -0
  188. package/dist/esm/resources/tax/settings.js +101 -0
  189. package/dist/esm/resources/tax/shared.js +58 -0
  190. package/dist/esm/resources/tax/transactions.js +99 -0
  191. package/dist/esm/route.js +16 -0
  192. package/dist/esm/routes.js +27 -0
  193. package/dist/esm/vocabulary/billingPortal.js +12 -0
  194. package/dist/esm/vocabulary/catalog.js +106 -0
  195. package/dist/esm/vocabulary/checkout.js +50 -0
  196. package/dist/esm/vocabulary/connect.js +92 -0
  197. package/dist/esm/vocabulary/dashboard.js +64 -0
  198. package/dist/esm/vocabulary/errors.js +170 -0
  199. package/dist/esm/vocabulary/events.js +173 -0
  200. package/dist/esm/vocabulary/files.js +41 -0
  201. package/dist/esm/vocabulary/identity.js +9 -0
  202. package/dist/esm/vocabulary/index.js +23 -0
  203. package/dist/esm/vocabulary/invoices.js +49 -0
  204. package/dist/esm/vocabulary/lists.js +19 -0
  205. package/dist/esm/vocabulary/merchants.js +20 -0
  206. package/dist/esm/vocabulary/money.js +98 -0
  207. package/dist/esm/vocabulary/paymentMethodConfigurations.js +33 -0
  208. package/dist/esm/vocabulary/payments.js +192 -0
  209. package/dist/esm/vocabulary/reporting.js +24 -0
  210. package/dist/esm/vocabulary/subscriptions.js +57 -0
  211. package/dist/esm/vocabulary/tax.js +233 -0
  212. package/dist/esm/vocabulary/version.js +9 -0
  213. package/dist/types/common/address.d.ts +62 -0
  214. package/dist/types/common/envelopes.d.ts +88 -0
  215. package/dist/types/common/objects.d.ts +107 -0
  216. package/dist/types/common/params.d.ts +156 -0
  217. package/dist/types/common/primitives.d.ts +56 -0
  218. package/dist/types/contributions.d.ts +1 -0
  219. package/dist/types/index.d.ts +16 -171
  220. package/dist/types/openapi/document.d.ts +16 -0
  221. package/dist/types/openapi/index.d.ts +2 -0
  222. package/dist/types/openapi/webhooks.d.ts +15 -0
  223. package/dist/types/resources/billingEngine/billingPortal.d.ts +742 -0
  224. package/dist/types/resources/billingEngine/creditNotes.d.ts +655 -0
  225. package/dist/types/resources/billingEngine/customerBalanceTransactions.d.ts +282 -0
  226. package/dist/types/resources/billingEngine/index.d.ts +6071 -0
  227. package/dist/types/resources/billingEngine/invoiceItems.d.ts +502 -0
  228. package/dist/types/resources/billingEngine/invoices.d.ts +2547 -0
  229. package/dist/types/resources/billingEngine/params.d.ts +51 -0
  230. package/dist/types/resources/billingEngine/public.d.ts +1860 -0
  231. package/dist/types/resources/billingEngine/subscriptions.d.ts +1519 -0
  232. package/dist/types/resources/catalog/billing.d.ts +1723 -0
  233. package/dist/types/resources/catalog/billingSettings.d.ts +160 -0
  234. package/dist/types/resources/catalog/coupons.d.ts +403 -0
  235. package/dist/types/resources/catalog/entitlements.d.ts +422 -0
  236. package/dist/types/resources/catalog/index.d.ts +3155 -0
  237. package/dist/types/resources/catalog/meters.d.ts +474 -0
  238. package/dist/types/resources/catalog/prices.d.ts +1091 -0
  239. package/dist/types/resources/catalog/products.d.ts +430 -0
  240. package/dist/types/resources/catalog/promotionCodes.d.ts +369 -0
  241. package/dist/types/resources/catalog/shared.d.ts +34 -0
  242. package/dist/types/resources/catalog/testClocks.d.ts +220 -0
  243. package/dist/types/resources/checkout/checkoutSessions.d.ts +3207 -0
  244. package/dist/types/resources/checkout/contributions.d.ts +375 -0
  245. package/dist/types/resources/checkout/files.d.ts +280 -0
  246. package/dist/types/resources/checkout/index.d.ts +5678 -0
  247. package/dist/types/resources/checkout/merchants.d.ts +395 -0
  248. package/dist/types/resources/checkout/paymentLinks.d.ts +1728 -0
  249. package/dist/types/resources/checkout/paymentMethodConfigurations.d.ts +2104 -0
  250. package/dist/types/resources/checkout/shared.d.ts +419 -0
  251. package/dist/types/resources/connect/account.d.ts +483 -0
  252. package/dist/types/resources/connect/applicationFees.d.ts +198 -0
  253. package/dist/types/resources/connect/balance.d.ts +399 -0
  254. package/dist/types/resources/connect/connectedAccounts.d.ts +494 -0
  255. package/dist/types/resources/connect/index.d.ts +2094 -0
  256. package/dist/types/resources/connect/onboarding.d.ts +95 -0
  257. package/dist/types/resources/connect/payouts.d.ts +527 -0
  258. package/dist/types/resources/connect/reporting.d.ts +506 -0
  259. package/dist/types/resources/connect/requestLogs.d.ts +236 -0
  260. package/dist/types/resources/connect/transfers.d.ts +436 -0
  261. package/dist/types/resources/core/customers.d.ts +619 -0
  262. package/dist/types/resources/core/index.d.ts +679 -0
  263. package/dist/types/resources/core/paymentMethods.d.ts +336 -0
  264. package/dist/types/resources/events/events.d.ts +731 -0
  265. package/dist/types/resources/events/index.d.ts +1727 -0
  266. package/dist/types/resources/events/webhookDeliveries.d.ts +436 -0
  267. package/dist/types/resources/events/webhookEndpoints.d.ts +1502 -0
  268. package/dist/types/resources/payments/charges.d.ts +390 -0
  269. package/dist/types/resources/payments/disputes.d.ts +822 -0
  270. package/dist/types/resources/payments/index.d.ts +3517 -0
  271. package/dist/types/resources/payments/paymentIntents.d.ts +2080 -0
  272. package/dist/types/resources/payments/refunds.d.ts +684 -0
  273. package/dist/types/resources/payments/setupIntents.d.ts +391 -0
  274. package/dist/types/resources/payments/social.d.ts +266 -0
  275. package/dist/types/resources/payments/testHelpers.d.ts +178 -0
  276. package/dist/types/resources/tax/assessments.d.ts +787 -0
  277. package/dist/types/resources/tax/businessProfile.d.ts +134 -0
  278. package/dist/types/resources/tax/calculations.d.ts +261 -0
  279. package/dist/types/resources/tax/capabilities.d.ts +81 -0
  280. package/dist/types/resources/tax/codes.d.ts +29 -0
  281. package/dist/types/resources/tax/complianceActions.d.ts +97 -0
  282. package/dist/types/resources/tax/deadlines.d.ts +133 -0
  283. package/dist/types/resources/tax/documents.d.ts +257 -0
  284. package/dist/types/resources/tax/index.d.ts +1946 -0
  285. package/dist/types/resources/tax/locationEvidence.d.ts +246 -0
  286. package/dist/types/resources/tax/operatingLocations.d.ts +170 -0
  287. package/dist/types/resources/tax/products.d.ts +68 -0
  288. package/dist/types/resources/tax/registrationDeclarations.d.ts +270 -0
  289. package/dist/types/resources/tax/registrations.d.ts +103 -0
  290. package/dist/types/resources/tax/reports.d.ts +129 -0
  291. package/dist/types/resources/tax/reviewItems.d.ts +226 -0
  292. package/dist/types/resources/tax/ruleSet.d.ts +219 -0
  293. package/dist/types/resources/tax/salesDestinations.d.ts +158 -0
  294. package/dist/types/resources/tax/settings.d.ts +122 -0
  295. package/dist/types/resources/tax/shared.d.ts +43 -0
  296. package/dist/types/resources/tax/transactions.d.ts +404 -0
  297. package/dist/types/route.d.ts +86 -0
  298. package/dist/types/routes.d.ts +23 -0
  299. package/dist/types/vocabulary/billingPortal.d.ts +15 -0
  300. package/dist/types/vocabulary/catalog.d.ts +97 -0
  301. package/dist/types/vocabulary/checkout.d.ts +49 -0
  302. package/dist/types/vocabulary/connect.d.ts +62 -0
  303. package/dist/types/vocabulary/dashboard.d.ts +44 -0
  304. package/dist/types/vocabulary/errors.d.ts +146 -0
  305. package/dist/types/vocabulary/events.d.ts +171 -0
  306. package/dist/types/vocabulary/files.d.ts +30 -0
  307. package/dist/types/vocabulary/identity.d.ts +9 -0
  308. package/dist/types/vocabulary/index.d.ts +19 -0
  309. package/dist/types/vocabulary/invoices.d.ts +39 -0
  310. package/dist/types/vocabulary/lists.d.ts +9 -0
  311. package/dist/types/vocabulary/merchants.d.ts +9 -0
  312. package/dist/types/vocabulary/money.d.ts +59 -0
  313. package/dist/types/vocabulary/paymentMethodConfigurations.d.ts +22 -0
  314. package/dist/types/vocabulary/payments.d.ts +117 -0
  315. package/dist/types/vocabulary/reporting.d.ts +18 -0
  316. package/dist/types/vocabulary/subscriptions.d.ts +45 -0
  317. package/dist/types/vocabulary/tax.d.ts +163 -0
  318. package/dist/types/vocabulary/version.d.ts +10 -0
  319. package/package.json +51 -11
  320. package/dist/cjs/openapi.js +0 -165
  321. package/dist/esm/openapi.js +0 -161
  322. package/dist/types/openapi.d.ts +0 -148
@@ -0,0 +1,473 @@
1
+ import { z } from 'zod';
2
+ import { embedded } from '../../common/objects.js';
3
+ import { deletedOf, listOf, searchResultOf } from '../../common/envelopes.js';
4
+ import { defineComponent, defineObject, expandable } from '../../common/objects.js';
5
+ import { expandOnlyQuery, expandParam, idParam, listQuery, metadataCreateParam, metadataUpdateParam, rangeParam, searchQuery, unixSecondsParam, } from '../../common/params.js';
6
+ import { currency, livemode, metadata, unixSeconds } from '../../common/primitives.js';
7
+ import { defineRoute } from '../../route.js';
8
+ import { COLLECTION_METHODS, CREATE_PRORATION_BEHAVIORS, PAUSE_COLLECTION_BEHAVIORS, PAYMENT_BEHAVIORS, PRORATION_BEHAVIORS, RESUME_BILLING_CYCLE_ANCHORS, SUBSCRIPTION_CANCELLATION_REASONS, SUBSCRIPTION_LIST_STATUSES, SUBSCRIPTION_STATUSES, TRIAL_END_BEHAVIORS, } from '../../vocabulary/subscriptions.js';
9
+ import { automaticTaxParam, daysUntilDueParam, discountsParam, quantityParam, shortText, } from './params.js';
10
+ /**
11
+ * Subscriptions (`sub_…`) and their items (`si_…`) — Orbit's native billing
12
+ * engine (ADR 0018 §1). Stripe's object model on Peable's wire (ADR 0014 D1):
13
+ * snake_case, Unix seconds, `livemode`, every amount a base-unit string.
14
+ */
15
+ /** A discount applied to a subscription or an invoice. */
16
+ export const discountSchema = defineComponent('Discount', z
17
+ .object({
18
+ object: z.literal('discount'),
19
+ coupon: z.string().describe('The coupon applied.'),
20
+ promotion_code: z
21
+ .string()
22
+ .nullable()
23
+ .describe('The promotion code (`promo_…`) it was redeemed through, if any.'),
24
+ start: unixSeconds.describe('When it started applying.'),
25
+ end: unixSeconds
26
+ .nullable()
27
+ .describe('When it stops (a `repeating` coupon); `null` for `once` and `forever`.'),
28
+ })
29
+ .strict());
30
+ /** One line of a subscription: a price and a quantity. */
31
+ export const subscriptionItemSchema = defineObject('subscription_item', 'SubscriptionItem', z
32
+ .object({
33
+ id: z.string(),
34
+ object: z.literal('subscription_item'),
35
+ livemode,
36
+ subscription: z.string().describe('The subscription (`sub_…`) it belongs to.'),
37
+ price: embedded('price', 'The Price, always embedded (Stripe’s shape).'),
38
+ quantity: z.number().int().nonnegative(),
39
+ metadata,
40
+ created: unixSeconds,
41
+ })
42
+ .strict());
43
+ /** What `DELETE /v1/subscription_items/:id` answers. */
44
+ export const deletedSubscriptionItemSchema = defineComponent('DeletedSubscriptionItem', deletedOf('subscription_item'));
45
+ export const subscriptionSchema = defineObject('subscription', 'Subscription', z
46
+ .object({
47
+ id: z.string(),
48
+ object: z.literal('subscription'),
49
+ livemode,
50
+ customer: expandable('customer', '`cus_…`, or the Customer with `expand[]=customer`.'),
51
+ status: z.enum(SUBSCRIPTION_STATUSES),
52
+ currency,
53
+ items: listOf(subscriptionItemSchema).describe('Every live item, on one page.'),
54
+ collection_method: z.enum(COLLECTION_METHODS),
55
+ days_until_due: z
56
+ .number()
57
+ .int()
58
+ .nullable()
59
+ .describe("`send_invoice` only: days from finalization to the invoice's due date."),
60
+ default_payment_method: expandable('payment_method', '`pm_…`, or the PaymentMethod with `expand[]=default_payment_method`.').nullable(),
61
+ description: z.string().nullable(),
62
+ billing_cycle_anchor: unixSeconds,
63
+ current_period_start: unixSeconds,
64
+ current_period_end: unixSeconds,
65
+ start_date: unixSeconds,
66
+ trial_start: unixSeconds.nullable(),
67
+ trial_end: unixSeconds.nullable(),
68
+ trial_settings: z
69
+ .object({
70
+ end_behavior: z.object({ missing_payment_method: z.enum(TRIAL_END_BEHAVIORS) }).strict(),
71
+ })
72
+ .strict(),
73
+ cancel_at_period_end: z.boolean(),
74
+ cancel_at: unixSeconds.nullable(),
75
+ canceled_at: unixSeconds.nullable(),
76
+ ended_at: unixSeconds.nullable(),
77
+ cancellation_details: z
78
+ .object({
79
+ reason: z.enum(SUBSCRIPTION_CANCELLATION_REASONS).nullable(),
80
+ comment: z.string().nullable(),
81
+ })
82
+ .strict(),
83
+ pause_collection: z
84
+ .object({
85
+ behavior: z.enum(PAUSE_COLLECTION_BEHAVIORS),
86
+ resumes_at: unixSeconds.nullable(),
87
+ })
88
+ .strict()
89
+ .nullable(),
90
+ automatic_tax: z.object({ enabled: z.boolean() }).strict(),
91
+ discount: discountSchema.nullable(),
92
+ latest_invoice: expandable('invoice', '`in_…`, or the Invoice with `expand[]=latest_invoice`.').nullable(),
93
+ test_clock: z
94
+ .string()
95
+ .nullable()
96
+ .describe('The test clock (`clock_…`) the customer is attached to; test mode only.'),
97
+ metadata,
98
+ created: unixSeconds,
99
+ })
100
+ .strict(), {
101
+ examples: [
102
+ {
103
+ id: 'sub_0193b8f2c1a87d3e9f4a',
104
+ object: 'subscription',
105
+ livemode: false,
106
+ customer: 'cus_0193b8f2c1a87d3e9f4a',
107
+ status: 'active',
108
+ currency: 'EUR',
109
+ items: {
110
+ object: 'list',
111
+ data: [],
112
+ has_more: false,
113
+ url: '/v1/subscription_items?subscription=sub_0193b8f2c1a87d3e9f4a',
114
+ },
115
+ collection_method: 'charge_automatically',
116
+ days_until_due: null,
117
+ default_payment_method: 'pm_0193b8f2c1a87d3e9f4a',
118
+ description: null,
119
+ billing_cycle_anchor: 1793750400,
120
+ current_period_start: 1793750400,
121
+ current_period_end: 1796428800,
122
+ start_date: 1793750400,
123
+ trial_start: null,
124
+ trial_end: null,
125
+ trial_settings: { end_behavior: { missing_payment_method: 'create_invoice' } },
126
+ cancel_at_period_end: false,
127
+ cancel_at: null,
128
+ canceled_at: null,
129
+ ended_at: null,
130
+ cancellation_details: { reason: null, comment: null },
131
+ pause_collection: null,
132
+ automatic_tax: { enabled: false },
133
+ discount: null,
134
+ latest_invoice: 'in_0193b8f2c1a87d3e9f4a',
135
+ test_clock: null,
136
+ metadata: {},
137
+ created: 1793750400,
138
+ },
139
+ ],
140
+ });
141
+ // ---- Requests ------------------------------------------------------------------------
142
+ /** `trial_end`: Unix seconds, or `'now'` to end the trial at once. */
143
+ const trialEndParam = z.union([unixSecondsParam, z.literal('now')]);
144
+ /**
145
+ * An item's metadata in `items[]` of an update and on an item update: the
146
+ * named keys are set on the item (a merge, never an unset).
147
+ */
148
+ const itemMetadataParam = z.record(z.string().max(40), z.string().max(500));
149
+ const createSubscriptionItemEntry = z
150
+ .object({
151
+ price: idParam,
152
+ quantity: quantityParam.optional(),
153
+ metadata: metadataCreateParam.optional(),
154
+ })
155
+ .strict();
156
+ export const createSubscriptionParams = z
157
+ .object({
158
+ customer: idParam,
159
+ items: z.array(createSubscriptionItemEntry).min(1).max(20),
160
+ default_payment_method: idParam.optional(),
161
+ collection_method: z.enum(COLLECTION_METHODS).optional(),
162
+ days_until_due: daysUntilDueParam.optional(),
163
+ description: shortText(500).optional(),
164
+ trial_period_days: z.number().int().min(1).max(730).optional(),
165
+ trial_end: trialEndParam.optional(),
166
+ trial_settings: z
167
+ .object({
168
+ end_behavior: z.object({ missing_payment_method: z.enum(TRIAL_END_BEHAVIORS) }).strict(),
169
+ })
170
+ .strict()
171
+ .optional(),
172
+ billing_cycle_anchor: unixSecondsParam.optional(),
173
+ proration_behavior: z.enum(CREATE_PRORATION_BEHAVIORS).optional(),
174
+ cancel_at_period_end: z.boolean().optional(),
175
+ cancel_at: unixSecondsParam.optional(),
176
+ coupon: idParam.optional(),
177
+ promotion_code: idParam.optional(),
178
+ discounts: discountsParam.optional(),
179
+ payment_behavior: z.enum(PAYMENT_BEHAVIORS).optional(),
180
+ automatic_tax: automaticTaxParam.optional(),
181
+ metadata: metadataCreateParam.optional(),
182
+ expand: expandParam.optional(),
183
+ })
184
+ .strict();
185
+ /** A subscription item as `items[]` of an update names it. */
186
+ const updateSubscriptionItemEntry = z
187
+ .object({
188
+ id: idParam.optional().describe('The `si_…` to change or remove; absent, a new item.'),
189
+ price: idParam.optional(),
190
+ quantity: quantityParam.optional(),
191
+ deleted: z.boolean().optional().describe('Remove this item.'),
192
+ metadata: itemMetadataParam.optional(),
193
+ })
194
+ .strict();
195
+ /** A field sent as `""` is cleared; `metadata` is a patch. */
196
+ export const updateSubscriptionParams = z
197
+ .object({
198
+ items: z.array(updateSubscriptionItemEntry).min(1).max(20).optional(),
199
+ proration_behavior: z.enum(PRORATION_BEHAVIORS).optional(),
200
+ proration_date: unixSecondsParam
201
+ .optional()
202
+ .describe('The instant prorations are computed at; defaults to now.'),
203
+ default_payment_method: z.union([idParam, z.literal('')]).optional(),
204
+ collection_method: z.enum(COLLECTION_METHODS).optional(),
205
+ days_until_due: daysUntilDueParam.optional(),
206
+ description: z.union([shortText(500), z.literal('')]).optional(),
207
+ cancel_at_period_end: z.boolean().optional(),
208
+ cancel_at: z.union([unixSecondsParam, z.literal('')]).optional(),
209
+ pause_collection: z
210
+ .union([
211
+ z
212
+ .object({
213
+ behavior: z.enum(PAUSE_COLLECTION_BEHAVIORS),
214
+ resumes_at: unixSecondsParam.optional(),
215
+ })
216
+ .strict(),
217
+ z.literal(''),
218
+ ])
219
+ .optional()
220
+ .describe('`""` resumes collection.'),
221
+ trial_end: trialEndParam.optional(),
222
+ coupon: z.union([idParam, z.literal('')]).optional(),
223
+ promotion_code: idParam.optional(),
224
+ discounts: z.union([discountsParam, z.literal('')]).optional(),
225
+ payment_behavior: z.enum(PAYMENT_BEHAVIORS).optional(),
226
+ automatic_tax: automaticTaxParam.optional(),
227
+ metadata: metadataUpdateParam.optional(),
228
+ expand: expandParam.optional(),
229
+ })
230
+ .strict();
231
+ /** `DELETE /v1/subscriptions/:id`: cancel now. */
232
+ export const cancelSubscriptionParams = z
233
+ .object({
234
+ invoice_now: z
235
+ .boolean()
236
+ .optional()
237
+ .describe('Bill pending items and prorations now, in a final invoice.'),
238
+ prorate: z.boolean().optional().describe('Credit the unused time of the current period.'),
239
+ cancellation_details: z
240
+ .object({ comment: shortText(5000).optional() })
241
+ .strict()
242
+ .optional(),
243
+ expand: expandParam.optional(),
244
+ })
245
+ .strict();
246
+ /** `POST /v1/subscriptions/:id/resume` — a `paused` subscription. */
247
+ export const resumeSubscriptionParams = z
248
+ .object({
249
+ billing_cycle_anchor: z
250
+ .enum(RESUME_BILLING_CYCLE_ANCHORS)
251
+ .optional()
252
+ .describe('`now` (default) starts a new period at once; `unchanged` keeps the anchor.'),
253
+ proration_behavior: z.enum(PRORATION_BEHAVIORS).optional(),
254
+ expand: expandParam.optional(),
255
+ })
256
+ .strict();
257
+ export const listSubscriptionsQuery = listQuery({
258
+ customer: idParam.optional(),
259
+ price: idParam.optional(),
260
+ status: z
261
+ .enum(SUBSCRIPTION_LIST_STATUSES)
262
+ .optional()
263
+ .describe('A status, `all` (including canceled), or `ended` (canceled and incomplete_expired).'),
264
+ test_clock: idParam.optional(),
265
+ current_period_end: rangeParam.optional(),
266
+ });
267
+ export const createSubscriptionItemParams = z
268
+ .object({
269
+ subscription: idParam,
270
+ price: idParam,
271
+ quantity: quantityParam.optional(),
272
+ proration_behavior: z.enum(PRORATION_BEHAVIORS).optional(),
273
+ proration_date: unixSecondsParam.optional(),
274
+ metadata: metadataCreateParam.optional(),
275
+ })
276
+ .strict();
277
+ export const updateSubscriptionItemParams = z
278
+ .object({
279
+ price: idParam.optional(),
280
+ quantity: quantityParam.optional(),
281
+ proration_behavior: z.enum(PRORATION_BEHAVIORS).optional(),
282
+ proration_date: unixSecondsParam.optional(),
283
+ metadata: itemMetadataParam.optional(),
284
+ })
285
+ .strict();
286
+ export const deleteSubscriptionItemParams = z
287
+ .object({
288
+ proration_behavior: z.enum(PRORATION_BEHAVIORS).optional(),
289
+ proration_date: unixSecondsParam.optional(),
290
+ })
291
+ .strict();
292
+ /** `subscription` is REQUIRED: items are listed per subscription. */
293
+ export const listSubscriptionItemsQuery = listQuery({
294
+ subscription: idParam.describe('The subscription (`sub_…`) whose items to list.'),
295
+ });
296
+ // ---- Routes --------------------------------------------------------------------------
297
+ const subscriptionId = { id: 'The subscription (`sub_…`).' };
298
+ const itemId = { id: 'The subscription item (`si_…`).' };
299
+ export const subscriptionRoutes = [
300
+ defineRoute({
301
+ operationId: 'createSubscription',
302
+ method: 'post',
303
+ path: '/v1/subscriptions',
304
+ tag: 'Subscriptions',
305
+ summary: 'Create a subscription',
306
+ description: '`payment_behavior` decides what happens when the first invoice cannot be paid at once.',
307
+ auth: 'service',
308
+ scope: 'payments:write',
309
+ idempotent: true,
310
+ body: createSubscriptionParams,
311
+ response: subscriptionSchema,
312
+ sdk: 'subscriptions.create',
313
+ expandable: 'subscription',
314
+ }),
315
+ defineRoute({
316
+ operationId: 'listSubscriptions',
317
+ method: 'get',
318
+ path: '/v1/subscriptions',
319
+ tag: 'Subscriptions',
320
+ summary: 'List subscriptions',
321
+ description: 'Newest first. Without `status`, every subscription but the canceled ones.',
322
+ auth: 'service',
323
+ scope: 'payments:read',
324
+ query: listSubscriptionsQuery,
325
+ response: listOf(subscriptionSchema),
326
+ sdk: 'subscriptions.list',
327
+ expandable: 'subscription',
328
+ }),
329
+ defineRoute({
330
+ operationId: 'retrieveSubscription',
331
+ method: 'get',
332
+ path: '/v1/subscriptions/{id}',
333
+ tag: 'Subscriptions',
334
+ summary: 'Retrieve a subscription',
335
+ auth: 'service',
336
+ scope: 'payments:read',
337
+ params: subscriptionId,
338
+ query: expandOnlyQuery,
339
+ response: subscriptionSchema,
340
+ sdk: 'subscriptions.retrieve',
341
+ expandable: 'subscription',
342
+ }),
343
+ defineRoute({
344
+ operationId: 'updateSubscription',
345
+ method: 'post',
346
+ path: '/v1/subscriptions/{id}',
347
+ tag: 'Subscriptions',
348
+ summary: 'Update a subscription',
349
+ description: 'Items, plan changes (prorated as `proration_behavior` says), collection, trial, cancellation at period end, pausing and discounts. A field sent as `""` is cleared; `metadata` is a patch.',
350
+ auth: 'service',
351
+ scope: 'payments:write',
352
+ idempotent: true,
353
+ params: subscriptionId,
354
+ body: updateSubscriptionParams,
355
+ response: subscriptionSchema,
356
+ sdk: 'subscriptions.update',
357
+ expandable: 'subscription',
358
+ }),
359
+ defineRoute({
360
+ operationId: 'cancelSubscription',
361
+ method: 'delete',
362
+ path: '/v1/subscriptions/{id}',
363
+ tag: 'Subscriptions',
364
+ summary: 'Cancel a subscription',
365
+ description: 'Now, optionally prorating the unused time and invoicing at once. Answers the canceled subscription.',
366
+ auth: 'service',
367
+ scope: 'payments:write',
368
+ params: subscriptionId,
369
+ body: cancelSubscriptionParams,
370
+ response: subscriptionSchema,
371
+ sdk: 'subscriptions.cancel',
372
+ expandable: 'subscription',
373
+ }),
374
+ defineRoute({
375
+ operationId: 'resumeSubscription',
376
+ method: 'post',
377
+ path: '/v1/subscriptions/{id}/resume',
378
+ tag: 'Subscriptions',
379
+ summary: 'Resume a paused subscription',
380
+ auth: 'service',
381
+ scope: 'payments:write',
382
+ idempotent: true,
383
+ params: subscriptionId,
384
+ body: resumeSubscriptionParams,
385
+ response: subscriptionSchema,
386
+ sdk: 'subscriptions.resume',
387
+ expandable: 'subscription',
388
+ }),
389
+ defineRoute({
390
+ operationId: 'searchSubscriptions',
391
+ method: 'get',
392
+ path: '/v1/subscriptions/search',
393
+ tag: 'Subscriptions',
394
+ summary: 'Search subscriptions',
395
+ description: "Stripe's query language over the subscription's fields and `metadata['key']`.",
396
+ auth: 'service',
397
+ scope: 'payments:read',
398
+ query: searchQuery,
399
+ response: searchResultOf(subscriptionSchema),
400
+ sdk: 'subscriptions.search',
401
+ expandable: 'subscription',
402
+ }),
403
+ defineRoute({
404
+ operationId: 'createSubscriptionItem',
405
+ method: 'post',
406
+ path: '/v1/subscription_items',
407
+ tag: 'Subscription items',
408
+ summary: 'Add an item to a subscription',
409
+ description: 'Prorated as `proration_behavior` says.',
410
+ auth: 'service',
411
+ scope: 'payments:write',
412
+ idempotent: true,
413
+ body: createSubscriptionItemParams,
414
+ response: subscriptionItemSchema,
415
+ sdk: 'subscriptionItems.create',
416
+ }),
417
+ defineRoute({
418
+ operationId: 'listSubscriptionItems',
419
+ method: 'get',
420
+ path: '/v1/subscription_items',
421
+ tag: 'Subscription items',
422
+ summary: "List a subscription's items",
423
+ auth: 'service',
424
+ scope: 'payments:read',
425
+ query: listSubscriptionItemsQuery,
426
+ response: listOf(subscriptionItemSchema),
427
+ sdk: 'subscriptionItems.list',
428
+ expandable: 'subscription_item',
429
+ }),
430
+ defineRoute({
431
+ operationId: 'retrieveSubscriptionItem',
432
+ method: 'get',
433
+ path: '/v1/subscription_items/{id}',
434
+ tag: 'Subscription items',
435
+ summary: 'Retrieve a subscription item',
436
+ auth: 'service',
437
+ scope: 'payments:read',
438
+ params: itemId,
439
+ query: expandOnlyQuery,
440
+ response: subscriptionItemSchema,
441
+ sdk: 'subscriptionItems.retrieve',
442
+ expandable: 'subscription_item',
443
+ }),
444
+ defineRoute({
445
+ operationId: 'updateSubscriptionItem',
446
+ method: 'post',
447
+ path: '/v1/subscription_items/{id}',
448
+ tag: 'Subscription items',
449
+ summary: 'Update a subscription item',
450
+ description: 'Its price or quantity, prorated as `proration_behavior` says.',
451
+ auth: 'service',
452
+ scope: 'payments:write',
453
+ idempotent: true,
454
+ params: itemId,
455
+ body: updateSubscriptionItemParams,
456
+ response: subscriptionItemSchema,
457
+ sdk: 'subscriptionItems.update',
458
+ }),
459
+ defineRoute({
460
+ operationId: 'deleteSubscriptionItem',
461
+ method: 'delete',
462
+ path: '/v1/subscription_items/{id}',
463
+ tag: 'Subscription items',
464
+ summary: 'Remove an item from a subscription',
465
+ description: 'Prorated as `proration_behavior` says.',
466
+ auth: 'service',
467
+ scope: 'payments:write',
468
+ params: itemId,
469
+ body: deleteSubscriptionItemParams,
470
+ response: deletedSubscriptionItemSchema,
471
+ sdk: 'subscriptionItems.del',
472
+ }),
473
+ ];