{
    "title": "kb_article_feedback",
    "type": "object",
    "properties": {
        "id": {
            "type": "integer",
            "description": "Primary key, auto-increment"
        },
        "article_id": {
            "type": "string",
            "description": "Knowledge base article id, e.g. 'clients-portal-overview'"
        },
        "category_id": {
            "type": "string",
            "description": "Knowledge base category id, e.g. 'clients-portal'"
        },
        "rating": {
            "type": "string",
            "description": "Either 'up' or 'down'"
        },
        "comment": {
            "type": "string",
            "description": "Optional user comment",
            "maxLength": 2000
        },
        "user_id": {
            "type": "string",
            "description": "Submitting user id (nullable for anonymous)"
        },
        "user_email": {
            "type": "string",
            "description": "Optional email for follow-up",
            "maxLength": 255
        },
        "page_url": {
            "type": "string",
            "description": "Page URL where feedback was submitted",
            "maxLength": 500
        },
        "user_agent": {
            "type": "string",
            "description": "Browser user agent",
            "maxLength": 500
        }
    },
    "required": [
        "id",
        "article_id",
        "rating"
    ]
}