zuplo 6.70.27 → 6.70.29
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/docs/articles/accounts/switching-between-accounts.mdx +160 -0
- package/docs/articles/configuring-auth0-for-mcp-auth.mdx +58 -18
- package/docs/articles/monetization/api-access.mdx +0 -130
- package/docs/articles/monetization/going-to-production.mdx +516 -0
- package/docs/articles/monetization/index.mdx +1 -0
- package/docs/articles/monetization/monetization-policy.md +1 -4
- package/docs/articles/monetization/plan-examples.mdx +34 -6
- package/docs/articles/monetization/stripe-integration.md +2 -12
- package/docs/articles/monetization/troubleshooting.md +45 -28
- package/docs/cli/project-list.mdx +59 -0
- package/docs/cli/test.mdx +7 -0
- package/docs/policies/_index.md +1 -0
- package/docs/policies/akamai-firewall-for-ai-inbound/schema.json +17 -3
- package/docs/policies/akamai-firewall-for-ai-outbound/schema.json +17 -3
- package/docs/policies/complex-rate-limit-inbound/schema.json +3 -3
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +2 -6
- package/docs/policies/quota-inbound/schema.json +2 -2
- package/docs/policies/rate-limit-inbound/schema.json +2 -2
- package/docs/policies/semantic-cache-inbound/schema.json +4 -4
- package/docs/policies/set-upstream-api-key-inbound/doc.md +43 -0
- package/docs/policies/set-upstream-api-key-inbound/intro.md +5 -0
- package/docs/policies/set-upstream-api-key-inbound/schema.json +69 -0
- package/package.json +4 -4
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Switching Between Accounts
|
|
3
|
+
sidebar_label: Switching Accounts
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
If you belong to more than one Zuplo account (for example, your own personal
|
|
7
|
+
account plus an account you were invited to join), you can switch between them
|
|
8
|
+
in the Zuplo Portal without signing out.
|
|
9
|
+
|
|
10
|
+
This guide covers accepting an invitation, finding the account switcher, and
|
|
11
|
+
troubleshooting common issues when you can't see an account you expect to have
|
|
12
|
+
access to.
|
|
13
|
+
|
|
14
|
+
:::caution{title="Sign in with the same identity"}
|
|
15
|
+
|
|
16
|
+
The invitation must be accepted using the same identity (email address and
|
|
17
|
+
sign-in method) it was sent to. Zuplo treats Google sign-in, GitHub sign-in, and
|
|
18
|
+
email-password as separate identities, even when they share an email address. If
|
|
19
|
+
you click an invitation while signed in with a different identity, the
|
|
20
|
+
invitation does not apply.
|
|
21
|
+
|
|
22
|
+
:::
|
|
23
|
+
|
|
24
|
+
## Accept an account invitation
|
|
25
|
+
|
|
26
|
+
When an account admin invites you, Zuplo sends an invitation email to the
|
|
27
|
+
address they entered.
|
|
28
|
+
|
|
29
|
+
<Stepper>
|
|
30
|
+
|
|
31
|
+
1. Open the invitation email and click the link to accept the invitation.
|
|
32
|
+
1. If you are not already signed in to the Zuplo Portal, sign in with the **same
|
|
33
|
+
email address and method** the invitation was sent to. See
|
|
34
|
+
[I accepted the invitation but I don't see the account](#i-accepted-the-invitation-but-i-dont-see-the-account)
|
|
35
|
+
if you hit a mismatch.
|
|
36
|
+
1. After signing in, the invited account appears in the **Switch Account**
|
|
37
|
+
submenu of your avatar dropdown.
|
|
38
|
+
|
|
39
|
+
</Stepper>
|
|
40
|
+
|
|
41
|
+
## Switch accounts in the portal
|
|
42
|
+
|
|
43
|
+
Once you belong to multiple accounts, switch between them from the avatar menu.
|
|
44
|
+
|
|
45
|
+
<Stepper>
|
|
46
|
+
|
|
47
|
+
1. Click your avatar in the **top-right corner** of the portal. The currently
|
|
48
|
+
active account name appears at the top of the dropdown.
|
|
49
|
+
1. Hover over **Switch Account** to open the submenu, which lists every account
|
|
50
|
+
you belong to.
|
|
51
|
+
1. Select the account you want to switch to.
|
|
52
|
+
1. The portal reloads in the context of the selected account, showing that
|
|
53
|
+
account's projects, settings, and resources.
|
|
54
|
+
|
|
55
|
+
</Stepper>
|
|
56
|
+
|
|
57
|
+
After switching, all navigation within the portal (project lists, account
|
|
58
|
+
settings, billing, logs) reflects the selected account.
|
|
59
|
+
|
|
60
|
+
## How multi-account membership works
|
|
61
|
+
|
|
62
|
+
When you first sign up for Zuplo, an account is automatically created for you.
|
|
63
|
+
An admin on another account can then invite you by opening their avatar menu,
|
|
64
|
+
selecting **Account Settings → Members**, clicking **Invite to account**, and
|
|
65
|
+
entering your email address and role. Once you accept, you become a member of
|
|
66
|
+
that account in addition to your own.
|
|
67
|
+
|
|
68
|
+
Each account is independent. Projects, billing, custom domains, and API keys all
|
|
69
|
+
belong to a specific account. When you switch accounts in the portal, you see
|
|
70
|
+
only the resources that belong to the account you switched into.
|
|
71
|
+
|
|
72
|
+
## Roles in an invited account
|
|
73
|
+
|
|
74
|
+
Your role in the invited account determines what you can access. The account
|
|
75
|
+
admin assigns your role at invitation and can update it later. For the full
|
|
76
|
+
permission matrix, see [Role Permissions](./roles-and-permissions.mdx).
|
|
77
|
+
|
|
78
|
+
:::note
|
|
79
|
+
|
|
80
|
+
Role-Based Access Control (RBAC) with Developer and Member roles is an
|
|
81
|
+
enterprise feature. On non-enterprise accounts, all invited users are added as
|
|
82
|
+
**Admin** by default.
|
|
83
|
+
|
|
84
|
+
:::
|
|
85
|
+
|
|
86
|
+
## Troubleshooting
|
|
87
|
+
|
|
88
|
+
### I accepted the invitation but I don't see the account
|
|
89
|
+
|
|
90
|
+
This is almost always an **identity mismatch**. Zuplo supports signing in with
|
|
91
|
+
Google, GitHub, and email-password. Different sign-in methods are treated as
|
|
92
|
+
separate identities, even when the underlying email address is the same.
|
|
93
|
+
|
|
94
|
+
Work through this checklist:
|
|
95
|
+
|
|
96
|
+
- **Check the email address on the invitation.** Confirm it matches exactly the
|
|
97
|
+
email you use to sign in to Zuplo.
|
|
98
|
+
- **Check your sign-in method.** If the invitation was sent to `you@company.com`
|
|
99
|
+
and you usually sign in with Google OAuth using that same email, that
|
|
100
|
+
combination should work. But if you also created a separate email-password
|
|
101
|
+
account with the same address, Zuplo treats those as different identities.
|
|
102
|
+
Sign in with the method that matches how the invitation was sent.
|
|
103
|
+
- **Click the invitation link again.** Open the original invitation email and
|
|
104
|
+
click the accept link while signed in with the correct identity. If you were
|
|
105
|
+
signed in with a different identity the first time, the invitation may have
|
|
106
|
+
been applied to the wrong account.
|
|
107
|
+
- **Ask the account admin to verify.** The admin can check **Account Settings →
|
|
108
|
+
Members** to confirm the invitation status. If it shows as pending, it hasn't
|
|
109
|
+
been accepted yet. The admin can also remove and re-send the invitation to
|
|
110
|
+
ensure it goes to the right email.
|
|
111
|
+
|
|
112
|
+
### I see the account but not its projects
|
|
113
|
+
|
|
114
|
+
If you switched into an account but the project list appears empty or you can't
|
|
115
|
+
open a specific project, check the following:
|
|
116
|
+
|
|
117
|
+
- **Your account-level role may not include project visibility.** Users with the
|
|
118
|
+
**Member** role at the account level cannot view projects unless an admin has
|
|
119
|
+
granted them a project-level role. Ask the account admin to assign you a role
|
|
120
|
+
on the specific project you need access to. See
|
|
121
|
+
[Managing Project Members](./managing-project-members.mdx) for details.
|
|
122
|
+
- **The project may require source control access.** Some projects are connected
|
|
123
|
+
to a GitHub, GitLab, Bitbucket, or Azure DevOps repository. You may need
|
|
124
|
+
access to the linked repository in addition to your Zuplo project role.
|
|
125
|
+
|
|
126
|
+
### Why doesn't my invitation link work?
|
|
127
|
+
|
|
128
|
+
Invitation links can fail for a few reasons:
|
|
129
|
+
|
|
130
|
+
- **The link is expired or already used.** Ask the account admin to resend the
|
|
131
|
+
invitation from **Account Settings → Members**.
|
|
132
|
+
- **The link was opened while signed in as the wrong identity.** Sign out, open
|
|
133
|
+
the invitation in a fresh browser session, and sign in with the address the
|
|
134
|
+
invitation was sent to.
|
|
135
|
+
|
|
136
|
+
### Why don't I see the account switcher in my avatar menu?
|
|
137
|
+
|
|
138
|
+
The **Switch Account** submenu only lists other accounts when you belong to more
|
|
139
|
+
than one. If hovering **Switch Account** shows only your current account, you
|
|
140
|
+
belong to a single account. Ask the relevant account admin to send (or resend)
|
|
141
|
+
an invitation to your address.
|
|
142
|
+
|
|
143
|
+
### Do I get the invited account's plan features?
|
|
144
|
+
|
|
145
|
+
Yes. Plan-tier features (Free, Builder, Enterprise) are attached to the
|
|
146
|
+
**account**, not to individual users. While working inside a higher-tier
|
|
147
|
+
account, you have access to all features your role permits on that plan,
|
|
148
|
+
regardless of your personal account's plan.
|
|
149
|
+
|
|
150
|
+
When you switch back to your personal account, you have access only to the
|
|
151
|
+
features available on your personal account's plan.
|
|
152
|
+
|
|
153
|
+
## Related topics
|
|
154
|
+
|
|
155
|
+
- [Managing Account Members](./managing-account-members.mdx): How to invite
|
|
156
|
+
users and manage their roles (admin perspective).
|
|
157
|
+
- [Managing Project Members](./managing-project-members.mdx): How to grant
|
|
158
|
+
project-level access to account members.
|
|
159
|
+
- [Role Permissions](./roles-and-permissions.mdx): Full permission matrix for
|
|
160
|
+
account and project roles.
|
|
@@ -17,6 +17,15 @@ authentication for your MCP Server.
|
|
|
17
17
|
|
|
18
18
|
This guide will assume that you already have a working Auth0 account and tenant.
|
|
19
19
|
|
|
20
|
+
:::note
|
|
21
|
+
|
|
22
|
+
This guide is an example of how you can set up your Auth0 tenant for MCP OAuth
|
|
23
|
+
support. It is recommended that you consult the
|
|
24
|
+
[Auth0 documentation](https://auth0.com/ai/docs/mcp/guides/registering-your-mcp-client-application)
|
|
25
|
+
for more information.
|
|
26
|
+
|
|
27
|
+
:::
|
|
28
|
+
|
|
20
29
|
### Create an Auth0 API
|
|
21
30
|
|
|
22
31
|
First, you will need to create an Auth0 API. This API will be used to represent
|
|
@@ -30,18 +39,6 @@ your MCP Server.
|
|
|
30
39
|
`https://my-gateway.zuplo.dev/mcp`. **The trailing slash isn't required.**
|
|
31
40
|
3. Leave the **Signing Algorithm** as `RS256` and click **Create**.
|
|
32
41
|
|
|
33
|
-
### Enable Dynamic Client Registration
|
|
34
|
-
|
|
35
|
-
Next, you will need to enable Dynamic Client Registration for the API you just
|
|
36
|
-
created.
|
|
37
|
-
|
|
38
|
-
1. In the Auth0 dashboard, navigate to the tenant settings in **Settings** on
|
|
39
|
-
the left hand sidebar.
|
|
40
|
-
2. Navigate to the **Advanced** tab.
|
|
41
|
-
3. Scroll down to the **Settings** section and check the toggle for **OIDC
|
|
42
|
-
Dynamic Application Registration**. Also ensure that the **Enable Application
|
|
43
|
-
Connections** toggle is checked.
|
|
44
|
-
|
|
45
42
|
### Configure the Connection
|
|
46
43
|
|
|
47
44
|
Next, you will need to configure an Auth0 Connection for your API.
|
|
@@ -80,12 +77,45 @@ Next, you will need to configure an Auth0 Connection for your API.
|
|
|
80
77
|
--data '{ "is_domain_connection": true }'
|
|
81
78
|
```
|
|
82
79
|
|
|
83
|
-
5.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
80
|
+
5. Enable Resource Parameter Compatibility Profile. See the
|
|
81
|
+
[Auth0 tenant settings docs](https://auth0.com/docs/get-started/tenant-settings)
|
|
82
|
+
for more information.
|
|
83
|
+
|
|
84
|
+
After completing these changes to your Auth0 tenant, you will need to enable
|
|
85
|
+
CIMD or DCR (or both) on your Auth0 tenant.
|
|
86
|
+
|
|
87
|
+
### Enable CIMD for MCP OAuth
|
|
88
|
+
|
|
89
|
+
To use CIMD for MCP OAuth authentication, do the following:
|
|
90
|
+
|
|
91
|
+
1. In the Auth0 dashboard, navigate to the tenant settings in **Settings** on
|
|
92
|
+
the left hand sidebar.
|
|
93
|
+
2. Navigate to the **Advanced** tab.
|
|
94
|
+
3. Scroll down to the **Settings** section and check the toggle for **Client ID
|
|
95
|
+
Metadata Document (CIMD) Registration**.
|
|
96
|
+
4. Register the MCP clients via their public CIMD client data metadata URL by
|
|
97
|
+
clicking "Create Application" and then "Import from URL". Note that for all
|
|
98
|
+
the MCP clients you want to support, you will need to obtain the metadata URL
|
|
99
|
+
and register each application individually.
|
|
100
|
+
|
|
101
|
+
See the official
|
|
102
|
+
[Auth0 docs](https://auth0.com/ai/docs/mcp/guides/registering-your-mcp-client-application/manual-cimd-registration)
|
|
103
|
+
for more information.
|
|
104
|
+
|
|
105
|
+
### Enabling DCR for MCP OAuth
|
|
106
|
+
|
|
107
|
+
To use DCR for MCP OAuth authentication, do the following:
|
|
108
|
+
|
|
109
|
+
1. In the Auth0 dashboard, navigate to the tenant settings in **Settings** on
|
|
110
|
+
the left hand sidebar.
|
|
111
|
+
2. Navigate to the **Advanced** tab.
|
|
112
|
+
3. Scroll down to the **Settings** section and check the toggle for **Dynamic
|
|
113
|
+
Client Registration (DCR)**. Also ensure that the **Enable Application
|
|
114
|
+
Connections** toggle is checked.
|
|
115
|
+
|
|
116
|
+
See the official
|
|
117
|
+
[Auth0 docs](https://auth0.com/ai/docs/mcp/guides/registering-your-mcp-client-application/dynamic-client-registration)
|
|
118
|
+
for more information.
|
|
89
119
|
|
|
90
120
|
### Configure OAuth on Zuplo
|
|
91
121
|
|
|
@@ -184,3 +214,13 @@ open the OAuth settings. This will allow you to debug the flow step by step.
|
|
|
184
214
|
You should be able to hit the **Continue** button in the Inspector UI at each
|
|
185
215
|
step of the flow successfully. If you need more help debugging, see
|
|
186
216
|
[Testing OAuth on Zuplo](../handlers/mcp-server.mdx#oauth-testing).
|
|
217
|
+
|
|
218
|
+
:::note
|
|
219
|
+
|
|
220
|
+
When testing CIMD authentication, you will need an MCP client with a CIMD
|
|
221
|
+
compatible client metadata URL. Currently, MCP Inspector does not have this, so
|
|
222
|
+
it is recommended that you test with another client like the Claude Code CLI
|
|
223
|
+
(Client Metadata URI as of May 2026 is
|
|
224
|
+
https://claude.ai/oauth/claude-code-client-metadata).
|
|
225
|
+
|
|
226
|
+
:::
|
|
@@ -61,136 +61,6 @@ curl \
|
|
|
61
61
|
--header "Authorization: Bearer $ZAPI_KEY"
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
## Bucket monetization configuration
|
|
65
|
-
|
|
66
|
-
Each bucket has an optional `MonetizationConfiguration` record that holds
|
|
67
|
-
bucket-wide defaults. The configuration is read by the runtime and the Developer
|
|
68
|
-
Portal.
|
|
69
|
-
|
|
70
|
-
| Method | Path |
|
|
71
|
-
| -------- | ---------------------------------------------------- |
|
|
72
|
-
| `GET` | `/v3/metering/{bucketId}/monetization-configuration` |
|
|
73
|
-
| `PUT` | `/v3/metering/{bucketId}/monetization-configuration` |
|
|
74
|
-
| `DELETE` | `/v3/metering/{bucketId}/monetization-configuration` |
|
|
75
|
-
|
|
76
|
-
The `PUT` endpoint upserts the record. At least one of the four fields below
|
|
77
|
-
must be present. Pass any combination — fields that are omitted retain their
|
|
78
|
-
previous value.
|
|
79
|
-
|
|
80
|
-
| Field | Type | Description |
|
|
81
|
-
| ------------------------------ | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
82
|
-
| `multipleSubscriptionsEnabled` | `boolean` | Stored on the bucket. Reserved for future enforcement of multi-subscription rules; today the Developer Portal create-subscription path enforces a single active subscription per customer regardless of this flag. |
|
|
83
|
-
| `planOrder` | `string[]` | Plan keys in display order. Drives the pricing page sort and is used by [plan changes](./subscription-lifecycle.md#plan-changes-upgrades-and-downgrades) to decide upgrade vs downgrade — moving to a plan with a higher (or equal) index is treated as an upgrade with `"immediate"` timing; a lower index is a downgrade with `"next_billing_cycle"` timing. |
|
|
84
|
-
| `planSettings` | `object` | Per-plan overrides keyed by plan key. The supported sub-key today is `visiblePhases` — an array of phase keys that should appear on the pricing page. Omitted means no filtering; `[]` hides all phases for that plan. |
|
|
85
|
-
| `maxPaymentOverdueDays` | `integer` (`>= 0`) | Bucket-level grace period for overdue payments. Used as the lowest-priority value in the resolution chain: customer metadata → plan metadata → this bucket value → built-in default of `3` days. See [Subscription and payment validation](./monetization-policy.md#subscription-and-payment-validation). |
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
curl -X PUT "https://dev.zuplo.com/v3/metering/$BUCKET_ID/monetization-configuration" \
|
|
89
|
-
--header "Authorization: Bearer $ZAPI_KEY" \
|
|
90
|
-
--header "Content-Type: application/json" \
|
|
91
|
-
--data '{
|
|
92
|
-
"planOrder": ["free", "developer", "pro"],
|
|
93
|
-
"planSettings": {
|
|
94
|
-
"pro": { "visiblePhases": ["default"] }
|
|
95
|
-
},
|
|
96
|
-
"maxPaymentOverdueDays": 7
|
|
97
|
-
}'
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
`DELETE` removes the record entirely; `GET` on a bucket with no record returns
|
|
101
|
-
the schema defaults (`multipleSubscriptionsEnabled: false`, `planOrder: []`,
|
|
102
|
-
`planSettings: {}`, `maxPaymentOverdueDays: 3`).
|
|
103
|
-
|
|
104
|
-
## Stripe setup and billing readiness
|
|
105
|
-
|
|
106
|
-
These endpoints script the Stripe integration that the
|
|
107
|
-
[Monetization Service UI](./stripe-integration.md#connecting-your-stripe-account)
|
|
108
|
-
runs interactively. They live on the Zuplo developer API, so the request shape
|
|
109
|
-
is documented here.
|
|
110
|
-
|
|
111
|
-
### Connect a Stripe app
|
|
112
|
-
|
|
113
|
-
```http
|
|
114
|
-
POST /v3/metering/{bucketId}/setup/stripe
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Installs a Stripe app on the bucket and creates the default billing profile
|
|
118
|
-
linked to that app.
|
|
119
|
-
|
|
120
|
-
| Field | Type | Description |
|
|
121
|
-
| ------------- | --------- | ------------------------------------------------------------------------------------------------ |
|
|
122
|
-
| `apiKey` | `string` | Stripe secret or restricted key. Required. |
|
|
123
|
-
| `name` | `string` | Display name for the app. Required. |
|
|
124
|
-
| `taxEnabled` | `boolean` | Initial value for `workflow.tax.enabled` on the billing profile. Optional; defaults to `false`. |
|
|
125
|
-
| `taxEnforced` | `boolean` | Initial value for `workflow.tax.enforced` on the billing profile. Optional; defaults to `false`. |
|
|
126
|
-
| `country` | `string` | ISO 3166-1 alpha-2 supplier country for the billing profile. Optional; defaults to `"US"`. |
|
|
127
|
-
|
|
128
|
-
The request fails if the key prefix does not match the bucket environment:
|
|
129
|
-
|
|
130
|
-
- Working-copy or preview buckets accept `sk_test_*` or `rk_test_*`.
|
|
131
|
-
- Production buckets accept `sk_live_*` or `rk_live_*`.
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
curl -X POST "https://dev.zuplo.com/v3/metering/$BUCKET_ID/setup/stripe" \
|
|
135
|
-
--header "Authorization: Bearer $ZAPI_KEY" \
|
|
136
|
-
--header "Content-Type: application/json" \
|
|
137
|
-
--data '{
|
|
138
|
-
"apiKey": "rk_test_...",
|
|
139
|
-
"name": "Zuplo Monetization (test)",
|
|
140
|
-
"taxEnabled": false,
|
|
141
|
-
"country": "US"
|
|
142
|
-
}'
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### Read the connected Stripe app
|
|
146
|
-
|
|
147
|
-
```http
|
|
148
|
-
GET /v3/metering/{bucketId}/setup/stripe
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
Returns a summary of the connected Stripe app, the matched billing profile, and
|
|
152
|
-
connection-test status. Use this to confirm the integration is wired up before
|
|
153
|
-
continuing.
|
|
154
|
-
|
|
155
|
-
### Add a billing profile to a Stripe app
|
|
156
|
-
|
|
157
|
-
```http
|
|
158
|
-
POST /v3/metering/{bucketId}/setup/stripe/{stripeAppId}/billing-profile
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Creates an additional billing profile against an already-installed Stripe app.
|
|
162
|
-
This is rarely needed — the default profile is created during initial setup. Use
|
|
163
|
-
this endpoint to create per-supplier-country profiles.
|
|
164
|
-
|
|
165
|
-
### Check billing readiness
|
|
166
|
-
|
|
167
|
-
```http
|
|
168
|
-
GET /v3/metering/{bucketId}/billing-readiness
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
Returns:
|
|
172
|
-
|
|
173
|
-
```json
|
|
174
|
-
{
|
|
175
|
-
"hasStripeApp": true,
|
|
176
|
-
"stripeAppId": "app_01H...",
|
|
177
|
-
"hasDefaultBillingProfile": true,
|
|
178
|
-
"defaultBillingProfileId": "bp_01H..."
|
|
179
|
-
}
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
Use this in setup wizards to gate the UI on whether Stripe is connected.
|
|
183
|
-
|
|
184
|
-
### Update an app
|
|
185
|
-
|
|
186
|
-
```http
|
|
187
|
-
PUT /v3/metering/{bucketId}/apps/{appId}
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
Replaces an app's configuration (name, description, metadata, and — for Stripe
|
|
191
|
-
apps — `secretAPIKey`). The same key-prefix validation as `POST /setup/stripe`
|
|
192
|
-
applies: a Stripe key must match the bucket environment.
|
|
193
|
-
|
|
194
64
|
## API Reference
|
|
195
65
|
|
|
196
66
|
For complete API operations, see the API Reference documentation:
|