perspectapi-ts-sdk 3.4.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
@@ -2506,6 +2506,61 @@ declare class SiteUsersClient extends BaseClient {
2506
2506
  }): Promise<ApiResponse<{
2507
2507
  success: boolean;
2508
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>>;
2509
2564
  }
2510
2565
 
2511
2566
  /**
package/dist/index.d.ts CHANGED
@@ -2506,6 +2506,61 @@ declare class SiteUsersClient extends BaseClient {
2506
2506
  }): Promise<ApiResponse<{
2507
2507
  success: boolean;
2508
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>>;
2509
2564
  }
2510
2565
 
2511
2566
  /**
package/dist/index.js CHANGED
@@ -2637,6 +2637,83 @@ var SiteUsersClient = class extends BaseClient {
2637
2637
  data
2638
2638
  );
2639
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
+ }
2640
2717
  };
2641
2718
 
2642
2719
  // src/client/bundles-client.ts
package/dist/index.mjs CHANGED
@@ -2574,6 +2574,83 @@ var SiteUsersClient = class extends BaseClient {
2574
2574
  data
2575
2575
  );
2576
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
+ }
2577
2654
  };
2578
2655
 
2579
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.4.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",
@@ -496,4 +496,111 @@ export class SiteUsersClient extends BaseClient {
496
496
  data
497
497
  );
498
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
+ }
499
606
  }