---
title: "OpenVibe.Domains API · OpenVibe.Services"
canonical: "https://openvibe.services/docs/api/domains"
updated: null
---

# OpenVibe.Domains API · OpenVibe.Services

HTML: [OpenVibe.Domains API · OpenVibe.Services](https://openvibe.services/docs/api/domains)

# OpenVibe.Domains API

Generated at 2026-11-13 06:25:48 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.161.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.161.0).

Server `https://openvibe.domains`. 8 routes performing 3 capabilities. [OpenAPI 3.1 document](/docs/api/domains.json).

  only routes apps can be granted (public, partner)  

### GET `/api/v1/actions`

Read one person's Action Center items from OpenVibe.Domains (plan 2026-10-28 §3.10, §5.1): their DNS change proposals (waiting for approval, applied, failed or rolled back in the last 30 days), as com

- Capabilities: [domains.actions.read](/docs/capabilities/domains.actions.read)
- Visibility: first-party
- Response: `application/json` [common.action-list-result@1](/docs/contracts/common.action-list-result)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>domains.actions.read</strong> (first-party): Read one person&#39;s Action Center items from OpenVibe.Domains (plan 2026-10-28 §3.10, §5.1): their DNS change proposals (waiting for approval, applied, failed or rolled back in the last 30 days), as common.action-list-result@1. GET /api/v1/actions?subject=usr\_… with a service token; granted to OpenVibe.Network&#39;s aggregator only. Never another person&#39;s items, never a credential, and only the fields of common.action-item@1.</p>

### POST `/api/v1/proposals/{id}/decide`

Approve or decline a pending OpenVibe.Domains proposal for its person (plan 2026-10-28 §5.1: no change touches DNS until its person approves it): POST /api/v1/proposals/:id/decide { decision: approve 

- Capabilities: [domains.proposal.decide](/docs/capabilities/domains.proposal.decide)
- Visibility: first-party
- Parameters: - `id` (path, required)
- Response: `application/json` [common.action-item@1](/docs/contracts/common.action-item)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>domains.proposal.decide</strong> (first-party): Approve or decline a pending OpenVibe.Domains proposal for its person (plan 2026-10-28 §5.1: no change touches DNS until its person approves it): POST /api/v1/proposals/:id/decide { decision: approve | decline } with a service token and X-OV-Subject naming the proposal&#39;s owner, the same decision the person makes on the proposal&#39;s page. Approving applies the change through the provider&#39;s API with the person&#39;s connected credential; the proposal keeps its rollback. Granted to OpenVibe.Network, which acts from the Action Center for the signed-in person.</p>

### GET `/internal/config`

Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists

- Capabilities: [domains.config.manage](/docs/capabilities/domains.config.manage)
- Visibility: internal
- Parameters: - `values` (query, required) — The new values, one member per key. The store validates them against the namespace schema; a secret-class value here is refused.
- `reason` (query, required) — Why the change is made; it is the revision's reason in the history.
- `merge` (query) — Merge into the active values instead of replacing them.
- `unset` (query) — Keys to remove from the new revision.
- Input: [common.config-change@1](/docs/contracts/common.config-change)
- Response: `application/json` [common.config-namespace@1](/docs/contracts/common.config-namespace)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>domains.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network&#39;s Setup tab: GET /internal/config lists the namespace summaries, GET /internal/config/:namespace returns one as common.config-namespace@1, POST applies common.config-change@1, and PUT /internal/config/:namespace/secrets/:key sets a secret with common.config-secret-put@1 (write-only; the answer is the marker) while DELETE removes it. POST /internal/config/:namespace/test/:key asks the service&#39;s tester to try a stored value with the provider on the server, answering { ok, message } in one line that never carries a secret (the owner&#39;s Setup tab). Only Network&#39;s admin proxy, acting for the owner, holds this capability; it is never grantable to apps. Each request carries the owner as actor, and the service audits every write with that actor and key, never a secret value.</p>

### GET `/internal/config/{namespace}`

Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists

- Capabilities: [domains.config.manage](/docs/capabilities/domains.config.manage)
- Visibility: internal
- Parameters: - `namespace` (path, required)
- `values` (query, required) — The new values, one member per key. The store validates them against the namespace schema; a secret-class value here is refused.
- `reason` (query, required) — Why the change is made; it is the revision's reason in the history.
- `merge` (query) — Merge into the active values instead of replacing them.
- `unset` (query) — Keys to remove from the new revision.
- Input: [common.config-change@1](/docs/contracts/common.config-change)
- Response: `application/json` [common.config-namespace@1](/docs/contracts/common.config-namespace)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>domains.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network&#39;s Setup tab: GET /internal/config lists the namespace summaries, GET /internal/config/:namespace returns one as common.config-namespace@1, POST applies common.config-change@1, and PUT /internal/config/:namespace/secrets/:key sets a secret with common.config-secret-put@1 (write-only; the answer is the marker) while DELETE removes it. POST /internal/config/:namespace/test/:key asks the service&#39;s tester to try a stored value with the provider on the server, answering { ok, message } in one line that never carries a secret (the owner&#39;s Setup tab). Only Network&#39;s admin proxy, acting for the owner, holds this capability; it is never grantable to apps. Each request carries the owner as actor, and the service audits every write with that actor and key, never a secret value.</p>

### POST `/internal/config/{namespace}`

Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists

- Capabilities: [domains.config.manage](/docs/capabilities/domains.config.manage)
- Visibility: internal
- Parameters: - `namespace` (path, required)
- Request body: `application/json` [common.config-change@1](/docs/contracts/common.config-change)
- Response: `application/json` [common.config-namespace@1](/docs/contracts/common.config-namespace)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>domains.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network&#39;s Setup tab: GET /internal/config lists the namespace summaries, GET /internal/config/:namespace returns one as common.config-namespace@1, POST applies common.config-change@1, and PUT /internal/config/:namespace/secrets/:key sets a secret with common.config-secret-put@1 (write-only; the answer is the marker) while DELETE removes it. POST /internal/config/:namespace/test/:key asks the service&#39;s tester to try a stored value with the provider on the server, answering { ok, message } in one line that never carries a secret (the owner&#39;s Setup tab). Only Network&#39;s admin proxy, acting for the owner, holds this capability; it is never grantable to apps. Each request carries the owner as actor, and the service audits every write with that actor and key, never a secret value.</p>

### PUT `/internal/config/{namespace}/secrets/{key}`

Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists

- Capabilities: [domains.config.manage](/docs/capabilities/domains.config.manage)
- Visibility: internal
- Parameters: - `namespace` (path, required)
- `key` (path, required)
- Request body: `application/json` [common.config-change@1](/docs/contracts/common.config-change)
- Response: `application/json` [common.config-namespace@1](/docs/contracts/common.config-namespace)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>domains.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network&#39;s Setup tab: GET /internal/config lists the namespace summaries, GET /internal/config/:namespace returns one as common.config-namespace@1, POST applies common.config-change@1, and PUT /internal/config/:namespace/secrets/:key sets a secret with common.config-secret-put@1 (write-only; the answer is the marker) while DELETE removes it. POST /internal/config/:namespace/test/:key asks the service&#39;s tester to try a stored value with the provider on the server, answering { ok, message } in one line that never carries a secret (the owner&#39;s Setup tab). Only Network&#39;s admin proxy, acting for the owner, holds this capability; it is never grantable to apps. Each request carries the owner as actor, and the service audits every write with that actor and key, never a secret value.</p>

### DELETE `/internal/config/{namespace}/secrets/{key}`

Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists

- Capabilities: [domains.config.manage](/docs/capabilities/domains.config.manage)
- Visibility: internal
- Parameters: - `namespace` (path, required)
- `key` (path, required)
- `values` (query, required) — The new values, one member per key. The store validates them against the namespace schema; a secret-class value here is refused.
- `reason` (query, required) — Why the change is made; it is the revision's reason in the history.
- `merge` (query) — Merge into the active values instead of replacing them.
- `unset` (query) — Keys to remove from the new revision.
- Input: [common.config-change@1](/docs/contracts/common.config-change)
- Response: `application/json` [common.config-namespace@1](/docs/contracts/common.config-namespace)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>domains.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network&#39;s Setup tab: GET /internal/config lists the namespace summaries, GET /internal/config/:namespace returns one as common.config-namespace@1, POST applies common.config-change@1, and PUT /internal/config/:namespace/secrets/:key sets a secret with common.config-secret-put@1 (write-only; the answer is the marker) while DELETE removes it. POST /internal/config/:namespace/test/:key asks the service&#39;s tester to try a stored value with the provider on the server, answering { ok, message } in one line that never carries a secret (the owner&#39;s Setup tab). Only Network&#39;s admin proxy, acting for the owner, holds this capability; it is never grantable to apps. Each request carries the owner as actor, and the service audits every write with that actor and key, never a secret value.</p>

### POST `/internal/config/{namespace}/test/{key}`

Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists

- Capabilities: [domains.config.manage](/docs/capabilities/domains.config.manage)
- Visibility: internal
- Parameters: - `namespace` (path, required)
- `key` (path, required)
- Request body: `application/json` [common.config-change@1](/docs/contracts/common.config-change)
- Response: `application/json` [common.config-namespace@1](/docs/contracts/common.config-namespace)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>domains.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Domains through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network&#39;s Setup tab: GET /internal/config lists the namespace summaries, GET /internal/config/:namespace returns one as common.config-namespace@1, POST applies common.config-change@1, and PUT /internal/config/:namespace/secrets/:key sets a secret with common.config-secret-put@1 (write-only; the answer is the marker) while DELETE removes it. POST /internal/config/:namespace/test/:key asks the service&#39;s tester to try a stored value with the provider on the server, answering { ok, message } in one line that never carries a secret (the owner&#39;s Setup tab). Only Network&#39;s admin proxy, acting for the owner, holds this capability; it is never grantable to apps. Each request carries the owner as actor, and the service audits every write with that actor and key, never a secret value.</p>
