@outseta/api-client 0.2.0 → 0.2.2

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 (504) hide show
  1. package/dist/index.js +17 -19
  2. package/package.json +3 -6
  3. package/src/__tests__/accounts-crud.integration.test.ts +41 -39
  4. package/src/__tests__/client.test.ts +3 -3
  5. package/src/__tests__/people.integration.test.ts +28 -32
  6. package/src/__tests__/setup.ts +5 -6
  7. package/src/__tests__/support.integration.test.ts +28 -35
  8. package/src/client.ts +38 -23
  9. package/src/generated/activity/activity.ts +115 -0
  10. package/src/generated/billing/billing.ts +786 -0
  11. package/src/generated/crm/crm.ts +1143 -221
  12. package/src/generated/email/email.ts +578 -0
  13. package/src/generated/models/abstractBean.ts +2 -220
  14. package/src/generated/models/abstractQcountBean.ts +0 -220
  15. package/src/generated/models/abstractQcountBeanAllOf.ts +0 -220
  16. package/src/generated/models/abstractQcountBeanAllOfActivityEventData.ts +0 -220
  17. package/src/generated/models/abstractSchemaLessBean.ts +0 -220
  18. package/src/generated/models/abstractSchemaLessBeanAllOf.ts +0 -220
  19. package/src/generated/models/abstractSchemaLessBeanAllOfSchemaLessData.ts +0 -220
  20. package/src/generated/models/abstractStripeBeanOfCharge.ts +0 -220
  21. package/src/generated/models/abstractStripeBeanOfChargeAllOf.ts +0 -220
  22. package/src/generated/models/abstractStripeBeanOfCoupon.ts +0 -220
  23. package/src/generated/models/abstractStripeBeanOfCouponAllOf.ts +0 -220
  24. package/src/generated/models/abstractStripeBeanOfCreditNote.ts +0 -220
  25. package/src/generated/models/abstractStripeBeanOfCreditNoteAllOf.ts +0 -220
  26. package/src/generated/models/abstractStripeBeanOfCustomer.ts +0 -220
  27. package/src/generated/models/abstractStripeBeanOfCustomerAllOf.ts +0 -220
  28. package/src/generated/models/abstractStripeBeanOfDiscount.ts +0 -220
  29. package/src/generated/models/abstractStripeBeanOfDiscountAllOf.ts +0 -220
  30. package/src/generated/models/abstractStripeBeanOfInvoice.ts +0 -220
  31. package/src/generated/models/abstractStripeBeanOfInvoiceAllOf.ts +0 -220
  32. package/src/generated/models/abstractStripeBeanOfInvoiceLineItem.ts +0 -220
  33. package/src/generated/models/abstractStripeBeanOfInvoiceLineItemAllOf.ts +0 -220
  34. package/src/generated/models/abstractStripeBeanOfInvoicePayment.ts +0 -220
  35. package/src/generated/models/abstractStripeBeanOfInvoicePaymentAllOf.ts +0 -220
  36. package/src/generated/models/abstractStripeBeanOfMeter.ts +0 -220
  37. package/src/generated/models/abstractStripeBeanOfMeterAllOf.ts +0 -220
  38. package/src/generated/models/abstractStripeBeanOfPaymentMethod.ts +0 -220
  39. package/src/generated/models/abstractStripeBeanOfPaymentMethodAllOf.ts +0 -220
  40. package/src/generated/models/abstractStripeBeanOfPrice.ts +0 -220
  41. package/src/generated/models/abstractStripeBeanOfPriceAllOf.ts +0 -220
  42. package/src/generated/models/abstractStripeBeanOfProduct.ts +0 -220
  43. package/src/generated/models/abstractStripeBeanOfProductAllOf.ts +0 -220
  44. package/src/generated/models/abstractStripeBeanOfPromotionCode.ts +0 -220
  45. package/src/generated/models/abstractStripeBeanOfPromotionCodeAllOf.ts +0 -220
  46. package/src/generated/models/abstractStripeBeanOfRefund.ts +0 -220
  47. package/src/generated/models/abstractStripeBeanOfRefundAllOf.ts +0 -220
  48. package/src/generated/models/abstractStripeBeanOfSubscription.ts +0 -220
  49. package/src/generated/models/abstractStripeBeanOfSubscriptionAllOf.ts +0 -220
  50. package/src/generated/models/abstractStripeBeanOfSubscriptionItem.ts +0 -220
  51. package/src/generated/models/abstractStripeBeanOfSubscriptionItemAllOf.ts +0 -220
  52. package/src/generated/models/abstractStripeBeanOfSubscriptionSchedule.ts +0 -220
  53. package/src/generated/models/abstractStripeBeanOfSubscriptionScheduleAllOf.ts +0 -220
  54. package/src/generated/models/abstractStripeBeanOfSubscriptionSchedulePhase.ts +0 -220
  55. package/src/generated/models/abstractStripeBeanOfSubscriptionSchedulePhaseAllOf.ts +0 -220
  56. package/src/generated/models/abstractStripeBeanOfSubscriptionSchedulePhaseItem.ts +0 -220
  57. package/src/generated/models/abstractStripeBeanOfSubscriptionSchedulePhaseItemAllOf.ts +0 -220
  58. package/src/generated/models/abstractStripeBeanOfTaxId.ts +0 -220
  59. package/src/generated/models/abstractStripeBeanOfTaxIdAllOf.ts +0 -220
  60. package/src/generated/models/acceptTermsAndConditionsLocations.ts +0 -220
  61. package/src/generated/models/account.ts +0 -220
  62. package/src/generated/models/accountAddAccountBody.ts +0 -220
  63. package/src/generated/models/accountAddAccountParams.ts +0 -220
  64. package/src/generated/models/accountAddPersonToAccountBody.ts +7 -0
  65. package/src/generated/models/accountAllOf.ts +0 -220
  66. package/src/generated/models/accountAllOfBillingAddress.ts +0 -220
  67. package/src/generated/models/accountAllOfCurrentSubscription.ts +0 -220
  68. package/src/generated/models/accountAllOfLatestSubscription.ts +0 -220
  69. package/src/generated/models/accountAllOfMailingAddress.ts +0 -220
  70. package/src/generated/models/accountAllOfPaymentInformation.ts +0 -220
  71. package/src/generated/models/accountAllOfPrimaryContact.ts +0 -220
  72. package/src/generated/models/accountAllOfPrimaryStripeSubscription.ts +0 -220
  73. package/src/generated/models/accountAllOfPrimarySubscription.ts +0 -220
  74. package/src/generated/models/accountCancelAccountBody.ts +7 -0
  75. package/src/generated/models/accountCancelation.ts +0 -220
  76. package/src/generated/models/accountCancelationAllOf.ts +2 -220
  77. package/src/generated/models/accountCancelationAllOfAccount.ts +0 -220
  78. package/src/generated/models/accountCancelationAllOfLastPlan.ts +0 -220
  79. package/src/generated/models/accountExtendTrialBody.ts +7 -0
  80. package/src/generated/models/accountGetAllAccountsParams.ts +0 -220
  81. package/src/generated/models/accountRegistrationMode.ts +0 -220
  82. package/src/generated/models/accountStage.ts +2 -221
  83. package/src/generated/models/accountTaxId.ts +0 -220
  84. package/src/generated/models/accountTaxIdAllOf.ts +0 -220
  85. package/src/generated/models/accountTaxIdAllOfAccount.ts +0 -220
  86. package/src/generated/models/accountUpdateAccountBody.ts +7 -0
  87. package/src/generated/models/accountUpdateMembershipBody.ts +7 -0
  88. package/src/generated/models/activity.ts +0 -220
  89. package/src/generated/models/activityAddCustomActivityBody.ts +7 -0
  90. package/src/generated/models/activityAllOf.ts +0 -220
  91. package/src/generated/models/activityCRMDealTrigger.ts +0 -220
  92. package/src/generated/models/activityCRMDealTriggerAllOf.ts +0 -220
  93. package/src/generated/models/activityCRMDealTriggerAllOfDealPipelineStage.ts +0 -220
  94. package/src/generated/models/activityCriteria.ts +0 -220
  95. package/src/generated/models/activityCriteriaActivityType.ts +0 -220
  96. package/src/generated/models/activityGetAllParams.ts +21 -0
  97. package/src/generated/models/activityNotification.ts +0 -220
  98. package/src/generated/models/activityNotificationAllOf.ts +0 -220
  99. package/src/generated/models/activityType.ts +0 -220
  100. package/src/generated/models/addOn.ts +0 -220
  101. package/src/generated/models/addOnAllOf.ts +0 -220
  102. package/src/generated/models/address.ts +0 -220
  103. package/src/generated/models/addressAllOf.ts +0 -220
  104. package/src/generated/models/apiKey.ts +0 -220
  105. package/src/generated/models/apiKeyAllOf.ts +0 -225
  106. package/src/generated/models/apiKeyAllOfQcount.ts +0 -220
  107. package/src/generated/models/apiKeyType.ts +0 -220
  108. package/src/generated/models/article.ts +0 -220
  109. package/src/generated/models/articleAllOf.ts +0 -220
  110. package/src/generated/models/articleAllOfCategory.ts +0 -220
  111. package/src/generated/models/articleGetAllArticlesParams.ts +8 -0
  112. package/src/generated/models/backGroundTaskType.ts +3 -221
  113. package/src/generated/models/billSettings.ts +0 -220
  114. package/src/generated/models/billSettingsAllOf.ts +0 -220
  115. package/src/generated/models/billingAddOnType.ts +0 -220
  116. package/src/generated/models/billingDiscountDuration.ts +0 -220
  117. package/src/generated/models/billingInvoiceStatus.ts +0 -220
  118. package/src/generated/models/billingRenewalTerm.ts +0 -220
  119. package/src/generated/models/billingSystem.ts +0 -220
  120. package/src/generated/models/billingTransactionType.ts +0 -220
  121. package/src/generated/models/broadcastCampaign.ts +0 -220
  122. package/src/generated/models/broadcastCampaignAllOf.ts +4 -220
  123. package/src/generated/models/broadcastCampaignAllOfCampaign.ts +0 -220
  124. package/src/generated/models/broadcastCampaignAllOfMessage.ts +0 -220
  125. package/src/generated/models/broadcastCampaignStatus.ts +2 -221
  126. package/src/generated/models/campaign.ts +0 -220
  127. package/src/generated/models/campaignAddBroadcastEmailBody.ts +7 -0
  128. package/src/generated/models/campaignAllOf.ts +0 -220
  129. package/src/generated/models/campaignSendTestCampaignEmailBody.ts +7 -0
  130. package/src/generated/models/campaignType.ts +0 -220
  131. package/src/generated/models/campaignUpdateBroadcastEmailBody.ts +7 -0
  132. package/src/generated/models/cancelationStatus.ts +16 -0
  133. package/src/generated/models/case.ts +0 -220
  134. package/src/generated/models/caseAddCaseBody.ts +7 -0
  135. package/src/generated/models/caseAddCaseParams.ts +9 -0
  136. package/src/generated/models/caseAllOf.ts +0 -220
  137. package/src/generated/models/caseAllOfLastCaseHistory.ts +0 -220
  138. package/src/generated/models/caseGetAllCasesParams.ts +0 -220
  139. package/src/generated/models/caseHistory.ts +0 -220
  140. package/src/generated/models/caseHistoryAllOf.ts +0 -220
  141. package/src/generated/models/caseTag.ts +0 -220
  142. package/src/generated/models/caseTagAllOf.ts +0 -220
  143. package/src/generated/models/caseTagAllOfCase.ts +0 -220
  144. package/src/generated/models/caseTagAllOfTag.ts +0 -220
  145. package/src/generated/models/category.ts +0 -220
  146. package/src/generated/models/categoryAllOf.ts +0 -220
  147. package/src/generated/models/chatSettings.ts +0 -220
  148. package/src/generated/models/chatSettingsAllOf.ts +0 -220
  149. package/src/generated/models/clientApplication.ts +0 -220
  150. package/src/generated/models/clientApplicationAllOf.ts +0 -220
  151. package/src/generated/models/contentGroup.ts +0 -220
  152. package/src/generated/models/contentGroupAllOf.ts +0 -220
  153. package/src/generated/models/contentGroupItem.ts +0 -220
  154. package/src/generated/models/contentGroupItemAllOf.ts +0 -220
  155. package/src/generated/models/contentGroupItemMatchMode.ts +0 -220
  156. package/src/generated/models/crmSettings.ts +0 -220
  157. package/src/generated/models/crmSettingsAllOf.ts +2 -220
  158. package/src/generated/models/crmSettingsAllOfEmailList.ts +0 -220
  159. package/src/generated/models/database.ts +0 -220
  160. package/src/generated/models/databaseAllOf.ts +0 -220
  161. package/src/generated/models/databaseType.ts +0 -220
  162. package/src/generated/models/deal.ts +0 -220
  163. package/src/generated/models/dealAddDealBody.ts +7 -0
  164. package/src/generated/models/dealAllOf.ts +0 -220
  165. package/src/generated/models/dealAllOfAccount.ts +0 -220
  166. package/src/generated/models/dealAllOfDealPipelineStage.ts +0 -220
  167. package/src/generated/models/dealAllOfOwner.ts +0 -220
  168. package/src/generated/models/dealGetAllDealsParams.ts +14 -0
  169. package/src/generated/models/dealPerson.ts +0 -220
  170. package/src/generated/models/dealPersonAllOf.ts +0 -220
  171. package/src/generated/models/dealPersonAllOfDeal.ts +0 -220
  172. package/src/generated/models/dealPersonAllOfPerson.ts +0 -220
  173. package/src/generated/models/dealPipeline.ts +0 -220
  174. package/src/generated/models/dealPipelineAllOf.ts +0 -220
  175. package/src/generated/models/dealPipelineStage.ts +0 -220
  176. package/src/generated/models/dealPipelineStageAllOf.ts +0 -220
  177. package/src/generated/models/dealPipelineStageAllOfDealPipeline.ts +0 -220
  178. package/src/generated/models/dealUpdateDealBody.ts +7 -0
  179. package/src/generated/models/definition.ts +0 -220
  180. package/src/generated/models/definitionAllOf.ts +0 -220
  181. package/src/generated/models/deserializationStatus.ts +0 -220
  182. package/src/generated/models/discordRole.ts +0 -220
  183. package/src/generated/models/discordRoleAllOf.ts +0 -220
  184. package/src/generated/models/discordRoleAllOfDiscordServer.ts +0 -220
  185. package/src/generated/models/discordRolePlan.ts +0 -220
  186. package/src/generated/models/discordRolePlanAllOf.ts +0 -220
  187. package/src/generated/models/discordRolePlanAllOfDiscordRole.ts +0 -220
  188. package/src/generated/models/discordRolePlanAllOfPlan.ts +0 -220
  189. package/src/generated/models/discordServer.ts +0 -220
  190. package/src/generated/models/discordServerAllOf.ts +0 -220
  191. package/src/generated/models/discordUser.ts +0 -220
  192. package/src/generated/models/discordUserAllOf.ts +0 -220
  193. package/src/generated/models/discountCoupon.ts +0 -220
  194. package/src/generated/models/discountCouponAddDiscountCouponBody.ts +7 -0
  195. package/src/generated/models/discountCouponAllOf.ts +0 -220
  196. package/src/generated/models/discountCouponPlan.ts +0 -220
  197. package/src/generated/models/discountCouponPlanAllOf.ts +0 -220
  198. package/src/generated/models/discountCouponPlanAllOfDiscountCoupon.ts +0 -220
  199. package/src/generated/models/discountCouponPlanAllOfPlan.ts +0 -220
  200. package/src/generated/models/discountCouponSubscription.ts +0 -220
  201. package/src/generated/models/discountCouponSubscriptionAllOf.ts +0 -220
  202. package/src/generated/models/discountCouponSubscriptionAllOfDiscountCoupon.ts +0 -220
  203. package/src/generated/models/discountCouponSubscriptionAllOfSubscription.ts +0 -220
  204. package/src/generated/models/dnsEntry.ts +2 -220
  205. package/src/generated/models/dripCampaign.ts +0 -220
  206. package/src/generated/models/dripCampaignAllOf.ts +0 -220
  207. package/src/generated/models/dripCampaignAllOfCampaign.ts +0 -220
  208. package/src/generated/models/dripCampaignMessage.ts +0 -220
  209. package/src/generated/models/dripCampaignMessageAllOf.ts +0 -220
  210. package/src/generated/models/dripCampaignMessageAllOfDripCampaign.ts +0 -220
  211. package/src/generated/models/dripCampaignMessageAllOfMessage.ts +0 -220
  212. package/src/generated/models/emailLink.ts +0 -220
  213. package/src/generated/models/emailLinkAllOf.ts +0 -220
  214. package/src/generated/models/emailList.ts +0 -220
  215. package/src/generated/models/emailListAddSubscriptionBody.ts +7 -0
  216. package/src/generated/models/emailListAllOf.ts +0 -220
  217. package/src/generated/models/emailListGetAllSubscriptionsParams.ts +9 -0
  218. package/src/generated/models/emailListPerson.ts +0 -220
  219. package/src/generated/models/emailListPersonAllOf.ts +0 -220
  220. package/src/generated/models/emailListPersonAllOfEmailList.ts +0 -220
  221. package/src/generated/models/emailListPersonAllOfPerson.ts +0 -220
  222. package/src/generated/models/emailListSubscriberStatus.ts +0 -220
  223. package/src/generated/models/emailSubscriptionsPayload.ts +0 -220
  224. package/src/generated/models/entityType.ts +0 -220
  225. package/src/generated/models/extendRenewalParams.ts +0 -220
  226. package/src/generated/models/extendSubscriptionOptions.ts +5 -0
  227. package/src/generated/models/extendTrialParams.ts +0 -220
  228. package/src/generated/models/flatfileImportData.ts +0 -220
  229. package/src/generated/models/flatfileImportDataSchemalessData.ts +0 -220
  230. package/src/generated/models/index.ts +66 -221
  231. package/src/generated/models/invoice.ts +0 -220
  232. package/src/generated/models/invoiceAddInvoiceBody.ts +7 -0
  233. package/src/generated/models/invoiceAllOf.ts +8 -220
  234. package/src/generated/models/invoiceAllOfSubscription.ts +0 -220
  235. package/src/generated/models/invoiceCreditOptions.ts +0 -220
  236. package/src/generated/models/invoiceLineItem.ts +0 -220
  237. package/src/generated/models/invoiceLineItemAllOf.ts +0 -220
  238. package/src/generated/models/invoiceLineItemAllOfInvoice.ts +0 -220
  239. package/src/generated/models/invoiceLineItemAllOfLineItemType.ts +0 -220
  240. package/src/generated/models/invoiceStatusChangeOptions.ts +0 -220
  241. package/src/generated/models/jwtKey.ts +0 -220
  242. package/src/generated/models/jwtKeyAllOf.ts +0 -225
  243. package/src/generated/models/jwtKeyAllOfQcount.ts +0 -220
  244. package/src/generated/models/leadForm.ts +0 -220
  245. package/src/generated/models/leadFormAllOf.ts +0 -220
  246. package/src/generated/models/leadFormAllOfDealPipelineStage.ts +0 -220
  247. package/src/generated/models/leadFormSubmission.ts +0 -220
  248. package/src/generated/models/leadFormSubmissionAllOf.ts +0 -220
  249. package/src/generated/models/lineItemType.ts +0 -220
  250. package/src/generated/models/message.ts +0 -220
  251. package/src/generated/models/messageAllOf.ts +1 -220
  252. package/src/generated/models/messageAllOfTemplate.ts +0 -220
  253. package/src/generated/models/noCodeSettings.ts +0 -220
  254. package/src/generated/models/noCodeSettingsAllOf.ts +0 -220
  255. package/src/generated/models/noCodeSettingsAllOfAccount.ts +0 -220
  256. package/src/generated/models/oAuthService.ts +0 -220
  257. package/src/generated/models/passwordChangeModel.ts +0 -220
  258. package/src/generated/models/passwordPayload.ts +0 -220
  259. package/src/generated/models/pauseCollectionOptions.ts +0 -220
  260. package/src/generated/models/paymentInformation.ts +0 -220
  261. package/src/generated/models/paymentInformationAllOf.ts +0 -220
  262. package/src/generated/models/paymentInformationSavePaymentInformationBody.ts +7 -0
  263. package/src/generated/models/paymentsGatewayActivationStatus.ts +0 -220
  264. package/src/generated/models/paymentsMode.ts +0 -220
  265. package/src/generated/models/person.ts +0 -220
  266. package/src/generated/models/personAccount.ts +0 -220
  267. package/src/generated/models/personAccountAllOf.ts +0 -220
  268. package/src/generated/models/personAccountAllOfAccount.ts +0 -220
  269. package/src/generated/models/personAccountAllOfPerson.ts +0 -220
  270. package/src/generated/models/personAddPersonBody.ts +7 -0
  271. package/src/generated/models/personAllOf.ts +3 -233
  272. package/src/generated/models/personAllOfAccount.ts +0 -220
  273. package/src/generated/models/personAllOfDiscordUser.ts +0 -220
  274. package/src/generated/models/personAllOfMailingAddress.ts +0 -220
  275. package/src/generated/models/personForgotPasswordBody.ts +7 -0
  276. package/src/generated/models/personGetAllPeopleParams.ts +9 -0
  277. package/src/generated/models/personSegmentAddedActivityData.ts +11 -0
  278. package/src/generated/models/personSegmentAddedWebhookPayload.ts +123 -0
  279. package/src/generated/models/personSegmentAddedWebhookPayloadAccount.ts +141 -0
  280. package/src/generated/models/personSegmentAddedWebhookPayloadAccountAccountStage.ts +20 -0
  281. package/src/generated/models/personSegmentAddedWebhookPayloadDealPeopleItem.ts +15 -0
  282. package/src/generated/models/personSegmentAddedWebhookPayloadDiscordUser.ts +35 -0
  283. package/src/generated/models/personSegmentAddedWebhookPayloadEmailListPersonItem.ts +48 -0
  284. package/src/generated/models/personSegmentAddedWebhookPayloadEmailListPersonItemEmailListSubscriberStatus.ts +15 -0
  285. package/src/generated/models/personSegmentAddedWebhookPayloadLeadFormSubmissionsItem.ts +21 -0
  286. package/src/generated/models/personSegmentAddedWebhookPayloadMailingAddress.ts +58 -0
  287. package/src/generated/models/personSegmentAddedWebhookPayloadOAuthIntegrationStatus.ts +13 -0
  288. package/src/generated/models/personSegmentAddedWebhookPayloadPersonAccountItem.ts +20 -0
  289. package/src/generated/models/personSegmentAddedWebhookPayloadPersonAccountItemAccount.ts +14 -0
  290. package/src/generated/models/personSegmentRemovedActivityData.ts +11 -0
  291. package/src/generated/models/personSegmentRemovedWebhookPayload.ts +123 -0
  292. package/src/generated/models/personSegmentRemovedWebhookPayloadAccount.ts +141 -0
  293. package/src/generated/models/personSegmentRemovedWebhookPayloadAccountAccountStage.ts +20 -0
  294. package/src/generated/models/personSegmentRemovedWebhookPayloadDealPeopleItem.ts +15 -0
  295. package/src/generated/models/personSegmentRemovedWebhookPayloadDiscordUser.ts +35 -0
  296. package/src/generated/models/personSegmentRemovedWebhookPayloadEmailListPersonItem.ts +48 -0
  297. package/src/generated/models/personSegmentRemovedWebhookPayloadEmailListPersonItemEmailListSubscriberStatus.ts +15 -0
  298. package/src/generated/models/personSegmentRemovedWebhookPayloadLeadFormSubmissionsItem.ts +21 -0
  299. package/src/generated/models/personSegmentRemovedWebhookPayloadMailingAddress.ts +58 -0
  300. package/src/generated/models/personSegmentRemovedWebhookPayloadOAuthIntegrationStatus.ts +13 -0
  301. package/src/generated/models/personSegmentRemovedWebhookPayloadPersonAccountItem.ts +20 -0
  302. package/src/generated/models/personSegmentRemovedWebhookPayloadPersonAccountItemAccount.ts +14 -0
  303. package/src/generated/models/personSetTemporaryPasswordBody.ts +7 -0
  304. package/src/generated/models/personUpdatePersonBody.ts +7 -0
  305. package/src/generated/models/plan.ts +0 -220
  306. package/src/generated/models/planAddOn.ts +0 -220
  307. package/src/generated/models/planAddOnAllOf.ts +0 -220
  308. package/src/generated/models/planAddOnAllOfAddOn.ts +0 -220
  309. package/src/generated/models/planAddOnAllOfPlan.ts +0 -220
  310. package/src/generated/models/planAllOf.ts +0 -220
  311. package/src/generated/models/planAllOfPlanFamily.ts +0 -220
  312. package/src/generated/models/planFamily.ts +0 -220
  313. package/src/generated/models/planFamilyAllOf.ts +0 -220
  314. package/src/generated/models/processCodePayload.ts +0 -220
  315. package/src/generated/models/qcount.ts +1 -221
  316. package/src/generated/models/qcountAllOf.ts +0 -240
  317. package/src/generated/models/qcountConfig.ts +0 -220
  318. package/src/generated/models/qcountConfigAllOf.ts +0 -220
  319. package/src/generated/models/qcountConfigSettingType.ts +2 -234
  320. package/src/generated/models/qcountStatus.ts +0 -220
  321. package/src/generated/models/registrationField.ts +0 -220
  322. package/src/generated/models/resendEmailsRequest.ts +6 -0
  323. package/src/generated/models/segment.ts +0 -220
  324. package/src/generated/models/segmentAllOf.ts +0 -220
  325. package/src/generated/models/segmentPerson.ts +0 -220
  326. package/src/generated/models/segmentPersonAllOf.ts +0 -220
  327. package/src/generated/models/segmentPersonAllOfPerson.ts +0 -220
  328. package/src/generated/models/segmentPersonAllOfSegment.ts +0 -220
  329. package/src/generated/models/sendGridDomainAuthentication.ts +0 -220
  330. package/src/generated/models/sendGridDomainAuthenticationAllOf.ts +1 -220
  331. package/src/generated/models/sendTestEmailRequest.ts +0 -220
  332. package/src/generated/models/sendTestEmailRequest2.ts +0 -220
  333. package/src/generated/models/sendTestEmailRequest2BroadcastCampaign.ts +0 -220
  334. package/src/generated/models/sendTestEmailRequestDripCampaign.ts +0 -220
  335. package/src/generated/models/sessionFlowDataAfterCompletionHostedConfirmationOptions.ts +0 -220
  336. package/src/generated/models/sessionFlowDataAfterCompletionOptions.ts +0 -220
  337. package/src/generated/models/sessionFlowDataAfterCompletionOptionsHostedConfirmation.ts +0 -220
  338. package/src/generated/models/sessionFlowDataAfterCompletionOptionsRedirect.ts +0 -220
  339. package/src/generated/models/sessionFlowDataAfterCompletionRedirectOptions.ts +0 -220
  340. package/src/generated/models/sessionFlowDataOptions.ts +0 -220
  341. package/src/generated/models/sessionFlowDataOptionsAfterCompletion.ts +0 -220
  342. package/src/generated/models/sessionFlowDataOptionsSubscriptionCancel.ts +0 -220
  343. package/src/generated/models/sessionFlowDataOptionsSubscriptionUpdate.ts +0 -220
  344. package/src/generated/models/sessionFlowDataOptionsSubscriptionUpdateConfirm.ts +0 -220
  345. package/src/generated/models/sessionFlowDataSubscriptionCancelOptions.ts +0 -220
  346. package/src/generated/models/sessionFlowDataSubscriptionCancelOptionsRetention.ts +0 -220
  347. package/src/generated/models/sessionFlowDataSubscriptionCancelRetentionCouponOfferOptions.ts +0 -220
  348. package/src/generated/models/sessionFlowDataSubscriptionCancelRetentionOptions.ts +0 -220
  349. package/src/generated/models/sessionFlowDataSubscriptionCancelRetentionOptionsCouponOffer.ts +0 -220
  350. package/src/generated/models/sessionFlowDataSubscriptionUpdateConfirmDiscountOptions.ts +0 -220
  351. package/src/generated/models/sessionFlowDataSubscriptionUpdateConfirmItemOptions.ts +0 -220
  352. package/src/generated/models/sessionFlowDataSubscriptionUpdateConfirmOptions.ts +0 -220
  353. package/src/generated/models/sessionFlowDataSubscriptionUpdateOptions.ts +0 -220
  354. package/src/generated/models/setupIntent.ts +2 -220
  355. package/src/generated/models/setupIntentBillingAddress.ts +0 -220
  356. package/src/generated/models/slackChannelSetting.ts +0 -220
  357. package/src/generated/models/spamStatus.ts +0 -220
  358. package/src/generated/models/stripeBillingSyncParams.ts +0 -220
  359. package/src/generated/models/stripeCharge.ts +0 -220
  360. package/src/generated/models/stripeChargeAllOf.ts +0 -220
  361. package/src/generated/models/stripeChargeAllOfAccount.ts +0 -220
  362. package/src/generated/models/stripeChargeAllOfStripePaymentMethod.ts +0 -220
  363. package/src/generated/models/stripeCheckoutParams.ts +0 -220
  364. package/src/generated/models/stripeCoupon.ts +0 -220
  365. package/src/generated/models/stripeCouponAllOf.ts +0 -220
  366. package/src/generated/models/stripeCreditNote.ts +0 -220
  367. package/src/generated/models/stripeCreditNoteAllOf.ts +9 -220
  368. package/src/generated/models/stripeDiscount.ts +0 -220
  369. package/src/generated/models/stripeDiscountAllOf.ts +0 -220
  370. package/src/generated/models/stripeDiscountAllOfAccount.ts +0 -220
  371. package/src/generated/models/stripeDiscountAllOfStripeCoupon.ts +0 -220
  372. package/src/generated/models/stripeDiscountAllOfStripeInvoice.ts +0 -220
  373. package/src/generated/models/stripeDiscountAllOfStripePromotionCode.ts +0 -220
  374. package/src/generated/models/stripeDiscountAllOfStripeSubscription.ts +0 -220
  375. package/src/generated/models/stripeInvoice.ts +0 -220
  376. package/src/generated/models/stripeInvoiceAllOf.ts +9 -220
  377. package/src/generated/models/stripeInvoiceAllOfAccount.ts +0 -220
  378. package/src/generated/models/stripeInvoiceDiscountAmount.ts +0 -220
  379. package/src/generated/models/stripeInvoiceDiscountAmountAllOf.ts +0 -220
  380. package/src/generated/models/stripeInvoiceDiscountAmountAllOfStripeDiscount.ts +0 -220
  381. package/src/generated/models/stripeInvoiceDiscountAmountAllOfStripeInvoice.ts +0 -220
  382. package/src/generated/models/stripeInvoiceLineItem.ts +0 -220
  383. package/src/generated/models/stripeInvoiceLineItemAllOf.ts +0 -220
  384. package/src/generated/models/stripeInvoiceLineItemAllOfStripeInvoice.ts +0 -220
  385. package/src/generated/models/stripeInvoiceLineItemAllOfStripePrice.ts +0 -220
  386. package/src/generated/models/stripeInvoicePayment.ts +0 -220
  387. package/src/generated/models/stripeInvoicePaymentAllOf.ts +0 -220
  388. package/src/generated/models/stripeInvoicePaymentAllOfStripeInvoice.ts +0 -220
  389. package/src/generated/models/stripeMeter.ts +0 -220
  390. package/src/generated/models/stripeMeterAllOf.ts +0 -220
  391. package/src/generated/models/stripePaymentMethod.ts +0 -220
  392. package/src/generated/models/stripePaymentMethodAllOf.ts +0 -220
  393. package/src/generated/models/stripePaymentMethodAllOfAccount.ts +0 -220
  394. package/src/generated/models/stripePrice.ts +0 -220
  395. package/src/generated/models/stripePriceAllOf.ts +2 -220
  396. package/src/generated/models/stripePriceAllOfRecurringStripeMeter.ts +0 -220
  397. package/src/generated/models/stripePriceAllOfStripeProduct.ts +0 -220
  398. package/src/generated/models/stripeProduct.ts +0 -220
  399. package/src/generated/models/stripeProductAllOf.ts +5 -220
  400. package/src/generated/models/stripeProductAllOfStripeProductFamily.ts +0 -220
  401. package/src/generated/models/stripeProductCrossSell.ts +0 -220
  402. package/src/generated/models/stripeProductCrossSellAllOf.ts +0 -220
  403. package/src/generated/models/stripeProductCrossSellAllOfCrossSellProduct.ts +0 -220
  404. package/src/generated/models/stripeProductCrossSellAllOfStripeProduct.ts +0 -220
  405. package/src/generated/models/stripeProductFamily.ts +0 -220
  406. package/src/generated/models/stripeProductFamilyAllOf.ts +0 -220
  407. package/src/generated/models/stripePromotionCode.ts +0 -220
  408. package/src/generated/models/stripePromotionCodeAllOf.ts +0 -220
  409. package/src/generated/models/stripePromotionCodeAllOfAccount.ts +0 -220
  410. package/src/generated/models/stripePromotionCodeAllOfStripeCoupon.ts +0 -220
  411. package/src/generated/models/stripeRefund.ts +0 -220
  412. package/src/generated/models/stripeRefundAllOf.ts +0 -220
  413. package/src/generated/models/stripeRefundAllOfStripeCharge.ts +0 -220
  414. package/src/generated/models/stripeSubscription.ts +0 -220
  415. package/src/generated/models/stripeSubscriptionAllOf.ts +4 -220
  416. package/src/generated/models/stripeSubscriptionAllOfAccount.ts +0 -220
  417. package/src/generated/models/stripeSubscriptionAllOfCurrentStripeSubscriptionSchedule.ts +0 -220
  418. package/src/generated/models/stripeSubscriptionAllOfStripeSubscriptionCancellation.ts +0 -220
  419. package/src/generated/models/stripeSubscriptionCancellation.ts +0 -220
  420. package/src/generated/models/stripeSubscriptionCancellationAllOf.ts +0 -220
  421. package/src/generated/models/stripeSubscriptionItem.ts +0 -220
  422. package/src/generated/models/stripeSubscriptionItemAllOf.ts +0 -220
  423. package/src/generated/models/stripeSubscriptionItemAllOfStripePrice.ts +0 -220
  424. package/src/generated/models/stripeSubscriptionItemAllOfStripeSubscription.ts +0 -220
  425. package/src/generated/models/stripeSubscriptionSchedule.ts +0 -220
  426. package/src/generated/models/stripeSubscriptionScheduleAllOf.ts +0 -220
  427. package/src/generated/models/stripeSubscriptionScheduleAllOfStripeSubscription.ts +0 -220
  428. package/src/generated/models/stripeSubscriptionSchedulePhase.ts +0 -220
  429. package/src/generated/models/stripeSubscriptionSchedulePhaseAllOf.ts +0 -220
  430. package/src/generated/models/stripeSubscriptionSchedulePhaseAllOfStripeSubscriptionSchedule.ts +0 -220
  431. package/src/generated/models/stripeSubscriptionSchedulePhaseItem.ts +0 -220
  432. package/src/generated/models/stripeSubscriptionSchedulePhaseItemAllOf.ts +0 -220
  433. package/src/generated/models/stripeSubscriptionSchedulePhaseItemAllOfStripePrice.ts +0 -220
  434. package/src/generated/models/subscription.ts +0 -220
  435. package/src/generated/models/subscriptionAddOn.ts +0 -220
  436. package/src/generated/models/subscriptionAddOnAddSubscriptionAddOnBody.ts +7 -0
  437. package/src/generated/models/subscriptionAddOnAllOf.ts +0 -220
  438. package/src/generated/models/subscriptionAddOnAllOfAddOn.ts +0 -220
  439. package/src/generated/models/subscriptionAddOnAllOfSubscription.ts +0 -220
  440. package/src/generated/models/subscriptionAllOf.ts +0 -220
  441. package/src/generated/models/subscriptionAllOfAccount.ts +0 -220
  442. package/src/generated/models/subscriptionAllOfLatestInvoice.ts +0 -220
  443. package/src/generated/models/subscriptionAllOfPlan.ts +0 -220
  444. package/src/generated/models/subscriptionChangeSubscriptionBody.ts +7 -0
  445. package/src/generated/models/subscriptionChangeSubscriptionParams.ts +9 -0
  446. package/src/generated/models/subscriptionChangeSubscriptionPreviewBody.ts +7 -0
  447. package/src/generated/models/subscriptionChangeSubscriptionPreviewParams.ts +9 -0
  448. package/src/generated/models/subscriptionFirstTimeSubscriptionBody.ts +7 -0
  449. package/src/generated/models/subscriptionFirstTimeSubscriptionPreviewBody.ts +7 -0
  450. package/src/generated/models/subscriptionFirstTimeSubscriptionPreviewParams.ts +9 -0
  451. package/src/generated/models/subscriptionSetSubscriptionUpgradeRequiredBody.ts +7 -0
  452. package/src/generated/models/supportArticleStatus.ts +0 -220
  453. package/src/generated/models/supportCaseHistoryType.ts +0 -220
  454. package/src/generated/models/supportCaseSource.ts +0 -220
  455. package/src/generated/models/supportCaseStatus.ts +0 -220
  456. package/src/generated/models/supportSettings.ts +0 -220
  457. package/src/generated/models/supportSettingsAllOf.ts +0 -220
  458. package/src/generated/models/tag.ts +0 -220
  459. package/src/generated/models/tagAllOf.ts +0 -220
  460. package/src/generated/models/tagColor.ts +0 -220
  461. package/src/generated/models/tagUidList.ts +0 -220
  462. package/src/generated/models/task.ts +0 -220
  463. package/src/generated/models/taskAllOf.ts +0 -220
  464. package/src/generated/models/taskAllOfAccount.ts +0 -220
  465. package/src/generated/models/taskAllOfAssignee.ts +0 -220
  466. package/src/generated/models/taskAllOfDeal.ts +0 -220
  467. package/src/generated/models/taskAllOfPerson.ts +0 -220
  468. package/src/generated/models/taskAllOfType.ts +0 -220
  469. package/src/generated/models/taskStatus.ts +0 -220
  470. package/src/generated/models/taskType.ts +0 -220
  471. package/src/generated/models/taskTypeAllOf.ts +0 -220
  472. package/src/generated/models/taxRate.ts +0 -220
  473. package/src/generated/models/taxRateAllOf.ts +0 -220
  474. package/src/generated/models/template.ts +0 -220
  475. package/src/generated/models/templateAllOf.ts +0 -220
  476. package/src/generated/models/temporaryPasswordModel.ts +0 -220
  477. package/src/generated/models/transaction.ts +0 -220
  478. package/src/generated/models/transactionAllOf.ts +0 -220
  479. package/src/generated/models/transactionAllOfAccount.ts +0 -220
  480. package/src/generated/models/transactionAllOfInvoice.ts +0 -220
  481. package/src/generated/models/transactionsAddPaymentTransactionBody.ts +7 -0
  482. package/src/generated/models/translation.ts +0 -220
  483. package/src/generated/models/translationAllOf.ts +0 -220
  484. package/src/generated/models/usage.ts +0 -220
  485. package/src/generated/models/usageAddUsageBody.ts +7 -0
  486. package/src/generated/models/usageAllOf.ts +0 -220
  487. package/src/generated/models/usageAllOfInvoice.ts +0 -220
  488. package/src/generated/models/webflowCollection.ts +0 -220
  489. package/src/generated/models/webflowConfiguration.ts +0 -220
  490. package/src/generated/models/webflowConfigurationSyncConfiguration.ts +0 -220
  491. package/src/generated/models/webflowField.ts +0 -220
  492. package/src/generated/models/webflowFieldMapping.ts +0 -220
  493. package/src/generated/models/webflowFieldMappingWebflowField.ts +0 -220
  494. package/src/generated/models/webflowSite.ts +0 -220
  495. package/src/generated/models/webflowSyncConfiguration.ts +0 -220
  496. package/src/generated/models/webflowSyncConfigurationCollection.ts +0 -220
  497. package/src/generated/models/webflowSyncConfigurationSite.ts +0 -220
  498. package/src/generated/models/webflowSyncError.ts +0 -220
  499. package/src/generated/models/webflowSyncItem.ts +0 -220
  500. package/src/generated/models/webflowSyncLog.ts +0 -220
  501. package/src/generated/support/support.ts +341 -221
  502. package/src/index.ts +2 -0
  503. package/src/generated/models/qcountAllOfLogDatabase.ts +0 -227
  504. package/src/generated/zod.ts +0 -191087
package/dist/index.js CHANGED
@@ -1,35 +1,33 @@
1
1
  // src/client.ts
2
- import ky, { HTTPError } from "ky";
3
2
  function getAuthorization(creds) {
4
3
  if ("accessToken" in creds) {
5
4
  return `Bearer ${creds.accessToken}`;
6
5
  }
7
6
  return `Outseta ${creds.apiKey}:${creds.apiSecret}`;
8
7
  }
8
+ function getRequestUrl(subdomain, path) {
9
+ if (/^https?:\/\//.test(path)) {
10
+ return path;
11
+ }
12
+ const normalizedPath = path.startsWith("/api/v1/") ? path : `/api/v1/${path.replace(/^\/+/, "")}`;
13
+ return new URL(normalizedPath, `https://${subdomain}.outseta.com`).toString();
14
+ }
9
15
  function createClient(creds) {
10
- return ky.create({
11
- prefixUrl: `https://${creds.subdomain}.outseta.com/api/v1/`,
12
- headers: {
13
- Authorization: getAuthorization(creds)
14
- },
15
- retry: { limit: 3, statusCodes: [408, 429, 500, 502, 503, 504] }
16
- });
16
+ return (path, init = {}) => {
17
+ const headers = new Headers(init.headers);
18
+ headers.set("Authorization", getAuthorization(creds));
19
+ return fetch(getRequestUrl(creds.subdomain, path), {
20
+ ...init,
21
+ headers
22
+ });
23
+ };
17
24
  }
18
25
  var customFetch = async (url, options) => {
19
26
  const { client, ...init } = options;
20
27
  if (!client) {
21
- throw new Error("@outseta/api-client: No client provided. Pass a ky instance from createClient() via the `client` option.");
22
- }
23
- let response;
24
- try {
25
- response = await client(url.replace(/^\/api\/v1\//, ""), init);
26
- } catch (error) {
27
- if (error instanceof HTTPError) {
28
- response = error.response;
29
- } else {
30
- throw error;
31
- }
28
+ throw new Error("@outseta/api-client: No client provided. Pass a client from createClient() via the `client` option.");
32
29
  }
30
+ const response = await client(url, init);
33
31
  const data = response.headers.get("content-type")?.includes("application/json") ? await response.json() : undefined;
34
32
  return { data, status: response.status, headers: response.headers };
35
33
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outseta/api-client",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Generated API client for the Outseta REST API",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -18,15 +18,12 @@
18
18
  }
19
19
  },
20
20
  "scripts": {
21
- "build": "bun build src/index.ts --outdir dist --target node --format esm --packages external",
21
+ "build": "rimraf dist && bun build src/index.ts --outdir dist --target node --format esm --packages external",
22
22
  "typecheck": "tsc --noEmit",
23
23
  "lint": "eslint src --ignore-pattern generated",
24
24
  "test": "bun test --env-file ../../.env.test"
25
25
  },
26
- "dependencies": {
27
- "ky": "^1.7.0",
28
- "zod": "^3.24.0"
29
- },
26
+ "dependencies": {},
30
27
  "devDependencies": {
31
28
  "@types/bun": "^1.3.10",
32
29
  "typescript": "^5.7.0"
@@ -1,5 +1,14 @@
1
1
  import { describe, expect, test, afterAll } from "bun:test";
2
- import { hasCredentials, getTestClient } from "./setup.js";
2
+ import { hasCredentials, getTestClient, opts, type PaginatedResponse } from "./setup.js";
3
+ import type { Account, AccountAddAccountBody, AccountUpdateAccountBody, Person } from "../generated/models/index.js";
4
+ import {
5
+ accountAddAccount,
6
+ accountGetAccount,
7
+ accountUpdateAccount,
8
+ accountDeleteAccount,
9
+ personGetAllPeople,
10
+ personDeletePerson,
11
+ } from "../generated/crm/crm.js";
3
12
 
4
13
  const emailsToCleanup: string[] = [];
5
14
  const accountUidsToCleanup: string[] = [];
@@ -10,17 +19,17 @@ describe.skipIf(!hasCredentials)("Accounts CRUD (live)", () => {
10
19
 
11
20
  // Delete any accounts that weren't cleaned up by the test
12
21
  for (const uid of accountUidsToCleanup) {
13
- await client(`crm/accounts/${uid}`, { method: "DELETE", throwHttpErrors: false });
22
+ await accountDeleteAccount(uid, opts(client));
14
23
  }
15
24
 
16
- // Delete orphaned people by email (API doesn't embed Person in account responses)
25
+ // Delete orphaned people by email
17
26
  if (emailsToCleanup.length > 0) {
18
- const res = await client("crm/people", { throwHttpErrors: false });
19
- if (res.ok) {
20
- const body = await res.json<{ items: Array<{ Uid: string; Email: string }> }>();
27
+ const res = await personGetAllPeople(undefined, opts(client));
28
+ if (res.status === 200) {
29
+ const body = res.data as unknown as PaginatedResponse<Person>;
21
30
  for (const person of body.items) {
22
- if (emailsToCleanup.includes(person.Email)) {
23
- await client(`crm/people/${person.Uid}`, { method: "DELETE", throwHttpErrors: false });
31
+ if (person.Email && emailsToCleanup.includes(person.Email)) {
32
+ await personDeletePerson(person.Uid!, opts(client));
24
33
  }
25
34
  }
26
35
  }
@@ -33,9 +42,8 @@ describe.skipIf(!hasCredentials)("Accounts CRUD (live)", () => {
33
42
  emailsToCleanup.push(email);
34
43
 
35
44
  // CREATE
36
- const createRes = await client("crm/accounts", {
37
- method: "POST",
38
- json: {
45
+ const createRes = await accountAddAccount(
46
+ {
39
47
  Name: "Lifecycle Test Corp",
40
48
  PersonAccount: [
41
49
  {
@@ -43,55 +51,49 @@ describe.skipIf(!hasCredentials)("Accounts CRUD (live)", () => {
43
51
  IsPrimary: true,
44
52
  },
45
53
  ],
46
- },
47
- throwHttpErrors: false,
48
- });
54
+ } as AccountAddAccountBody,
55
+ undefined,
56
+ opts(client),
57
+ );
49
58
  expect(createRes.status).toBe(200);
50
- const created = await createRes.json<{ Uid: string; Name: string }>();
59
+ const created = createRes.data as unknown as Account;
51
60
  expect(created.Uid).toBeDefined();
52
61
  expect(created.Name).toBe("Lifecycle Test Corp");
53
- accountUidsToCleanup.push(created.Uid);
62
+ accountUidsToCleanup.push(created.Uid!);
54
63
 
55
64
  // READ
56
- const getRes = await client(`crm/accounts/${created.Uid}`, {
57
- throwHttpErrors: false,
58
- });
65
+ const getRes = await accountGetAccount(created.Uid!, opts(client));
59
66
  expect(getRes.status).toBe(200);
60
- const fetched = await getRes.json<{ Uid: string; Name: string }>();
67
+ const fetched = getRes.data as unknown as Account;
61
68
  expect(fetched.Uid).toBe(created.Uid);
62
69
 
63
70
  // UPDATE
64
- const updateRes = await client(`crm/accounts/${created.Uid}`, {
65
- method: "PUT",
66
- json: { Name: "Lifecycle Test Corp (Updated)" },
67
- throwHttpErrors: false,
68
- });
71
+ const updateRes = await accountUpdateAccount(
72
+ created.Uid!,
73
+ { Name: "Lifecycle Test Corp (Updated)" } as AccountUpdateAccountBody,
74
+ opts(client),
75
+ );
69
76
  expect(updateRes.status).toBe(200);
70
- const updated = await updateRes.json<{ Uid: string; Name: string }>();
77
+ const updated = updateRes.data as unknown as Account;
71
78
  expect(updated.Name).toBe("Lifecycle Test Corp (Updated)");
72
79
 
73
80
  // DELETE account
74
- const deleteRes = await client(`crm/accounts/${created.Uid}`, {
75
- method: "DELETE",
76
- throwHttpErrors: false,
77
- });
81
+ const deleteRes = await accountDeleteAccount(created.Uid!, opts(client));
78
82
  expect(deleteRes.status).toBe(200);
79
83
 
80
84
  // Verify deleted — should 404
81
- const verifyRes = await client(`crm/accounts/${created.Uid}`, {
82
- throwHttpErrors: false,
83
- });
85
+ const verifyRes = await accountGetAccount(created.Uid!, opts(client));
84
86
  expect(verifyRes.status).toBe(404);
85
87
  });
86
88
 
87
89
  test("create account without required person returns error", async () => {
88
90
  const client = getTestClient();
89
91
 
90
- const res = await client("crm/accounts", {
91
- method: "POST",
92
- json: { Name: "No Person Corp" },
93
- throwHttpErrors: false,
94
- });
95
- expect(res.ok).toBe(false);
92
+ const res = await accountAddAccount(
93
+ { Name: "No Person Corp" } as AccountAddAccountBody,
94
+ undefined,
95
+ opts(client),
96
+ );
97
+ expect(res.status).not.toBe(200);
96
98
  });
97
99
  });
@@ -3,7 +3,7 @@ import { createClient, customFetch } from "../client.js";
3
3
  import { hasCredentials, getTestClient } from "./setup.js";
4
4
 
5
5
  describe("createClient", () => {
6
- test("returns a ky instance (callable function)", () => {
6
+ test("returns a callable fetch client", () => {
7
7
  const client = createClient({
8
8
  subdomain: "test",
9
9
  apiKey: "key",
@@ -43,7 +43,7 @@ describe("customFetch", () => {
43
43
  describe.skipIf(!hasCredentials)("Auth (live)", () => {
44
44
  test("valid credentials return 200", async () => {
45
45
  const client = getTestClient();
46
- const res = await client("crm/accounts", { throwHttpErrors: false });
46
+ const res = await client("crm/accounts");
47
47
  expect(res.status).toBe(200);
48
48
  });
49
49
 
@@ -53,7 +53,7 @@ describe.skipIf(!hasCredentials)("Auth (live)", () => {
53
53
  apiKey: "bad-key",
54
54
  apiSecret: "bad-secret",
55
55
  });
56
- const res = await badClient("crm/accounts", { throwHttpErrors: false });
56
+ const res = await badClient("crm/accounts");
57
57
  expect(res.status).toBe(401);
58
58
  });
59
59
  });
@@ -1,5 +1,13 @@
1
1
  import { describe, expect, test, afterAll } from "bun:test";
2
- import { hasCredentials, getTestClient } from "./setup.js";
2
+ import { hasCredentials, getTestClient, opts, type PaginatedResponse } from "./setup.js";
3
+ import type { Person, PersonAddPersonBody, PersonUpdatePersonBody } from "../generated/models/index.js";
4
+ import {
5
+ personGetAllPeople,
6
+ personAddPerson,
7
+ personGetPerson,
8
+ personUpdatePerson,
9
+ personDeletePerson,
10
+ } from "../generated/crm/crm.js";
3
11
 
4
12
  const peopleToCleanup: string[] = [];
5
13
 
@@ -7,16 +15,16 @@ describe.skipIf(!hasCredentials)("People (live)", () => {
7
15
  afterAll(async () => {
8
16
  const client = getTestClient();
9
17
  for (const uid of peopleToCleanup) {
10
- await client(`crm/people/${uid}`, { method: "DELETE", throwHttpErrors: false });
18
+ await personDeletePerson(uid, opts(client));
11
19
  }
12
20
  });
13
21
 
14
22
  test("list all people", async () => {
15
23
  const client = getTestClient();
16
- const res = await client("crm/people", { throwHttpErrors: false });
24
+ const res = await personGetAllPeople(undefined, opts(client));
17
25
 
18
26
  expect(res.status).toBe(200);
19
- const body = await res.json<{ metadata: { total: number }; items: unknown[] }>();
27
+ const body = res.data as unknown as PaginatedResponse<Person>;
20
28
  expect(body.metadata).toBeDefined();
21
29
  expect(body.items).toBeInstanceOf(Array);
22
30
  expect(body.metadata.total).toBeGreaterThan(0);
@@ -27,52 +35,40 @@ describe.skipIf(!hasCredentials)("People (live)", () => {
27
35
  const email = `person-crud-${Date.now()}@test.com`;
28
36
 
29
37
  // CREATE
30
- const createRes = await client("crm/people", {
31
- method: "POST",
32
- json: {
33
- Email: email,
34
- FirstName: "CrudTest",
35
- LastName: "Person",
36
- },
37
- throwHttpErrors: false,
38
- });
38
+ const createRes = await personAddPerson(
39
+ { Email: email, FirstName: "CrudTest", LastName: "Person" } as PersonAddPersonBody,
40
+ opts(client),
41
+ );
39
42
  expect(createRes.status).toBe(200);
40
- const created = await createRes.json<{ Uid: string; Email: string; FirstName: string }>();
43
+ const created = createRes.data as unknown as Person;
41
44
  expect(created.Uid).toBeDefined();
42
45
  expect(created.Email).toBe(email);
43
- peopleToCleanup.push(created.Uid);
46
+ peopleToCleanup.push(created.Uid!);
44
47
 
45
48
  // READ
46
- const getRes = await client(`crm/people/${created.Uid}`, {
47
- throwHttpErrors: false,
48
- });
49
+ const getRes = await personGetPerson(created.Uid!, opts(client));
49
50
  expect(getRes.status).toBe(200);
50
- const fetched = await getRes.json<{ Uid: string; Email: string }>();
51
+ const fetched = getRes.data as unknown as Person;
51
52
  expect(fetched.Uid).toBe(created.Uid);
52
53
 
53
54
  // UPDATE
54
- const updateRes = await client(`crm/people/${created.Uid}`, {
55
- method: "PUT",
56
- json: { FirstName: "UpdatedFirst" },
57
- throwHttpErrors: false,
58
- });
55
+ const updateRes = await personUpdatePerson(
56
+ created.Uid!,
57
+ { FirstName: "UpdatedFirst" } as PersonUpdatePersonBody,
58
+ opts(client),
59
+ );
59
60
  expect(updateRes.status).toBe(200);
60
- const updated = await updateRes.json<{ FirstName: string }>();
61
+ const updated = updateRes.data as unknown as Person;
61
62
  expect(updated.FirstName).toBe("UpdatedFirst");
62
63
 
63
64
  // DELETE
64
- const deleteRes = await client(`crm/people/${created.Uid}`, {
65
- method: "DELETE",
66
- throwHttpErrors: false,
67
- });
65
+ const deleteRes = await personDeletePerson(created.Uid!, opts(client));
68
66
  expect(deleteRes.status).toBe(200);
69
67
  });
70
68
 
71
69
  test("get non-existent person returns 404", async () => {
72
70
  const client = getTestClient();
73
- const res = await client("crm/people/nonexistent-uid-000", {
74
- throwHttpErrors: false,
75
- });
71
+ const res = await personGetPerson("nonexistent-uid-000", opts(client));
76
72
  expect(res.status).toBe(404);
77
73
  });
78
74
  });
@@ -1,5 +1,4 @@
1
- import { createClient } from "../client.js";
2
- import type { KyInstance } from "ky";
1
+ import { createClient, type OutsetaClient } from "../client.js";
3
2
 
4
3
  const subdomain = process.env.OUTSETA_SUBDOMAIN;
5
4
  const apiKey = process.env.OUTSETA_API_KEY;
@@ -7,13 +6,13 @@ const apiSecret = process.env.OUTSETA_API_SECRET;
7
6
 
8
7
  export const hasCredentials = !!(subdomain && apiKey && apiSecret);
9
8
 
10
- let _client: KyInstance | undefined;
9
+ let _client: OutsetaClient | undefined;
11
10
 
12
11
  /**
13
12
  * Generated functions type options as RequestInit, but the customFetch mutator
14
- * expects { client: KyInstance } at runtime. This bridges the gap.
13
+ * expects { client: OutsetaClient } at runtime. This bridges the gap.
15
14
  */
16
- export const opts = (client: KyInstance) =>
15
+ export const opts = (client: OutsetaClient) =>
17
16
  ({ client }) as unknown as RequestInit;
18
17
 
19
18
  /** Outseta list endpoints return this paginated wrapper, not a flat array. */
@@ -22,7 +21,7 @@ export interface PaginatedResponse<T> {
22
21
  items: T[];
23
22
  }
24
23
 
25
- export function getTestClient(): KyInstance {
24
+ export function getTestClient(): OutsetaClient {
26
25
  if (!hasCredentials) {
27
26
  throw new Error("Missing OUTSETA_SUBDOMAIN, OUTSETA_API_KEY, or OUTSETA_API_SECRET env vars");
28
27
  }
@@ -1,7 +1,8 @@
1
1
  import { describe, expect, test, afterAll } from "bun:test";
2
2
  import { hasCredentials, getTestClient, opts, type PaginatedResponse } from "./setup.js";
3
- import type { Case } from "../generated/models/index.js";
4
- import { caseGetAllCases } from "../generated/support/support.js";
3
+ import type { Case, CaseAddCaseBody, Person } from "../generated/models/index.js";
4
+ import { caseGetAllCases, caseAddCase, caseGetCase } from "../generated/support/support.js";
5
+ import { personGetAllPeople } from "../generated/crm/crm.js";
5
6
 
6
7
  describe.skipIf(!hasCredentials)("Support Cases — generated endpoints (live)", () => {
7
8
  test("caseGetAllCases returns a paginated response", async () => {
@@ -18,67 +19,59 @@ describe.skipIf(!hasCredentials)("Support Cases — generated endpoints (live)",
18
19
  });
19
20
 
20
21
  // Cases cannot be deleted via API (405), so we close them after the test
21
- // to keep the test account tidy.
22
+ // to keep the test account tidy. No generated caseUpdateCase exists,
23
+ // so cleanup uses the low-level client.
22
24
  const caseUidsToClose: string[] = [];
23
25
 
24
26
  describe.skipIf(!hasCredentials)("Support Cases — CRUD (live)", () => {
25
27
  afterAll(async () => {
26
28
  const client = getTestClient();
27
29
  for (const uid of caseUidsToClose) {
28
- const getRes = await client(`support/cases/${uid}`, { throwHttpErrors: false });
29
- if (getRes.ok) {
30
- const full = await getRes.json<Record<string, unknown>>();
30
+ const getRes = await caseGetCase(uid, opts(client));
31
+ if (getRes.status === 200) {
32
+ const full = getRes.data as unknown as Case;
33
+ // No generated update function — fall back to the low-level client
31
34
  await client(`support/cases/${uid}`, {
32
35
  method: "PUT",
33
- json: { ...full, Status: 2 },
34
- throwHttpErrors: false,
36
+ headers: { "Content-Type": "application/json" },
37
+ body: JSON.stringify({ ...full, Status: 2 }),
35
38
  });
36
39
  }
37
40
  }
38
41
  });
39
42
 
40
- test("create → read → update case", async () => {
43
+ test("create → read case", async () => {
41
44
  const client = getTestClient();
42
45
 
43
46
  // Get a person to be the case author
44
- const peopleRes = await client("crm/people", { throwHttpErrors: false });
45
- const people = await peopleRes.json<{ items: Array<{ Uid: string }> }>();
47
+ const peopleRes = await personGetAllPeople(undefined, opts(client));
48
+ expect(peopleRes.status).toBe(200);
49
+ const people = peopleRes.data as unknown as PaginatedResponse<Person>;
46
50
  expect(people.items.length).toBeGreaterThan(0);
47
- const personUid = people.items[0].Uid;
51
+ const person = people.items[0];
48
52
 
49
53
  // CREATE
50
- const createRes = await client("support/cases?sendAutoResponder=false", {
51
- method: "POST",
52
- json: {
53
- FromPerson: { Uid: personUid },
54
+ const createRes = await caseAddCase(
55
+ {
56
+ FromPerson: { Uid: person.Uid! },
54
57
  Subject: `CRUD test case ${Date.now()}`,
55
58
  Body: "Created by integration test",
56
59
  Source: 2,
57
- },
58
- throwHttpErrors: false,
59
- });
60
+ Status: 1,
61
+ } as CaseAddCaseBody,
62
+ { sendautoresponder: "false" },
63
+ opts(client),
64
+ );
60
65
  expect(createRes.status).toBe(200);
61
- const created = await createRes.json<Record<string, unknown>>();
66
+ const created = createRes.data as unknown as Case;
62
67
  expect(created.Uid).toBeDefined();
63
68
  expect(created.Subject).toContain("CRUD test case");
64
- caseUidsToClose.push(created.Uid as string);
69
+ caseUidsToClose.push(created.Uid!);
65
70
 
66
71
  // READ
67
- const getRes = await client(`support/cases/${created.Uid}`, {
68
- throwHttpErrors: false,
69
- });
72
+ const getRes = await caseGetCase(created.Uid!, opts(client));
70
73
  expect(getRes.status).toBe(200);
71
- const fetched = await getRes.json<Record<string, unknown>>();
74
+ const fetched = getRes.data as unknown as Case;
72
75
  expect(fetched.Uid).toBe(created.Uid);
73
-
74
- // UPDATE (close case: Status 2 = Closed)
75
- const closeRes = await client(`support/cases/${created.Uid}`, {
76
- method: "PUT",
77
- json: { ...fetched, Status: 2 },
78
- throwHttpErrors: false,
79
- });
80
- expect(closeRes.status).toBe(200);
81
- const closed = await closeRes.json<Record<string, unknown>>();
82
- expect(closed.Status).toBe(2);
83
76
  });
84
77
  });
package/src/client.ts CHANGED
@@ -1,5 +1,3 @@
1
- import ky, { HTTPError, type KyInstance } from "ky";
2
-
3
1
  export type OutsetaApiKeyCredentials = {
4
2
  subdomain: string;
5
3
  apiKey: string;
@@ -15,6 +13,15 @@ export type OutsetaCredentials =
15
13
  | OutsetaApiKeyCredentials
16
14
  | OutsetaBearerCredentials;
17
15
 
16
+ export type OutsetaClient = (
17
+ path: string,
18
+ init?: RequestInit,
19
+ ) => Promise<Response>;
20
+
21
+ export type OutsetaRequestInit = RequestInit & {
22
+ client?: OutsetaClient;
23
+ };
24
+
18
25
  function getAuthorization(creds: OutsetaCredentials): string {
19
26
  if ("accessToken" in creds) {
20
27
  return `Bearer ${creds.accessToken}`;
@@ -22,44 +29,52 @@ function getAuthorization(creds: OutsetaCredentials): string {
22
29
  return `Outseta ${creds.apiKey}:${creds.apiSecret}`;
23
30
  }
24
31
 
25
- export function createClient(creds: OutsetaCredentials): KyInstance {
26
- return ky.create({
27
- prefixUrl: `https://${creds.subdomain}.outseta.com/api/v1/`,
28
- headers: {
29
- Authorization: getAuthorization(creds),
30
- },
31
- retry: { limit: 3, statusCodes: [408, 429, 500, 502, 503, 504] },
32
- });
32
+ function getRequestUrl(subdomain: string, path: string): string {
33
+ if (/^https?:\/\//.test(path)) {
34
+ return path;
35
+ }
36
+
37
+ const normalizedPath = path.startsWith("/api/v1/")
38
+ ? path
39
+ : `/api/v1/${path.replace(/^\/+/, "")}`;
40
+
41
+ return new URL(normalizedPath, `https://${subdomain}.outseta.com`).toString();
42
+ }
43
+
44
+ export function createClient(creds: OutsetaCredentials): OutsetaClient {
45
+ return (path, init = {}) => {
46
+ const headers = new Headers(init.headers);
47
+ headers.set("Authorization", getAuthorization(creds));
48
+
49
+ return fetch(getRequestUrl(creds.subdomain, path), {
50
+ ...init,
51
+ headers,
52
+ });
53
+ };
33
54
  }
34
55
 
35
56
  /**
36
57
  * Custom Orval mutator for the fetch client.
37
58
  *
38
59
  * Generated functions call `customFetch(url, { ...options, method })`.
39
- * Consumers pass `{ client }` in the options to inject their ky instance.
60
+ * Consumers pass `{ client }` in the options to inject a client from
61
+ * `createClient()`.
40
62
  */
41
63
  export const customFetch = async <T>(
42
64
  url: string,
43
- options: RequestInit & { client?: KyInstance },
65
+ options: OutsetaRequestInit,
44
66
  ): Promise<T> => {
45
67
  const { client, ...init } = options;
46
68
  if (!client) {
47
69
  throw new Error(
48
- "@outseta/api-client: No client provided. Pass a ky instance from createClient() via the `client` option.",
70
+ "@outseta/api-client: No client provided. Pass a client from createClient() via the `client` option.",
49
71
  );
50
72
  }
51
- let response: Response;
52
- try {
53
- response = await client(url.replace(/^\/api\/v1\//, ""), init);
54
- } catch (error) {
55
- if (error instanceof HTTPError) {
56
- response = error.response;
57
- } else {
58
- throw error;
59
- }
60
- }
73
+
74
+ const response = await client(url, init);
61
75
  const data = response.headers.get("content-type")?.includes("application/json")
62
76
  ? await response.json()
63
77
  : undefined;
78
+
64
79
  return { data, status: response.status, headers: response.headers } as T;
65
80
  };