---
title: "design.glyph-draft-request@1 · OpenVibe.Services"
canonical: "https://openvibe.services/docs/contracts/design.glyph-draft-request"
updated: null
---

# design.glyph-draft-request@1 · OpenVibe.Services

HTML: [design.glyph-draft-request@1 · OpenVibe.Services](https://openvibe.services/docs/contracts/design.glyph-draft-request)

# DesignGlyphDraftRequest `design.glyph-draft-request@1`

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).

- Version: 1.0.0
- Owner: design
- Visibility: first-party
- Status: active
- Compatibility: backward
- Schema: [`https://openvibe.network/contracts/design/glyph-draft-request.v1.json`](/docs/contracts/design.glyph-draft-request.json)

A first-party service asks Design to draw an icon candidate. Design verifies the caller's service token, deduplicates by caller and name, and keeps every candidate in staff review before any site shows it.

## Fields

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| `name` | string | yes |  | - `pattern ^[a-z][a-z0-9-]{1,31}$` |
| `sentence` | string | yes |  | - `minLength 3`<br>- `maxLength 200` |

## Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

 Valid: daily

~~~~
{
  "name": "daily-2026-11-09",
  "sentence": "A shared quest about visiting and contributing across several sites"
}
~~~~

Rejected: unknown-field

~~~~
{
  "name": "daily-2026-11-09",
  "sentence": "A shared quest",
  "svg": "<svg/>"
}
~~~~

## Validate

~~~~
const contracts = require('openvibe-contracts');
contracts.validate('design.glyph-draft-request@1', value);   // { valid, errors: [{ path, message }] }
~~~~
