perspectapi-ts-sdk 3.3.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -2480,6 +2480,87 @@ declare class SiteUsersClient extends BaseClient {
2480
2480
  success: boolean;
2481
2481
  new_balance_cents: number;
2482
2482
  }>>;
2483
+ /**
2484
+ * List orders for a site (admin only)
2485
+ * @param siteName - The site name
2486
+ * @param params - Query params (limit, offset, status, fulfillment_status)
2487
+ */
2488
+ listOrders(siteName: string, params?: {
2489
+ limit?: number;
2490
+ offset?: number;
2491
+ status?: string;
2492
+ fulfillment_status?: string;
2493
+ }): Promise<ApiResponse<{
2494
+ orders: any[];
2495
+ }>>;
2496
+ /**
2497
+ * Update order fulfillment status (admin only)
2498
+ * @param siteName - The site name
2499
+ * @param sessionId - Checkout session ID
2500
+ * @param data - Fulfillment data
2501
+ */
2502
+ updateOrderFulfillment(siteName: string, sessionId: string, data: {
2503
+ fulfillment_status: string;
2504
+ tracking_number?: string;
2505
+ notes?: string;
2506
+ }): Promise<ApiResponse<{
2507
+ success: boolean;
2508
+ }>>;
2509
+ /**
2510
+ * Get a user's orders (admin only)
2511
+ * @param siteName - The site name
2512
+ * @param userId - User ID
2513
+ * @param params - Pagination params
2514
+ */
2515
+ getUserOrders(siteName: string, userId: string, params?: {
2516
+ limit?: number;
2517
+ offset?: number;
2518
+ }): Promise<ApiResponse<{
2519
+ orders: SiteUserOrder[];
2520
+ }>>;
2521
+ /**
2522
+ * Get a user's subscriptions (admin only)
2523
+ * @param siteName - The site name
2524
+ * @param userId - User ID
2525
+ */
2526
+ getUserSubscriptions(siteName: string, userId: string): Promise<ApiResponse<{
2527
+ subscriptions: SiteUserSubscription[];
2528
+ }>>;
2529
+ /**
2530
+ * Pause a user's subscription (admin only)
2531
+ * @param siteName - The site name
2532
+ * @param userId - User ID
2533
+ * @param subscriptionId - Subscription ID
2534
+ * @param resumesAt - Optional ISO date string when subscription should auto-resume
2535
+ */
2536
+ pauseUserSubscription(siteName: string, userId: string, subscriptionId: string, resumesAt?: string): Promise<ApiResponse<{
2537
+ success: boolean;
2538
+ }>>;
2539
+ /**
2540
+ * Resume a user's paused subscription (admin only)
2541
+ * @param siteName - The site name
2542
+ * @param userId - User ID
2543
+ * @param subscriptionId - Subscription ID
2544
+ */
2545
+ resumeUserSubscription(siteName: string, userId: string, subscriptionId: string): Promise<ApiResponse<{
2546
+ success: boolean;
2547
+ }>>;
2548
+ /**
2549
+ * Cancel a user's subscription (admin only)
2550
+ * @param siteName - The site name
2551
+ * @param userId - User ID
2552
+ * @param subscriptionId - Subscription ID
2553
+ */
2554
+ cancelUserSubscription(siteName: string, userId: string, subscriptionId: string): Promise<ApiResponse<{
2555
+ success: boolean;
2556
+ message: string;
2557
+ }>>;
2558
+ /**
2559
+ * Get a user's credit balance (admin only)
2560
+ * @param siteName - The site name
2561
+ * @param userId - User ID
2562
+ */
2563
+ getUserCreditBalance(siteName: string, userId: string): Promise<ApiResponse<CreditBalance>>;
2483
2564
  }
2484
2565
 
2485
2566
  /**
package/dist/index.d.ts CHANGED
@@ -2480,6 +2480,87 @@ declare class SiteUsersClient extends BaseClient {
2480
2480
  success: boolean;
2481
2481
  new_balance_cents: number;
2482
2482
  }>>;
2483
+ /**
2484
+ * List orders for a site (admin only)
2485
+ * @param siteName - The site name
2486
+ * @param params - Query params (limit, offset, status, fulfillment_status)
2487
+ */
2488
+ listOrders(siteName: string, params?: {
2489
+ limit?: number;
2490
+ offset?: number;
2491
+ status?: string;
2492
+ fulfillment_status?: string;
2493
+ }): Promise<ApiResponse<{
2494
+ orders: any[];
2495
+ }>>;
2496
+ /**
2497
+ * Update order fulfillment status (admin only)
2498
+ * @param siteName - The site name
2499
+ * @param sessionId - Checkout session ID
2500
+ * @param data - Fulfillment data
2501
+ */
2502
+ updateOrderFulfillment(siteName: string, sessionId: string, data: {
2503
+ fulfillment_status: string;
2504
+ tracking_number?: string;
2505
+ notes?: string;
2506
+ }): Promise<ApiResponse<{
2507
+ success: boolean;
2508
+ }>>;
2509
+ /**
2510
+ * Get a user's orders (admin only)
2511
+ * @param siteName - The site name
2512
+ * @param userId - User ID
2513
+ * @param params - Pagination params
2514
+ */
2515
+ getUserOrders(siteName: string, userId: string, params?: {
2516
+ limit?: number;
2517
+ offset?: number;
2518
+ }): Promise<ApiResponse<{
2519
+ orders: SiteUserOrder[];
2520
+ }>>;
2521
+ /**
2522
+ * Get a user's subscriptions (admin only)
2523
+ * @param siteName - The site name
2524
+ * @param userId - User ID
2525
+ */
2526
+ getUserSubscriptions(siteName: string, userId: string): Promise<ApiResponse<{
2527
+ subscriptions: SiteUserSubscription[];
2528
+ }>>;
2529
+ /**
2530
+ * Pause a user's subscription (admin only)
2531
+ * @param siteName - The site name
2532
+ * @param userId - User ID
2533
+ * @param subscriptionId - Subscription ID
2534
+ * @param resumesAt - Optional ISO date string when subscription should auto-resume
2535
+ */
2536
+ pauseUserSubscription(siteName: string, userId: string, subscriptionId: string, resumesAt?: string): Promise<ApiResponse<{
2537
+ success: boolean;
2538
+ }>>;
2539
+ /**
2540
+ * Resume a user's paused subscription (admin only)
2541
+ * @param siteName - The site name
2542
+ * @param userId - User ID
2543
+ * @param subscriptionId - Subscription ID
2544
+ */
2545
+ resumeUserSubscription(siteName: string, userId: string, subscriptionId: string): Promise<ApiResponse<{
2546
+ success: boolean;
2547
+ }>>;
2548
+ /**
2549
+ * Cancel a user's subscription (admin only)
2550
+ * @param siteName - The site name
2551
+ * @param userId - User ID
2552
+ * @param subscriptionId - Subscription ID
2553
+ */
2554
+ cancelUserSubscription(siteName: string, userId: string, subscriptionId: string): Promise<ApiResponse<{
2555
+ success: boolean;
2556
+ message: string;
2557
+ }>>;
2558
+ /**
2559
+ * Get a user's credit balance (admin only)
2560
+ * @param siteName - The site name
2561
+ * @param userId - User ID
2562
+ */
2563
+ getUserCreditBalance(siteName: string, userId: string): Promise<ApiResponse<CreditBalance>>;
2483
2564
  }
2484
2565
 
2485
2566
  /**
package/dist/index.js CHANGED
@@ -2614,6 +2614,106 @@ var SiteUsersClient = class extends BaseClient {
2614
2614
  csrfToken
2615
2615
  );
2616
2616
  }
2617
+ /**
2618
+ * List orders for a site (admin only)
2619
+ * @param siteName - The site name
2620
+ * @param params - Query params (limit, offset, status, fulfillment_status)
2621
+ */
2622
+ async listOrders(siteName, params) {
2623
+ return this.http.get(
2624
+ this.buildPath(this.siteUserEndpoint(siteName, "/users/orders")),
2625
+ params
2626
+ );
2627
+ }
2628
+ /**
2629
+ * Update order fulfillment status (admin only)
2630
+ * @param siteName - The site name
2631
+ * @param sessionId - Checkout session ID
2632
+ * @param data - Fulfillment data
2633
+ */
2634
+ async updateOrderFulfillment(siteName, sessionId, data) {
2635
+ return this.patch(
2636
+ this.siteUserEndpoint(siteName, `/users/orders/${encodeURIComponent(sessionId)}/fulfillment`),
2637
+ data
2638
+ );
2639
+ }
2640
+ // ============================================================================
2641
+ // ADMIN USER-SCOPED ENDPOINTS (API key auth required)
2642
+ // These mirror /me/* endpoints but target a specific user by ID.
2643
+ // ============================================================================
2644
+ /**
2645
+ * Get a user's orders (admin only)
2646
+ * @param siteName - The site name
2647
+ * @param userId - User ID
2648
+ * @param params - Pagination params
2649
+ */
2650
+ async getUserOrders(siteName, userId, params) {
2651
+ return this.http.get(
2652
+ this.buildPath(this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/orders`)),
2653
+ params
2654
+ );
2655
+ }
2656
+ /**
2657
+ * Get a user's subscriptions (admin only)
2658
+ * @param siteName - The site name
2659
+ * @param userId - User ID
2660
+ */
2661
+ async getUserSubscriptions(siteName, userId) {
2662
+ return this.getSingle(
2663
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions`)
2664
+ );
2665
+ }
2666
+ /**
2667
+ * Pause a user's subscription (admin only)
2668
+ * @param siteName - The site name
2669
+ * @param userId - User ID
2670
+ * @param subscriptionId - Subscription ID
2671
+ * @param resumesAt - Optional ISO date string when subscription should auto-resume
2672
+ */
2673
+ async pauseUserSubscription(siteName, userId, subscriptionId, resumesAt) {
2674
+ const body = {};
2675
+ if (resumesAt) {
2676
+ body.resumes_at = resumesAt;
2677
+ }
2678
+ return this.create(
2679
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/pause`),
2680
+ body
2681
+ );
2682
+ }
2683
+ /**
2684
+ * Resume a user's paused subscription (admin only)
2685
+ * @param siteName - The site name
2686
+ * @param userId - User ID
2687
+ * @param subscriptionId - Subscription ID
2688
+ */
2689
+ async resumeUserSubscription(siteName, userId, subscriptionId) {
2690
+ return this.create(
2691
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/resume`),
2692
+ {}
2693
+ );
2694
+ }
2695
+ /**
2696
+ * Cancel a user's subscription (admin only)
2697
+ * @param siteName - The site name
2698
+ * @param userId - User ID
2699
+ * @param subscriptionId - Subscription ID
2700
+ */
2701
+ async cancelUserSubscription(siteName, userId, subscriptionId) {
2702
+ return this.create(
2703
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/cancel`),
2704
+ {}
2705
+ );
2706
+ }
2707
+ /**
2708
+ * Get a user's credit balance (admin only)
2709
+ * @param siteName - The site name
2710
+ * @param userId - User ID
2711
+ */
2712
+ async getUserCreditBalance(siteName, userId) {
2713
+ return this.getSingle(
2714
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/credits/balance`)
2715
+ );
2716
+ }
2617
2717
  };
2618
2718
 
2619
2719
  // src/client/bundles-client.ts
package/dist/index.mjs CHANGED
@@ -2551,6 +2551,106 @@ var SiteUsersClient = class extends BaseClient {
2551
2551
  csrfToken
2552
2552
  );
2553
2553
  }
2554
+ /**
2555
+ * List orders for a site (admin only)
2556
+ * @param siteName - The site name
2557
+ * @param params - Query params (limit, offset, status, fulfillment_status)
2558
+ */
2559
+ async listOrders(siteName, params) {
2560
+ return this.http.get(
2561
+ this.buildPath(this.siteUserEndpoint(siteName, "/users/orders")),
2562
+ params
2563
+ );
2564
+ }
2565
+ /**
2566
+ * Update order fulfillment status (admin only)
2567
+ * @param siteName - The site name
2568
+ * @param sessionId - Checkout session ID
2569
+ * @param data - Fulfillment data
2570
+ */
2571
+ async updateOrderFulfillment(siteName, sessionId, data) {
2572
+ return this.patch(
2573
+ this.siteUserEndpoint(siteName, `/users/orders/${encodeURIComponent(sessionId)}/fulfillment`),
2574
+ data
2575
+ );
2576
+ }
2577
+ // ============================================================================
2578
+ // ADMIN USER-SCOPED ENDPOINTS (API key auth required)
2579
+ // These mirror /me/* endpoints but target a specific user by ID.
2580
+ // ============================================================================
2581
+ /**
2582
+ * Get a user's orders (admin only)
2583
+ * @param siteName - The site name
2584
+ * @param userId - User ID
2585
+ * @param params - Pagination params
2586
+ */
2587
+ async getUserOrders(siteName, userId, params) {
2588
+ return this.http.get(
2589
+ this.buildPath(this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/orders`)),
2590
+ params
2591
+ );
2592
+ }
2593
+ /**
2594
+ * Get a user's subscriptions (admin only)
2595
+ * @param siteName - The site name
2596
+ * @param userId - User ID
2597
+ */
2598
+ async getUserSubscriptions(siteName, userId) {
2599
+ return this.getSingle(
2600
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions`)
2601
+ );
2602
+ }
2603
+ /**
2604
+ * Pause a user's subscription (admin only)
2605
+ * @param siteName - The site name
2606
+ * @param userId - User ID
2607
+ * @param subscriptionId - Subscription ID
2608
+ * @param resumesAt - Optional ISO date string when subscription should auto-resume
2609
+ */
2610
+ async pauseUserSubscription(siteName, userId, subscriptionId, resumesAt) {
2611
+ const body = {};
2612
+ if (resumesAt) {
2613
+ body.resumes_at = resumesAt;
2614
+ }
2615
+ return this.create(
2616
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/pause`),
2617
+ body
2618
+ );
2619
+ }
2620
+ /**
2621
+ * Resume a user's paused subscription (admin only)
2622
+ * @param siteName - The site name
2623
+ * @param userId - User ID
2624
+ * @param subscriptionId - Subscription ID
2625
+ */
2626
+ async resumeUserSubscription(siteName, userId, subscriptionId) {
2627
+ return this.create(
2628
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/resume`),
2629
+ {}
2630
+ );
2631
+ }
2632
+ /**
2633
+ * Cancel a user's subscription (admin only)
2634
+ * @param siteName - The site name
2635
+ * @param userId - User ID
2636
+ * @param subscriptionId - Subscription ID
2637
+ */
2638
+ async cancelUserSubscription(siteName, userId, subscriptionId) {
2639
+ return this.create(
2640
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/cancel`),
2641
+ {}
2642
+ );
2643
+ }
2644
+ /**
2645
+ * Get a user's credit balance (admin only)
2646
+ * @param siteName - The site name
2647
+ * @param userId - User ID
2648
+ */
2649
+ async getUserCreditBalance(siteName, userId) {
2650
+ return this.getSingle(
2651
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/credits/balance`)
2652
+ );
2653
+ }
2554
2654
  };
2555
2655
 
2556
2656
  // src/client/bundles-client.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "perspectapi-ts-sdk",
3
- "version": "3.3.0",
3
+ "version": "3.5.0",
4
4
  "description": "TypeScript SDK for PerspectAPI - Cloudflare Workers compatible",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -464,4 +464,143 @@ export class SiteUsersClient extends BaseClient {
464
464
  csrfToken
465
465
  );
466
466
  }
467
+
468
+ /**
469
+ * List orders for a site (admin only)
470
+ * @param siteName - The site name
471
+ * @param params - Query params (limit, offset, status, fulfillment_status)
472
+ */
473
+ async listOrders(
474
+ siteName: string,
475
+ params?: { limit?: number; offset?: number; status?: string; fulfillment_status?: string }
476
+ ): Promise<ApiResponse<{ orders: any[] }>> {
477
+ return this.http.get<{ orders: any[] }>(
478
+ this.buildPath(this.siteUserEndpoint(siteName, '/users/orders')),
479
+ params
480
+ );
481
+ }
482
+
483
+ /**
484
+ * Update order fulfillment status (admin only)
485
+ * @param siteName - The site name
486
+ * @param sessionId - Checkout session ID
487
+ * @param data - Fulfillment data
488
+ */
489
+ async updateOrderFulfillment(
490
+ siteName: string,
491
+ sessionId: string,
492
+ data: { fulfillment_status: string; tracking_number?: string; notes?: string }
493
+ ): Promise<ApiResponse<{ success: boolean }>> {
494
+ return this.patch<typeof data, { success: boolean }>(
495
+ this.siteUserEndpoint(siteName, `/users/orders/${encodeURIComponent(sessionId)}/fulfillment`),
496
+ data
497
+ );
498
+ }
499
+
500
+ // ============================================================================
501
+ // ADMIN USER-SCOPED ENDPOINTS (API key auth required)
502
+ // These mirror /me/* endpoints but target a specific user by ID.
503
+ // ============================================================================
504
+
505
+ /**
506
+ * Get a user's orders (admin only)
507
+ * @param siteName - The site name
508
+ * @param userId - User ID
509
+ * @param params - Pagination params
510
+ */
511
+ async getUserOrders(
512
+ siteName: string,
513
+ userId: string,
514
+ params?: { limit?: number; offset?: number }
515
+ ): Promise<ApiResponse<{ orders: SiteUserOrder[] }>> {
516
+ return this.http.get<{ orders: SiteUserOrder[] }>(
517
+ this.buildPath(this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/orders`)),
518
+ params
519
+ );
520
+ }
521
+
522
+ /**
523
+ * Get a user's subscriptions (admin only)
524
+ * @param siteName - The site name
525
+ * @param userId - User ID
526
+ */
527
+ async getUserSubscriptions(
528
+ siteName: string,
529
+ userId: string
530
+ ): Promise<ApiResponse<{ subscriptions: SiteUserSubscription[] }>> {
531
+ return this.getSingle<{ subscriptions: SiteUserSubscription[] }>(
532
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions`)
533
+ );
534
+ }
535
+
536
+ /**
537
+ * Pause a user's subscription (admin only)
538
+ * @param siteName - The site name
539
+ * @param userId - User ID
540
+ * @param subscriptionId - Subscription ID
541
+ * @param resumesAt - Optional ISO date string when subscription should auto-resume
542
+ */
543
+ async pauseUserSubscription(
544
+ siteName: string,
545
+ userId: string,
546
+ subscriptionId: string,
547
+ resumesAt?: string
548
+ ): Promise<ApiResponse<{ success: boolean }>> {
549
+ const body: Record<string, string> = {};
550
+ if (resumesAt) {
551
+ body.resumes_at = resumesAt;
552
+ }
553
+ return this.create<Record<string, string>, { success: boolean }>(
554
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/pause`),
555
+ body
556
+ );
557
+ }
558
+
559
+ /**
560
+ * Resume a user's paused subscription (admin only)
561
+ * @param siteName - The site name
562
+ * @param userId - User ID
563
+ * @param subscriptionId - Subscription ID
564
+ */
565
+ async resumeUserSubscription(
566
+ siteName: string,
567
+ userId: string,
568
+ subscriptionId: string
569
+ ): Promise<ApiResponse<{ success: boolean }>> {
570
+ return this.create<Record<string, never>, { success: boolean }>(
571
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/resume`),
572
+ {}
573
+ );
574
+ }
575
+
576
+ /**
577
+ * Cancel a user's subscription (admin only)
578
+ * @param siteName - The site name
579
+ * @param userId - User ID
580
+ * @param subscriptionId - Subscription ID
581
+ */
582
+ async cancelUserSubscription(
583
+ siteName: string,
584
+ userId: string,
585
+ subscriptionId: string
586
+ ): Promise<ApiResponse<{ success: boolean; message: string }>> {
587
+ return this.create<Record<string, never>, { success: boolean; message: string }>(
588
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/subscriptions/${encodeURIComponent(subscriptionId)}/cancel`),
589
+ {}
590
+ );
591
+ }
592
+
593
+ /**
594
+ * Get a user's credit balance (admin only)
595
+ * @param siteName - The site name
596
+ * @param userId - User ID
597
+ */
598
+ async getUserCreditBalance(
599
+ siteName: string,
600
+ userId: string
601
+ ): Promise<ApiResponse<CreditBalance>> {
602
+ return this.getSingle<CreditBalance>(
603
+ this.siteUserEndpoint(siteName, `/users/${encodeURIComponent(userId)}/credits/balance`)
604
+ );
605
+ }
467
606
  }