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 }] }