---
title: "network.dock-result@1 · OpenVibe.Services"
canonical: "https://openvibe.services/docs/contracts/network.dock-result"
updated: null
---

# network.dock-result@1 · OpenVibe.Services

HTML: [network.dock-result@1 · OpenVibe.Services](https://openvibe.services/docs/contracts/network.dock-result)

# NetworkDockResult `network.dock-result@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: network
- Visibility: public
- Status: active
- Compatibility: backward
- Schema: [`https://openvibe.network/contracts/network/dock-result.v1.json`](/docs/contracts/network.dock-result.json)

network.dock-result@1 (the Dock plan 2026-10-30, K-D1): what GET /api/v1/me/dock answers on OpenVibe.Network — the person's Dock state, the counts the pill's status dot is drawn from, and whether those counts are complete.

## Fields

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| `state` | [network.dock-state](/docs/contracts/network.dock-state) | yes | The person's Dock state: the stored one, or the default when they have never opened the Dock. |  |
| `counts` | object | yes |  | - `no other fields` |
| `counts.running` | integer | yes | How many of the person's agents are running. | - `minimum 0` |
| `counts.waiting` | integer | yes | How many need the person. | - `minimum 0` |
| `counts.unread` | integer | yes | How many notifications the person has not read. | - `minimum 0` |
| `sources_partial` | boolean | yes | True when an authority behind the counts did not answer, so the counts are lower than the truth. |  |

## Examples

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

 Valid: default

~~~~
{
  "state": {
    "open": false,
    "tab": "activity",
    "pinned": false,
    "agent": null,
    "chat": null,
    "place": {
      "phone": {
        "corner": "bottom-right"
      },
      "desktop": {
        "corner": "bottom-right",
        "width": null,
        "height": null
      }
    },
    "updated_at": "2026-10-30T12:00:00Z"
  },
  "counts": {
    "running": 0,
    "waiting": 0,
    "unread": 0
  },
  "sources_partial": false
}
~~~~

Rejected: extra-key

~~~~
{
  "state": {
    "open": false,
    "tab": "activity",
    "pinned": false,
    "agent": null,
    "chat": null,
    "place": {
      "phone": {
        "corner": "bottom-right"
      },
      "desktop": {
        "corner": "bottom-right",
        "width": null,
        "height": null
      }
    },
    "updated_at": "2026-10-30T12:00:00Z"
  },
  "counts": {
    "running": 0,
    "waiting": 0,
    "unread": 0
  },
  "sources_partial": false,
  "sources": {
    "actor": "ok"
  }
}
~~~~

Rejected: negative-count

~~~~
{
  "state": {
    "open": true,
    "tab": "agent",
    "pinned": true,
    "agent": {
      "service": "codes",
      "id": "tsk_01JAB2C3D4E5F6G7H8J9K0MNPQ"
    },
    "chat": null,
    "place": {
      "phone": {
        "corner": "bottom-left"
      },
      "desktop": {
        "corner": "bottom-left",
        "width": 480,
        "height": 720
      }
    },
    "updated_at": "2026-10-30T12:00:00Z"
  },
  "counts": {
    "running": -1,
    "waiting": 0,
    "unread": 3
  },
  "sources_partial": false
}
~~~~

## Validate

~~~~
const contracts = require('openvibe-contracts');
contracts.validate('network.dock-result@1', value);   // { valid, errors: [{ path, message }] }
~~~~
