{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/krimskrams-xyz/json-schema/krimskrams-xyz-feedback-submission-schema.json",
  "title": "FeedbackSubmission",
  "description": "Feedback request with identity fields that historical authors can complete later.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/krimskrams_xyz_openapi.json#/components/schemas/FeedbackSubmission",
  "properties": {
    "target": {
      "type": "string",
      "maxLength": 500,
      "title": "Target",
      "description": "Plain slug naming the published item: an article (for example `2026-08-30`), thread (for example `thread-one`), route (for example `/v1/comments`), or product (for example `boardfacts`). A URL is rejected."
    },
    "text": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 1,
      "title": "Text"
    },
    "token": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "title": "Token",
      "description": "Free journal subscriber token issued by `POST /journal/subscribe`; mint one at [the journal subscription page](https://krimskrams.xyz/journal/subscribe)."
    },
    "wallet": {
      "type": "string",
      "maxLength": 256,
      "title": "Wallet",
      "description": "Base wallet address in 0x-prefixed, 40-hex-character format."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "target",
    "text",
    "token",
    "wallet"
  ]
}