fix: incomplete sub gets past due status
This commit is contained in:
@@ -54,6 +54,7 @@ export const handleSubscriptionUpdated = async ({
|
||||
trialing: CusProductStatus.Active,
|
||||
active: CusProductStatus.Active,
|
||||
past_due: CusProductStatus.PastDue,
|
||||
incomplete: CusProductStatus.PastDue, // temporary status for incomplete subscription
|
||||
};
|
||||
|
||||
const updatedCusProducts = await CusProductService.updateByStripeSubId({
|
||||
|
||||
@@ -27,7 +27,7 @@ const OPENAPI_1_2_0 = createDocument(
|
||||
|
||||
servers: [
|
||||
{
|
||||
url: "https://api.useautumn.com",
|
||||
url: "https://api.useautumn.com/v1",
|
||||
description: "Production server",
|
||||
},
|
||||
],
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import {
|
||||
AttachResultSchema,
|
||||
AttachBodyV0Schema,
|
||||
AttachResponseV0Schema,
|
||||
CancelBodySchema,
|
||||
CancelResultSchema,
|
||||
CheckoutResponseSchema,
|
||||
CheckoutParamsV0Schema,
|
||||
CheckoutResponseV0Schema,
|
||||
CheckResponseV2Schema,
|
||||
ExtAttachBodySchema,
|
||||
ExtCheckoutParamsSchema,
|
||||
ExtCheckParamsSchema,
|
||||
QueryParamsSchema,
|
||||
QueryResultSchema,
|
||||
@@ -40,7 +40,7 @@ export const coreOps: ZodOpenApiPathsObject = {
|
||||
requestBody: {
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: ExtAttachBodySchema,
|
||||
schema: AttachBodyV0Schema,
|
||||
examples: {
|
||||
basic: {
|
||||
summary: "Attach a product immediately",
|
||||
@@ -60,7 +60,7 @@ export const coreOps: ZodOpenApiPathsObject = {
|
||||
description: "Product attached successfully",
|
||||
content: {
|
||||
"application/json": {
|
||||
schema: AttachResultSchema,
|
||||
schema: AttachResponseV0Schema,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -73,12 +73,12 @@ export const coreOps: ZodOpenApiPathsObject = {
|
||||
description: checkoutJsDoc,
|
||||
tags: ["core"],
|
||||
requestBody: {
|
||||
content: { "application/json": { schema: ExtCheckoutParamsSchema } },
|
||||
content: { "application/json": { schema: CheckoutParamsV0Schema } },
|
||||
},
|
||||
responses: {
|
||||
"200": {
|
||||
description: "200 OK",
|
||||
content: { "application/json": { schema: CheckoutResponseSchema } },
|
||||
content: { "application/json": { schema: CheckoutResponseV0Schema } },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -61,7 +61,7 @@ const OPENAPI_1_2_0 = createDocument(
|
||||
|
||||
servers: [
|
||||
{
|
||||
url: "https://api.useautumn.com",
|
||||
url: "https://api.useautumn.com/v1",
|
||||
description: "Production server",
|
||||
},
|
||||
],
|
||||
@@ -4,45 +4,6 @@ import { EntityDataSchema } from "../../common/entityData.js";
|
||||
import { FeatureQuantitySchema } from "../common/featureQuantities.js";
|
||||
import { PlanOverrideSchema } from "../common/planOverride.js";
|
||||
|
||||
// product_ids: z
|
||||
// .array(z.string())
|
||||
// .min(1)
|
||||
// .nullish()
|
||||
// .describe(
|
||||
// "Can be used to attach multiple products to the customer at once. For example, attaching a main product and an add-on.",
|
||||
// ),
|
||||
|
||||
// Overrides:
|
||||
// // free_trial: z
|
||||
// .boolean()
|
||||
// .optional()
|
||||
// .describe(
|
||||
// "If the product has a free trial, this field can be used to disable it when attaching (by passing in false)",
|
||||
// ),
|
||||
|
||||
// force_checkout: z
|
||||
// .boolean()
|
||||
// .optional()
|
||||
// .describe(
|
||||
// "Always return a Stripe Checkout URL, even if the customer's card is already on file",
|
||||
// ),
|
||||
|
||||
// products: z.array(ProductOptions).nullish(), [got rid of products lol]
|
||||
// customer_data: CustomerDataSchema.nullish(), // For safety
|
||||
|
||||
/*
|
||||
Notes:
|
||||
- free_trial: false -> plan_override.free_trial: false
|
||||
- New behaviour for checkout -> Always force checkout (?)
|
||||
|
||||
// Custom Product
|
||||
// is_custom: z.boolean().optional(),
|
||||
// items: z.array(ProductItemSchema).optional(),
|
||||
|
||||
|
||||
// setup_payment: z.boolean().optional(),
|
||||
*/
|
||||
|
||||
export const ExtCheckoutParamsV1Schema = z
|
||||
.object({
|
||||
// Customer / Entity Info
|
||||
@@ -78,15 +39,3 @@ export const CheckoutParamsV1Schema = ExtCheckoutParamsV1Schema.extend({
|
||||
});
|
||||
|
||||
export type CheckoutParamsV1 = z.infer<typeof CheckoutParamsV1Schema>;
|
||||
|
||||
// // Override free_trial to support CreateFreeTrialSchema
|
||||
// free_trial: CreateFreeTrialSchema.or(z.boolean()).optional(),
|
||||
|
||||
// // New Version
|
||||
// version: z.number().optional(),
|
||||
|
||||
// // Others
|
||||
// metadata: z.any().optional(),
|
||||
// billing_cycle_anchor: z.number().optional(),
|
||||
// enable_product_immediately: z.boolean().optional(),
|
||||
// finalize_invoice: z.boolean().optional(),
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { ExtAttachBodySchema, ExtCheckoutParamsSchema } from "@api/models.js";
|
||||
import {
|
||||
createJSDocDescription,
|
||||
docLink,
|
||||
@@ -13,6 +12,7 @@ import {
|
||||
QueryParamsSchema,
|
||||
SetupPaymentParamsSchema,
|
||||
} from "../core/coreOpModels.js";
|
||||
import { ExtAttachBodyV0Schema, ExtCheckoutParamsV0Schema } from "../models.js";
|
||||
/**
|
||||
* Centralized JSDoc declarations for all core API methods.
|
||||
* These are used by the OpenAPI spec generator and propagate to SDK documentation.
|
||||
@@ -23,7 +23,7 @@ export const attachJsDoc = createJSDocDescription({
|
||||
"Enables a product for a customer and processes payment if their payment method is already on file.",
|
||||
whenToUse:
|
||||
"Use this when the customer already has a payment method saved. For new customers without payment info, use `checkout` instead.",
|
||||
body: ExtAttachBodySchema,
|
||||
body: ExtAttachBodyV0Schema,
|
||||
examples: [
|
||||
example({
|
||||
values: {
|
||||
@@ -47,7 +47,7 @@ export const checkoutJsDoc = createJSDocDescription({
|
||||
"Creates a checkout session for a customer to purchase a product with payment collection.",
|
||||
whenToUse:
|
||||
"Use this for new customers or when payment info is needed. For customers with existing payment methods, use `attach` instead.",
|
||||
body: ExtCheckoutParamsSchema,
|
||||
body: ExtCheckoutParamsV0Schema,
|
||||
examples: [
|
||||
example({
|
||||
values: {
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
// import { ApiProductItemSchema } from "@api/products/planFeature/previousVersions/apiProductItem.js";
|
||||
// import { ApiProductSchema } from "@api/products/previousVersions/apiProduct.js";
|
||||
// import { FeatureOptionsSchema } from "@models/cusProductModels/cusProductModels.js";
|
||||
// import { z } from "zod/v4";
|
||||
// import { AttachBodySchema, ExtAttachBodySchema } from "./attachModels.js";
|
||||
|
||||
// export const ExtCheckoutParamsSchema = ExtAttachBodySchema.extend({
|
||||
// setup_payment: z.boolean().optional(),
|
||||
// }).meta({
|
||||
// description:
|
||||
// "Returns a Stripe Checkout URL for the customer to make a payment, or returns payment confirmation information.",
|
||||
// });
|
||||
|
||||
// export const CheckoutParamsSchema = AttachBodySchema.extend({
|
||||
// // skip_checkout: z.boolean().optional(),
|
||||
// setup_payment: z.boolean().optional(),
|
||||
// });
|
||||
|
||||
// // RESULT
|
||||
// export const CheckoutLineSchema = z.object({
|
||||
// description: z.string(),
|
||||
// amount: z.number(),
|
||||
// item: ApiProductItemSchema.nullish(),
|
||||
// });
|
||||
|
||||
// export const CheckoutResponseSchema = z.object({
|
||||
// url: z.string().nullish(),
|
||||
// customer_id: z.string(),
|
||||
// lines: z.array(CheckoutLineSchema),
|
||||
// product: ApiProductSchema.nullish(),
|
||||
// current_product: ApiProductSchema.nullish(),
|
||||
// options: z.array(FeatureOptionsSchema).nullish(),
|
||||
// total: z.number().nullish(),
|
||||
// currency: z.string().nullish(),
|
||||
// has_prorations: z.boolean().nullish(),
|
||||
// next_cycle: z
|
||||
// .object({
|
||||
// starts_at: z.number(),
|
||||
// total: z.number(),
|
||||
// })
|
||||
// .nullish(),
|
||||
// });
|
||||
|
||||
// export type CheckoutLine = z.infer<typeof CheckoutLineSchema>;
|
||||
// export type CheckoutParams = z.infer<typeof CheckoutParamsSchema>;
|
||||
@@ -1,213 +0,0 @@
|
||||
// import {
|
||||
// AttachResultSchema,
|
||||
// CheckoutResponseSchema,
|
||||
// ExtAttachBodySchema,
|
||||
// ExtCheckoutParamsSchema,
|
||||
// } from "@api/models.js";
|
||||
// import type { ZodOpenApiPathsObject } from "zod-openapi";
|
||||
// import { SetUsageParamsSchema } from "../balances/usageModels.js";
|
||||
// import { SuccessResponseSchema } from "../common/commonResponses.js";
|
||||
// import {
|
||||
// attachJsDoc,
|
||||
// billingPortalJsDoc,
|
||||
// cancelJsDoc,
|
||||
// checkoutJsDoc,
|
||||
// queryJsDoc,
|
||||
// setUsageJsDoc,
|
||||
// setupPaymentJsDoc,
|
||||
// } from "../common/jsDocs.js";
|
||||
// // import { CheckParamsSchema, CheckResultSchema } from "./checkModels.js";
|
||||
// import {
|
||||
// BillingPortalParamsSchema,
|
||||
// BillingPortalResultSchema,
|
||||
// CancelBodySchema,
|
||||
// CancelResultSchema,
|
||||
// QueryParamsSchema,
|
||||
// QueryResultSchema,
|
||||
// SetupPaymentParamsSchema,
|
||||
// SetupPaymentResultSchema,
|
||||
// } from "./coreOpModels.js";
|
||||
|
||||
// export const coreOps: ZodOpenApiPathsObject = {
|
||||
// "/attach": {
|
||||
// post: {
|
||||
// summary: "Attach Product",
|
||||
// description: attachJsDoc,
|
||||
|
||||
// tags: ["core"],
|
||||
// requestBody: {
|
||||
// content: {
|
||||
// "application/json": {
|
||||
// schema: ExtAttachBodySchema,
|
||||
// examples: {
|
||||
// basic: {
|
||||
// summary: "Attach a product immediately",
|
||||
// description:
|
||||
// "Enable a product for a customer with immediate activation",
|
||||
// value: {
|
||||
// customer_id: "cus_123",
|
||||
// product_id: "pro_plan",
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// responses: {
|
||||
// "200": {
|
||||
// description: "Product attached successfully",
|
||||
// content: {
|
||||
// "application/json": {
|
||||
// schema: AttachResultSchema,
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// "/checkout": {
|
||||
// post: {
|
||||
// summary: "Checkout",
|
||||
// description: checkoutJsDoc,
|
||||
// tags: ["core"],
|
||||
// requestBody: {
|
||||
// content: { "application/json": { schema: ExtCheckoutParamsSchema } },
|
||||
// },
|
||||
// responses: {
|
||||
// "200": {
|
||||
// description: "200 OK",
|
||||
// content: { "application/json": { schema: CheckoutResponseSchema } },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// "/cancel": {
|
||||
// post: {
|
||||
// summary: "Cancel Product",
|
||||
// description: cancelJsDoc,
|
||||
// tags: ["core"],
|
||||
// requestBody: {
|
||||
// content: {
|
||||
// "application/json": { schema: CancelBodySchema },
|
||||
// },
|
||||
// },
|
||||
// responses: {
|
||||
// "200": {
|
||||
// description: "200 OK",
|
||||
// content: { "application/json": { schema: CancelResultSchema } },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// // "/track": {
|
||||
// // post: {
|
||||
// // summary: "Track Event",
|
||||
// // description: trackJsDoc,
|
||||
// // tags: ["core"],
|
||||
// // requestBody: {
|
||||
// // content: {
|
||||
// // "application/json": { schema: TrackParamsSchema },
|
||||
// // },
|
||||
// // },
|
||||
// // responses: {
|
||||
// // "200": {
|
||||
// // description: "200 OK",
|
||||
// // content: { "application/json": { schema: TrackResponseSchema } },
|
||||
// // },
|
||||
// // },
|
||||
// // },
|
||||
// // },
|
||||
// "/query": {
|
||||
// post: {
|
||||
// summary: "Query Analytics",
|
||||
// description: queryJsDoc,
|
||||
// tags: ["core"],
|
||||
// requestBody: {
|
||||
// content: {
|
||||
// "application/json": { schema: QueryParamsSchema },
|
||||
// },
|
||||
// },
|
||||
// responses: {
|
||||
// "200": {
|
||||
// description: "200 OK",
|
||||
// content: { "application/json": { schema: QueryResultSchema } },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// // "/check": {
|
||||
// // post: {
|
||||
// // summary: "Check Feature Access",
|
||||
// // description: checkJsDoc,
|
||||
// // tags: ["core"],
|
||||
// // requestBody: {
|
||||
// // content: {
|
||||
// // "application/json": { schema: CheckParamsSchema },
|
||||
// // },
|
||||
// // },
|
||||
// // responses: {
|
||||
// // "200": {
|
||||
// // description: "200 OK",
|
||||
// // content: { "application/json": { schema: CheckResultSchema } },
|
||||
// // },
|
||||
// // },
|
||||
// // },
|
||||
// // },
|
||||
// "/setup_payment": {
|
||||
// post: {
|
||||
// summary: "Setup Payment Method",
|
||||
// description: setupPaymentJsDoc,
|
||||
// tags: ["core"],
|
||||
// requestBody: {
|
||||
// content: {
|
||||
// "application/json": { schema: SetupPaymentParamsSchema },
|
||||
// },
|
||||
// },
|
||||
// responses: {
|
||||
// "200": {
|
||||
// description: "200 OK",
|
||||
// content: { "application/json": { schema: SetupPaymentResultSchema } },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// "/billing_portal": {
|
||||
// post: {
|
||||
// summary: "Create Billing Portal Session",
|
||||
// description: billingPortalJsDoc,
|
||||
// tags: ["core"],
|
||||
// requestBody: {
|
||||
// content: {
|
||||
// "application/json": { schema: BillingPortalParamsSchema },
|
||||
// },
|
||||
// },
|
||||
// responses: {
|
||||
// "200": {
|
||||
// description: "200 OK",
|
||||
// content: {
|
||||
// "application/json": { schema: BillingPortalResultSchema },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
|
||||
// "/usage": {
|
||||
// post: {
|
||||
// summary: "Set Usage",
|
||||
// description: setUsageJsDoc,
|
||||
// tags: ["core"],
|
||||
// requestBody: {
|
||||
// content: {
|
||||
// "application/json": { schema: SetUsageParamsSchema },
|
||||
// },
|
||||
// },
|
||||
// responses: {
|
||||
// "200": {
|
||||
// description: "200 OK",
|
||||
// content: { "application/json": { schema: SuccessResponseSchema } },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// },
|
||||
// };
|
||||
@@ -6,7 +6,7 @@ export enum CusExpandV0 {
|
||||
Entities = "entities",
|
||||
Referrals = "referrals",
|
||||
PaymentMethod = "payment_method",
|
||||
UpcomingInvoice = "upcoming_invoice",
|
||||
// UpcomingInvoice = "upcoming_invoice",
|
||||
}
|
||||
|
||||
// New customer expand options!
|
||||
|
||||
Reference in New Issue
Block a user