ChatModerationQueueResult chat.moderation-queue-result@1
Generated at from
openvibe-contracts v0.97.0 and
openvibe-sdk v0.26.0.
- Version
- 1.0.0
- Owner
- chat
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/chat/moderation-queue-result.v1.json
chat.moderation-queue-result@1: what OpenVibe.Chat's moderation queue reads answer (capability chat.moderation.queue.read), one shape per route, for OpenVibe.Live's moderator pages: GET /internal/chat/moderation/pending-ip?channel_id → { pending_ip } (a channel's messages held for IP approval, status pending, oldest first); GET /internal/chat/moderation/relay-users?channel_id → { relay_users } (relay names hidden or banned on the channel or everywhere, newest first); GET /internal/chat/moderation/relay-users/:id → { relay_user } (one, null when unknown); GET /internal/chat/moderation/tts-override?identity_key → { tts_override } (null when none). Internal: rows carry IP addresses. A failure is chat.ingress-ack@1's error.
Fields
This schema has no named fields.
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: error
{
"ok": false,
"error": "channel_id required"
}Valid: pending-ip
{
"pending_ip": [
{
"id": 311,
"channel_id": 77,
"stream_id": 4211,
"ip_address": "203.0.113.24",
"user_id": null,
"anon_id": "anon48213",
"username": "anon48213",
"message": "first time here",
"status": "pending",
"reviewed_by": null,
"created_at": "2026-10-04 21:02:40"
}
]
}Valid: relay-user-unknown
{
"relay_user": null
}Valid: relay-users
{
"relay_users": [
{
"id": 58,
"channel_id": 77,
"platform": "kick",
"external_username": "spam_bot_9",
"action": "ban",
"reason": "link spam",
"created_by": 512,
"created_by_username": "pixelfox",
"created_at": "2026-10-03 18:40:00"
},
{
"id": 12,
"channel_id": null,
"platform": "kick",
"external_username": "spam_bot_9",
"action": "hide",
"reason": null,
"created_by": 512,
"created_by_username": null,
"created_at": "2026-10-03 18:40:00"
}
]
}Valid: tts-override
{
"tts_override": {
"identity_key": "user:512",
"voice": "en-US-Wavenet-D",
"pitch": 2,
"speed": 110,
"gap": 0,
"set_by": 77,
"updated_at": "2026-10-01 09:12:55"
}
}Rejected: bad-status
{
"pending_ip": [
{
"id": 311,
"channel_id": 77,
"stream_id": 4211,
"ip_address": "203.0.113.24",
"user_id": null,
"anon_id": "anon48213",
"username": "anon48213",
"message": "first time here",
"status": "held",
"reviewed_by": null,
"created_at": "2026-10-04 21:02:40"
}
]
}Rejected: row-missing-columns
{
"relay_user": {
"id": 58,
"platform": "kick"
}
}Rejected: two-shapes
{
"relay_user": null,
"tts_override": null
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('chat.moderation-queue-result@1', value); // { valid, errors: [{ path, message }] }