MethodPathSummaryAuth
GET/v1/admin/plugin-providersList third-party DNS / SMS / ICP provider plugins with their installation contract resultsSession
POST/v1/admin/plugin-providers/{plugin_id}/{action}Run the installation contract, enable or disable a provider pluginSession

Contract file:api/openapi/v1/control.yaml

Operation details

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
StatusDescription
200Provider plugins.

Fields:items: array<PluginProvider>

401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
503A 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
NameInTypeRequiredDescription
plugin_idpathstringYes—
actionpathanyYes—

Request body

application/json · Required:No

actOnPluginProvider Request body
NameTypeRequiredDescription
risk_acknowledgedbooleanNo—
step_up_tokenstringNo—

Responses

actOnPluginProvider Responses
StatusDescription
200The 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)

401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
404The requested resource was not found.
409The requested state conflicts with an existing resource or idempotency fact.
422plugin_provider_risk_not_acknowledged (payment plugin enable without the acknowledged risk notice).
503A 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