LiveChannelPointsPage live.channel-points-page@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- live
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/live/channel-points-page.v1.json
live.channel-points-page@1: the answer of GET /internal/channel-points/changes?network_user_id=&since_id=&streamer_id=&limit= on OpenVibe.Live (live.channel_points.read, Network service token, loopback): one channel's points moves for the person behind the Network account, oldest first, from Live's own channel_points_log. moves carry the ledger's id, the streamer, the ISO time, the signed delta and the raw reason; balance is that channel's points (null without streamer_id); cursor is the newest move seen, next_since pages when more exist (null on the last). 400 without network_user_id or with a bad streamer_id, 404 for an unlinked account.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
ok | const | yes |
| |
user_id | integer | yes |
| |
streamer_id | integer | null | yes |
| |
balance | integer | null | yes | ||
moves | array of object | yes |
| |
moves[].id | integer | yes |
| |
moves[].streamer_id | integer | yes |
| |
moves[].at | string | yes | ||
moves[].delta | integer | yes | ||
moves[].reason | string | null | yes | ||
cursor | integer | yes |
| |
next_since | integer | null | yes |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: page
{
"ok": true,
"user_id": 7,
"streamer_id": 3,
"balance": 70,
"moves": [
{
"id": 11,
"streamer_id": 3,
"at": "2026-11-11T10:00:00Z",
"delta": 100,
"reason": "watch"
},
{
"id": 12,
"streamer_id": 3,
"at": "2026-11-11T11:00:00Z",
"delta": -30,
"reason": "redeem reward 9"
}
],
"cursor": 12,
"next_since": null
}Rejected: delta-string
{
"ok": true,
"user_id": 7,
"streamer_id": 3,
"balance": 70,
"moves": [
{
"id": 11,
"streamer_id": 3,
"at": "2026-11-11T10:00:00Z",
"delta": "100",
"reason": "watch"
}
],
"cursor": 11,
"next_since": null
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('live.channel-points-page@1', value); // { valid, errors: [{ path, message }] }