Browse Community Interaction

beta · event · 0.2.0

Community Comment moderated

A permanent report decision changed a Community Comment's moderation state.

Capability Domain: community-interaction

Reference identifier: community-comment-moderated

Schema ID: https://minicenter.otus.tw/events/community.comment.moderated.v1.schema.json

Delivery: Delivered at least once. Deduplicate by Domain Event envelope id and query the report API for authoritative current state.

Event schema

Event schema
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://minicenter.otus.tw/events/community.comment.moderated.v1.schema.json",
    "title": "Community Comment moderated",
    "description": "A permanent report decision changed a Community Comment's moderation state.",
    "type": "object",
    "additionalProperties": false,
    "required": [
        "report_id",
        "comment_id",
        "resource_type",
        "resource_id",
        "decision",
        "moderation_state",
        "moderation_reason",
        "decided_at"
    ],
    "properties": {
        "report_id": {
            "type": "string",
            "format": "uuid"
        },
        "comment_id": {
            "type": "string",
            "format": "uuid"
        },
        "resource_type": {
            "type": "string",
            "maxLength": 120
        },
        "resource_id": {
            "type": "string",
            "maxLength": 255
        },
        "decision": {
            "type": "string",
            "enum": [
                "no_action",
                "restricted"
            ]
        },
        "moderation_state": {
            "type": "string",
            "enum": [
                "visible",
                "restricted"
            ]
        },
        "moderation_reason": {
            "type": [
                "string",
                "null"
            ],
            "enum": [
                "spam",
                "harassment",
                "hate",
                "violence",
                "sexual_content",
                null
            ]
        },
        "decided_at": {
            "type": "string",
            "format": "date-time"
        }
    },
    "x-documentation": true,
    "x-reference-id": "community-comment-moderated",
    "x-domain": "community-interaction",
    "x-stability": "beta",
    "x-delivery": "Delivered at least once. Deduplicate by Domain Event envelope id and query the report API for authoritative current state.",
    "example": {
        "report_id": "53000000-0000-4000-8000-000000000001",
        "comment_id": "51000000-0000-4000-8000-000000000001",
        "resource_type": "article",
        "resource_id": "article-42",
        "decision": "restricted",
        "moderation_state": "restricted",
        "moderation_reason": "spam",
        "decided_at": "2026-09-10T02:00:00Z"
    }
}

Example

Event example
{
    "report_id": "53000000-0000-4000-8000-000000000001",
    "comment_id": "51000000-0000-4000-8000-000000000001",
    "resource_type": "article",
    "resource_id": "article-42",
    "decision": "restricted",
    "moderation_state": "restricted",
    "moderation_reason": "spam",
    "decided_at": "2026-09-10T02:00:00Z"
}