EventsReadResult events.read-result@1
Generated at from
openvibe-contracts v0.53.0 and
openvibe-sdk v0.11.0.
- Version
- 1.0.0
- Owner
- events
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/events/read-result.v1.json
events.read-result@1: answers of the pull API on OpenVibe.Events. GET /api/v1/events → { events: [{ seq, event }], next_after_seq, latest_seq, gap? } (keep next_after_seq as the cursor: it moves past events that did not match; gap { from_seq, to_seq } says events after after_seq were already pruned by retention); GET /api/v1/events/:event_id → { seq, event }; GET|PUT /api/v1/checkpoints → { consumer, topic, cursor, updated_at } (cursor 0 and updated_at null when none is stored). GET /realtime/stream?topics= (events.event.read) is a Server-Sent Events feed whose messages carry the same { seq, event } (id: the seq; a gap message when the cursor is older than retention). An app sees only its project's events in its token's environment plus public first-party events.
Fields
This schema has no named fields.
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: no-checkpoint
{
"consumer": "live",
"topic": "media.vod.*",
"cursor": 0,
"updated_at": null
}Valid: page
{
"events": [
{
"seq": 88213,
"event": {
"event_id": "evt_01JAB2C3D4E5F6G7H8J9K0MNPR",
"event_type": "app.p01jab2c3d4e5f6g7h8j9k0mnpq.order.created",
"version": 1,
"source": "app-01jab2c3d4e5f6g7h8j9k0mnps",
"actor": {
"type": "app",
"id": "app_01JAB2C3D4E5F6G7H8J9K0MNPS"
},
"timestamp": "2026-09-23T12:00:00Z",
"visibility": "internal",
"subject": {
"type": "order",
"id": "42"
},
"payload": {
"total": 3
}
}
}
],
"next_after_seq": 88240,
"latest_seq": 88240
}Rejected: bad-envelope
{
"events": [
{
"seq": 1,
"event": {
"event_type": "x"
}
}
],
"next_after_seq": 1,
"latest_seq": 1
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('events.read-result@1', value); // { valid, errors: [{ path, message }] }