---
title: "bot.desk-lease-create-request@1 · OpenVibe.Services"
canonical: "https://openvibe.services/docs/contracts/bot.desk-lease-create-request"
updated: null
---

# bot.desk-lease-create-request@1 · OpenVibe.Services

HTML: [bot.desk-lease-create-request@1 · OpenVibe.Services](https://openvibe.services/docs/contracts/bot.desk-lease-create-request)

# BotDeskLeaseCreateRequest `bot.desk-lease-create-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: bot
- Visibility: first-party
- Status: active
- Compatibility: backward
- Decision: [ADR-043](/docs/adr/ADR-043)
- Schema: [`https://openvibe.network/contracts/bot/desk-lease-create-request.v1.json`](/docs/contracts/bot.desk-lease-create-request.json)

bot.desk-lease-create-request@1 (the Desks plan's D6): the body of POST /api/v1/machines/{id}/desk-leases on OpenVibe.Bot (capability bot.desk.session), answered 201 with bot.desk-lease@1. DESK is the name Run chose for the session (unique per session); a desk already leased to another session, or running for the machine's owner, is refused 409 bot.desk\_busy, and a repeat for the same session answers its lease (200). A machine with no room (its max\_desks) is refused 409 bot.machine\_busy, one that is offline 409 bot.device\_offline, and one the person may not use 404 bot.device\_not\_found.

## Fields

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| `session` | `https://openvibe.network/contracts/run/session.v1.json#/$defs/session_id` | yes |  |  |
| `desk` | `https://openvibe.network/contracts/bot/desk-lease.v1.json#/properties/desk` | yes |  |  |
| `kind` | const | yes |  | - `= "browser"` |
| `width` | `https://openvibe.network/contracts/bot/desk-lease.v1.json#/properties/width` |  | Default 1280. |  |
| `height` | `https://openvibe.network/contracts/bot/desk-lease.v1.json#/properties/height` |  | Default 800. |  |
| `origins` | array of string |  | The session's exact browser origins, fixed for this lease. Empty allows no network origin; absent keeps the legacy policy. A shared desk that cannot enforce the list is refused. | - `maxItems 32`<br>- `items: pattern ^https?://`<br>- `items: minLength 8`<br>- `items: maxLength 2048` |

## Examples

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

 Valid: browser

~~~~
{
  "session": "ses_01JD2C3D4E5F6G7H8J9K0MNPQR",
  "desk": "desk-s0mnpqr",
  "kind": "browser",
  "width": 1280,
  "height": 800
}
~~~~

Rejected: desktop

~~~~
{
  "session": "ses_01JD2C3D4E5F6G7H8J9K0MNPQR",
  "desk": "desk-s0mnpqr",
  "kind": "desktop"
}
~~~~

Rejected: main

~~~~
{
  "session": "ses_01JD2C3D4E5F6G7H8J9K0MNPQR",
  "desk": "main",
  "kind": "browser"
}
~~~~

## Validate

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