@paid-ai/paid-node 1.0.1-alpha0 → 1.0.1-alpha2
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/cjs/Client.js +2 -2
- package/dist/cjs/api/resources/plans/client/Client.d.ts +70 -0
- package/dist/cjs/api/resources/plans/client/Client.js +282 -2
- package/dist/cjs/api/resources/plans/client/requests/PlansSubscribeRequest.d.ts +13 -0
- package/dist/cjs/api/resources/plans/client/requests/PlansSubscribeRequest.js +3 -0
- package/dist/cjs/api/resources/plans/client/requests/PlansUnsubscribeRequest.d.ts +10 -0
- package/dist/cjs/api/resources/plans/client/requests/PlansUnsubscribeRequest.js +3 -0
- package/dist/cjs/api/resources/plans/client/requests/PlansUpgradeRequest.d.ts +16 -0
- package/dist/cjs/api/resources/plans/client/requests/PlansUpgradeRequest.js +3 -0
- package/dist/cjs/api/resources/plans/client/requests/index.d.ts +3 -0
- package/dist/cjs/api/resources/usage/client/Client.d.ts +3 -3
- package/dist/cjs/api/resources/usage/client/Client.js +3 -3
- package/dist/cjs/api/resources/usage/client/requests/UsageRecordBulkV2Request.d.ts +3 -3
- package/dist/cjs/api/types/Plan.d.ts +33 -0
- package/dist/cjs/api/types/Plan.js +19 -0
- package/dist/cjs/api/types/PlanWithFeatures.d.ts +67 -0
- package/dist/cjs/api/types/PlanWithFeatures.js +22 -0
- package/dist/cjs/api/types/SignalV2.d.ts +5 -5
- package/dist/cjs/api/types/index.d.ts +1 -0
- package/dist/cjs/api/types/index.js +1 -0
- package/dist/cjs/integrations/adapters/expressjs/index.d.ts +2 -2
- package/dist/cjs/integrations/adapters/expressjs/index.js +2 -1
- package/dist/cjs/integrations/adapters/expressjs/routes.d.ts +16 -0
- package/dist/cjs/integrations/adapters/expressjs/routes.js +28 -0
- package/dist/cjs/integrations/adapters/nextjs/index.d.ts +1 -1
- package/dist/cjs/integrations/adapters/nextjs/index.js +6 -1
- package/dist/cjs/integrations/adapters/nextjs/routes.d.ts +75 -0
- package/dist/cjs/integrations/adapters/nextjs/routes.js +101 -0
- package/dist/cjs/integrations/controllers/index.d.ts +1 -0
- package/dist/cjs/integrations/controllers/index.js +13 -1
- package/dist/cjs/integrations/controllers/orders.js +52 -17
- package/dist/cjs/integrations/controllers/plans.d.ts +208 -0
- package/dist/cjs/integrations/controllers/plans.js +365 -0
- package/dist/cjs/integrations/types.d.ts +5 -2
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Client.mjs +2 -2
- package/dist/esm/api/resources/plans/client/Client.d.mts +70 -0
- package/dist/esm/api/resources/plans/client/Client.mjs +282 -2
- package/dist/esm/api/resources/plans/client/requests/PlansSubscribeRequest.d.mts +13 -0
- package/dist/esm/api/resources/plans/client/requests/PlansSubscribeRequest.mjs +2 -0
- package/dist/esm/api/resources/plans/client/requests/PlansUnsubscribeRequest.d.mts +10 -0
- package/dist/esm/api/resources/plans/client/requests/PlansUnsubscribeRequest.mjs +2 -0
- package/dist/esm/api/resources/plans/client/requests/PlansUpgradeRequest.d.mts +16 -0
- package/dist/esm/api/resources/plans/client/requests/PlansUpgradeRequest.mjs +2 -0
- package/dist/esm/api/resources/plans/client/requests/index.d.mts +3 -0
- package/dist/esm/api/resources/usage/client/Client.d.mts +3 -3
- package/dist/esm/api/resources/usage/client/Client.mjs +3 -3
- package/dist/esm/api/resources/usage/client/requests/UsageRecordBulkV2Request.d.mts +3 -3
- package/dist/esm/api/types/Plan.d.mts +33 -0
- package/dist/esm/api/types/Plan.mjs +18 -1
- package/dist/esm/api/types/PlanWithFeatures.d.mts +67 -0
- package/dist/esm/api/types/PlanWithFeatures.mjs +19 -0
- package/dist/esm/api/types/SignalV2.d.mts +5 -5
- package/dist/esm/api/types/index.d.mts +1 -0
- package/dist/esm/api/types/index.mjs +1 -0
- package/dist/esm/integrations/adapters/expressjs/index.d.mts +2 -2
- package/dist/esm/integrations/adapters/expressjs/index.mjs +2 -2
- package/dist/esm/integrations/adapters/expressjs/routes.d.mts +16 -0
- package/dist/esm/integrations/adapters/expressjs/routes.mjs +27 -0
- package/dist/esm/integrations/adapters/nextjs/index.d.mts +1 -1
- package/dist/esm/integrations/adapters/nextjs/index.mjs +1 -1
- package/dist/esm/integrations/adapters/nextjs/routes.d.mts +75 -0
- package/dist/esm/integrations/adapters/nextjs/routes.mjs +96 -0
- package/dist/esm/integrations/controllers/index.d.mts +1 -0
- package/dist/esm/integrations/controllers/index.mjs +1 -0
- package/dist/esm/integrations/controllers/orders.mjs +52 -17
- package/dist/esm/integrations/controllers/plans.d.mts +208 -0
- package/dist/esm/integrations/controllers/plans.mjs +353 -0
- package/dist/esm/integrations/types.d.mts +5 -2
- package/dist/esm/version.d.mts +1 -1
- package/dist/esm/version.mjs +1 -1
- package/package.json +36 -2
- package/reference.md +280 -3
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A plan with its features (product-attribute pairs) for display
|
|
3
|
+
*/
|
|
4
|
+
export interface PlanWithFeatures {
|
|
5
|
+
/** The unique identifier of the plan */
|
|
6
|
+
id: string;
|
|
7
|
+
/** The name of the plan */
|
|
8
|
+
name: string;
|
|
9
|
+
/** The description of the plan */
|
|
10
|
+
description?: string;
|
|
11
|
+
/** The type of plan (flat for fixed pricing, usage for usage-based, credit for prepaid credits) */
|
|
12
|
+
type: PlanWithFeatures.Type;
|
|
13
|
+
/** The pricing configuration for the plan */
|
|
14
|
+
pricing: PlanWithFeatures.Pricing;
|
|
15
|
+
/** When the plan was created */
|
|
16
|
+
createdAt: string;
|
|
17
|
+
/** When the plan was last updated */
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
/** The ID of the next plan in the sequence */
|
|
20
|
+
nextPlanId?: string;
|
|
21
|
+
/** The ID of the previous plan in the sequence */
|
|
22
|
+
prevPlanId?: string;
|
|
23
|
+
/** The features (product-attribute pairs) included in this plan */
|
|
24
|
+
features: PlanWithFeatures.Features.Item[];
|
|
25
|
+
}
|
|
26
|
+
export declare namespace PlanWithFeatures {
|
|
27
|
+
/** The type of plan (flat for fixed pricing, usage for usage-based, credit for prepaid credits) */
|
|
28
|
+
const Type: {
|
|
29
|
+
readonly Flat: "flat";
|
|
30
|
+
readonly Usage: "usage";
|
|
31
|
+
readonly Credit: "credit";
|
|
32
|
+
};
|
|
33
|
+
type Type = (typeof Type)[keyof typeof Type];
|
|
34
|
+
/**
|
|
35
|
+
* The pricing configuration for the plan
|
|
36
|
+
*/
|
|
37
|
+
interface Pricing {
|
|
38
|
+
/** The currency code (e.g., "USD", "EUR") */
|
|
39
|
+
currency: string;
|
|
40
|
+
/** The fixed amount for flat plans (in smallest currency unit, e.g., cents) */
|
|
41
|
+
amount?: number;
|
|
42
|
+
/** The billing frequency for the plan */
|
|
43
|
+
billingFrequency: Pricing.BillingFrequency;
|
|
44
|
+
/** Custom billing frequency in months (if not using standard frequencies) */
|
|
45
|
+
billingFrequencyCustomMonths?: number;
|
|
46
|
+
}
|
|
47
|
+
namespace Pricing {
|
|
48
|
+
/** The billing frequency for the plan */
|
|
49
|
+
const BillingFrequency: {
|
|
50
|
+
readonly Monthly: "monthly";
|
|
51
|
+
readonly Quarterly: "quarterly";
|
|
52
|
+
readonly Annual: "annual";
|
|
53
|
+
};
|
|
54
|
+
type BillingFrequency = (typeof BillingFrequency)[keyof typeof BillingFrequency];
|
|
55
|
+
}
|
|
56
|
+
type Features = Features.Item[];
|
|
57
|
+
namespace Features {
|
|
58
|
+
interface Item {
|
|
59
|
+
/** The name of the product */
|
|
60
|
+
productName: string;
|
|
61
|
+
/** The name of the product attribute */
|
|
62
|
+
attributeName: string;
|
|
63
|
+
/** The pricing configuration for this feature */
|
|
64
|
+
pricing: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// This file was auto-generated by Fern from our API Definition.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PlanWithFeatures = void 0;
|
|
5
|
+
var PlanWithFeatures;
|
|
6
|
+
(function (PlanWithFeatures) {
|
|
7
|
+
/** The type of plan (flat for fixed pricing, usage for usage-based, credit for prepaid credits) */
|
|
8
|
+
PlanWithFeatures.Type = {
|
|
9
|
+
Flat: "flat",
|
|
10
|
+
Usage: "usage",
|
|
11
|
+
Credit: "credit",
|
|
12
|
+
};
|
|
13
|
+
let Pricing;
|
|
14
|
+
(function (Pricing) {
|
|
15
|
+
/** The billing frequency for the plan */
|
|
16
|
+
Pricing.BillingFrequency = {
|
|
17
|
+
Monthly: "monthly",
|
|
18
|
+
Quarterly: "quarterly",
|
|
19
|
+
Annual: "annual",
|
|
20
|
+
};
|
|
21
|
+
})(Pricing = PlanWithFeatures.Pricing || (PlanWithFeatures.Pricing = {}));
|
|
22
|
+
})(PlanWithFeatures || (exports.PlanWithFeatures = PlanWithFeatures = {}));
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* V2 signal schema with clean field names.
|
|
2
|
+
* V2 signal schema with clean field names. IMPORTANT: Exactly one customer ID field (customer_id OR external_customer_id) and exactly one product ID field (product_id OR external_product_id) must be provided per signal.
|
|
3
3
|
*/
|
|
4
4
|
export interface SignalV2 {
|
|
5
5
|
/** The name of the event being tracked */
|
|
6
6
|
event_name: string;
|
|
7
|
-
/** Paid's
|
|
7
|
+
/** Paid's display ID for the product (e.g., prod_abc123). Cannot be used with external_product_id. Either this or external_product_id is required. */
|
|
8
8
|
product_id?: string;
|
|
9
|
-
/** Your system's product ID.
|
|
9
|
+
/** Your system's product ID. Cannot be used with product_id. Either this or product_id is required. */
|
|
10
10
|
external_product_id?: string;
|
|
11
|
-
/** Paid's
|
|
11
|
+
/** Paid's display ID for the customer (e.g., cus_xyz789). Cannot be used with external_customer_id. Either this or external_customer_id is required. */
|
|
12
12
|
customer_id?: string;
|
|
13
|
-
/** Your system's customer ID.
|
|
13
|
+
/** Your system's customer ID. Cannot be used with customer_id. Either this or customer_id is required. */
|
|
14
14
|
external_customer_id?: string;
|
|
15
15
|
/** Optional additional data/metadata for the signal */
|
|
16
16
|
data?: Record<string, unknown>;
|
|
@@ -30,6 +30,7 @@ export * from "./PaginationMeta.js";
|
|
|
30
30
|
export * from "./PaymentMethod.js";
|
|
31
31
|
export * from "./Plan.js";
|
|
32
32
|
export * from "./PlanGroup.js";
|
|
33
|
+
export * from "./PlanWithFeatures.js";
|
|
33
34
|
export * from "./PricePoint.js";
|
|
34
35
|
export * from "./Pricing.js";
|
|
35
36
|
export * from "./PricingModelType.js";
|
|
@@ -46,6 +46,7 @@ __exportStar(require("./PaginationMeta.js"), exports);
|
|
|
46
46
|
__exportStar(require("./PaymentMethod.js"), exports);
|
|
47
47
|
__exportStar(require("./Plan.js"), exports);
|
|
48
48
|
__exportStar(require("./PlanGroup.js"), exports);
|
|
49
|
+
__exportStar(require("./PlanWithFeatures.js"), exports);
|
|
49
50
|
__exportStar(require("./PricePoint.js"), exports);
|
|
50
51
|
__exportStar(require("./Pricing.js"), exports);
|
|
51
52
|
__exportStar(require("./PricingModelType.js"), exports);
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* ExpressJS integration for Paid SDK
|
|
3
3
|
* Drop-in handlers for ExpressJS controllers using Express Request/Response
|
|
4
4
|
*/
|
|
5
|
-
export { expressjsAdapter, createExpressJSResponseContext } from "./base-adapter.js";
|
|
6
|
-
export { createActivateOrderSyncRoute, createContactsRoute, createCustomerInvoicesRoute, createCustomersRoute, createGetCustomerRoute, createOrdersRoute, createPayInvoiceRoute, createProvisioningRoute, createSetupIntentRoute, type ActivateOrderSyncRouteConfig, type OrdersRouteConfig, type ProvisioningRouteConfig, type SetupIntentRouteConfig, } from "./routes.js";
|
|
5
|
+
export { expressjsAdapter, createExpressJSResponseContext, } from "./base-adapter.js";
|
|
6
|
+
export { createActivateOrderSyncRoute, createContactsRoute, createCustomerInvoicesRoute, createCustomersRoute, createGetCustomerRoute, createGetPlanGroupByIdRoute, createOrdersRoute, createPayInvoiceRoute, createProvisioningRoute, createSetupIntentRoute, type ActivateOrderSyncRouteConfig, type OrdersRouteConfig, type ProvisioningRouteConfig, type SetupIntentRouteConfig, } from "./routes.js";
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Drop-in handlers for ExpressJS controllers using Express Request/Response
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.createSetupIntentRoute = exports.createProvisioningRoute = exports.createPayInvoiceRoute = exports.createOrdersRoute = exports.createGetCustomerRoute = exports.createCustomersRoute = exports.createCustomerInvoicesRoute = exports.createContactsRoute = exports.createActivateOrderSyncRoute = exports.createExpressJSResponseContext = exports.expressjsAdapter = void 0;
|
|
7
|
+
exports.createSetupIntentRoute = exports.createProvisioningRoute = exports.createPayInvoiceRoute = exports.createOrdersRoute = exports.createGetPlanGroupByIdRoute = exports.createGetCustomerRoute = exports.createCustomersRoute = exports.createCustomerInvoicesRoute = exports.createContactsRoute = exports.createActivateOrderSyncRoute = exports.createExpressJSResponseContext = exports.expressjsAdapter = void 0;
|
|
8
8
|
var base_adapter_js_1 = require("./base-adapter.js");
|
|
9
9
|
Object.defineProperty(exports, "expressjsAdapter", { enumerable: true, get: function () { return base_adapter_js_1.expressjsAdapter; } });
|
|
10
10
|
Object.defineProperty(exports, "createExpressJSResponseContext", { enumerable: true, get: function () { return base_adapter_js_1.createExpressJSResponseContext; } });
|
|
@@ -14,6 +14,7 @@ Object.defineProperty(exports, "createContactsRoute", { enumerable: true, get: f
|
|
|
14
14
|
Object.defineProperty(exports, "createCustomerInvoicesRoute", { enumerable: true, get: function () { return routes_js_1.createCustomerInvoicesRoute; } });
|
|
15
15
|
Object.defineProperty(exports, "createCustomersRoute", { enumerable: true, get: function () { return routes_js_1.createCustomersRoute; } });
|
|
16
16
|
Object.defineProperty(exports, "createGetCustomerRoute", { enumerable: true, get: function () { return routes_js_1.createGetCustomerRoute; } });
|
|
17
|
+
Object.defineProperty(exports, "createGetPlanGroupByIdRoute", { enumerable: true, get: function () { return routes_js_1.createGetPlanGroupByIdRoute; } });
|
|
17
18
|
Object.defineProperty(exports, "createOrdersRoute", { enumerable: true, get: function () { return routes_js_1.createOrdersRoute; } });
|
|
18
19
|
Object.defineProperty(exports, "createPayInvoiceRoute", { enumerable: true, get: function () { return routes_js_1.createPayInvoiceRoute; } });
|
|
19
20
|
Object.defineProperty(exports, "createProvisioningRoute", { enumerable: true, get: function () { return routes_js_1.createProvisioningRoute; } });
|
|
@@ -161,4 +161,20 @@ export interface SetupIntentRouteConfig extends BaseHandlerConfig {
|
|
|
161
161
|
* ```
|
|
162
162
|
*/
|
|
163
163
|
export declare function createSetupIntentRoute(config?: SetupIntentRouteConfig): ExpressHandler;
|
|
164
|
+
/**
|
|
165
|
+
* Create an Express handler for getting a plan group by ID
|
|
166
|
+
*
|
|
167
|
+
* @param config - Handler configuration options
|
|
168
|
+
* @returns Express route handler function
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* import express from 'express';
|
|
173
|
+
* import { createGetPlanGroupByIdRoute } from '@paid-ai/paid-node/integrations/express';
|
|
174
|
+
*
|
|
175
|
+
* const app = express();
|
|
176
|
+
* app.get('/paid/plans/:planGroupId', createGetPlanGroupByIdRoute());
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
export declare function createGetPlanGroupByIdRoute(config?: BaseHandlerConfig): (req: Request, res: Response) => Promise<any>;
|
|
164
180
|
export {};
|
|
@@ -13,6 +13,7 @@ exports.createOrdersRoute = createOrdersRoute;
|
|
|
13
13
|
exports.createPayInvoiceRoute = createPayInvoiceRoute;
|
|
14
14
|
exports.createProvisioningRoute = createProvisioningRoute;
|
|
15
15
|
exports.createSetupIntentRoute = createSetupIntentRoute;
|
|
16
|
+
exports.createGetPlanGroupByIdRoute = createGetPlanGroupByIdRoute;
|
|
16
17
|
const base_adapter_js_1 = require("./base-adapter.js");
|
|
17
18
|
const contacts_js_1 = require("../../controllers/contacts.js");
|
|
18
19
|
const invoices_js_1 = require("../../controllers/invoices.js");
|
|
@@ -20,6 +21,7 @@ const customers_js_1 = require("../../controllers/customers.js");
|
|
|
20
21
|
const orders_js_1 = require("../../controllers/orders.js");
|
|
21
22
|
const provision_users_js_1 = require("../../controllers/provision-users.js");
|
|
22
23
|
const billing_js_1 = require("../../controllers/billing.js");
|
|
24
|
+
const plans_js_1 = require("../../controllers/plans.js");
|
|
23
25
|
/**
|
|
24
26
|
* Helper to extract headers from Express Request
|
|
25
27
|
*/
|
|
@@ -276,3 +278,29 @@ function createSetupIntentRoute(config = {}) {
|
|
|
276
278
|
};
|
|
277
279
|
return route;
|
|
278
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* Create an Express handler for getting a plan group by ID
|
|
283
|
+
*
|
|
284
|
+
* @param config - Handler configuration options
|
|
285
|
+
* @returns Express route handler function
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* import express from 'express';
|
|
290
|
+
* import { createGetPlanGroupByIdRoute } from '@paid-ai/paid-node/integrations/express';
|
|
291
|
+
*
|
|
292
|
+
* const app = express();
|
|
293
|
+
* app.get('/paid/plans/:planGroupId', createGetPlanGroupByIdRoute());
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
296
|
+
function createGetPlanGroupByIdRoute(config = {}) {
|
|
297
|
+
const handler = (0, plans_js_1.createGetPlanGroupByIdHandler)();
|
|
298
|
+
return (req, res) => {
|
|
299
|
+
return handler({
|
|
300
|
+
body: req.body,
|
|
301
|
+
headers: extractHeaders(req),
|
|
302
|
+
method: "GET",
|
|
303
|
+
params: req.params,
|
|
304
|
+
}, (0, base_adapter_js_1.createExpressJSResponseContext)(res), config);
|
|
305
|
+
};
|
|
306
|
+
}
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Next.js API Route handlers for Paid integration
|
|
3
3
|
* Drop-in handlers for Next.js App Router
|
|
4
4
|
*/
|
|
5
|
-
export { createActivateOrderSyncRoute, createContactsRoute, createCustomerInvoicesRoute, createCustomersRoute, createGetCustomerRoute, createOrdersRoute, createPayInvoiceRoute, createProvisioningRoute, createSetupIntentRoute, type ActivateOrderSyncRouteConfig, type OrdersRouteConfig, type ProvisioningRouteConfig, type SetupIntentRouteConfig, } from
|
|
5
|
+
export { createActivateOrderSyncRoute, createContactsRoute, createCustomerInvoicesRoute, createCustomersRoute, createGetCustomerRoute, createGetPlanGroupByIdRoute, createGetGroupPlansRoute, createOrdersRoute, createPayInvoiceRoute, createProvisioningRoute, createSetupIntentRoute, createSubscribeRoute, createUnsubscribeRoute, createUpgradeRoute, type ActivateOrderSyncRouteConfig, type OrdersRouteConfig, type ProvisioningRouteConfig, type SetupIntentRouteConfig, } from "./routes.js";
|
|
@@ -4,14 +4,19 @@
|
|
|
4
4
|
* Drop-in handlers for Next.js App Router
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.createSetupIntentRoute = exports.createProvisioningRoute = exports.createPayInvoiceRoute = exports.createOrdersRoute = exports.createGetCustomerRoute = exports.createCustomersRoute = exports.createCustomerInvoicesRoute = exports.createContactsRoute = exports.createActivateOrderSyncRoute = void 0;
|
|
7
|
+
exports.createUpgradeRoute = exports.createUnsubscribeRoute = exports.createSubscribeRoute = exports.createSetupIntentRoute = exports.createProvisioningRoute = exports.createPayInvoiceRoute = exports.createOrdersRoute = exports.createGetGroupPlansRoute = exports.createGetPlanGroupByIdRoute = exports.createGetCustomerRoute = exports.createCustomersRoute = exports.createCustomerInvoicesRoute = exports.createContactsRoute = exports.createActivateOrderSyncRoute = void 0;
|
|
8
8
|
var routes_js_1 = require("./routes.js");
|
|
9
9
|
Object.defineProperty(exports, "createActivateOrderSyncRoute", { enumerable: true, get: function () { return routes_js_1.createActivateOrderSyncRoute; } });
|
|
10
10
|
Object.defineProperty(exports, "createContactsRoute", { enumerable: true, get: function () { return routes_js_1.createContactsRoute; } });
|
|
11
11
|
Object.defineProperty(exports, "createCustomerInvoicesRoute", { enumerable: true, get: function () { return routes_js_1.createCustomerInvoicesRoute; } });
|
|
12
12
|
Object.defineProperty(exports, "createCustomersRoute", { enumerable: true, get: function () { return routes_js_1.createCustomersRoute; } });
|
|
13
13
|
Object.defineProperty(exports, "createGetCustomerRoute", { enumerable: true, get: function () { return routes_js_1.createGetCustomerRoute; } });
|
|
14
|
+
Object.defineProperty(exports, "createGetPlanGroupByIdRoute", { enumerable: true, get: function () { return routes_js_1.createGetPlanGroupByIdRoute; } });
|
|
15
|
+
Object.defineProperty(exports, "createGetGroupPlansRoute", { enumerable: true, get: function () { return routes_js_1.createGetGroupPlansRoute; } });
|
|
14
16
|
Object.defineProperty(exports, "createOrdersRoute", { enumerable: true, get: function () { return routes_js_1.createOrdersRoute; } });
|
|
15
17
|
Object.defineProperty(exports, "createPayInvoiceRoute", { enumerable: true, get: function () { return routes_js_1.createPayInvoiceRoute; } });
|
|
16
18
|
Object.defineProperty(exports, "createProvisioningRoute", { enumerable: true, get: function () { return routes_js_1.createProvisioningRoute; } });
|
|
17
19
|
Object.defineProperty(exports, "createSetupIntentRoute", { enumerable: true, get: function () { return routes_js_1.createSetupIntentRoute; } });
|
|
20
|
+
Object.defineProperty(exports, "createSubscribeRoute", { enumerable: true, get: function () { return routes_js_1.createSubscribeRoute; } });
|
|
21
|
+
Object.defineProperty(exports, "createUnsubscribeRoute", { enumerable: true, get: function () { return routes_js_1.createUnsubscribeRoute; } });
|
|
22
|
+
Object.defineProperty(exports, "createUpgradeRoute", { enumerable: true, get: function () { return routes_js_1.createUpgradeRoute; } });
|
|
@@ -224,4 +224,79 @@ export interface SetupIntentRouteConfig extends BaseHandlerConfig {
|
|
|
224
224
|
* ```
|
|
225
225
|
*/
|
|
226
226
|
export declare function createSetupIntentRoute(config?: SetupIntentRouteConfig): NextJsHandler;
|
|
227
|
+
/**
|
|
228
|
+
* Create a Next.js API route handler for getting a plan group by ID
|
|
229
|
+
*
|
|
230
|
+
* @param config - Handler configuration options
|
|
231
|
+
* @returns Next.js route handler function
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```typescript
|
|
235
|
+
* // src/app/api/plans/[planGroupId]/route.ts
|
|
236
|
+
* import { createGetPlanGroupByIdRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
237
|
+
*
|
|
238
|
+
* export const GET = createGetPlanGroupByIdRoute();
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
export declare function createGetPlanGroupByIdRoute(config?: BaseHandlerConfig): (request: any, context?: any) => Promise<any>;
|
|
242
|
+
/**
|
|
243
|
+
* Create a Next.js API route handler for getting all plans in a plan group
|
|
244
|
+
*
|
|
245
|
+
* @param config - Handler configuration options
|
|
246
|
+
* @returns Next.js route handler function
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```typescript
|
|
250
|
+
* // src/app/api/plans/[planGroupId]/plans/route.ts
|
|
251
|
+
* import { createGetGroupPlansRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
252
|
+
*
|
|
253
|
+
* export const GET = createGetGroupPlansRoute();
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
export declare function createGetGroupPlansRoute(config?: BaseHandlerConfig): (request: any, context?: any) => Promise<any>;
|
|
257
|
+
/**
|
|
258
|
+
* Create a Next.js API route handler for subscribing a customer to a plan
|
|
259
|
+
*
|
|
260
|
+
* @param config - Handler configuration options
|
|
261
|
+
* @returns Next.js route handler function
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```typescript
|
|
265
|
+
* // src/app/api/plans/[planId]/subscribe/route.ts
|
|
266
|
+
* import { createSubscribeRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
267
|
+
*
|
|
268
|
+
* export const POST = createSubscribeRoute();
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
export declare function createSubscribeRoute(config?: BaseHandlerConfig): (request: any, context?: any) => Promise<any>;
|
|
272
|
+
/**
|
|
273
|
+
* Create a Next.js API route handler for unsubscribing a customer from a plan
|
|
274
|
+
*
|
|
275
|
+
* @param config - Handler configuration options
|
|
276
|
+
* @returns Next.js route handler function
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* ```typescript
|
|
280
|
+
* // src/app/api/plans/[planId]/unsubscribe/route.ts
|
|
281
|
+
* import { createUnsubscribeRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
282
|
+
*
|
|
283
|
+
* export const POST = createUnsubscribeRoute();
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
export declare function createUnsubscribeRoute(config?: BaseHandlerConfig): (request: any, context?: any) => Promise<any>;
|
|
287
|
+
/**
|
|
288
|
+
* Create a Next.js API route handler for upgrading a customer's plan
|
|
289
|
+
*
|
|
290
|
+
* @param config - Handler configuration options
|
|
291
|
+
* @returns Next.js route handler function
|
|
292
|
+
*
|
|
293
|
+
* @example
|
|
294
|
+
* ```typescript
|
|
295
|
+
* // src/app/api/plans/upgrade/route.ts
|
|
296
|
+
* import { createUpgradeRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
297
|
+
*
|
|
298
|
+
* export const POST = createUpgradeRoute();
|
|
299
|
+
* ```
|
|
300
|
+
*/
|
|
301
|
+
export declare function createUpgradeRoute(config?: BaseHandlerConfig): (request: any, context?: any) => Promise<any>;
|
|
227
302
|
export {};
|
|
@@ -9,6 +9,11 @@ exports.createOrdersRoute = createOrdersRoute;
|
|
|
9
9
|
exports.createPayInvoiceRoute = createPayInvoiceRoute;
|
|
10
10
|
exports.createProvisioningRoute = createProvisioningRoute;
|
|
11
11
|
exports.createSetupIntentRoute = createSetupIntentRoute;
|
|
12
|
+
exports.createGetPlanGroupByIdRoute = createGetPlanGroupByIdRoute;
|
|
13
|
+
exports.createGetGroupPlansRoute = createGetGroupPlansRoute;
|
|
14
|
+
exports.createSubscribeRoute = createSubscribeRoute;
|
|
15
|
+
exports.createUnsubscribeRoute = createUnsubscribeRoute;
|
|
16
|
+
exports.createUpgradeRoute = createUpgradeRoute;
|
|
12
17
|
const base_adapter_js_1 = require("./base-adapter.js");
|
|
13
18
|
const contacts_js_1 = require("../../controllers/contacts.js");
|
|
14
19
|
const invoices_js_1 = require("../../controllers/invoices.js");
|
|
@@ -16,6 +21,7 @@ const customers_js_1 = require("../../controllers/customers.js");
|
|
|
16
21
|
const orders_js_1 = require("../../controllers/orders.js");
|
|
17
22
|
const provision_users_js_1 = require("../../controllers/provision-users.js");
|
|
18
23
|
const billing_js_1 = require("../../controllers/billing.js");
|
|
24
|
+
const plans_js_1 = require("../../controllers/plans.js");
|
|
19
25
|
/**
|
|
20
26
|
* Create a Next.js API route handler for synchronous order activation
|
|
21
27
|
*
|
|
@@ -253,3 +259,98 @@ function createSetupIntentRoute(config = {}) {
|
|
|
253
259
|
const route = (request, context) => adaptedHandler(request, context, config);
|
|
254
260
|
return route;
|
|
255
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Create a Next.js API route handler for getting a plan group by ID
|
|
264
|
+
*
|
|
265
|
+
* @param config - Handler configuration options
|
|
266
|
+
* @returns Next.js route handler function
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* ```typescript
|
|
270
|
+
* // src/app/api/plans/[planGroupId]/route.ts
|
|
271
|
+
* import { createGetPlanGroupByIdRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
272
|
+
*
|
|
273
|
+
* export const GET = createGetPlanGroupByIdRoute();
|
|
274
|
+
* ```
|
|
275
|
+
*/
|
|
276
|
+
function createGetPlanGroupByIdRoute(config = {}) {
|
|
277
|
+
const handler = (0, plans_js_1.createGetPlanGroupByIdHandler)();
|
|
278
|
+
const adaptedHandler = (0, base_adapter_js_1.nextjsAdapter)(handler);
|
|
279
|
+
return (request, context) => adaptedHandler(request, context, config);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Create a Next.js API route handler for getting all plans in a plan group
|
|
283
|
+
*
|
|
284
|
+
* @param config - Handler configuration options
|
|
285
|
+
* @returns Next.js route handler function
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* // src/app/api/plans/[planGroupId]/plans/route.ts
|
|
290
|
+
* import { createGetGroupPlansRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
291
|
+
*
|
|
292
|
+
* export const GET = createGetGroupPlansRoute();
|
|
293
|
+
* ```
|
|
294
|
+
*/
|
|
295
|
+
function createGetGroupPlansRoute(config = {}) {
|
|
296
|
+
const handler = (0, plans_js_1.createGetGroupPlansHandler)();
|
|
297
|
+
const adaptedHandler = (0, base_adapter_js_1.nextjsAdapter)(handler);
|
|
298
|
+
return (request, context) => adaptedHandler(request, context, config);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Create a Next.js API route handler for subscribing a customer to a plan
|
|
302
|
+
*
|
|
303
|
+
* @param config - Handler configuration options
|
|
304
|
+
* @returns Next.js route handler function
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* ```typescript
|
|
308
|
+
* // src/app/api/plans/[planId]/subscribe/route.ts
|
|
309
|
+
* import { createSubscribeRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
310
|
+
*
|
|
311
|
+
* export const POST = createSubscribeRoute();
|
|
312
|
+
* ```
|
|
313
|
+
*/
|
|
314
|
+
function createSubscribeRoute(config = {}) {
|
|
315
|
+
const handler = (0, plans_js_1.createSubscribeHandler)();
|
|
316
|
+
const adaptedHandler = (0, base_adapter_js_1.nextjsAdapter)(handler);
|
|
317
|
+
return (request, context) => adaptedHandler(request, context, config);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Create a Next.js API route handler for unsubscribing a customer from a plan
|
|
321
|
+
*
|
|
322
|
+
* @param config - Handler configuration options
|
|
323
|
+
* @returns Next.js route handler function
|
|
324
|
+
*
|
|
325
|
+
* @example
|
|
326
|
+
* ```typescript
|
|
327
|
+
* // src/app/api/plans/[planId]/unsubscribe/route.ts
|
|
328
|
+
* import { createUnsubscribeRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
329
|
+
*
|
|
330
|
+
* export const POST = createUnsubscribeRoute();
|
|
331
|
+
* ```
|
|
332
|
+
*/
|
|
333
|
+
function createUnsubscribeRoute(config = {}) {
|
|
334
|
+
const handler = (0, plans_js_1.createUnsubscribeHandler)();
|
|
335
|
+
const adaptedHandler = (0, base_adapter_js_1.nextjsAdapter)(handler);
|
|
336
|
+
return (request, context) => adaptedHandler(request, context, config);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Create a Next.js API route handler for upgrading a customer's plan
|
|
340
|
+
*
|
|
341
|
+
* @param config - Handler configuration options
|
|
342
|
+
* @returns Next.js route handler function
|
|
343
|
+
*
|
|
344
|
+
* @example
|
|
345
|
+
* ```typescript
|
|
346
|
+
* // src/app/api/plans/upgrade/route.ts
|
|
347
|
+
* import { createUpgradeRoute } from '@paid-ai/paid-node/integrations/nextjs';
|
|
348
|
+
*
|
|
349
|
+
* export const POST = createUpgradeRoute();
|
|
350
|
+
* ```
|
|
351
|
+
*/
|
|
352
|
+
function createUpgradeRoute(config = {}) {
|
|
353
|
+
const handler = (0, plans_js_1.createUpgradeHandler)();
|
|
354
|
+
const adaptedHandler = (0, base_adapter_js_1.nextjsAdapter)(handler);
|
|
355
|
+
return (request, context) => adaptedHandler(request, context, config);
|
|
356
|
+
}
|
|
@@ -4,3 +4,4 @@ export { createOrder, createOrderWithDefaults, createOrdersHandler, } from "./or
|
|
|
4
4
|
export { payInvoice, createPayInvoiceHandler, type PayInvoiceConfig, type PayInvoiceRequest, type PayInvoiceResult, activateOrderSync, createActivateOrderSyncHandler, type ActivateOrderSyncConfig, type ActivateOrderSyncRequest, type ActivateOrderSyncResult, createSetupIntent, createSetupIntentHandler, type SetupIntentConfig, type SetupIntentRequest, type SetupIntentResponse, } from "./billing.js";
|
|
5
5
|
export { getCustomerInvoices, createCustomerInvoicesHandler, type CustomerInvoicesResult, } from "./invoices.js";
|
|
6
6
|
export { provisionNewUser, createProvisioningHandler, } from "./provision-users.js";
|
|
7
|
+
export { getPlanById, getPlanGroupById, createGetPlanGroupByIdHandler, getGroupPlans, createGetGroupPlansHandler, subscribe, createSubscribeHandler, unsubscribe, createUnsubscribeHandler, upgrade, createUpgradeHandler, } from "./plans.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createProvisioningHandler = exports.provisionNewUser = exports.createCustomerInvoicesHandler = exports.getCustomerInvoices = exports.createSetupIntentHandler = exports.createSetupIntent = exports.createActivateOrderSyncHandler = exports.activateOrderSync = exports.createPayInvoiceHandler = exports.payInvoice = exports.createOrdersHandler = exports.createOrderWithDefaults = exports.createOrder = exports.createContactsHandler = exports.createContactWithDefaults = exports.createContact = exports.createCustomersHandler = exports.createGetCustomerHandler = exports.getCustomer = exports.createCustomerWithDefaults = exports.createCustomer = void 0;
|
|
3
|
+
exports.createUpgradeHandler = exports.upgrade = exports.createUnsubscribeHandler = exports.unsubscribe = exports.createSubscribeHandler = exports.subscribe = exports.createGetGroupPlansHandler = exports.getGroupPlans = exports.createGetPlanGroupByIdHandler = exports.getPlanGroupById = exports.getPlanById = exports.createProvisioningHandler = exports.provisionNewUser = exports.createCustomerInvoicesHandler = exports.getCustomerInvoices = exports.createSetupIntentHandler = exports.createSetupIntent = exports.createActivateOrderSyncHandler = exports.activateOrderSync = exports.createPayInvoiceHandler = exports.payInvoice = exports.createOrdersHandler = exports.createOrderWithDefaults = exports.createOrder = exports.createContactsHandler = exports.createContactWithDefaults = exports.createContact = exports.createCustomersHandler = exports.createGetCustomerHandler = exports.getCustomer = exports.createCustomerWithDefaults = exports.createCustomer = void 0;
|
|
4
4
|
var customers_js_1 = require("./customers.js");
|
|
5
5
|
Object.defineProperty(exports, "createCustomer", { enumerable: true, get: function () { return customers_js_1.createCustomer; } });
|
|
6
6
|
Object.defineProperty(exports, "createCustomerWithDefaults", { enumerable: true, get: function () { return customers_js_1.createCustomerWithDefaults; } });
|
|
@@ -28,3 +28,15 @@ Object.defineProperty(exports, "createCustomerInvoicesHandler", { enumerable: tr
|
|
|
28
28
|
var provision_users_js_1 = require("./provision-users.js");
|
|
29
29
|
Object.defineProperty(exports, "provisionNewUser", { enumerable: true, get: function () { return provision_users_js_1.provisionNewUser; } });
|
|
30
30
|
Object.defineProperty(exports, "createProvisioningHandler", { enumerable: true, get: function () { return provision_users_js_1.createProvisioningHandler; } });
|
|
31
|
+
var plans_js_1 = require("./plans.js");
|
|
32
|
+
Object.defineProperty(exports, "getPlanById", { enumerable: true, get: function () { return plans_js_1.getPlanById; } });
|
|
33
|
+
Object.defineProperty(exports, "getPlanGroupById", { enumerable: true, get: function () { return plans_js_1.getPlanGroupById; } });
|
|
34
|
+
Object.defineProperty(exports, "createGetPlanGroupByIdHandler", { enumerable: true, get: function () { return plans_js_1.createGetPlanGroupByIdHandler; } });
|
|
35
|
+
Object.defineProperty(exports, "getGroupPlans", { enumerable: true, get: function () { return plans_js_1.getGroupPlans; } });
|
|
36
|
+
Object.defineProperty(exports, "createGetGroupPlansHandler", { enumerable: true, get: function () { return plans_js_1.createGetGroupPlansHandler; } });
|
|
37
|
+
Object.defineProperty(exports, "subscribe", { enumerable: true, get: function () { return plans_js_1.subscribe; } });
|
|
38
|
+
Object.defineProperty(exports, "createSubscribeHandler", { enumerable: true, get: function () { return plans_js_1.createSubscribeHandler; } });
|
|
39
|
+
Object.defineProperty(exports, "unsubscribe", { enumerable: true, get: function () { return plans_js_1.unsubscribe; } });
|
|
40
|
+
Object.defineProperty(exports, "createUnsubscribeHandler", { enumerable: true, get: function () { return plans_js_1.createUnsubscribeHandler; } });
|
|
41
|
+
Object.defineProperty(exports, "upgrade", { enumerable: true, get: function () { return plans_js_1.upgrade; } });
|
|
42
|
+
Object.defineProperty(exports, "createUpgradeHandler", { enumerable: true, get: function () { return plans_js_1.createUpgradeHandler; } });
|
|
@@ -13,11 +13,17 @@ exports.createOrderWithDefaults = createOrderWithDefaults;
|
|
|
13
13
|
exports.createOrder = createOrder;
|
|
14
14
|
exports.createOrdersHandler = createOrdersHandler;
|
|
15
15
|
const base_handler_js_1 = require("../utils/base-handler.js");
|
|
16
|
+
const plans_js_1 = require("./plans.js");
|
|
17
|
+
function hasProductWithExternalId(pp) {
|
|
18
|
+
if (!pp.product) {
|
|
19
|
+
throw new Error(`Plan product ${pp.id} is missing nested product data`);
|
|
20
|
+
}
|
|
21
|
+
return !!pp.product.externalId;
|
|
22
|
+
}
|
|
16
23
|
/**
|
|
17
24
|
* Generate default values for missing order fields
|
|
18
25
|
*/
|
|
19
26
|
function generateOrderDefaults(config, options = {}) {
|
|
20
|
-
var _a;
|
|
21
27
|
const { defaultDurationDays = 365 } = options;
|
|
22
28
|
const startDate = config.startDate || new Date().toISOString().split("T")[0];
|
|
23
29
|
const endDate = config.endDate ||
|
|
@@ -27,20 +33,31 @@ function generateOrderDefaults(config, options = {}) {
|
|
|
27
33
|
const name = config.name || "Subscription Order";
|
|
28
34
|
const description = config.description || "Annual subscription";
|
|
29
35
|
const currency = config.currency || "USD";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
// defensive guard
|
|
37
|
+
if (!config.orderLines && !config.planId && !config.agentExternalId) {
|
|
38
|
+
throw new Error("Either orderLines, planId, or agentExternalId must be provided");
|
|
39
|
+
}
|
|
40
|
+
const orderLines = config.orderLines
|
|
41
|
+
? config.orderLines.map(line => {
|
|
42
|
+
var _a;
|
|
43
|
+
return ({
|
|
44
|
+
agentExternalId: line.agentExternalId,
|
|
45
|
+
name: line.name || name,
|
|
46
|
+
description: line.description || description,
|
|
47
|
+
planProductId: (_a = line.planProductId) !== null && _a !== void 0 ? _a : undefined,
|
|
48
|
+
});
|
|
49
|
+
})
|
|
50
|
+
: [{
|
|
51
|
+
agentExternalId: config.agentExternalId,
|
|
52
|
+
name,
|
|
53
|
+
description,
|
|
54
|
+
}];
|
|
39
55
|
return {
|
|
40
56
|
customerId: config.customerId,
|
|
41
57
|
customerExternalId: config.customerExternalId,
|
|
42
58
|
billingContactId: config.billingContactId,
|
|
43
59
|
agentExternalId: config.agentExternalId,
|
|
60
|
+
planId: config.planId,
|
|
44
61
|
name,
|
|
45
62
|
description,
|
|
46
63
|
startDate,
|
|
@@ -69,8 +86,12 @@ function createAndActivateOrder(client, config, autoActivate) {
|
|
|
69
86
|
orderLine.name = line.name;
|
|
70
87
|
if (line.description)
|
|
71
88
|
orderLine.description = line.description;
|
|
89
|
+
// planProductId is not in the create orders api spec - this is functioning but greptile will complain
|
|
90
|
+
if (line.planProductId)
|
|
91
|
+
orderLine.planProductId = line.planProductId;
|
|
72
92
|
return orderLine;
|
|
73
93
|
}),
|
|
94
|
+
planId: config.planId,
|
|
74
95
|
});
|
|
75
96
|
if (!order.id) {
|
|
76
97
|
throw new Error("Order created but missing ID");
|
|
@@ -177,18 +198,32 @@ function createOrder(client_1, config_1) {
|
|
|
177
198
|
*/
|
|
178
199
|
function createOrdersHandler(helperOptions) {
|
|
179
200
|
return (0, base_handler_js_1.createHandler)((client, body) => __awaiter(this, void 0, void 0, function* () {
|
|
180
|
-
var _a, _b;
|
|
181
|
-
if (!body.customerId) {
|
|
182
|
-
throw new Error("customerId is required");
|
|
183
|
-
}
|
|
201
|
+
var _a, _b, _c;
|
|
184
202
|
if (!body.customerExternalId) {
|
|
185
203
|
throw new Error("customerExternalId is required");
|
|
186
204
|
}
|
|
187
|
-
if (!body.agentExternalId) {
|
|
188
|
-
throw new Error("agentExternalId
|
|
205
|
+
if (!body.agentExternalId && !body.planId) {
|
|
206
|
+
throw new Error("agentExternalId or planId are required");
|
|
189
207
|
}
|
|
190
208
|
const orderOptions = Object.assign(Object.assign({}, helperOptions), { autoActivate: (_b = (_a = body.autoActivate) !== null && _a !== void 0 ? _a : helperOptions === null || helperOptions === void 0 ? void 0 : helperOptions.autoActivate) !== null && _b !== void 0 ? _b : true });
|
|
209
|
+
if (body.planId) {
|
|
210
|
+
const plan = yield (0, plans_js_1.getPlanById)(client, body.planId);
|
|
211
|
+
if (!((_c = plan.planProducts) === null || _c === void 0 ? void 0 : _c.length)) {
|
|
212
|
+
throw new Error(`Plan ${body.planId} has no products`);
|
|
213
|
+
}
|
|
214
|
+
body.orderLines = plan.planProducts
|
|
215
|
+
.filter(hasProductWithExternalId)
|
|
216
|
+
.map((pp) => ({
|
|
217
|
+
agentExternalId: pp.product.externalId,
|
|
218
|
+
name: pp.product.name,
|
|
219
|
+
description: pp.product.description,
|
|
220
|
+
planProductId: pp.id,
|
|
221
|
+
}));
|
|
222
|
+
if (body.orderLines.length === 0) {
|
|
223
|
+
throw new Error(`Plan ${body.planId} has no products with externalId`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
191
226
|
const order = yield createOrderWithDefaults(client, body, orderOptions);
|
|
192
227
|
return { success: true, data: order };
|
|
193
|
-
}), { requiredFields: ['
|
|
228
|
+
}), { requiredFields: ['customerExternalId'] });
|
|
194
229
|
}
|