NetworkProjectMemberResult network.project-member-result@1
Generated at from
openvibe-contracts v0.177.0 and
openvibe-sdk v0.44.0.
- Version
- 1.0.0
- Owner
- network
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Decision
- ADR-003
- Schema
https://openvibe.network/contracts/network/project-member-result.v1.json
network.project-member-result@1: OpenVibe.Network's answer to GET /internal/projects/:project_id/members/:subject (network.project.member.read). It says whether one person belongs to a developer project, with which role, and whether the project is archived, so a receiver can check a project delegation (ADR-003 amendment 2026-10-12: the person must be an admin or owner of an unarchived project). Only members are answered; a non-member and an unknown project are both 404 project.member_not_found. It carries no other members, no apps and no secrets.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
project_id | string | yes |
| |
subject | string | yes |
| |
role | enum | yes |
| |
archived | boolean | yes | ||
added_at | string | null |
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: admin
{
"project_id": "prj_01J9Z8Y7X6W5V4T3S2R1Q0P9N8",
"subject": "usr_01J9Z8Y7X6W5V4T3S2R1Q0P9N7",
"role": "admin",
"archived": false,
"added_at": "2026-10-01T12:00:00.000Z"
}Valid: archived-viewer
{
"project_id": "prj_01J9Z8Y7X6W5V4T3S2R1Q0P9N8",
"subject": "usr_01J9Z8Y7X6W5V4T3S2R1Q0P9N6",
"role": "viewer",
"archived": true
}Rejected: other-members
{
"project_id": "prj_01J9Z8Y7X6W5V4T3S2R1Q0P9N8",
"subject": "usr_01J9Z8Y7X6W5V4T3S2R1Q0P9N7",
"role": "owner",
"archived": false,
"members": [
"usr_01J9Z8Y7X6W5V4T3S2R1Q0P9N6"
]
}Rejected: unknown-role
{
"project_id": "prj_01J9Z8Y7X6W5V4T3S2R1Q0P9N8",
"subject": "usr_01J9Z8Y7X6W5V4T3S2R1Q0P9N7",
"role": "superuser",
"archived": false
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('network.project-member-result@1', value); // { valid, errors: [{ path, message }] }