{ "$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." } } }