{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/epicdirectories/json-schema/epicdirectories-create-comment-dto-schema.json",
  "title": "CreateCommentDto",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/epicdirectories-comments-api-openapi.yml#/components/schemas/CreateCommentDto",
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "The page being commented on, as a path: `/herbs/ginger/`. Query string and fragment are stripped, it is lowercased, repeated slashes collapse, and a trailing slash is added unless the last segment is a file (`/feed.xml`). Only `a-z 0-9 / . _ ~ -` are allowed.",
      "maxLength": 2048
    },
    "authorName": {
      "type": "string",
      "description": "Display name the commenter chooses. Unverified — there is no end-user auth, so this is text, not an identity, and consumers must render it as such.",
      "maxLength": 80
    },
    "body": {
      "type": "string",
      "description": "The comment itself. Plain text — render it escaped.",
      "maxLength": 4000
    },
    "email": {
      "type": "string",
      "description": "Commenter email, for follow-up. Never published."
    },
    "turnstileToken": {
      "type": "string",
      "description": "Cloudflare Turnstile token from the widget."
    },
    "website2": {
      "type": "string",
      "description": "Honeypot — leave empty. See CreateSubmissionDto."
    }
  },
  "required": [
    "path",
    "authorName",
    "body"
  ]
}