ConfirmationRequest network.confirmation-request@1

Generated at from openvibe-contracts v0.79.0 and openvibe-sdk v0.25.0.

Version
1.0.0
Owner
network
Visibility
first-party
Status
active
Compatibility
backward
Decision
ADR-034
Schema
https://openvibe.network/contracts/network/confirmation-request.v1.json

A sensitive action waiting for its owner's approval (roadmap WS-Z2): an agent (or app) asks to do something with an external side effect; the owner approves or denies from any OpenVibe site; the decision is an event.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
  • pattern ^cnf_[0-9A-HJKMNP-TV-Z]{26}$
owneridentity.subject-refyes
requested_byidentity.subject-refyes
capabilitystringyes
  • pattern ^[a-z][a-z0-9-]*\.[a-z0-9-]+\.[a-z0-9-]+$
summarystringyes
  • maxLength 500
detailsobject
resourcescommon.entity-ref
stateenumyes
  • one of "pending", "approved", "denied", "expired", "cancelled"
standing_ruleenum
  • one of "once", "session", "until", "always"
expires_atstringyes
  • format date-time
decided_atstring
  • format date-time
created_atstringyes
  • format date-time

Examples

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

Valid: apply
{
  "id": "cnf_01J0000000000000000000000A",
  "owner": {
    "type": "user",
    "id": "usr_01J0000000000000000000000A"
  },
  "requested_by": {
    "type": "agent",
    "id": "agt_01J0000000000000000000000A"
  },
  "capability": "work.application.submit",
  "summary": "Submit your application to Example Co for Backend Engineer",
  "state": "pending",
  "standing_rule": "once",
  "expires_at": "2026-09-29T23:00:00Z",
  "created_at": "2026-09-28T23:00:00Z"
}
Rejected: bad-id
{
  "id": "cnf_x",
  "owner": {
    "type": "user",
    "id": "usr_01J0000000000000000000000A"
  },
  "requested_by": {
    "type": "agent",
    "id": "agt_01J0000000000000000000000A"
  },
  "capability": "a.b.c",
  "summary": "s",
  "state": "pending",
  "expires_at": "2026-09-28T23:00:00Z",
  "created_at": "2026-09-28T23:00:00Z"
}

Validate

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