GET /v1/admin/plugin-providers
List third-party DNS / SMS / ICP provider plugins with their installation contract results
- operationId
listPluginProviders- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Description (from the contract)
Platform administrators with plugin_installations.read (or platform.admin). A provider plugin appears once its installation is enabled here and the license service serves its declaration (plugin_provider/<plugin id>). usable is true only while it is active, its contract passed for the current version and it is enabled.
Responses
listPluginProviders Responses| Status | Description |
|---|
200 | Provider plugins. Fields:items: array<PluginProvider> |
|---|
401 | Authentication failed or the session is invalid. |
|---|
403 | The authenticated principal is not allowed to perform the action. |
|---|
503 | A required dependency is unavailable. |
|---|
What to do on failure
401 Check the credential format and whether it expired or was rotated.403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.503 A dependency is unavailable: retry later with the original Idempotency-Key.
↑ Back to list
POST /v1/admin/plugin-providers/{plugin_id}/{action}
Run the installation contract, enable or disable a provider plugin
- operationId
actOnPluginProvider- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Description (from the contract)
Platform administrators with plugin_installations.manage (or platform.admin). contract runs the cdnca.provider/v1 contract cases against the plugin sandbox and records the report; enable requires a passed contract for the current version (409 plugin_provider_contract_not_passed otherwise, also refused by the database). A payment plugin (high_risk) is a high-risk permission: enable needs risk_acknowledged (422 plugin_provider_risk_not_acknowledged) and an MFA step-up proof issued for the installation tenant with audience/action plugin.provider.enable_payment (403 plugin_provider_step_up_required); the proof is bound to the plugin declaration when consumed. Audited as plugin.provider.contract / enable / disable (refusals included).
Parameters
actOnPluginProvider Parameters| Name | In | Type | Required | Description |
|---|
plugin_id | path | string | Yes | — |
|---|
action | path | any | Yes | — |
|---|
Request body
application/json · Required:No
actOnPluginProvider Request body| Name | Type | Required | Description |
|---|
risk_acknowledged | boolean | No | — |
|---|
step_up_token | string | No | — |
|---|
Responses
actOnPluginProvider Responses| Status | Description |
|---|
200 | The provider plugin after the action. Fields:plugin_id: string version: string base_url: string(uri) kinds: array<any> status: any contract_status: any contract_version?: string contract_checked_at?: string(date-time) contract_report?: object enabled: boolean usable: boolean updated_at: string(date-time) high_risk?: boolean risk_notice?: string tenant_id?: string(uuid) payment_confirmed_at?: string(date-time) |
|---|
401 | Authentication failed or the session is invalid. |
|---|
403 | The authenticated principal is not allowed to perform the action. |
|---|
404 | The requested resource was not found. |
|---|
409 | The requested state conflicts with an existing resource or idempotency fact. |
|---|
422 | plugin_provider_risk_not_acknowledged (payment plugin enable without the acknowledged risk notice). |
|---|
503 | A required dependency is unavailable. |
|---|
What to do on failure
401 Check the credential format and whether it expired or was rotated.403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.404 The resource does not exist or belongs to another tenant.409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.503 A dependency is unavailable: retry later with the original Idempotency-Key.
↑ Back to list