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

# OpenVibe.Design API · OpenVibe.Services

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

# OpenVibe.Design 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.design`. 7 routes performing 2 capabilities. [OpenAPI 3.1 document](/docs/api/design.json).

  only routes apps can be granted (public, partner)  

### POST `/api/v1/glyphs/drafts`

A first-party service may ask OpenVibe.Design to draft a missing glyph.

- Capabilities: [design.glyph.draft](/docs/capabilities/design.glyph.draft)
- Visibility: internal
- Request body: `application/json` [design.glyph-draft-request@1](/docs/contracts/design.glyph-draft-request)
- Response: `application/json` [design.glyph-draft-result@1](/docs/contracts/design.glyph-draft-result)
- Errors: [errors.problem@1](/docs/contracts/errors.problem) (application/problem+json)

 Description<p><strong>design.glyph.draft</strong> (internal): A first-party service may ask OpenVibe.Design to draft a missing glyph. Design deduplicates requests and leaves AI candidates in the staff review queue; the caller uses a bundled glyph until an approved drawing is available.</p>

### GET `/internal/config`

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

- Capabilities: [design.config.manage](/docs/capabilities/design.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>design.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Design 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.Design through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists 

- Capabilities: [design.config.manage](/docs/capabilities/design.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>design.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Design 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.Design through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists 

- Capabilities: [design.config.manage](/docs/capabilities/design.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>design.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Design 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.Design through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists 

- Capabilities: [design.config.manage](/docs/capabilities/design.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>design.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Design 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.Design through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists 

- Capabilities: [design.config.manage](/docs/capabilities/design.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>design.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Design 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.Design through openvibe-shared/config (D11), so the owner can give its keys and accounts on Network's Setup tab: GET /internal/config lists 

- Capabilities: [design.config.manage](/docs/capabilities/design.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>design.config.manage</strong> (internal): Manage the configuration namespaces and secrets of OpenVibe.Design 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>
