openapi: 3.2.0 info: title: AI Gateway MCP Server Webhooks API description: Universal MCP Gateway with OAuth integration - Modern Architecture version: 2.0.3290 tags: - name: Webhooks paths: /webhooks/gitlab: post: summary: Gitlab Webhook description: 'Handle GitLab webhooks for issue and MR events. Processes: - Issue opened (Bug/Feature created) → Notify maintainer - Issue closed → Notify reporter with closing comment - Merge Request opened (Renovate Bot on Mondays) → Notify admin Security: - Validates X-Gitlab-Token header - Non-blocking: Errors don''t affect GitLab operations Webhook Events: - object_kind: "issue" - object_attributes.action: "open", "close", "update" - object_kind: "merge_request" - object_attributes.action: "open", "merge", "close"' operationId: gitlab_webhook_webhooks_gitlab_post responses: '200': description: Successful Response content: application/json: schema: {} tags: - Webhooks /webhooks/deployment-success: post: summary: Deployment Success Webhook description: 'Handle deployment success webhooks from CI/CD pipeline. Called by GitLab CI after successful production deployment. Processes all pending issue-close notifications and sends them with deployment version information. Expected payload: { "version": "1.33.126", "environment": "prod", "secret": os.getenv("GITLAB_WEBHOOK_SECRET", "") } Security: - Validates secret token - Only processes on prod deployments' operationId: deployment_success_webhook_webhooks_deployment_success_post responses: '200': description: Successful Response content: application/json: schema: {} tags: - Webhooks /webhooks/queue-self-healing-notification: post: summary: Queue Self Healing Notification Webhook description: 'Queue a self-healing notification for processing after deployment. Called by self_healing_v2.py (CI pipeline) after generating an AI summary. The notification is stored in Redis and sent to subscribers when the deployment-success webhook fires. Expected payload: { "mr_iid": 58, "mr_url": "https://gitlab.example.com/...", "issue_iid": 442, "issue_title": "Fix #442: ...", "diff_summary": "AI-generated summary of what changed", "adapter": "codex", "model": "default" }' operationId: queue_self_healing_notification_webhook_webhooks_queue_self_healing_notification_post responses: '200': description: Successful Response content: application/json: schema: {} tags: - Webhooks /webhooks/notify-not-a-bug: post: summary: Notify Not A Bug Webhook description: 'Send a not-a-bug notification to the issue reporter via Slack DM. Called by self_healing_v2.py (CI pipeline) when triage closes an issue as not-a-bug. Sends a threaded DM so the reporter can reply to disagree. Expected payload: { "issue_iid": 515, "issue_title": "GPT halluziniert URLs", "issue_url": "https://gitlab.example.com/...", "reason": "Triage reason explanation" }' operationId: notify_not_a_bug_webhook_webhooks_notify_not_a_bug_post responses: '200': description: Successful Response content: application/json: schema: {} tags: - Webhooks /webhooks/notify-maintainer: post: summary: Notify Maintainer Webhook description: 'Send a self-heal escalation to the maintainer alone. Called by the self-heal core for an issue a reporter outside the project may follow: ``reason`` is model or code-host text, written for the maintainer. A separate path rather than a flag on /webhooks/notify-not-a-bug so the protection fails closed across versions: a gateway that predates it answers 404 and sends nothing, where a flag it does not know would be ignored and the reporter DM''d. Expected payload: ``{"issue_iid", "issue_title", "issue_url", "reason", "source"}``.' operationId: notify_maintainer_webhook_webhooks_notify_maintainer_post responses: '200': description: Successful Response content: application/json: schema: {} tags: - Webhooks /webhooks/selfheal-quota: post: summary: Selfheal Quota Webhook description: 'Daily budget for fix-agent runs on untrusted (user-submitted) reports. The self-heal worker consumes one run per call; the counters cap how much agent compute unvetted reports can burn — per intake instance and globally. Limits via SELFHEAL_UNTRUSTED_INSTANCE_DAILY (default 3) and SELFHEAL_UNTRUSTED_GLOBAL_DAILY (default 10). The worker fails closed on any non-200, so denials here park the issue for maintainer review.' operationId: selfheal_quota_webhook_webhooks_selfheal_quota_post responses: '200': description: Successful Response content: application/json: schema: {} tags: - Webhooks /webhooks/selfheal-approval: post: summary: Selfheal Approval Webhook description: 'Deliver the interactive approve/reject maintainer notification for a finished untrusted-report fix MR. The worker posts the verdict + signals; rendering and button policy live in src.notifications.selfheal_approval.' operationId: selfheal_approval_webhook_webhooks_selfheal_approval_post responses: '200': description: Successful Response content: application/json: schema: {} tags: - Webhooks