{
  "components": {
    "schemas": {
      "Asset": {
        "description": "A file attached to the release.",
        "properties": {
          "name": {
            "description": "File name.",
            "type": "string"
          },
          "size": {
            "description": "Size in bytes.",
            "type": "integer"
          },
          "url": {
            "description": "Download URL.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "url",
          "size"
        ],
        "type": "object"
      },
      "Comment": {
        "description": "One comment on the merge request.",
        "properties": {
          "author": {
            "description": "Username.",
            "type": "string"
          },
          "body": {
            "description": "Comment text.",
            "type": "string"
          },
          "created_at": {
            "description": "Time in RFC3339.",
            "type": "string"
          },
          "file_path": {
            "description": "File, when the comment is on a line.",
            "type": "string"
          },
          "id": {
            "description": "Comment id.",
            "type": "integer"
          },
          "line_end": {
            "description": "Last line.",
            "type": "integer"
          },
          "line_start": {
            "description": "First line.",
            "type": "integer"
          },
          "parent_id": {
            "description": "Parent comment, when this is a reply.",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "author",
          "body",
          "created_at"
        ],
        "type": "object"
      },
      "Commit": {
        "description": "One commit. The diff text is not included.",
        "properties": {
          "author": {
            "description": "Name and email.",
            "type": "string"
          },
          "diff_url": {
            "description": "GET /api/v1/repos/{owner}/{repo}/commits/{sha}/diff. Requires Authorization Bearer and a personal token that can read the repo. The response is the unified diff as text/plain.",
            "type": "string"
          },
          "files": {
            "items": {
              "$ref": "#/components/schemas/FileChange"
            },
            "type": "array"
          },
          "message": {
            "description": "Subject and body.",
            "type": "string"
          },
          "sha": {
            "description": "Commit SHA.",
            "type": "string"
          },
          "timestamp": {
            "description": "Author time in RFC3339.",
            "type": "string"
          },
          "url": {
            "description": "Commit page.",
            "type": "string"
          }
        },
        "required": [
          "sha",
          "message",
          "author",
          "timestamp",
          "url",
          "files",
          "diff_url"
        ],
        "type": "object"
      },
      "DiffStats": {
        "description": "Line counts of the merge request diff. The diff text is not included.",
        "properties": {
          "additions": {
            "description": "Added lines.",
            "type": "integer"
          },
          "deletions": {
            "description": "Deleted lines.",
            "type": "integer"
          },
          "files": {
            "items": {
              "$ref": "#/components/schemas/FileChange"
            },
            "type": "array"
          }
        },
        "required": [
          "additions",
          "deletions",
          "files"
        ],
        "type": "object"
      },
      "FileChange": {
        "description": "One changed file, without the diff text.",
        "properties": {
          "additions": {
            "description": "Added lines. Zero for a binary file.",
            "type": "integer"
          },
          "binary": {
            "description": "True when the file is binary.",
            "type": "boolean"
          },
          "deletions": {
            "description": "Deleted lines. Zero for a binary file.",
            "type": "integer"
          },
          "path": {
            "description": "Path after the change.",
            "type": "string"
          },
          "previous_path": {
            "description": "Path before a rename.",
            "type": "string"
          },
          "status": {
            "description": "added, modified, removed or renamed.",
            "type": "string"
          }
        },
        "required": [
          "path",
          "status",
          "additions",
          "deletions"
        ],
        "type": "object"
      },
      "Issue": {
        "description": "The issue this event is about.",
        "properties": {
          "action": {
            "description": "opened, updated, closed, reopened or commented.",
            "type": "string"
          },
          "assignees": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "author": {
            "description": "User who opened the issue.",
            "type": "string"
          },
          "confidential": {
            "description": "True when the issue is confidential.",
            "type": "boolean"
          },
          "description": {
            "description": "Description. May be empty.",
            "type": "string"
          },
          "due_date": {
            "description": "Due date as YYYY-MM-DD, or empty.",
            "type": "string"
          },
          "id": {
            "description": "Number in the project.",
            "type": "integer"
          },
          "labels": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "milestone": {
            "description": "Milestone title, or empty.",
            "type": "string"
          },
          "status": {
            "description": "open or closed.",
            "type": "string"
          },
          "title": {
            "description": "Title.",
            "type": "string"
          },
          "url": {
            "description": "Issue page.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "status",
          "confidential",
          "author",
          "assignees",
          "labels",
          "milestone",
          "due_date",
          "action"
        ],
        "type": "object"
      },
      "IssueEvent": {
        "description": "Opened, updated, closed, reopened or commented.",
        "properties": {
          "actor": {
            "description": "User who did this action.",
            "type": "string"
          },
          "comment": {
            "description": "Comment text. Present only when action is commented.",
            "type": "string"
          },
          "event_name": {
            "description": "issue_opened, issue_closed, issue_reopened, issue_updated or issue_comment.",
            "type": "string"
          },
          "issue": {
            "$ref": "#/components/schemas/Issue"
          },
          "note": {
            "$ref": "#/components/schemas/Note"
          },
          "object_kind": {
            "description": "Always issue.",
            "type": "string"
          },
          "project": {
            "description": "owner/name.",
            "type": "string"
          },
          "summary": {
            "description": "One-line summary.",
            "type": "string"
          },
          "type": {
            "description": "Always issue.",
            "type": "string"
          },
          "url": {
            "description": "Issue page.",
            "type": "string"
          }
        },
        "required": [
          "object_kind",
          "type",
          "event_name",
          "project",
          "issue"
        ],
        "type": "object"
      },
      "Job": {
        "description": "One job. log is always the console tail. log_url is present only when log_truncated is true.",
        "properties": {
          "allow_failure": {
            "description": "True when a failure does not fail the pipeline.",
            "type": "boolean"
          },
          "cancel_reason": {
            "description": "Only for status canceled: superseded (a newer pipeline started for the same ref; shown as Obsolete) or manual.",
            "type": "string"
          },
          "duration": {
            "description": "Seconds the job ran.",
            "type": "number"
          },
          "failure_reason": {
            "description": "Only for status failed, when known: job_execution_timeout, script_failure or runner_system_failure.",
            "type": "string"
          },
          "log": {
            "description": "Last 200 lines of the console output, at most 64 KiB. Secrets of at least 8 characters are [MASKED].",
            "type": "string"
          },
          "log_truncated": {
            "description": "True when log is shorter than the stored console output.",
            "type": "boolean"
          },
          "log_url": {
            "description": "GET /api/v1/repos/{owner}/{repo}/jobs/{id}/log. Present only when log_truncated is true. Requires Authorization Bearer and a personal token that can read the repo. The response is the full log as text/plain, with secrets masked.",
            "type": "string"
          },
          "name": {
            "description": "Job name.",
            "type": "string"
          },
          "stage": {
            "description": "Stage name.",
            "type": "string"
          },
          "status": {
            "description": "Job status.",
            "type": "string"
          },
          "web_url": {
            "description": "Job page.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "stage",
          "status",
          "duration",
          "allow_failure",
          "web_url",
          "log",
          "log_truncated"
        ],
        "type": "object"
      },
      "MergeRequest": {
        "description": "The merge request.",
        "properties": {
          "action": {
            "description": "opened, merged or commented.",
            "type": "string"
          },
          "author": {
            "description": "User who opened the merge request.",
            "type": "string"
          },
          "comments": {
            "items": {
              "$ref": "#/components/schemas/Comment"
            },
            "type": "array"
          },
          "commits": {
            "description": "Up to 20 commits on the source branch that the target does not have, oldest first.",
            "items": {
              "$ref": "#/components/schemas/Commit"
            },
            "type": "array"
          },
          "description": {
            "description": "Description. May be empty.",
            "type": "string"
          },
          "diff_stats": {
            "$ref": "#/components/schemas/DiffStats"
          },
          "diff_url": {
            "description": "GET /api/v1/repos/{owner}/{repo}/merge-requests/{id}/diff. Requires Authorization Bearer and a personal token that can read the repo. The response is the three-dot unified diff as text/plain.",
            "type": "string"
          },
          "id": {
            "description": "Number in the project.",
            "type": "integer"
          },
          "reviewers": {
            "items": {
              "$ref": "#/components/schemas/Reviewer"
            },
            "type": "array"
          },
          "source_branch": {
            "description": "Source branch.",
            "type": "string"
          },
          "status": {
            "description": "open, merged or closed.",
            "type": "string"
          },
          "target_branch": {
            "description": "Target branch.",
            "type": "string"
          },
          "title": {
            "description": "Title.",
            "type": "string"
          },
          "url": {
            "description": "Merge request page.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "source_branch",
          "target_branch",
          "status",
          "author",
          "action",
          "reviewers",
          "comments",
          "commits",
          "diff_stats",
          "diff_url"
        ],
        "type": "object"
      },
      "MergeRequestEvent": {
        "description": "Opened, merged or commented.",
        "properties": {
          "actor": {
            "description": "User who did this action.",
            "type": "string"
          },
          "comment": {
            "description": "Comment text. Present only when action is commented.",
            "type": "string"
          },
          "event_name": {
            "description": "merge_request_comment for a comment, otherwise merge_request.",
            "type": "string"
          },
          "merge_request": {
            "$ref": "#/components/schemas/MergeRequest"
          },
          "note": {
            "$ref": "#/components/schemas/Note"
          },
          "object_kind": {
            "description": "Always merge_request.",
            "type": "string"
          },
          "project": {
            "description": "owner/name.",
            "type": "string"
          },
          "type": {
            "description": "Always merge_request.",
            "type": "string"
          }
        },
        "required": [
          "object_kind",
          "type",
          "event_name",
          "project",
          "merge_request"
        ],
        "type": "object"
      },
      "Note": {
        "description": "A comment. Present only when action is commented.",
        "properties": {
          "author": {
            "description": "User who wrote the comment.",
            "type": "string"
          },
          "body": {
            "description": "Comment text.",
            "type": "string"
          },
          "noteable_id": {
            "description": "Number of the issue or merge request.",
            "type": "integer"
          },
          "noteable_type": {
            "description": "Issue or MergeRequest.",
            "type": "string"
          },
          "url": {
            "description": "Page of the issue or merge request.",
            "type": "string"
          }
        },
        "required": [
          "body",
          "noteable_type",
          "noteable_id",
          "url"
        ],
        "type": "object"
      },
      "Pipeline": {
        "description": "The pipeline this event is about.",
        "properties": {
          "author": {
            "description": "User who started the pipeline.",
            "type": "string"
          },
          "commit_message": {
            "description": "Subject and body of the commit.",
            "type": "string"
          },
          "duration": {
            "description": "Seconds from start to finish.",
            "type": "number"
          },
          "id": {
            "description": "Pipeline id.",
            "type": "integer"
          },
          "ref": {
            "description": "Full ref, such as refs/heads/master.",
            "type": "string"
          },
          "sha": {
            "description": "Commit SHA.",
            "type": "string"
          },
          "status": {
            "description": "success or failed.",
            "type": "string"
          },
          "url": {
            "description": "Pipeline page.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "ref",
          "sha",
          "commit_message",
          "author",
          "duration"
        ],
        "type": "object"
      },
      "PipelineEvent": {
        "description": "pipeline_success or pipeline_failure.",
        "properties": {
          "actor": {
            "description": "User who started the pipeline.",
            "type": "string"
          },
          "jobs": {
            "items": {
              "$ref": "#/components/schemas/Job"
            },
            "type": "array"
          },
          "object_kind": {
            "description": "Always pipeline.",
            "type": "string"
          },
          "pipeline": {
            "$ref": "#/components/schemas/Pipeline"
          },
          "pipeline_id": {
            "description": "Same id as pipeline.id, as text.",
            "type": "string"
          },
          "project": {
            "description": "owner/name.",
            "type": "string"
          },
          "summary": {
            "description": "One-line summary.",
            "type": "string"
          },
          "type": {
            "description": "pipeline_success or pipeline_failure.",
            "type": "string"
          },
          "url": {
            "description": "Pipeline page.",
            "type": "string"
          }
        },
        "required": [
          "object_kind",
          "type",
          "project",
          "pipeline",
          "jobs"
        ],
        "type": "object"
      },
      "PushEvent": {
        "description": "A branch or tag update.",
        "properties": {
          "actor": {
            "description": "User who pushed.",
            "type": "string"
          },
          "after": {
            "description": "New SHA.",
            "type": "string"
          },
          "before": {
            "description": "Previous SHA, or 40 zeros when the ref is new.",
            "type": "string"
          },
          "commits": {
            "items": {
              "$ref": "#/components/schemas/Commit"
            },
            "type": "array"
          },
          "object_kind": {
            "description": "Always push.",
            "type": "string"
          },
          "project": {
            "description": "owner/name.",
            "type": "string"
          },
          "ref": {
            "description": "Full ref.",
            "type": "string"
          },
          "type": {
            "description": "Always push.",
            "type": "string"
          }
        },
        "required": [
          "object_kind",
          "type",
          "project",
          "ref",
          "before",
          "after",
          "commits"
        ],
        "type": "object"
      },
      "Release": {
        "description": "The release.",
        "properties": {
          "assets": {
            "items": {
              "$ref": "#/components/schemas/Asset"
            },
            "type": "array"
          },
          "commit": {
            "description": "Commit SHA.",
            "type": "string"
          },
          "name": {
            "description": "Release title.",
            "type": "string"
          },
          "tag": {
            "description": "Tag name.",
            "type": "string"
          }
        },
        "required": [
          "tag",
          "name",
          "commit",
          "assets"
        ],
        "type": "object"
      },
      "ReleaseEvent": {
        "description": "A published release.",
        "properties": {
          "object_kind": {
            "description": "Always release.",
            "type": "string"
          },
          "project": {
            "description": "owner/name.",
            "type": "string"
          },
          "release": {
            "$ref": "#/components/schemas/Release"
          },
          "release_tag": {
            "description": "Same value as release.tag.",
            "type": "string"
          },
          "type": {
            "description": "Always release_published.",
            "type": "string"
          }
        },
        "required": [
          "object_kind",
          "type",
          "project",
          "release"
        ],
        "type": "object"
      },
      "Reviewer": {
        "description": "The current review of one person.",
        "properties": {
          "status": {
            "description": "approved, changes, rejected or dismissed.",
            "type": "string"
          },
          "username": {
            "description": "Username.",
            "type": "string"
          }
        },
        "required": [
          "username",
          "status"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearer": {
        "description": "Personal access token (bg_).",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "JSON body of a BlueGit webhook when the body template is empty. pipeline_success and pipeline_failure include the pipeline and every job. Every job includes its console output: the last 200 lines, at most 64 KiB. Secret values of at least 8 characters are replaced with [MASKED]. log_truncated is true when the log was cut. log_url is then GET /api/v1/repos/{owner}/{repo}/jobs/{id}/log and needs Authorization Bearer with a personal token that can read the repo. A push lists ref, before, after and up to 20 commits. Each commit has sha, message, author, timestamp, URL, changed files and diff_url. A file has status added, modified, removed or renamed, plus added and deleted line counts. The payload does not include the diff text. diff_url for a commit is GET /api/v1/repos/{owner}/{repo}/commits/{sha}/diff. A merge request includes reviewers, comments, up to 20 commits, diff statistics and diff_url, and no diff text. diff_url for a merge request is GET /api/v1/repos/{owner}/{repo}/merge-requests/{id}/diff. Both diff requests need Authorization Bearer and a personal token that can read the repo. A merge request uses action opened, merged or commented, and commented includes the comment text. A release lists the tag, name, commit and asset URLs. An issue event has object_kind issue and action opened, updated, closed, reopened or commented. It includes the issue number, title, description, status, confidential flag, author, assignees, labels, milestone and due date. A commented action also includes the comment text.",
    "title": "BlueGit webhook payloads",
    "version": "1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/repos/{owner}/{repo}/commits/{sha}/diff": {
      "get": {
        "description": "Returns the unified diff of the commit against its first parent as text/plain. A root commit is compared with an empty tree. Requires a personal access token that can read the repo. On a public repo any valid personal token is enough. Job tokens are rejected.",
        "parameters": [
          {
            "in": "path",
            "name": "owner",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "repo",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "sha",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Unified diff."
          },
          "401": {
            "description": "Missing or invalid token."
          },
          "403": {
            "description": "The token cannot read this private repo."
          },
          "404": {
            "description": "Unknown repo or commit."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Commit diff"
      }
    },
    "/repos/{owner}/{repo}/issues": {
      "get": {
        "description": "Lists issues. Query state is open, closed or all. Query q searches title and description. Query label and assignee filter. Confidential issues of other people are omitted unless the token is Reporter or higher. A personal token is required. On a public repo any valid personal token can read. Job tokens are rejected.",
        "parameters": [
          {
            "in": "path",
            "name": "owner",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "repo",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "state",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "q",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "label",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "assignee",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Issue list."
          },
          "401": {
            "description": "Missing or invalid token."
          },
          "403": {
            "description": "The token cannot read this private repo."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List issues"
      },
      "post": {
        "description": "Creates an issue. Title is required. Readonly may set confidential. Labels, assignees, milestone and due_date need Reporter or higher. A label or milestone must already exist.",
        "responses": {
          "201": {
            "description": "Created issue."
          },
          "401": {
            "description": "Missing or invalid token."
          },
          "403": {
            "description": "The token cannot create an issue, or it sent triage fields without Reporter."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create an issue"
      }
    },
    "/repos/{owner}/{repo}/issues/{number}": {
      "get": {
        "description": "Returns one issue and its comments. A confidential issue is 404 unless the token belongs to the author or a Reporter.",
        "responses": {
          "200": {
            "description": "The issue."
          },
          "401": {
            "description": "Missing or invalid token."
          },
          "404": {
            "description": "Unknown issue, or a confidential issue you cannot see."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Read an issue"
      },
      "put": {
        "description": "Omitted fields stay as they are. The author may change title, description and state. Labels, assignees, milestone, due_date and confidential need Reporter. State is open or closed.",
        "responses": {
          "200": {
            "description": "Updated issue."
          },
          "401": {
            "description": "Missing or invalid token."
          },
          "403": {
            "description": "The token cannot change this field."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update an issue"
      }
    },
    "/repos/{owner}/{repo}/issues/{number}/notes": {
      "post": {
        "description": "Adds a comment. Readonly is enough. Sends an issue webhook with action commented.",
        "responses": {
          "201": {
            "description": "Created comment."
          },
          "401": {
            "description": "Missing or invalid token."
          },
          "403": {
            "description": "The token cannot comment."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Comment on an issue"
      }
    },
    "/repos/{owner}/{repo}/jobs/{id}/log": {
      "get": {
        "description": "Returns the full console output as text/plain. Secret values of at least 8 characters are replaced with [MASKED]. Requires a personal access token. A token that can read the repo is enough, and on a public repo any valid personal token is enough. Job tokens are rejected.",
        "parameters": [
          {
            "in": "path",
            "name": "owner",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "repo",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Full log."
          },
          "401": {
            "description": "Missing or invalid token."
          },
          "403": {
            "description": "The token cannot read this private repo."
          },
          "404": {
            "description": "Unknown repo or job."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Full job log"
      }
    },
    "/repos/{owner}/{repo}/labels": {
      "get": {
        "responses": {
          "200": {
            "description": "Labels."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List labels"
      },
      "post": {
        "description": "Maintainer only. Name uses letters, digits, spaces, hyphens or underscores. Color is # and six hex digits.",
        "responses": {
          "201": {
            "description": "Saved label."
          },
          "403": {
            "description": "Not a maintainer."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create or update a label"
      }
    },
    "/repos/{owner}/{repo}/merge-requests/{id}/diff": {
      "get": {
        "description": "Returns the three-dot unified diff from the target branch to the source branch as text/plain. Requires a personal access token that can read the repo. On a public repo any valid personal token is enough. Job tokens are rejected.",
        "parameters": [
          {
            "in": "path",
            "name": "owner",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "repo",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Unified diff."
          },
          "401": {
            "description": "Missing or invalid token."
          },
          "403": {
            "description": "The token cannot read this private repo."
          },
          "404": {
            "description": "Unknown repo or merge request."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Merge request diff"
      }
    },
    "/repos/{owner}/{repo}/milestones": {
      "get": {
        "responses": {
          "200": {
            "description": "Milestones."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List milestones"
      },
      "post": {
        "description": "Maintainer only. due_on is YYYY-MM-DD or empty.",
        "responses": {
          "201": {
            "description": "Saved milestone."
          },
          "403": {
            "description": "Not a maintainer."
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create or update a milestone"
      }
    }
  },
  "servers": [
    {
      "url": "/api/v1"
    }
  ],
  "webhooks": {
    "issue": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The receiver accepted the event."
          }
        },
        "summary": "Issue"
      }
    },
    "merge_request": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MergeRequestEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The receiver accepted the event."
          }
        },
        "summary": "Merge request"
      }
    },
    "pipeline": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PipelineEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The receiver accepted the event."
          }
        },
        "summary": "Pipeline finished"
      }
    },
    "push": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PushEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The receiver accepted the event."
          }
        },
        "summary": "Push"
      }
    },
    "release": {
      "post": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReleaseEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The receiver accepted the event."
          }
        },
        "summary": "Release published"
      }
    }
  }
}
