@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.
- package/dist/index.js +17 -19
- package/package.json +3 -6
- package/src/__tests__/accounts-crud.integration.test.ts +41 -39
- package/src/__tests__/client.test.ts +3 -3
- package/src/__tests__/people.integration.test.ts +28 -32
- package/src/__tests__/setup.ts +5 -6
- package/src/__tests__/support.integration.test.ts +28 -35
- package/src/client.ts +38 -23
- package/src/generated/activity/activity.ts +115 -0
- package/src/generated/billing/billing.ts +786 -0
- package/src/generated/crm/crm.ts +1143 -221
- package/src/generated/email/email.ts +578 -0
- package/src/generated/models/abstractBean.ts +2 -220
- package/src/generated/models/abstractQcountBean.ts +0 -220
- package/src/generated/models/abstractQcountBeanAllOf.ts +0 -220
- package/src/generated/models/abstractQcountBeanAllOfActivityEventData.ts +0 -220
- package/src/generated/models/abstractSchemaLessBean.ts +0 -220
- package/src/generated/models/abstractSchemaLessBeanAllOf.ts +0 -220
- package/src/generated/models/abstractSchemaLessBeanAllOfSchemaLessData.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfCharge.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfChargeAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfCoupon.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfCouponAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfCreditNote.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfCreditNoteAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfCustomer.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfCustomerAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfDiscount.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfDiscountAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfInvoice.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfInvoiceAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfInvoiceLineItem.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfInvoiceLineItemAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfInvoicePayment.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfInvoicePaymentAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfMeter.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfMeterAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfPaymentMethod.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfPaymentMethodAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfPrice.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfPriceAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfProduct.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfProductAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfPromotionCode.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfPromotionCodeAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfRefund.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfRefundAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscription.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionItem.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionItemAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionSchedule.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionScheduleAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionSchedulePhase.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionSchedulePhaseAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionSchedulePhaseItem.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfSubscriptionSchedulePhaseItemAllOf.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfTaxId.ts +0 -220
- package/src/generated/models/abstractStripeBeanOfTaxIdAllOf.ts +0 -220
- package/src/generated/models/acceptTermsAndConditionsLocations.ts +0 -220
- package/src/generated/models/account.ts +0 -220
- package/src/generated/models/accountAddAccountBody.ts +0 -220
- package/src/generated/models/accountAddAccountParams.ts +0 -220
- package/src/generated/models/accountAddPersonToAccountBody.ts +7 -0
- package/src/generated/models/accountAllOf.ts +0 -220
- package/src/generated/models/accountAllOfBillingAddress.ts +0 -220
- package/src/generated/models/accountAllOfCurrentSubscription.ts +0 -220
- package/src/generated/models/accountAllOfLatestSubscription.ts +0 -220
- package/src/generated/models/accountAllOfMailingAddress.ts +0 -220
- package/src/generated/models/accountAllOfPaymentInformation.ts +0 -220
- package/src/generated/models/accountAllOfPrimaryContact.ts +0 -220
- package/src/generated/models/accountAllOfPrimaryStripeSubscription.ts +0 -220
- package/src/generated/models/accountAllOfPrimarySubscription.ts +0 -220
- package/src/generated/models/accountCancelAccountBody.ts +7 -0
- package/src/generated/models/accountCancelation.ts +0 -220
- package/src/generated/models/accountCancelationAllOf.ts +2 -220
- package/src/generated/models/accountCancelationAllOfAccount.ts +0 -220
- package/src/generated/models/accountCancelationAllOfLastPlan.ts +0 -220
- package/src/generated/models/accountExtendTrialBody.ts +7 -0
- package/src/generated/models/accountGetAllAccountsParams.ts +0 -220
- package/src/generated/models/accountRegistrationMode.ts +0 -220
- package/src/generated/models/accountStage.ts +2 -221
- package/src/generated/models/accountTaxId.ts +0 -220
- package/src/generated/models/accountTaxIdAllOf.ts +0 -220
- package/src/generated/models/accountTaxIdAllOfAccount.ts +0 -220
- package/src/generated/models/accountUpdateAccountBody.ts +7 -0
- package/src/generated/models/accountUpdateMembershipBody.ts +7 -0
- package/src/generated/models/activity.ts +0 -220
- package/src/generated/models/activityAddCustomActivityBody.ts +7 -0
- package/src/generated/models/activityAllOf.ts +0 -220
- package/src/generated/models/activityCRMDealTrigger.ts +0 -220
- package/src/generated/models/activityCRMDealTriggerAllOf.ts +0 -220
- package/src/generated/models/activityCRMDealTriggerAllOfDealPipelineStage.ts +0 -220
- package/src/generated/models/activityCriteria.ts +0 -220
- package/src/generated/models/activityCriteriaActivityType.ts +0 -220
- package/src/generated/models/activityGetAllParams.ts +21 -0
- package/src/generated/models/activityNotification.ts +0 -220
- package/src/generated/models/activityNotificationAllOf.ts +0 -220
- package/src/generated/models/activityType.ts +0 -220
- package/src/generated/models/addOn.ts +0 -220
- package/src/generated/models/addOnAllOf.ts +0 -220
- package/src/generated/models/address.ts +0 -220
- package/src/generated/models/addressAllOf.ts +0 -220
- package/src/generated/models/apiKey.ts +0 -220
- package/src/generated/models/apiKeyAllOf.ts +0 -225
- package/src/generated/models/apiKeyAllOfQcount.ts +0 -220
- package/src/generated/models/apiKeyType.ts +0 -220
- package/src/generated/models/article.ts +0 -220
- package/src/generated/models/articleAllOf.ts +0 -220
- package/src/generated/models/articleAllOfCategory.ts +0 -220
- package/src/generated/models/articleGetAllArticlesParams.ts +8 -0
- package/src/generated/models/backGroundTaskType.ts +3 -221
- package/src/generated/models/billSettings.ts +0 -220
- package/src/generated/models/billSettingsAllOf.ts +0 -220
- package/src/generated/models/billingAddOnType.ts +0 -220
- package/src/generated/models/billingDiscountDuration.ts +0 -220
- package/src/generated/models/billingInvoiceStatus.ts +0 -220
- package/src/generated/models/billingRenewalTerm.ts +0 -220
- package/src/generated/models/billingSystem.ts +0 -220
- package/src/generated/models/billingTransactionType.ts +0 -220
- package/src/generated/models/broadcastCampaign.ts +0 -220
- package/src/generated/models/broadcastCampaignAllOf.ts +4 -220
- package/src/generated/models/broadcastCampaignAllOfCampaign.ts +0 -220
- package/src/generated/models/broadcastCampaignAllOfMessage.ts +0 -220
- package/src/generated/models/broadcastCampaignStatus.ts +2 -221
- package/src/generated/models/campaign.ts +0 -220
- package/src/generated/models/campaignAddBroadcastEmailBody.ts +7 -0
- package/src/generated/models/campaignAllOf.ts +0 -220
- package/src/generated/models/campaignSendTestCampaignEmailBody.ts +7 -0
- package/src/generated/models/campaignType.ts +0 -220
- package/src/generated/models/campaignUpdateBroadcastEmailBody.ts +7 -0
- package/src/generated/models/cancelationStatus.ts +16 -0
- package/src/generated/models/case.ts +0 -220
- package/src/generated/models/caseAddCaseBody.ts +7 -0
- package/src/generated/models/caseAddCaseParams.ts +9 -0
- package/src/generated/models/caseAllOf.ts +0 -220
- package/src/generated/models/caseAllOfLastCaseHistory.ts +0 -220
- package/src/generated/models/caseGetAllCasesParams.ts +0 -220
- package/src/generated/models/caseHistory.ts +0 -220
- package/src/generated/models/caseHistoryAllOf.ts +0 -220
- package/src/generated/models/caseTag.ts +0 -220
- package/src/generated/models/caseTagAllOf.ts +0 -220
- package/src/generated/models/caseTagAllOfCase.ts +0 -220
- package/src/generated/models/caseTagAllOfTag.ts +0 -220
- package/src/generated/models/category.ts +0 -220
- package/src/generated/models/categoryAllOf.ts +0 -220
- package/src/generated/models/chatSettings.ts +0 -220
- package/src/generated/models/chatSettingsAllOf.ts +0 -220
- package/src/generated/models/clientApplication.ts +0 -220
- package/src/generated/models/clientApplicationAllOf.ts +0 -220
- package/src/generated/models/contentGroup.ts +0 -220
- package/src/generated/models/contentGroupAllOf.ts +0 -220
- package/src/generated/models/contentGroupItem.ts +0 -220
- package/src/generated/models/contentGroupItemAllOf.ts +0 -220
- package/src/generated/models/contentGroupItemMatchMode.ts +0 -220
- package/src/generated/models/crmSettings.ts +0 -220
- package/src/generated/models/crmSettingsAllOf.ts +2 -220
- package/src/generated/models/crmSettingsAllOfEmailList.ts +0 -220
- package/src/generated/models/database.ts +0 -220
- package/src/generated/models/databaseAllOf.ts +0 -220
- package/src/generated/models/databaseType.ts +0 -220
- package/src/generated/models/deal.ts +0 -220
- package/src/generated/models/dealAddDealBody.ts +7 -0
- package/src/generated/models/dealAllOf.ts +0 -220
- package/src/generated/models/dealAllOfAccount.ts +0 -220
- package/src/generated/models/dealAllOfDealPipelineStage.ts +0 -220
- package/src/generated/models/dealAllOfOwner.ts +0 -220
- package/src/generated/models/dealGetAllDealsParams.ts +14 -0
- package/src/generated/models/dealPerson.ts +0 -220
- package/src/generated/models/dealPersonAllOf.ts +0 -220
- package/src/generated/models/dealPersonAllOfDeal.ts +0 -220
- package/src/generated/models/dealPersonAllOfPerson.ts +0 -220
- package/src/generated/models/dealPipeline.ts +0 -220
- package/src/generated/models/dealPipelineAllOf.ts +0 -220
- package/src/generated/models/dealPipelineStage.ts +0 -220
- package/src/generated/models/dealPipelineStageAllOf.ts +0 -220
- package/src/generated/models/dealPipelineStageAllOfDealPipeline.ts +0 -220
- package/src/generated/models/dealUpdateDealBody.ts +7 -0
- package/src/generated/models/definition.ts +0 -220
- package/src/generated/models/definitionAllOf.ts +0 -220
- package/src/generated/models/deserializationStatus.ts +0 -220
- package/src/generated/models/discordRole.ts +0 -220
- package/src/generated/models/discordRoleAllOf.ts +0 -220
- package/src/generated/models/discordRoleAllOfDiscordServer.ts +0 -220
- package/src/generated/models/discordRolePlan.ts +0 -220
- package/src/generated/models/discordRolePlanAllOf.ts +0 -220
- package/src/generated/models/discordRolePlanAllOfDiscordRole.ts +0 -220
- package/src/generated/models/discordRolePlanAllOfPlan.ts +0 -220
- package/src/generated/models/discordServer.ts +0 -220
- package/src/generated/models/discordServerAllOf.ts +0 -220
- package/src/generated/models/discordUser.ts +0 -220
- package/src/generated/models/discordUserAllOf.ts +0 -220
- package/src/generated/models/discountCoupon.ts +0 -220
- package/src/generated/models/discountCouponAddDiscountCouponBody.ts +7 -0
- package/src/generated/models/discountCouponAllOf.ts +0 -220
- package/src/generated/models/discountCouponPlan.ts +0 -220
- package/src/generated/models/discountCouponPlanAllOf.ts +0 -220
- package/src/generated/models/discountCouponPlanAllOfDiscountCoupon.ts +0 -220
- package/src/generated/models/discountCouponPlanAllOfPlan.ts +0 -220
- package/src/generated/models/discountCouponSubscription.ts +0 -220
- package/src/generated/models/discountCouponSubscriptionAllOf.ts +0 -220
- package/src/generated/models/discountCouponSubscriptionAllOfDiscountCoupon.ts +0 -220
- package/src/generated/models/discountCouponSubscriptionAllOfSubscription.ts +0 -220
- package/src/generated/models/dnsEntry.ts +2 -220
- package/src/generated/models/dripCampaign.ts +0 -220
- package/src/generated/models/dripCampaignAllOf.ts +0 -220
- package/src/generated/models/dripCampaignAllOfCampaign.ts +0 -220
- package/src/generated/models/dripCampaignMessage.ts +0 -220
- package/src/generated/models/dripCampaignMessageAllOf.ts +0 -220
- package/src/generated/models/dripCampaignMessageAllOfDripCampaign.ts +0 -220
- package/src/generated/models/dripCampaignMessageAllOfMessage.ts +0 -220
- package/src/generated/models/emailLink.ts +0 -220
- package/src/generated/models/emailLinkAllOf.ts +0 -220
- package/src/generated/models/emailList.ts +0 -220
- package/src/generated/models/emailListAddSubscriptionBody.ts +7 -0
- package/src/generated/models/emailListAllOf.ts +0 -220
- package/src/generated/models/emailListGetAllSubscriptionsParams.ts +9 -0
- package/src/generated/models/emailListPerson.ts +0 -220
- package/src/generated/models/emailListPersonAllOf.ts +0 -220
- package/src/generated/models/emailListPersonAllOfEmailList.ts +0 -220
- package/src/generated/models/emailListPersonAllOfPerson.ts +0 -220
- package/src/generated/models/emailListSubscriberStatus.ts +0 -220
- package/src/generated/models/emailSubscriptionsPayload.ts +0 -220
- package/src/generated/models/entityType.ts +0 -220
- package/src/generated/models/extendRenewalParams.ts +0 -220
- package/src/generated/models/extendSubscriptionOptions.ts +5 -0
- package/src/generated/models/extendTrialParams.ts +0 -220
- package/src/generated/models/flatfileImportData.ts +0 -220
- package/src/generated/models/flatfileImportDataSchemalessData.ts +0 -220
- package/src/generated/models/index.ts +66 -221
- package/src/generated/models/invoice.ts +0 -220
- package/src/generated/models/invoiceAddInvoiceBody.ts +7 -0
- package/src/generated/models/invoiceAllOf.ts +8 -220
- package/src/generated/models/invoiceAllOfSubscription.ts +0 -220
- package/src/generated/models/invoiceCreditOptions.ts +0 -220
- package/src/generated/models/invoiceLineItem.ts +0 -220
- package/src/generated/models/invoiceLineItemAllOf.ts +0 -220
- package/src/generated/models/invoiceLineItemAllOfInvoice.ts +0 -220
- package/src/generated/models/invoiceLineItemAllOfLineItemType.ts +0 -220
- package/src/generated/models/invoiceStatusChangeOptions.ts +0 -220
- package/src/generated/models/jwtKey.ts +0 -220
- package/src/generated/models/jwtKeyAllOf.ts +0 -225
- package/src/generated/models/jwtKeyAllOfQcount.ts +0 -220
- package/src/generated/models/leadForm.ts +0 -220
- package/src/generated/models/leadFormAllOf.ts +0 -220
- package/src/generated/models/leadFormAllOfDealPipelineStage.ts +0 -220
- package/src/generated/models/leadFormSubmission.ts +0 -220
- package/src/generated/models/leadFormSubmissionAllOf.ts +0 -220
- package/src/generated/models/lineItemType.ts +0 -220
- package/src/generated/models/message.ts +0 -220
- package/src/generated/models/messageAllOf.ts +1 -220
- package/src/generated/models/messageAllOfTemplate.ts +0 -220
- package/src/generated/models/noCodeSettings.ts +0 -220
- package/src/generated/models/noCodeSettingsAllOf.ts +0 -220
- package/src/generated/models/noCodeSettingsAllOfAccount.ts +0 -220
- package/src/generated/models/oAuthService.ts +0 -220
- package/src/generated/models/passwordChangeModel.ts +0 -220
- package/src/generated/models/passwordPayload.ts +0 -220
- package/src/generated/models/pauseCollectionOptions.ts +0 -220
- package/src/generated/models/paymentInformation.ts +0 -220
- package/src/generated/models/paymentInformationAllOf.ts +0 -220
- package/src/generated/models/paymentInformationSavePaymentInformationBody.ts +7 -0
- package/src/generated/models/paymentsGatewayActivationStatus.ts +0 -220
- package/src/generated/models/paymentsMode.ts +0 -220
- package/src/generated/models/person.ts +0 -220
- package/src/generated/models/personAccount.ts +0 -220
- package/src/generated/models/personAccountAllOf.ts +0 -220
- package/src/generated/models/personAccountAllOfAccount.ts +0 -220
- package/src/generated/models/personAccountAllOfPerson.ts +0 -220
- package/src/generated/models/personAddPersonBody.ts +7 -0
- package/src/generated/models/personAllOf.ts +3 -233
- package/src/generated/models/personAllOfAccount.ts +0 -220
- package/src/generated/models/personAllOfDiscordUser.ts +0 -220
- package/src/generated/models/personAllOfMailingAddress.ts +0 -220
- package/src/generated/models/personForgotPasswordBody.ts +7 -0
- package/src/generated/models/personGetAllPeopleParams.ts +9 -0
- package/src/generated/models/personSegmentAddedActivityData.ts +11 -0
- package/src/generated/models/personSegmentAddedWebhookPayload.ts +123 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadAccount.ts +141 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadAccountAccountStage.ts +20 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadDealPeopleItem.ts +15 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadDiscordUser.ts +35 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadEmailListPersonItem.ts +48 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadEmailListPersonItemEmailListSubscriberStatus.ts +15 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadLeadFormSubmissionsItem.ts +21 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadMailingAddress.ts +58 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadOAuthIntegrationStatus.ts +13 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadPersonAccountItem.ts +20 -0
- package/src/generated/models/personSegmentAddedWebhookPayloadPersonAccountItemAccount.ts +14 -0
- package/src/generated/models/personSegmentRemovedActivityData.ts +11 -0
- package/src/generated/models/personSegmentRemovedWebhookPayload.ts +123 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadAccount.ts +141 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadAccountAccountStage.ts +20 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadDealPeopleItem.ts +15 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadDiscordUser.ts +35 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadEmailListPersonItem.ts +48 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadEmailListPersonItemEmailListSubscriberStatus.ts +15 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadLeadFormSubmissionsItem.ts +21 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadMailingAddress.ts +58 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadOAuthIntegrationStatus.ts +13 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadPersonAccountItem.ts +20 -0
- package/src/generated/models/personSegmentRemovedWebhookPayloadPersonAccountItemAccount.ts +14 -0
- package/src/generated/models/personSetTemporaryPasswordBody.ts +7 -0
- package/src/generated/models/personUpdatePersonBody.ts +7 -0
- package/src/generated/models/plan.ts +0 -220
- package/src/generated/models/planAddOn.ts +0 -220
- package/src/generated/models/planAddOnAllOf.ts +0 -220
- package/src/generated/models/planAddOnAllOfAddOn.ts +0 -220
- package/src/generated/models/planAddOnAllOfPlan.ts +0 -220
- package/src/generated/models/planAllOf.ts +0 -220
- package/src/generated/models/planAllOfPlanFamily.ts +0 -220
- package/src/generated/models/planFamily.ts +0 -220
- package/src/generated/models/planFamilyAllOf.ts +0 -220
- package/src/generated/models/processCodePayload.ts +0 -220
- package/src/generated/models/qcount.ts +1 -221
- package/src/generated/models/qcountAllOf.ts +0 -240
- package/src/generated/models/qcountConfig.ts +0 -220
- package/src/generated/models/qcountConfigAllOf.ts +0 -220
- package/src/generated/models/qcountConfigSettingType.ts +2 -234
- package/src/generated/models/qcountStatus.ts +0 -220
- package/src/generated/models/registrationField.ts +0 -220
- package/src/generated/models/resendEmailsRequest.ts +6 -0
- package/src/generated/models/segment.ts +0 -220
- package/src/generated/models/segmentAllOf.ts +0 -220
- package/src/generated/models/segmentPerson.ts +0 -220
- package/src/generated/models/segmentPersonAllOf.ts +0 -220
- package/src/generated/models/segmentPersonAllOfPerson.ts +0 -220
- package/src/generated/models/segmentPersonAllOfSegment.ts +0 -220
- package/src/generated/models/sendGridDomainAuthentication.ts +0 -220
- package/src/generated/models/sendGridDomainAuthenticationAllOf.ts +1 -220
- package/src/generated/models/sendTestEmailRequest.ts +0 -220
- package/src/generated/models/sendTestEmailRequest2.ts +0 -220
- package/src/generated/models/sendTestEmailRequest2BroadcastCampaign.ts +0 -220
- package/src/generated/models/sendTestEmailRequestDripCampaign.ts +0 -220
- package/src/generated/models/sessionFlowDataAfterCompletionHostedConfirmationOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataAfterCompletionOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataAfterCompletionOptionsHostedConfirmation.ts +0 -220
- package/src/generated/models/sessionFlowDataAfterCompletionOptionsRedirect.ts +0 -220
- package/src/generated/models/sessionFlowDataAfterCompletionRedirectOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataOptionsAfterCompletion.ts +0 -220
- package/src/generated/models/sessionFlowDataOptionsSubscriptionCancel.ts +0 -220
- package/src/generated/models/sessionFlowDataOptionsSubscriptionUpdate.ts +0 -220
- package/src/generated/models/sessionFlowDataOptionsSubscriptionUpdateConfirm.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionCancelOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionCancelOptionsRetention.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionCancelRetentionCouponOfferOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionCancelRetentionOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionCancelRetentionOptionsCouponOffer.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionUpdateConfirmDiscountOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionUpdateConfirmItemOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionUpdateConfirmOptions.ts +0 -220
- package/src/generated/models/sessionFlowDataSubscriptionUpdateOptions.ts +0 -220
- package/src/generated/models/setupIntent.ts +2 -220
- package/src/generated/models/setupIntentBillingAddress.ts +0 -220
- package/src/generated/models/slackChannelSetting.ts +0 -220
- package/src/generated/models/spamStatus.ts +0 -220
- package/src/generated/models/stripeBillingSyncParams.ts +0 -220
- package/src/generated/models/stripeCharge.ts +0 -220
- package/src/generated/models/stripeChargeAllOf.ts +0 -220
- package/src/generated/models/stripeChargeAllOfAccount.ts +0 -220
- package/src/generated/models/stripeChargeAllOfStripePaymentMethod.ts +0 -220
- package/src/generated/models/stripeCheckoutParams.ts +0 -220
- package/src/generated/models/stripeCoupon.ts +0 -220
- package/src/generated/models/stripeCouponAllOf.ts +0 -220
- package/src/generated/models/stripeCreditNote.ts +0 -220
- package/src/generated/models/stripeCreditNoteAllOf.ts +9 -220
- package/src/generated/models/stripeDiscount.ts +0 -220
- package/src/generated/models/stripeDiscountAllOf.ts +0 -220
- package/src/generated/models/stripeDiscountAllOfAccount.ts +0 -220
- package/src/generated/models/stripeDiscountAllOfStripeCoupon.ts +0 -220
- package/src/generated/models/stripeDiscountAllOfStripeInvoice.ts +0 -220
- package/src/generated/models/stripeDiscountAllOfStripePromotionCode.ts +0 -220
- package/src/generated/models/stripeDiscountAllOfStripeSubscription.ts +0 -220
- package/src/generated/models/stripeInvoice.ts +0 -220
- package/src/generated/models/stripeInvoiceAllOf.ts +9 -220
- package/src/generated/models/stripeInvoiceAllOfAccount.ts +0 -220
- package/src/generated/models/stripeInvoiceDiscountAmount.ts +0 -220
- package/src/generated/models/stripeInvoiceDiscountAmountAllOf.ts +0 -220
- package/src/generated/models/stripeInvoiceDiscountAmountAllOfStripeDiscount.ts +0 -220
- package/src/generated/models/stripeInvoiceDiscountAmountAllOfStripeInvoice.ts +0 -220
- package/src/generated/models/stripeInvoiceLineItem.ts +0 -220
- package/src/generated/models/stripeInvoiceLineItemAllOf.ts +0 -220
- package/src/generated/models/stripeInvoiceLineItemAllOfStripeInvoice.ts +0 -220
- package/src/generated/models/stripeInvoiceLineItemAllOfStripePrice.ts +0 -220
- package/src/generated/models/stripeInvoicePayment.ts +0 -220
- package/src/generated/models/stripeInvoicePaymentAllOf.ts +0 -220
- package/src/generated/models/stripeInvoicePaymentAllOfStripeInvoice.ts +0 -220
- package/src/generated/models/stripeMeter.ts +0 -220
- package/src/generated/models/stripeMeterAllOf.ts +0 -220
- package/src/generated/models/stripePaymentMethod.ts +0 -220
- package/src/generated/models/stripePaymentMethodAllOf.ts +0 -220
- package/src/generated/models/stripePaymentMethodAllOfAccount.ts +0 -220
- package/src/generated/models/stripePrice.ts +0 -220
- package/src/generated/models/stripePriceAllOf.ts +2 -220
- package/src/generated/models/stripePriceAllOfRecurringStripeMeter.ts +0 -220
- package/src/generated/models/stripePriceAllOfStripeProduct.ts +0 -220
- package/src/generated/models/stripeProduct.ts +0 -220
- package/src/generated/models/stripeProductAllOf.ts +5 -220
- package/src/generated/models/stripeProductAllOfStripeProductFamily.ts +0 -220
- package/src/generated/models/stripeProductCrossSell.ts +0 -220
- package/src/generated/models/stripeProductCrossSellAllOf.ts +0 -220
- package/src/generated/models/stripeProductCrossSellAllOfCrossSellProduct.ts +0 -220
- package/src/generated/models/stripeProductCrossSellAllOfStripeProduct.ts +0 -220
- package/src/generated/models/stripeProductFamily.ts +0 -220
- package/src/generated/models/stripeProductFamilyAllOf.ts +0 -220
- package/src/generated/models/stripePromotionCode.ts +0 -220
- package/src/generated/models/stripePromotionCodeAllOf.ts +0 -220
- package/src/generated/models/stripePromotionCodeAllOfAccount.ts +0 -220
- package/src/generated/models/stripePromotionCodeAllOfStripeCoupon.ts +0 -220
- package/src/generated/models/stripeRefund.ts +0 -220
- package/src/generated/models/stripeRefundAllOf.ts +0 -220
- package/src/generated/models/stripeRefundAllOfStripeCharge.ts +0 -220
- package/src/generated/models/stripeSubscription.ts +0 -220
- package/src/generated/models/stripeSubscriptionAllOf.ts +4 -220
- package/src/generated/models/stripeSubscriptionAllOfAccount.ts +0 -220
- package/src/generated/models/stripeSubscriptionAllOfCurrentStripeSubscriptionSchedule.ts +0 -220
- package/src/generated/models/stripeSubscriptionAllOfStripeSubscriptionCancellation.ts +0 -220
- package/src/generated/models/stripeSubscriptionCancellation.ts +0 -220
- package/src/generated/models/stripeSubscriptionCancellationAllOf.ts +0 -220
- package/src/generated/models/stripeSubscriptionItem.ts +0 -220
- package/src/generated/models/stripeSubscriptionItemAllOf.ts +0 -220
- package/src/generated/models/stripeSubscriptionItemAllOfStripePrice.ts +0 -220
- package/src/generated/models/stripeSubscriptionItemAllOfStripeSubscription.ts +0 -220
- package/src/generated/models/stripeSubscriptionSchedule.ts +0 -220
- package/src/generated/models/stripeSubscriptionScheduleAllOf.ts +0 -220
- package/src/generated/models/stripeSubscriptionScheduleAllOfStripeSubscription.ts +0 -220
- package/src/generated/models/stripeSubscriptionSchedulePhase.ts +0 -220
- package/src/generated/models/stripeSubscriptionSchedulePhaseAllOf.ts +0 -220
- package/src/generated/models/stripeSubscriptionSchedulePhaseAllOfStripeSubscriptionSchedule.ts +0 -220
- package/src/generated/models/stripeSubscriptionSchedulePhaseItem.ts +0 -220
- package/src/generated/models/stripeSubscriptionSchedulePhaseItemAllOf.ts +0 -220
- package/src/generated/models/stripeSubscriptionSchedulePhaseItemAllOfStripePrice.ts +0 -220
- package/src/generated/models/subscription.ts +0 -220
- package/src/generated/models/subscriptionAddOn.ts +0 -220
- package/src/generated/models/subscriptionAddOnAddSubscriptionAddOnBody.ts +7 -0
- package/src/generated/models/subscriptionAddOnAllOf.ts +0 -220
- package/src/generated/models/subscriptionAddOnAllOfAddOn.ts +0 -220
- package/src/generated/models/subscriptionAddOnAllOfSubscription.ts +0 -220
- package/src/generated/models/subscriptionAllOf.ts +0 -220
- package/src/generated/models/subscriptionAllOfAccount.ts +0 -220
- package/src/generated/models/subscriptionAllOfLatestInvoice.ts +0 -220
- package/src/generated/models/subscriptionAllOfPlan.ts +0 -220
- package/src/generated/models/subscriptionChangeSubscriptionBody.ts +7 -0
- package/src/generated/models/subscriptionChangeSubscriptionParams.ts +9 -0
- package/src/generated/models/subscriptionChangeSubscriptionPreviewBody.ts +7 -0
- package/src/generated/models/subscriptionChangeSubscriptionPreviewParams.ts +9 -0
- package/src/generated/models/subscriptionFirstTimeSubscriptionBody.ts +7 -0
- package/src/generated/models/subscriptionFirstTimeSubscriptionPreviewBody.ts +7 -0
- package/src/generated/models/subscriptionFirstTimeSubscriptionPreviewParams.ts +9 -0
- package/src/generated/models/subscriptionSetSubscriptionUpgradeRequiredBody.ts +7 -0
- package/src/generated/models/supportArticleStatus.ts +0 -220
- package/src/generated/models/supportCaseHistoryType.ts +0 -220
- package/src/generated/models/supportCaseSource.ts +0 -220
- package/src/generated/models/supportCaseStatus.ts +0 -220
- package/src/generated/models/supportSettings.ts +0 -220
- package/src/generated/models/supportSettingsAllOf.ts +0 -220
- package/src/generated/models/tag.ts +0 -220
- package/src/generated/models/tagAllOf.ts +0 -220
- package/src/generated/models/tagColor.ts +0 -220
- package/src/generated/models/tagUidList.ts +0 -220
- package/src/generated/models/task.ts +0 -220
- package/src/generated/models/taskAllOf.ts +0 -220
- package/src/generated/models/taskAllOfAccount.ts +0 -220
- package/src/generated/models/taskAllOfAssignee.ts +0 -220
- package/src/generated/models/taskAllOfDeal.ts +0 -220
- package/src/generated/models/taskAllOfPerson.ts +0 -220
- package/src/generated/models/taskAllOfType.ts +0 -220
- package/src/generated/models/taskStatus.ts +0 -220
- package/src/generated/models/taskType.ts +0 -220
- package/src/generated/models/taskTypeAllOf.ts +0 -220
- package/src/generated/models/taxRate.ts +0 -220
- package/src/generated/models/taxRateAllOf.ts +0 -220
- package/src/generated/models/template.ts +0 -220
- package/src/generated/models/templateAllOf.ts +0 -220
- package/src/generated/models/temporaryPasswordModel.ts +0 -220
- package/src/generated/models/transaction.ts +0 -220
- package/src/generated/models/transactionAllOf.ts +0 -220
- package/src/generated/models/transactionAllOfAccount.ts +0 -220
- package/src/generated/models/transactionAllOfInvoice.ts +0 -220
- package/src/generated/models/transactionsAddPaymentTransactionBody.ts +7 -0
- package/src/generated/models/translation.ts +0 -220
- package/src/generated/models/translationAllOf.ts +0 -220
- package/src/generated/models/usage.ts +0 -220
- package/src/generated/models/usageAddUsageBody.ts +7 -0
- package/src/generated/models/usageAllOf.ts +0 -220
- package/src/generated/models/usageAllOfInvoice.ts +0 -220
- package/src/generated/models/webflowCollection.ts +0 -220
- package/src/generated/models/webflowConfiguration.ts +0 -220
- package/src/generated/models/webflowConfigurationSyncConfiguration.ts +0 -220
- package/src/generated/models/webflowField.ts +0 -220
- package/src/generated/models/webflowFieldMapping.ts +0 -220
- package/src/generated/models/webflowFieldMappingWebflowField.ts +0 -220
- package/src/generated/models/webflowSite.ts +0 -220
- package/src/generated/models/webflowSyncConfiguration.ts +0 -220
- package/src/generated/models/webflowSyncConfigurationCollection.ts +0 -220
- package/src/generated/models/webflowSyncConfigurationSite.ts +0 -220
- package/src/generated/models/webflowSyncError.ts +0 -220
- package/src/generated/models/webflowSyncItem.ts +0 -220
- package/src/generated/models/webflowSyncLog.ts +0 -220
- package/src/generated/support/support.ts +341 -221
- package/src/index.ts +2 -0
- package/src/generated/models/qcountAllOfLogDatabase.ts +0 -227
- 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
|
|
11
|
-
|
|
12
|
-
headers
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
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.
|
|
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
|
|
22
|
+
await accountDeleteAccount(uid, opts(client));
|
|
14
23
|
}
|
|
15
24
|
|
|
16
|
-
// Delete orphaned people by email
|
|
25
|
+
// Delete orphaned people by email
|
|
17
26
|
if (emailsToCleanup.length > 0) {
|
|
18
|
-
const res = await
|
|
19
|
-
if (res.
|
|
20
|
-
const body =
|
|
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
|
|
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
|
|
37
|
-
|
|
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
|
-
|
|
48
|
-
|
|
54
|
+
} as AccountAddAccountBody,
|
|
55
|
+
undefined,
|
|
56
|
+
opts(client),
|
|
57
|
+
);
|
|
49
58
|
expect(createRes.status).toBe(200);
|
|
50
|
-
const created =
|
|
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
|
|
57
|
-
throwHttpErrors: false,
|
|
58
|
-
});
|
|
65
|
+
const getRes = await accountGetAccount(created.Uid!, opts(client));
|
|
59
66
|
expect(getRes.status).toBe(200);
|
|
60
|
-
const fetched =
|
|
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
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
expect(res.
|
|
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
|
|
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"
|
|
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"
|
|
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
|
|
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
|
|
24
|
+
const res = await personGetAllPeople(undefined, opts(client));
|
|
17
25
|
|
|
18
26
|
expect(res.status).toBe(200);
|
|
19
|
-
const body =
|
|
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
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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 =
|
|
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
|
|
47
|
-
throwHttpErrors: false,
|
|
48
|
-
});
|
|
49
|
+
const getRes = await personGetPerson(created.Uid!, opts(client));
|
|
49
50
|
expect(getRes.status).toBe(200);
|
|
50
|
-
const fetched =
|
|
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
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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 =
|
|
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
|
|
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
|
|
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
|
});
|
package/src/__tests__/setup.ts
CHANGED
|
@@ -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:
|
|
9
|
+
let _client: OutsetaClient | undefined;
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Generated functions type options as RequestInit, but the customFetch mutator
|
|
14
|
-
* expects { client:
|
|
13
|
+
* expects { client: OutsetaClient } at runtime. This bridges the gap.
|
|
15
14
|
*/
|
|
16
|
-
export const opts = (client:
|
|
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():
|
|
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
|
|
29
|
-
if (getRes.
|
|
30
|
-
const full =
|
|
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
|
-
|
|
34
|
-
|
|
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
|
|
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
|
|
45
|
-
|
|
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
|
|
51
|
+
const person = people.items[0];
|
|
48
52
|
|
|
49
53
|
// CREATE
|
|
50
|
-
const createRes = await
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
+
Status: 1,
|
|
61
|
+
} as CaseAddCaseBody,
|
|
62
|
+
{ sendautoresponder: "false" },
|
|
63
|
+
opts(client),
|
|
64
|
+
);
|
|
60
65
|
expect(createRes.status).toBe(200);
|
|
61
|
-
const created =
|
|
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
|
|
69
|
+
caseUidsToClose.push(created.Uid!);
|
|
65
70
|
|
|
66
71
|
// READ
|
|
67
|
-
const getRes = await
|
|
68
|
-
throwHttpErrors: false,
|
|
69
|
-
});
|
|
72
|
+
const getRes = await caseGetCase(created.Uid!, opts(client));
|
|
70
73
|
expect(getRes.status).toBe(200);
|
|
71
|
-
const fetched =
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
|
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:
|
|
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
|
|
70
|
+
"@outseta/api-client: No client provided. Pass a client from createClient() via the `client` option.",
|
|
49
71
|
);
|
|
50
72
|
}
|
|
51
|
-
|
|
52
|
-
|
|
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
|
};
|