{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/mcpgate/main/json-schema/mcpgate-report-request-schema.json",
  "title": "ReportRequest",
  "x-generated": "2026-10-18",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/mcpgate-api-openapi.json#/components/schemas/ReportRequest",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "bug",
        "feature"
      ],
      "title": "Type"
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "minLength": 3,
      "title": "Title"
    },
    "description": {
      "type": "string",
      "maxLength": 50000,
      "minLength": 3,
      "title": "Description"
    },
    "reporter_email": {
      "anyOf": [
        {
          "type": "string",
          "format": "email"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reporter Email"
    },
    "anonymous": {
      "type": "boolean",
      "title": "Anonymous",
      "default": false
    },
    "is_test": {
      "type": "boolean",
      "title": "Is Test",
      "default": false
    },
    "attachments": {
      "items": {
        "$ref": "#/$defs/InlineAttachment"
      },
      "type": "array",
      "maxItems": 5,
      "title": "Attachments"
    }
  },
  "type": "object",
  "required": [
    "type",
    "title",
    "description"
  ],
  "$defs": {
    "InlineAttachment": {
      "properties": {
        "filename": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "title": "Filename"
        },
        "mime_type": {
          "type": "string",
          "maxLength": 128,
          "minLength": 3,
          "title": "Mime Type"
        },
        "data_base64": {
          "type": "string",
          "maxLength": 8388608,
          "minLength": 1,
          "title": "Data Base64"
        }
      },
      "type": "object",
      "required": [
        "filename",
        "mime_type",
        "data_base64"
      ],
      "title": "InlineAttachment",
      "description": "A single binary attachment to a customer-filed bug or feature report.\n\nCustomers send bytes as base64 on the report-creation request — the\nbytes only cross the customer→backend boundary once, fitting the\ntransfer-protocol model that bytes are references everywhere\n*except* the original ingress point. The backend decodes, uploads\nto the upstream tracker (GitLab `/projects/:id/uploads`), and\nsplices the returned Markdown reference into the resulting issue\nbody. The original bytes are not persisted on the backend after the\nissue is created.\n\nSize cap is 5 MB per attachment (decoded) — bigger payloads cross\ninto territory where a streaming upload protocol would be the right\nanswer; that's a V2 ask if customer demand surfaces."
    }
  }
}