PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.17.0
GiveWP – Donation Plugin and Fundraising Platform v4.17.0
4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 All 256 releases
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Requests / Credit / CreatePool.php

CreatePool.php in GiveWP – Donation Plugin and Fundraising Platform 4.17.0, at vendor/vendor-prefixed/stellarwp/licensing-api-client/src/Requests/Credit/CreatePool.php

134 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2
3 namespace Give\Vendors\LiquidWeb\LicensingApiClient\Requests\Credit;
4
5 use DateTimeImmutable;
6 use Give\Vendors\LiquidWeb\LicensingApiClient\Concerns\InteractsWithDateTime;
7
8 /**
9 * Represents a credit pool creation request payload.
10 *
11 * @phpstan-type CreatePoolPayload array{
12 * license_key: string,
13 * credit_type: string,
14 * credits_total: int,
15 * period: string,
16 * overage_limit?: int,
17 * priority: int,
18 * first_period_start?: string,
19 * expires_at?: string,
20 * metadata?: array<string, mixed>
21 * }
22 */
23 final class CreatePool
24 {
25 use InteractsWithDateTime;
26
27 /**
28 * License key that owns the credit pool.
29 *
30 * @example LWSW-8H9F-5UKA-VR3B-D7SQ-BP9N
31 */
32 public string $licenseKey;
33
34 /**
35 * Credit type tracked by this pool.
36 *
37 * @example ai
38 */
39 public string $creditType;
40
41 /**
42 * Total credits allocated to the pool.
43 *
44 * @example 1000
45 */
46 public int $creditsTotal;
47
48 /**
49 * Reset cadence for the pool.
50 *
51 * @example month
52 */
53 public string $period;
54
55 /**
56 * Optional overage allowance after the pool is depleted.
57 *
58 * @example 100
59 */
60 public ?int $overageLimit;
61
62 /**
63 * Pool consumption priority. Lower values are consumed first.
64 *
65 * @example 25
66 */
67 public int $priority;
68
69 /**
70 * First billing period start in the caller's timezone.
71 *
72 * @example 2026-03-01T00:00:00Z
73 */
74 public ?DateTimeImmutable $firstPeriodStart;
75
76 /**
77 * Absolute pool expiration date in the caller's timezone.
78 *
79 * @example 2026-04-01T00:00:00Z
80 */
81 public ?DateTimeImmutable $expiresAt;
82
83 /**
84 * Arbitrary pool metadata forwarded to the API.
85 *
86 * @var array<string, mixed>|null
87 *
88 * @example {"source":"portal"}
89 */
90 public ?array $metadata;
91
92 /**
93 * @param array<string, mixed>|null $metadata
94 */
95 public function __construct(
96 string $licenseKey,
97 string $creditType,
98 int $creditsTotal,
99 string $period,
100 ?int $overageLimit = null,
101 int $priority = 50,
102 ?DateTimeImmutable $firstPeriodStart = null,
103 ?DateTimeImmutable $expiresAt = null,
104 ?array $metadata = null
105 ) {
106 $this->licenseKey = $licenseKey;
107 $this->creditType = $creditType;
108 $this->creditsTotal = $creditsTotal;
109 $this->period = $period;
110 $this->overageLimit = $overageLimit;
111 $this->priority = $priority;
112 $this->firstPeriodStart = $firstPeriodStart;
113 $this->expiresAt = $expiresAt;
114 $this->metadata = $metadata;
115 }
116
117 /**
118 * @return CreatePoolPayload
119 */
120 public function toArray(): array {
121 return array_filter([
122 'license_key' => $this->licenseKey,
123 'credit_type' => $this->creditType,
124 'credits_total' => $this->creditsTotal,
125 'period' => $this->period,
126 'overage_limit' => $this->overageLimit,
127 'priority' => $this->priority,
128 'first_period_start' => $this->firstPeriodStart ? $this->formatDateTime($this->firstPeriodStart) : null,
129 'expires_at' => $this->expiresAt ? $this->formatDateTime($this->expiresAt) : null,
130 'metadata' => $this->metadata,
131 ], static fn ($value): bool => $value !== null);
132 }
133 }
134