TipsModerationView tips.moderation-view@1
Generated at from
openvibe-contracts v0.53.0 and
openvibe-sdk v0.11.0.
- Version
- 1.0.0
- Owner
- tips
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/tips/moderation-view.v1.json
tips.moderation-view@1: a tip interaction as its moderators see it on OpenVibe.Tips (server/domain/moderation.js present): what was written (never a private message, nor anything the supporter erased), the moderation state, and what the public sees (public). An anonymous supporter reads Anonymous; a hidden amount is null.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | string | yes |
| |
kind | enum | yes |
| |
created_at | string | yes | ||
settled_at | string | null | yes | ||
payment_state | enum | yes |
| |
test | boolean | yes | ||
moderation | object | yes | ||
moderation.state | enum | yes |
| |
moderation.at | string | null | yes | ||
moderation.filtered | boolean | yes | ||
supporter_name | string | yes | ||
amount | integer | null | yes |
| |
message | string | null | yes | ||
tts_text | string | null | yes | ||
media_url | string | null | yes | ||
public | tips.public-interaction | yes |
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: hidden
{
"id": "tint_01JAB2C3D4E5F6G7H8J9K0MNQ5",
"kind": "paid_message",
"created_at": "2026-09-25T09:12:40.118Z",
"settled_at": "2026-09-25T09:12:41.530Z",
"payment_state": "settled",
"test": false,
"moderation": {
"state": "hidden",
"at": "2026-09-25T09:20:02.771Z",
"filtered": false
},
"supporter_name": "moosefan",
"amount": 500,
"message": "Great stream tonight!",
"tts_text": null,
"media_url": null,
"public": {
"interaction_id": "tint_01JAB2C3D4E5F6G7H8J9K0MNQ5",
"kind": "paid_message",
"amount": null,
"amount_hidden": false,
"currency": "vibes-bits",
"settlement": "billing",
"test": false,
"at": "2026-09-25T09:12:41.530Z",
"supporter_name": null,
"message": null,
"tts": null,
"media": null,
"hidden": true
}
}Rejected: bad-state
{
"id": "tint_01JAB2C3D4E5F6G7H8J9K0MNQ5",
"kind": "paid_message",
"created_at": "2026-09-25T09:12:40.118Z",
"settled_at": "2026-09-25T09:12:41.530Z",
"payment_state": "settled",
"test": false,
"moderation": {
"state": "removed",
"at": null,
"filtered": false
},
"supporter_name": "moosefan",
"amount": 500,
"message": "Great stream tonight!",
"tts_text": null,
"media_url": null,
"public": {
"interaction_id": "tint_01JAB2C3D4E5F6G7H8J9K0MNQ5",
"kind": "paid_message",
"amount": null,
"amount_hidden": false,
"currency": "vibes-bits",
"settlement": "billing",
"test": false,
"at": "2026-09-25T09:12:41.530Z",
"supporter_name": null,
"message": null,
"tts": null,
"media": null,
"hidden": true
}
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('tips.moderation-view@1', value); // { valid, errors: [{ path, message }] }