TipsModerationResult tips.moderation-result@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-result.v1.json

tips.moderation-result@1: answers of tips.interaction.moderate on OpenVibe.Tips. Moderation never touches the money (no refund, no uncounting). GET /api/v1/moderation → { creator, interactions, next_cursor }: the review queue, newest first (moderators' view). GET /api/v1/moderation/log → { log }: the latest 100 outcomes (held and filtered by the word filter at settlement; hidden and restored by the creator, a moderator or a service). POST /api/v1/interactions/:id/hide → { interaction, changed, cancelled_effects } (chat, TTS and media deliveries still queued are cancelled; overlays drop the alert); POST …/restore → the same, cancelled_effects empty (a held interaction is released now; what a hide cancelled stays cancelled). changed false when it already was in that state.

Fields

This schema has no named fields.

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: hidden
{
  "interaction": {
    "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
    }
  },
  "changed": true,
  "cancelled_effects": [
    "paid_message"
  ]
}
Valid: log
{
  "log": [
    {
      "interaction_id": "tint_01JAB2C3D4E5F6G7H8J9K0MNQ5",
      "action": "hidden",
      "by_role": "moderator",
      "actor": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
      "reason": "spam link",
      "created_at": "2026-09-25T09:20:02.771Z"
    }
  ]
}
Valid: queue
{
  "creator": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
  },
  "interactions": [
    {
      "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
      }
    }
  ],
  "next_cursor": null
}
Rejected: bad-effect
{
  "interaction": {
    "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
    }
  },
  "changed": true,
  "cancelled_effects": [
    "overlay_alert"
  ]
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('tips.moderation-result@1', value);   // { valid, errors: [{ path, message }] }