zuplo 6.70.16 → 6.70.22

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.
@@ -479,8 +479,7 @@ Stripe Invoice that includes both:
479
479
  period, charged in arrears.
480
480
 
481
481
  Stripe collects payment for the full invoice. The first billing period's invoice
482
- contains only the $499, since there's no prior period to bill overage for. No
483
- Stripe Subscription is created.
482
+ contains only the $499, since there's no prior period to bill overage for.
484
483
 
485
484
  ## Credits / tokens (prepaid)
486
485
 
@@ -509,10 +508,10 @@ credits run out, then buy more. No ongoing subscription commitment.
509
508
 
510
509
  ```json
511
510
  {
512
- "key": "credits-small",
511
+ "key": "credits_small",
513
512
  "name": "50,000 Credits",
514
513
  "currency": "USD",
515
- "billingCadence": null,
514
+ "billingCadence": "P1M",
516
515
  "phases": [
517
516
  {
518
517
  "key": "default",
@@ -520,20 +519,15 @@ credits run out, then buy more. No ongoing subscription commitment.
520
519
  "duration": null,
521
520
  "rateCards": [
522
521
  {
523
- "type": "usage_based",
524
- "key": "api_credits",
525
- "name": "API Credits",
526
- "featureKey": "api_credits",
522
+ "type": "flat_fee",
523
+ "key": "api_requests",
524
+ "name": "50,000 API Credits",
525
+ "featureKey": "api_requests",
527
526
  "billingCadence": null,
528
527
  "price": {
529
- "type": "package",
528
+ "type": "flat",
530
529
  "amount": "49.00",
531
- "quantityPerPackage": 50000
532
- },
533
- "entitlementTemplate": {
534
- "type": "metered",
535
- "issueAfterReset": 50000,
536
- "isSoftLimit": false
530
+ "paymentTerm": "in_advance"
537
531
  }
538
532
  }
539
533
  ]
@@ -546,10 +540,10 @@ credits run out, then buy more. No ongoing subscription commitment.
546
540
 
547
541
  ```json
548
542
  {
549
- "key": "credits-large",
543
+ "key": "credits_large",
550
544
  "name": "500,000 Credits",
551
545
  "currency": "USD",
552
- "billingCadence": null,
546
+ "billingCadence": "P1M",
553
547
  "phases": [
554
548
  {
555
549
  "key": "default",
@@ -557,20 +551,15 @@ credits run out, then buy more. No ongoing subscription commitment.
557
551
  "duration": null,
558
552
  "rateCards": [
559
553
  {
560
- "type": "usage_based",
561
- "key": "api_credits",
562
- "name": "API Credits",
563
- "featureKey": "api_credits",
554
+ "type": "flat_fee",
555
+ "key": "api_requests",
556
+ "name": "500,000 API Credits",
557
+ "featureKey": "api_requests",
564
558
  "billingCadence": null,
565
559
  "price": {
566
- "type": "package",
560
+ "type": "flat",
567
561
  "amount": "299.00",
568
- "quantityPerPackage": 500000
569
- },
570
- "entitlementTemplate": {
571
- "type": "metered",
572
- "issueAfterReset": 500000,
573
- "isSoftLimit": false
562
+ "paymentTerm": "in_advance"
574
563
  }
575
564
  }
576
565
  ]
@@ -296,20 +296,22 @@ the RFC 7807 Problem Details format:
296
296
 
297
297
  Common error details:
298
298
 
299
- | Condition | `detail` message |
300
- | ------------------------------- | ------------------------------------------------------------------- |
301
- | No auth header | `"No Authorization Header"` |
302
- | Wrong auth scheme | `"Invalid Authorization Scheme"` |
303
- | Empty key after the auth scheme | `"No key present"` |
304
- | Cached invalid key or 401 | `"Authorization Failed"` |
305
- | Invalid API key | `"API Key is invalid or does not have access to the API"` |
306
- | Expired API key | `"API Key has expired."` |
307
- | Expired subscription | `"API Key has an expired subscription."` |
308
- | Subscription has no payment | `"Subscription payment status is not available."` |
309
- | Payment not made | `"Payment has not been made."` |
310
- | Payment overdue | `"Payment is overdue. Please update your payment method."` |
311
- | Quota exhausted | `"API Key has exceeded the allowed limit for \"X\" meter."` |
312
- | Meter not in subscription | `"API Key does not have \"X\" meter provided by the subscription."` |
299
+ | Condition | `detail` message |
300
+ | -------------------------------- | ------------------------------------------------------------------- |
301
+ | No auth header | `"No Authorization Header"` |
302
+ | Wrong auth scheme | `"Invalid Authorization Scheme"` |
303
+ | Empty key after the auth scheme | `"No key present"` |
304
+ | Cached invalid key or 401 | `"Authorization Failed"` |
305
+ | Invalid API key | `"API Key is invalid or does not have access to the API"` |
306
+ | Expired API key | `"API Key has expired."` |
307
+ | Expired subscription | `"API Key has an expired subscription."` |
308
+ | Subscription has no payment | `"Subscription payment status is not available."` |
309
+ | Payment not made | `"Payment has not been made."` |
310
+ | Payment overdue | `"Payment is overdue. Please update your payment method."` |
311
+ | Subscription has no entitlements | `"Subscription entitlements are not available."` |
312
+ | Meter not in subscription | `"API Key does not have \"X\" meter provided by the subscription."` |
313
+ | Quota exhausted | `"API Key has exceeded the allowed limit for \"X\" meter."` |
314
+ | Meter access denied | `"API Key does not have access to \"X\" meter."` |
313
315
 
314
316
  ## Pipeline ordering
315
317
 
@@ -46,7 +46,7 @@ in Stripe at the moment a charge is needed (as invoice line items).
46
46
  [**Services**](https://portal.zuplo.com/+/account/project/services) page,
47
47
  select the Monetization Service, then go to **Payment Provider**
48
48
  2. Click **Configure** on the Stripe card
49
- 3. Enter a **Name** and paste your **Stripe API Key**
49
+ 3. Paste your **Stripe API Key**
50
50
  4. Click **Save**
51
51
 
52
52
  :::tip
@@ -229,13 +229,6 @@ For programmatic cancellation, see
229
229
  Lifecycle guide — the API endpoint accepts a `timing` parameter to control this
230
230
  same behavior explicitly.
231
231
 
232
- ## Proration
233
-
234
- When customers upgrade or downgrade mid-billing-period, charges are prorated
235
- automatically. Upgrades are charged the prorated difference for the remainder of
236
- the billing period. Downgrades result in a prorated credit applied to the next
237
- invoice.
238
-
239
232
  ## Usage-based billing
240
233
 
241
234
  For plans with usage-based pricing (per-unit, tiered, pay-as-you-go), usage is
@@ -278,8 +271,7 @@ To enable the Stripe Customer Portal:
278
271
 
279
272
  1. Configure the Customer Portal in your
280
273
  [Stripe Dashboard → Settings → Billing → Customer Portal](https://dashboard.stripe.com/settings/billing/portal)
281
- 2. Enable the features you want (update payment method, view invoices, cancel
282
- subscription)
274
+ 2. Enable the features you want (update payment method, view invoices)
283
275
  3. The Developer Portal automatically includes a "Manage Billing" link that
284
276
  opens the Stripe Customer Portal
285
277
 
@@ -17,20 +17,38 @@ trials, upgrades, downgrades, cancellation, and reactivation.
17
17
 
18
18
  ## Subscription states
19
19
 
20
- | Status | API access | Description |
21
- | ----------- | ---------- | ------------------------------------------------- |
22
- | `active` | Yes | Subscription is active and payment is current |
23
- | `inactive` | No | Subscription is not yet active or was deactivated |
24
- | `canceled` | No | Subscription has been canceled |
25
- | `scheduled` | No | Subscription is scheduled for future activation |
20
+ A subscription's lifecycle status is computed from its `activeFrom`/`activeTo`
21
+ window it is not a stored field, and transitions happen automatically as time
22
+ passes. The four possible values reflect lifecycle only; payment status is
23
+ tracked separately (see the note below).
24
+
25
+ | Status | API access | Description |
26
+ | ----------- | ---------- | ------------------------------------------------------------------- |
27
+ | `active` | Yes | Currently in effect with no scheduled end |
28
+ | `canceled` | Yes | Scheduled to end at a future date; access continues until that date |
29
+ | `inactive` | No | Has ended, or was canceled before becoming active |
30
+ | `scheduled` | No | Has not yet started — `activeFrom` is in the future |
31
+
32
+ When a customer cancels a subscription with `next_billing_cycle` timing, its
33
+ status flips from `active` to `canceled` immediately (with `activeTo` set to the
34
+ period end). The customer keeps access throughout the `canceled` window, and the
35
+ status transitions to `inactive` once `activeTo` passes. A subscription in the
36
+ `canceled` state can be reactivated — see [Reactivation](#reactivation) below.
26
37
 
27
38
  :::note
28
39
 
29
- Access is also governed by payment status. If a payment is overdue beyond the
30
- grace period (default 3 days), access is blocked even for active subscriptions.
31
- The grace period is configurable per-customer, per-plan, or per-bucket — see
40
+ Access is also governed by payment status, which is tracked separately. If a
41
+ payment is overdue beyond the grace period (default 3 days), access is blocked
42
+ even for `active` subscriptions. The grace period is configurable per-customer,
43
+ per-plan, or per-bucket — see
32
44
  [Subscription and payment validation](./monetization-policy.md#subscription-and-payment-validation).
33
45
 
46
+ In the Zuplo admin UI, lifecycle status and payment status are combined into
47
+ derived display labels such as "Access Blocked" or "Payment Failed" to surface
48
+ the effective state at a glance. In the Developer Portal, a subscription with a
49
+ future `activeTo` (whether `active` or `canceled`) is shown with an "Expiring"
50
+ badge and the upcoming end date.
51
+
34
52
  :::
35
53
 
36
54
  ## Creating subscriptions
@@ -43,8 +61,9 @@ completes Stripe Checkout, and gets their API key immediately.
43
61
  1. Customer visits the pricing page
44
62
  2. Clicks "Subscribe" on their chosen plan
45
63
  3. Completes Stripe Checkout (enters payment details)
46
- 4. Redirected back to the Developer Portal
47
- 5. Subscription is active, API key is generated
64
+ 4. Returns to the Developer Portal to review the subscription summary
65
+ 5. Clicks "Confirm & Subscribe" to finalize
66
+ 6. Subscription is active, API key is generated
48
67
 
49
68
  ### Programmatic (API)
50
69
 
@@ -63,7 +82,7 @@ curl -X POST https://dev.zuplo.com/v3/metering/{bucketId}/subscriptions \
63
82
  ```
64
83
 
65
84
  `plan` references the target plan by its `key` (and optionally `version`).
66
- Provide either `customerId` (the OpenMeter customer ULID, format
85
+ Provide either `customerId` (the metering customer ULID, format
67
86
  `^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$`) or `customerKey` (your own
68
87
  identifier). Optional fields include `timing` (`"immediate"` by default,
69
88
  `"next_billing_cycle"`, or an RFC 3339 timestamp), `startingPhase`, `name`,
@@ -168,23 +187,31 @@ If the plan has a paid phase after the trial:
168
187
  - On success: subscription transitions to the paid phase with paid entitlements
169
188
  - On failure: access depends on the payment grace period configuration
170
189
 
171
- If the customer cancels during the trial:
190
+ What happens if the customer cancels during the trial depends on whether the
191
+ trial phase has billable rate cards:
172
192
 
173
- - They retain trial access until the trial period ends
174
- - No payment is charged
175
- - After the trial period, access is revoked
193
+ - **Free trial** (no priced rate cards in the trial phase, like the example
194
+ above): access ends immediately, no payment is charged, and the trial does not
195
+ convert to the paid phase. Cancellation cannot defer to a billing-cycle end
196
+ because the trial phase has nothing to bill
197
+ - **Paid trial** (the trial phase has a price, e.g., a $1 introductory rate):
198
+ access continues until the end of the trial period (default
199
+ `next_billing_cycle` timing), the trial fee is billed on the final invoice,
200
+ and the trial does not convert to the subsequent paid phase
176
201
 
177
202
  ## Plan changes (upgrades and downgrades)
178
203
 
179
204
  ### Customer-initiated (Developer Portal)
180
205
 
181
- Customers can change plans from the Subscriptions page in the Developer Portal:
206
+ Customers can change plans from the **Manage Subscription** section in the
207
+ Developer Portal:
182
208
 
183
- 1. Customer clicks "Change Plan" on their active subscription
209
+ 1. Customer clicks "Switch Plan" on their active subscription
184
210
  2. Sees available plans with pricing comparison
185
211
  3. Selects the new plan
186
212
  4. Stripe handles proration (charge or credit the difference)
187
- 5. Entitlements update immediately the customer's quota changes in real time
213
+ 5. For an upgrade, new entitlements take effect immediately; for a downgrade,
214
+ they apply at the next billing cycle
188
215
  6. The API key stays the same
189
216
 
190
217
  ### Programmatic (API)
@@ -203,14 +230,16 @@ curl -X POST https://dev.zuplo.com/v3/metering/{bucketId}/subscriptions/{subscri
203
230
  ```
204
231
 
205
232
  `timing` accepts `"immediate"`, `"next_billing_cycle"`, or an RFC 3339
206
- timestamp. To preview the proration credit before committing, call
233
+ timestamp. Optional fields include `startingPhase`, `name`, `description`,
234
+ `metadata`, `alignment`, and `billingAnchor`. To preview the proration credit
235
+ before committing, call
207
236
  `POST /v3/metering/{bucketId}/subscriptions/{subscriptionId}/change/estimate-credit`
208
237
  with the same body.
209
238
 
210
239
  ### Proration behavior
211
240
 
212
241
  When a customer changes plans mid-billing-period, Zuplo uses
213
- **max-consumption-based proration** to calculate a fair credit from the old
242
+ **max_consumption_based proration** to calculate a fair credit from the old
214
243
  plan. Instead of only considering how much time has passed, the system looks at
215
244
  both elapsed time and actual quota usage, then uses whichever is greater.
216
245
 
@@ -227,8 +256,8 @@ does not reflect their actual usage.
227
256
  **Downgrade (e.g., Pro → Starter):**
228
257
 
229
258
  - New (lower) entitlements take effect at the next billing cycle
230
- - A proration credit from the old plan is applied as a discount on the next
231
- invoice
259
+ - No proration credit is issued. The customer keeps the higher-tier entitlements
260
+ for the remainder of the current cycle they already paid for.
232
261
 
233
262
  **Example:** A customer on Starter ($29/month, 10,000 requests) upgrades to Pro
234
263
  on day 15 of a 30-day period, having used 7,000 requests.
@@ -240,23 +269,39 @@ on day 15 of a 30-day period, having used 7,000 requests.
240
269
  | Max of the two | 70% |
241
270
  | **Credit applied** | **$8.70** |
242
271
 
243
- The credit is applied once and is not carried forward to future billing cycles.
272
+ The credit amount is calculated once at the moment of the plan change. It is
273
+ applied as a line-item discount on the next invoice's upfront flat-fee line. If
274
+ the credit exceeds that line's amount, the remainder cascades onto subsequent
275
+ invoices in chronological order until it is fully consumed.
276
+
277
+ ### Quota on plan change
278
+
279
+ Each subscription tracks its own quota independently. When a customer changes
280
+ plans, a brand-new subscription is created and its entitlement starts measuring
281
+ usage from the switch time — usage from the previous plan does not count against
282
+ the new plan's quota.
244
283
 
245
- ### Quota reset on plan change
284
+ Walking through the example above: a customer used 8,000 of their 10,000-request
285
+ Starter quota in the first 15 days. After upgrading to Pro on day 15, the
286
+ customer has the full 50,000-request Pro quota available from day 15 onward,
287
+ regardless of how much was used on Starter. The 8,000 stays attributed to the
288
+ Starter subscription for billing purposes only.
246
289
 
247
- When a customer changes plans, the quota usage counter does **not** reset. If a
248
- customer used 8,000 of their 10,000-request Starter quota and upgrades to Pro
249
- (50,000 requests), they have 42,000 remaining for the current period — not
250
- 50,000.
290
+ Gaming via short-lived upgrades is constrained by two other mechanisms:
251
291
 
252
- This prevents gaming where a customer uses up their starter quota, upgrades
253
- momentarily, and immediately downgrades.
292
+ - Downgrades take effect at the next billing cycle (not immediately), so a
293
+ customer cannot briefly upgrade and immediately downgrade to grab a fresh
294
+ quota.
295
+ - Max-consumption-based proration issues zero refund when the old plan's quota
296
+ was already mostly consumed (see [Proration behavior](#proration-behavior)
297
+ above), so paying for a short-lived upgrade is not economical.
254
298
 
255
299
  ## Cancellation
256
300
 
257
301
  ### Customer-initiated
258
302
 
259
- Customers can cancel from the Developer Portal subscriptions page:
303
+ Customers can cancel from the **Manage Subscription** section in the Developer
304
+ Portal:
260
305
 
261
306
  1. Customer clicks "Cancel Subscription"
262
307
  2. Confirmation dialog explains what happens
@@ -264,6 +309,10 @@ Customers can cancel from the Developer Portal subscriptions page:
264
309
  4. Customer retains full access until the period ends
265
310
  5. At period end, access is revoked and the API key stops working
266
311
 
312
+ For free plans and subscriptions still in their free trial phase, cancellation
313
+ is immediate — there are no billable items left to consume, so end-of-period
314
+ behavior does not apply.
315
+
267
316
  ### Programmatic cancellation
268
317
 
269
318
  ```bash
@@ -285,11 +334,11 @@ curl -X POST https://dev.zuplo.com/v3/metering/{bucketId}/subscriptions/{subscri
285
334
 
286
335
  ### Cancellation behavior
287
336
 
288
- | Scenario | Default behavior |
289
- | ---------------------------- | ------------------------------------------ |
290
- | Active subscription canceled | Access until period end, then revoked |
291
- | Trial subscription canceled | Access until trial end, no payment charged |
292
- | Subscription with overage | Overage billed on final invoice |
337
+ | Scenario | Default behavior |
338
+ | ---------------------------------------- | ------------------------------------------- |
339
+ | Active subscription canceled | Access until period end, then revoked |
340
+ | Free trial or free subscription canceled | Access ends immediately, no payment charged |
341
+ | Subscription with overage | Overage billed on final invoice |
293
342
 
294
343
  ## Reactivation
295
344
 
@@ -305,14 +354,22 @@ This removes the pending cancellation. The subscription continues as normal. For
305
354
  a subscription whose period has already ended, create a new subscription on the
306
355
  same plan instead.
307
356
 
308
- ## Multiple subscriptions
357
+ ## Subscriptions per customer
358
+
359
+ By default, each customer can hold one active subscription at a time. The
360
+ Developer Portal returns `409 Conflict` ("the maximum number of active
361
+ subscriptions has been reached") when a customer tries to subscribe while
362
+ another subscription is still active or pending cancellation — a subscription in
363
+ the `canceled` wind-down state still counts toward the cap.
309
364
 
310
- A customer can hold multiple active subscriptions simultaneously. This supports
311
- scenarios like:
365
+ Multi-subscription support is available on request. Contact
366
+ [sales@zuplo.com](mailto:sales@zuplo.com) to enable it for your bucket if you
367
+ need scenarios like:
312
368
 
313
369
  - A primary monthly subscription plus a credit pack top-up
314
370
  - Separate subscriptions for different API products
315
371
  - A team subscription and a personal subscription
316
372
 
317
- Each subscription generates its own API key. The customer uses the appropriate
318
- key for each use case.
373
+ Each subscription is bound to its own consumer record and its own API key, both
374
+ generated when the subscription is created. When a customer holds multiple
375
+ subscriptions, they use the appropriate key for each.
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: "Zuplo CLI: Ca Certificate Create"
3
+ sidebar_label: ca-certificate create
4
+ ---
5
+
6
+ <CliCommand
7
+ command="ca-certificate create"
8
+ description="Creates a new CA certificate for client mTLS verification"
9
+ options={[
10
+ {
11
+ "name": "name",
12
+ "type": "string",
13
+ "description": "The name of the CA certificate (must be a valid JavaScript identifier: starts with a letter, _, or $; contains only letters, digits, _, or $)",
14
+ "required": false,
15
+ "deprecated": false,
16
+ "hidden": false
17
+ },
18
+ {
19
+ "name": "cert",
20
+ "type": "string",
21
+ "description": "Path to a PEM-encoded CA certificate file (.pem, .crt, or .cer with a -----BEGIN CERTIFICATE----- header). DER inputs are not accepted",
22
+ "required": false,
23
+ "deprecated": false,
24
+ "hidden": false,
25
+ "normalize": true
26
+ },
27
+ {
28
+ "name": "account",
29
+ "type": "string",
30
+ "description": "The account name",
31
+ "required": false,
32
+ "deprecated": false,
33
+ "hidden": false
34
+ },
35
+ {
36
+ "name": "output",
37
+ "type": "string",
38
+ "description": "Output format",
39
+ "default": "default",
40
+ "required": false,
41
+ "deprecated": false,
42
+ "hidden": false,
43
+ "alias": [
44
+ "o"
45
+ ],
46
+ "choices": [
47
+ "default",
48
+ "json"
49
+ ]
50
+ }
51
+ ]}
52
+ examples={[
53
+ [
54
+ "$0 ca-certificate create --name my_ca --cert ./ca.pem",
55
+ "Create a CA certificate for client mTLS verification"
56
+ ],
57
+ [
58
+ "$0 ca-certificate create --name my_ca --cert ./ca.pem --output json",
59
+ "Create a CA certificate and output the result as JSON"
60
+ ],
61
+ [
62
+ "$0 ca-certificate create --name my_ca --cert ./ca.pem --account my-account",
63
+ "Explicitly specify the account"
64
+ ]
65
+ ]}
66
+ usage="$0 ca-certificate create --name <name> --cert <file> [options]"
67
+ >
68
+
69
+ </CliCommand>
70
+
71
+ ## Global options
72
+
73
+ The following global options are available for all commands:
74
+
75
+ - [`--help`](./global-options.mdx#help)
76
+ - [`--api-key`](./global-options.mdx#api-key)
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: "Zuplo CLI: Ca Certificate Delete"
3
+ sidebar_label: ca-certificate delete
4
+ ---
5
+
6
+ <CliCommand
7
+ command="ca-certificate delete"
8
+ description="Deletes a CA certificate by ID"
9
+ options={[
10
+ {
11
+ "name": "cert-id",
12
+ "type": "string",
13
+ "description": "The ID of the CA certificate to delete",
14
+ "required": false,
15
+ "deprecated": false,
16
+ "hidden": false
17
+ },
18
+ {
19
+ "name": "account",
20
+ "type": "string",
21
+ "description": "The account name",
22
+ "required": false,
23
+ "deprecated": false,
24
+ "hidden": false
25
+ },
26
+ {
27
+ "name": "output",
28
+ "type": "string",
29
+ "description": "Output format",
30
+ "default": "default",
31
+ "required": false,
32
+ "deprecated": false,
33
+ "hidden": false,
34
+ "alias": [
35
+ "o"
36
+ ],
37
+ "choices": [
38
+ "default",
39
+ "json"
40
+ ]
41
+ }
42
+ ]}
43
+ examples={[
44
+ [
45
+ "$0 ca-certificate delete --cert-id mtlsca_abc123",
46
+ "Delete a CA certificate"
47
+ ],
48
+ [
49
+ "$0 ca-certificate delete --cert-id mtlsca_abc123 --output json",
50
+ "Delete a CA certificate and output the result as JSON"
51
+ ],
52
+ [
53
+ "$0 ca-certificate delete --cert-id mtlsca_abc123 --account my-account",
54
+ "Explicitly specify the account"
55
+ ]
56
+ ]}
57
+ usage="$0 ca-certificate delete --cert-id <id> [options]"
58
+ >
59
+
60
+ </CliCommand>
61
+
62
+ ## Global options
63
+
64
+ The following global options are available for all commands:
65
+
66
+ - [`--help`](./global-options.mdx#help)
67
+ - [`--api-key`](./global-options.mdx#api-key)
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: "Zuplo CLI: Ca Certificate Describe"
3
+ sidebar_label: ca-certificate describe
4
+ ---
5
+
6
+ <CliCommand
7
+ command="ca-certificate describe"
8
+ description="Describes a CA certificate"
9
+ options={[
10
+ {
11
+ "name": "cert-id",
12
+ "type": "string",
13
+ "description": "The ID of the CA certificate to describe",
14
+ "required": false,
15
+ "deprecated": false,
16
+ "hidden": false
17
+ },
18
+ {
19
+ "name": "account",
20
+ "type": "string",
21
+ "description": "The account name",
22
+ "required": false,
23
+ "deprecated": false,
24
+ "hidden": false
25
+ },
26
+ {
27
+ "name": "output",
28
+ "type": "string",
29
+ "description": "Output format",
30
+ "default": "default",
31
+ "required": false,
32
+ "deprecated": false,
33
+ "hidden": false,
34
+ "alias": [
35
+ "o"
36
+ ],
37
+ "choices": [
38
+ "default",
39
+ "json"
40
+ ]
41
+ }
42
+ ]}
43
+ examples={[
44
+ [
45
+ "$0 ca-certificate describe --cert-id mtlsca_abc123",
46
+ "Get details about a CA certificate"
47
+ ],
48
+ [
49
+ "$0 ca-certificate describe --cert-id mtlsca_abc123 --output json",
50
+ "Get details as JSON"
51
+ ],
52
+ [
53
+ "$0 ca-certificate describe --cert-id mtlsca_abc123 --account my-account",
54
+ "Explicitly specify the account"
55
+ ]
56
+ ]}
57
+ usage="$0 ca-certificate describe --cert-id <id> [options]"
58
+ >
59
+
60
+ </CliCommand>
61
+
62
+ ## Global options
63
+
64
+ The following global options are available for all commands:
65
+
66
+ - [`--help`](./global-options.mdx#help)
67
+ - [`--api-key`](./global-options.mdx#api-key)