{
  "openapi": "3.1.0",
  "x-pagination": "none",
  "servers": [
    {
      "url": "{host}",
      "variables": {
        "host": {
          "default": "http://localhost",
          "description": "Server host."
        }
      }
    }
  ],
  "info": {
    "version": "1.0",
    "title": "Redocly Scout agent",
    "description": "Scout Worker API.",
    "termsOfService": "https://redocly.com/subscription-agreement",
    "contact": {
      "name": "Redocly Support",
      "email": "team@redocly.com",
      "url": "https://github.com/Redocly/redocly"
    },
    "license": {
      "name": "Redocly",
      "url": "https://redocly.com/subscription-agreement"
    }
  },
  "tags": [
    {
      "name": "Health",
      "description": "Operations related to health checks."
    },
    {
      "name": "Webhooks",
      "description": "Operations related to incoming git webhooks."
    }
  ],
  "paths": {
    "/health": {
      "get": {
        "tags": [
          "Health"
        ],
        "security": [],
        "summary": "Get health status",
        "operationId": "health",
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Health"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/webhooks/github": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "GithubApiKey": []
          }
        ],
        "summary": "Create GitHub webhook event",
        "description": "Registers and start process GitHub repository event. For now only push and create pull request events are supported.",
        "operationId": "processGithubWebhook",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/push"
                  },
                  {
                    "$ref": "#/components/schemas/pull-request-opened"
                  },
                  {
                    "$ref": "#/components/schemas/pull-request-reopened"
                  },
                  {
                    "$ref": "#/components/schemas/pull-request-synchronize"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/webhooks/gitlab": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "GitlabApiKey": []
          }
        ],
        "summary": "Create GitLab webhook event",
        "description": "Register and start to process GitLab repository event. For now only push and create merge request events are supported.",
        "operationId": "processGitlabWebhook",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/push-2"
                  },
                  {
                    "$ref": "#/components/schemas/merge-request-open"
                  },
                  {
                    "$ref": "#/components/schemas/merge-request-reopen"
                  },
                  {
                    "$ref": "#/components/schemas/merge-request-update"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "GithubApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "x-hub-signature-256"
      },
      "GitlabApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "x-gitlab-token"
      }
    },
    "schemas": {
      "Health": {
        "type": "object",
        "properties": {
          "scout": {
            "type": "string",
            "const": "ok",
            "readOnly": true,
            "description": "Scout health status."
          }
        },
        "required": [
          "scout"
        ]
      },
      "committer": {
        "description": "Metaproperties for Git author/committer information.",
        "required": [
          "email",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The git author's name."
          },
          "email": {
            "description": "The git author's email address.",
            "oneOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "null"
              }
            ]
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "username": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "title": "Committer"
      },
      "commit": {
        "required": [
          "id",
          "tree_id",
          "distinct",
          "message",
          "timestamp",
          "url",
          "author",
          "committer",
          "added",
          "removed",
          "modified"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "tree_id": {
            "type": "string"
          },
          "distinct": {
            "type": "boolean",
            "description": "Whether this commit is distinct from any that have been pushed before."
          },
          "message": {
            "type": "string",
            "description": "The commit message."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The ISO 8601 timestamp of the commit."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL that points to the commit API resource."
          },
          "author": {
            "$ref": "#/components/schemas/committer"
          },
          "committer": {
            "$ref": "#/components/schemas/committer"
          },
          "added": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An array of files added in the commit."
          },
          "modified": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An array of files modified by the commit."
          },
          "removed": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An array of files removed in the commit."
          }
        },
        "additionalProperties": false,
        "title": "Commit"
      },
      "user": {
        "type": "object",
        "required": [
          "login",
          "id",
          "node_id",
          "avatar_url",
          "gravatar_id",
          "url",
          "html_url",
          "followers_url",
          "following_url",
          "gists_url",
          "starred_url",
          "subscriptions_url",
          "organizations_url",
          "repos_url",
          "events_url",
          "received_events_url",
          "type",
          "site_admin"
        ],
        "properties": {
          "login": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "node_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatar_url": {
            "type": "string",
            "format": "uri"
          },
          "gravatar_id": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "html_url": {
            "type": "string",
            "format": "uri"
          },
          "followers_url": {
            "type": "string",
            "format": "uri"
          },
          "following_url": {
            "type": "string",
            "format": "uri-template"
          },
          "gists_url": {
            "type": "string",
            "format": "uri-template"
          },
          "starred_url": {
            "type": "string",
            "format": "uri-template"
          },
          "subscriptions_url": {
            "type": "string",
            "format": "uri"
          },
          "organizations_url": {
            "type": "string",
            "format": "uri"
          },
          "repos_url": {
            "type": "string",
            "format": "uri"
          },
          "events_url": {
            "type": "string",
            "format": "uri-template"
          },
          "received_events_url": {
            "type": "string",
            "format": "uri"
          },
          "type": {
            "type": "string",
            "enum": [
              "Bot",
              "User",
              "Organization"
            ]
          },
          "site_admin": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "title": "User"
      },
      "license": {
        "type": "object",
        "required": [
          "key",
          "name",
          "spdx_id",
          "url",
          "node_id"
        ],
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "spdx_id": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "node_id": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "title": "License"
      },
      "repository": {
        "description": "A git repository.",
        "type": "object",
        "required": [
          "id",
          "node_id",
          "name",
          "full_name",
          "private",
          "owner",
          "html_url",
          "description",
          "fork",
          "url",
          "forks_url",
          "keys_url",
          "collaborators_url",
          "teams_url",
          "hooks_url",
          "issue_events_url",
          "events_url",
          "assignees_url",
          "branches_url",
          "tags_url",
          "blobs_url",
          "git_tags_url",
          "git_refs_url",
          "trees_url",
          "statuses_url",
          "languages_url",
          "stargazers_url",
          "contributors_url",
          "subscribers_url",
          "subscription_url",
          "commits_url",
          "git_commits_url",
          "comments_url",
          "issue_comment_url",
          "contents_url",
          "compare_url",
          "merges_url",
          "archive_url",
          "downloads_url",
          "issues_url",
          "pulls_url",
          "milestones_url",
          "notifications_url",
          "labels_url",
          "releases_url",
          "deployments_url",
          "created_at",
          "updated_at",
          "pushed_at",
          "git_url",
          "ssh_url",
          "clone_url",
          "svn_url",
          "homepage",
          "size",
          "stargazers_count",
          "watchers_count",
          "language",
          "has_issues",
          "has_projects",
          "has_downloads",
          "has_wiki",
          "has_pages",
          "forks_count",
          "mirror_url",
          "archived",
          "open_issues_count",
          "license",
          "forks",
          "open_issues",
          "watchers",
          "default_branch",
          "is_template",
          "web_commit_signoff_required",
          "topics",
          "visibility"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the repository."
          },
          "node_id": {
            "type": "string",
            "description": "The GraphQL identifier of the repository."
          },
          "name": {
            "type": "string",
            "description": "The name of the repository."
          },
          "full_name": {
            "type": "string",
            "description": "The full, globally unique, name of the repository."
          },
          "private": {
            "type": "boolean",
            "description": "Whether the repository is private or public."
          },
          "owner": {
            "$ref": "#/components/schemas/user"
          },
          "html_url": {
            "type": "string",
            "format": "uri",
            "description": "The URL to view the repository on GitHub.com."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "The repository description."
          },
          "fork": {
            "type": "boolean",
            "description": "Whether the repository is a fork."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The URL to get more information about the repository from the GitHub API."
          },
          "forks_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to list the forks of the repository."
          },
          "keys_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about deploy keys on the repository."
          },
          "collaborators_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about collaborators of the repository."
          },
          "teams_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to list the teams on the repository."
          },
          "hooks_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to list the hooks on the repository."
          },
          "issue_events_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about issue events on the repository."
          },
          "events_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to list the events of the repository."
          },
          "assignees_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to list the available assignees for issues in the repository."
          },
          "branches_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about branches in the repository."
          },
          "tags_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to get information about tags on the repository."
          },
          "blobs_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to create or retrieve a raw Git blob in the repository."
          },
          "git_tags_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about Git tags of the repository."
          },
          "git_refs_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about Git refs of the repository."
          },
          "trees_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to create or retrieve a raw Git tree of the repository."
          },
          "statuses_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about statuses of a commit."
          },
          "languages_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to get information about the languages of the repository."
          },
          "stargazers_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to list the stargazers on the repository."
          },
          "contributors_url": {
            "type": "string",
            "format": "uri",
            "description": "A template for the API URL to list the contributors to the repository."
          },
          "subscribers_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to list the subscribers on the repository."
          },
          "subscription_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to subscribe to notifications for this repository."
          },
          "commits_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about commits on the repository."
          },
          "git_commits_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about Git commits of the repository."
          },
          "comments_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about comments on the repository."
          },
          "issue_comment_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about issue comments on the repository."
          },
          "contents_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get the contents of the repository."
          },
          "compare_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to compare two commits or refs."
          },
          "merges_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to merge branches in the repository."
          },
          "archive_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to download the repository as an archive."
          },
          "downloads_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to list the downloads on the repository."
          },
          "issues_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about issues on the repository."
          },
          "pulls_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about pull requests on the repository."
          },
          "milestones_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about milestones of the repository."
          },
          "notifications_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about notifications on the repository."
          },
          "labels_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about labels of the repository."
          },
          "releases_url": {
            "type": "string",
            "format": "uri-template",
            "description": "A template for the API URL to get information about releases on the repository."
          },
          "deployments_url": {
            "type": "string",
            "format": "uri",
            "description": "The API URL to list the deployments of the repository."
          },
          "created_at": {
            "oneOf": [
              {
                "type": "integer"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "pushed_at": {
            "oneOf": [
              {
                "type": "integer"
              },
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "git_url": {
            "type": "string",
            "format": "uri"
          },
          "ssh_url": {
            "type": "string"
          },
          "clone_url": {
            "type": "string",
            "format": "uri"
          },
          "svn_url": {
            "type": "string",
            "format": "uri"
          },
          "homepage": {
            "type": [
              "string",
              "null"
            ]
          },
          "size": {
            "type": "integer"
          },
          "stargazers_count": {
            "type": "integer"
          },
          "watchers_count": {
            "type": "integer"
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "has_issues": {
            "type": "boolean",
            "description": "Whether issues are enabled.",
            "default": true
          },
          "has_projects": {
            "type": "boolean",
            "description": "Whether projects are enabled.",
            "default": true
          },
          "has_downloads": {
            "type": "boolean",
            "description": "Whether downloads are enabled.",
            "default": true
          },
          "has_wiki": {
            "type": "boolean",
            "description": "Whether the wiki is enabled.",
            "default": true
          },
          "has_pages": {
            "type": "boolean"
          },
          "forks_count": {
            "type": "integer"
          },
          "mirror_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "archived": {
            "type": "boolean",
            "description": "Whether the repository is archived.",
            "default": false
          },
          "disabled": {
            "type": "boolean",
            "description": "Returns whether or not this repository is disabled."
          },
          "open_issues_count": {
            "type": "integer"
          },
          "license": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/license"
              },
              {
                "type": "null"
              }
            ]
          },
          "forks": {
            "type": "integer"
          },
          "open_issues": {
            "type": "integer"
          },
          "watchers": {
            "type": "integer"
          },
          "stargazers": {
            "type": "integer"
          },
          "default_branch": {
            "type": "string",
            "description": "The default branch of the repository."
          },
          "allow_squash_merge": {
            "type": "boolean",
            "description": "Whether to allow squash merges for pull requests.",
            "default": true
          },
          "allow_merge_commit": {
            "type": "boolean",
            "description": "Whether to allow merge commits for pull requests.",
            "default": true
          },
          "allow_rebase_merge": {
            "type": "boolean",
            "description": "Whether to allow rebase merges for pull requests.",
            "default": true
          },
          "allow_auto_merge": {
            "type": "boolean",
            "description": "Whether to allow auto-merge for pull requests.",
            "default": false
          },
          "allow_forking": {
            "type": "boolean",
            "description": "Whether to allow private forks."
          },
          "allow_update_branch": {
            "type": "boolean"
          },
          "use_squash_pr_title_as_default": {
            "type": "boolean"
          },
          "is_template": {
            "type": "boolean"
          },
          "web_commit_signoff_required": {
            "type": "boolean"
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "visibility": {
            "type": "string",
            "enum": [
              "public",
              "private",
              "internal"
            ]
          },
          "delete_branch_on_merge": {
            "type": "boolean",
            "description": "Whether to delete head branches when pull requests are merged.",
            "default": false
          },
          "master_branch": {
            "type": "string"
          },
          "permissions": {
            "type": "object",
            "required": [
              "pull",
              "push",
              "admin"
            ],
            "properties": {
              "pull": {
                "type": "boolean"
              },
              "push": {
                "type": "boolean"
              },
              "admin": {
                "type": "boolean"
              },
              "maintain": {
                "type": "boolean"
              },
              "triage": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          },
          "public": {
            "type": "boolean"
          },
          "organization": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "title": "Repository"
      },
      "installation-lite": {
        "description": "Installation.",
        "type": "object",
        "required": [
          "id",
          "node_id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The ID of the installation."
          },
          "node_id": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "title": "InstallationLite"
      },
      "organization": {
        "type": "object",
        "required": [
          "login",
          "id",
          "node_id",
          "url",
          "repos_url",
          "events_url",
          "hooks_url",
          "issues_url",
          "members_url",
          "public_members_url",
          "avatar_url",
          "description"
        ],
        "properties": {
          "login": {
            "type": "string"
          },
          "id": {
            "type": "integer"
          },
          "node_id": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "html_url": {
            "type": "string",
            "format": "uri"
          },
          "repos_url": {
            "type": "string",
            "format": "uri"
          },
          "events_url": {
            "type": "string",
            "format": "uri"
          },
          "hooks_url": {
            "type": "string",
            "format": "uri"
          },
          "issues_url": {
            "type": "string",
            "format": "uri"
          },
          "members_url": {
            "type": "string",
            "format": "uri-template"
          },
          "public_members_url": {
            "type": "string",
            "format": "uri-template"
          },
          "avatar_url": {
            "type": "string",
            "format": "uri"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "title": "Organization"
      },
      "push": {
        "type": "object",
        "required": [
          "ref",
          "before",
          "after",
          "created",
          "deleted",
          "forced",
          "base_ref",
          "compare",
          "commits",
          "head_commit",
          "repository",
          "pusher",
          "sender"
        ],
        "properties": {
          "ref": {
            "type": "string",
            "description": "The full git ref that is pushed. Example: `refs/heads/main` or `refs/tags/v3.14.1`."
          },
          "before": {
            "type": "string",
            "description": "The SHA of the most recent commit on `ref` before the push."
          },
          "after": {
            "type": "string",
            "description": "The SHA of the most recent commit on `ref` after the push."
          },
          "created": {
            "type": "boolean",
            "description": "Whether this push created the `ref`."
          },
          "deleted": {
            "type": "boolean",
            "description": "Whether this push deleted the `ref`."
          },
          "forced": {
            "type": "boolean",
            "description": "Whether this push is a force push of the `ref`."
          },
          "base_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "compare": {
            "type": "string",
            "description": "URL that shows the changes in this `ref` update, from the `before` commit to the `after` commit. For a newly created `ref` that is directly based on the default branch, this is the comparison between the head of the default branch and the `after` commit. Otherwise, this shows all commits until the `after` commit."
          },
          "commits": {
            "type": "array",
            "description": "An array of commit objects describing the pushed commits. (Pushed commits are all commits that are included in the `compare` between the `before` commit and the `after` commit.) The array includes a maximum of 20 commits. If necessary, you can use the [Commits API](https://docs.github.com/en/rest/reference/repos#commits) to fetch additional commits. This limit is applied to timeline events only and isn't applied to webhook deliveries.",
            "items": {
              "$ref": "#/components/schemas/commit"
            }
          },
          "head_commit": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/commit"
              },
              {
                "type": "null"
              }
            ],
            "description": "For pushes where `after` is or points to a commit object, an expanded representation of that commit. For pushes where `after` refers to an annotated tag object, an expanded representation of the commit pointed to by the annotated tag."
          },
          "repository": {
            "$ref": "#/components/schemas/repository"
          },
          "pusher": {
            "$ref": "#/components/schemas/committer"
          },
          "sender": {
            "$ref": "#/components/schemas/user"
          },
          "installation": {
            "$ref": "#/components/schemas/installation-lite"
          },
          "organization": {
            "$ref": "#/components/schemas/organization"
          }
        },
        "additionalProperties": false,
        "title": "push event"
      },
      "team": {
        "description": "Groups of organization members that gives permissions on specified. repositories.",
        "type": "object",
        "required": [
          "name",
          "id",
          "node_id",
          "slug",
          "description",
          "privacy",
          "url",
          "html_url",
          "members_url",
          "repositories_url",
          "permission"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the team."
          },
          "id": {
            "type": "integer",
            "description": "Unique identifier of the team."
          },
          "node_id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Description of the team."
          },
          "privacy": {
            "type": "string",
            "enum": [
              "open",
              "closed",
              "secret"
            ]
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL for the team."
          },
          "html_url": {
            "type": "string",
            "format": "uri"
          },
          "members_url": {
            "type": "string",
            "format": "uri-template"
          },
          "repositories_url": {
            "type": "string",
            "format": "uri"
          },
          "permission": {
            "type": "string",
            "description": "Permission that the team has for its repositories."
          },
          "parent": {
            "type": [
              "object",
              "null"
            ],
            "required": [
              "name",
              "id",
              "node_id",
              "slug",
              "description",
              "privacy",
              "url",
              "html_url",
              "members_url",
              "repositories_url",
              "permission"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of the team."
              },
              "id": {
                "type": "integer",
                "description": "Unique identifier of the team."
              },
              "node_id": {
                "type": "string"
              },
              "slug": {
                "type": "string"
              },
              "description": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Description of the team."
              },
              "privacy": {
                "type": "string",
                "enum": [
                  "open",
                  "closed",
                  "secret"
                ]
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "URL for the team."
              },
              "html_url": {
                "type": "string",
                "format": "uri"
              },
              "members_url": {
                "type": "string",
                "format": "uri-template"
              },
              "repositories_url": {
                "type": "string",
                "format": "uri"
              },
              "permission": {
                "type": "string",
                "description": "Permission that the has for its repositories."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false,
        "title": "Team"
      },
      "label": {
        "type": "object",
        "required": [
          "id",
          "node_id",
          "url",
          "name",
          "color",
          "default",
          "description"
        ],
        "properties": {
          "id": {
            "type": "integer"
          },
          "node_id": {
            "type": "string"
          },
          "url": {
            "description": "URL for the label.",
            "type": "string",
            "format": "uri"
          },
          "name": {
            "description": "The name of the label.",
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "description": "6-character hex code, without the leading #, identifying the color.",
            "type": "string"
          },
          "default": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "title": "Label"
      },
      "milestone": {
        "description": "A collection of related issues and pull requests.",
        "required": [
          "url",
          "html_url",
          "labels_url",
          "id",
          "node_id",
          "number",
          "title",
          "description",
          "creator",
          "open_issues",
          "closed_issues",
          "state",
          "created_at",
          "updated_at",
          "due_on",
          "closed_at"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "html_url": {
            "type": "string",
            "format": "uri"
          },
          "labels_url": {
            "type": "string",
            "format": "uri"
          },
          "id": {
            "type": "integer"
          },
          "node_id": {
            "type": "string"
          },
          "number": {
            "type": "integer",
            "description": "The number of the milestone."
          },
          "title": {
            "type": "string",
            "description": "The title of the milestone."
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "creator": {
            "$ref": "#/components/schemas/user"
          },
          "open_issues": {
            "type": "integer"
          },
          "closed_issues": {
            "type": "integer"
          },
          "state": {
            "type": "string",
            "enum": [
              "open",
              "closed"
            ],
            "description": "The state of the milestone."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "due_on": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "closed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "title": "Milestone"
      },
      "link": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "format": "uri-template"
          }
        },
        "additionalProperties": false,
        "title": "Link"
      },
      "author-association": {
        "type": "string",
        "description": "How the author is associated with the repository.",
        "enum": [
          "COLLABORATOR",
          "CONTRIBUTOR",
          "FIRST_TIMER",
          "FIRST_TIME_CONTRIBUTOR",
          "MANNEQUIN",
          "MEMBER",
          "NONE",
          "OWNER"
        ],
        "title": "AuthorAssociation"
      },
      "auto-merge": {
        "type": "object",
        "required": [
          "enabled_by",
          "merge_method",
          "commit_title",
          "commit_message"
        ],
        "properties": {
          "enabled_by": {
            "$ref": "#/components/schemas/user"
          },
          "merge_method": {
            "type": "string",
            "enum": [
              "merge",
              "squash",
              "rebase"
            ],
            "description": "The merge method to use."
          },
          "commit_title": {
            "type": "string",
            "description": "Title for the merge commit message."
          },
          "commit_message": {
            "type": "string",
            "description": "Commit message for the merge commit."
          }
        },
        "additionalProperties": false,
        "title": "PullRequestAutoMerge",
        "description": "The status of auto merging a pull request."
      },
      "pull-request": {
        "required": [
          "url",
          "id",
          "node_id",
          "html_url",
          "diff_url",
          "patch_url",
          "issue_url",
          "number",
          "state",
          "locked",
          "title",
          "user",
          "body",
          "created_at",
          "updated_at",
          "closed_at",
          "merged_at",
          "merge_commit_sha",
          "assignee",
          "assignees",
          "requested_reviewers",
          "requested_teams",
          "labels",
          "milestone",
          "commits_url",
          "review_comments_url",
          "review_comment_url",
          "comments_url",
          "statuses_url",
          "head",
          "base",
          "_links",
          "author_association",
          "auto_merge",
          "active_lock_reason",
          "draft",
          "merged",
          "mergeable",
          "rebaseable",
          "mergeable_state",
          "merged_by",
          "comments",
          "review_comments",
          "maintainer_can_modify",
          "commits",
          "additions",
          "deletions",
          "changed_files"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "id": {
            "type": "integer"
          },
          "node_id": {
            "type": "string"
          },
          "html_url": {
            "type": "string",
            "format": "uri"
          },
          "diff_url": {
            "type": "string",
            "format": "uri"
          },
          "patch_url": {
            "type": "string",
            "format": "uri"
          },
          "issue_url": {
            "type": "string",
            "format": "uri"
          },
          "number": {
            "type": "integer",
            "description": "Number uniquely identifying the pull request within its repository."
          },
          "state": {
            "type": "string",
            "enum": [
              "open",
              "closed"
            ],
            "description": "State of this Pull Request. Either `open` or `closed`."
          },
          "locked": {
            "type": "boolean"
          },
          "title": {
            "type": "string",
            "description": "The title of the pull request."
          },
          "user": {
            "$ref": "#/components/schemas/user"
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "closed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "merged_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "merge_commit_sha": {
            "type": [
              "string",
              "null"
            ]
          },
          "assignee": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/user"
              },
              {
                "type": "null"
              }
            ]
          },
          "assignees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/user"
            }
          },
          "requested_reviewers": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/user"
                },
                {
                  "$ref": "#/components/schemas/team"
                }
              ]
            }
          },
          "requested_teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/team"
            }
          },
          "labels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/label"
            }
          },
          "milestone": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/milestone"
              },
              {
                "type": "null"
              }
            ]
          },
          "commits_url": {
            "type": "string",
            "format": "uri"
          },
          "review_comments_url": {
            "type": "string",
            "format": "uri"
          },
          "review_comment_url": {
            "type": "string",
            "format": "uri-template"
          },
          "comments_url": {
            "type": "string",
            "format": "uri"
          },
          "statuses_url": {
            "type": "string",
            "format": "uri"
          },
          "head": {
            "type": "object",
            "required": [
              "label",
              "ref",
              "sha",
              "user",
              "repo"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "ref": {
                "type": "string"
              },
              "sha": {
                "type": "string"
              },
              "user": {
                "$ref": "#/components/schemas/user"
              },
              "repo": {
                "$ref": "#/components/schemas/repository"
              }
            },
            "additionalProperties": false
          },
          "base": {
            "type": "object",
            "required": [
              "label",
              "ref",
              "sha",
              "user",
              "repo"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "ref": {
                "type": "string"
              },
              "sha": {
                "type": "string"
              },
              "user": {
                "$ref": "#/components/schemas/user"
              },
              "repo": {
                "$ref": "#/components/schemas/repository"
              }
            },
            "additionalProperties": false
          },
          "_links": {
            "type": "object",
            "required": [
              "self",
              "html",
              "issue",
              "comments",
              "review_comments",
              "review_comment",
              "commits",
              "statuses"
            ],
            "properties": {
              "self": {
                "$ref": "#/components/schemas/link"
              },
              "html": {
                "$ref": "#/components/schemas/link"
              },
              "issue": {
                "$ref": "#/components/schemas/link"
              },
              "comments": {
                "$ref": "#/components/schemas/link"
              },
              "review_comments": {
                "$ref": "#/components/schemas/link"
              },
              "review_comment": {
                "$ref": "#/components/schemas/link"
              },
              "commits": {
                "$ref": "#/components/schemas/link"
              },
              "statuses": {
                "$ref": "#/components/schemas/link"
              }
            },
            "additionalProperties": false
          },
          "author_association": {
            "$ref": "#/components/schemas/author-association"
          },
          "auto_merge": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/auto-merge"
              },
              {
                "type": "null"
              }
            ]
          },
          "active_lock_reason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "resolved",
              "off-topic",
              "too heated",
              "spam",
              null
            ]
          },
          "draft": {
            "type": "boolean",
            "description": "Indicates whether or not the pull request is a draft."
          },
          "merged": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "mergeable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "rebaseable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "mergeable_state": {
            "type": "string"
          },
          "merged_by": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/user"
              },
              {
                "type": "null"
              }
            ]
          },
          "comments": {
            "type": "integer"
          },
          "review_comments": {
            "type": "integer"
          },
          "maintainer_can_modify": {
            "type": "boolean",
            "description": "Indicates whether maintainers can modify the pull request."
          },
          "commits": {
            "type": "integer"
          },
          "additions": {
            "type": "integer"
          },
          "deletions": {
            "type": "integer"
          },
          "changed_files": {
            "type": "integer"
          }
        },
        "additionalProperties": false,
        "title": "Pull Request"
      },
      "pull-request-opened": {
        "type": "object",
        "required": [
          "action",
          "number",
          "pull_request",
          "repository",
          "sender"
        ],
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "opened"
            ]
          },
          "number": {
            "type": "integer",
            "description": "The pull request number."
          },
          "pull_request": {
            "allOf": [
              {
                "$ref": "#/components/schemas/pull-request"
              },
              {
                "type": "object",
                "required": [
                  "state",
                  "closed_at",
                  "merged_at",
                  "active_lock_reason",
                  "merged_by"
                ],
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "open"
                    ]
                  },
                  "closed_at": {
                    "type": "null"
                  },
                  "merged_at": {
                    "type": "null"
                  },
                  "active_lock_reason": {
                    "type": "null"
                  },
                  "merged_by": {
                    "type": "null"
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "repository": {
            "$ref": "#/components/schemas/repository"
          },
          "installation": {
            "$ref": "#/components/schemas/installation-lite"
          },
          "organization": {
            "$ref": "#/components/schemas/organization"
          },
          "sender": {
            "$ref": "#/components/schemas/user"
          }
        },
        "additionalProperties": false,
        "title": "pull_request opened event"
      },
      "pull-request-reopened": {
        "type": "object",
        "required": [
          "action",
          "number",
          "pull_request",
          "repository",
          "sender"
        ],
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "reopened"
            ]
          },
          "number": {
            "type": "integer",
            "description": "The pull request number."
          },
          "pull_request": {
            "allOf": [
              {
                "$ref": "#/components/schemas/pull-request"
              },
              {
                "type": "object",
                "required": [
                  "state",
                  "closed_at",
                  "merged_at",
                  "merged",
                  "merged_by"
                ],
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "open"
                    ]
                  },
                  "closed_at": {
                    "type": "null"
                  },
                  "merged_at": {
                    "type": "null"
                  },
                  "merged": {
                    "type": "boolean"
                  },
                  "merged_by": {
                    "type": "null"
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "repository": {
            "$ref": "#/components/schemas/repository"
          },
          "installation": {
            "$ref": "#/components/schemas/installation-lite"
          },
          "organization": {
            "$ref": "#/components/schemas/organization"
          },
          "sender": {
            "$ref": "#/components/schemas/user"
          }
        },
        "additionalProperties": false,
        "title": "pull_request reopened event"
      },
      "pull-request-synchronize": {
        "type": "object",
        "required": [
          "action",
          "number",
          "before",
          "after",
          "pull_request",
          "repository",
          "sender"
        ],
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "synchronize"
            ]
          },
          "number": {
            "type": "integer",
            "description": "The pull request number."
          },
          "before": {
            "type": "string"
          },
          "after": {
            "type": "string"
          },
          "pull_request": {
            "$ref": "#/components/schemas/pull-request"
          },
          "repository": {
            "$ref": "#/components/schemas/repository"
          },
          "installation": {
            "$ref": "#/components/schemas/installation-lite"
          },
          "organization": {
            "$ref": "#/components/schemas/organization"
          },
          "sender": {
            "$ref": "#/components/schemas/user"
          }
        },
        "additionalProperties": false,
        "title": "pull_request synchronize event"
      },
      "WebhookResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message with more details.",
            "example": "Job created"
          },
          "event": {
            "type": "string",
            "description": "Type of incoming webhook event.",
            "example": "push"
          },
          "jobId": {
            "type": "string",
            "description": "Created Scout job ID.",
            "example": "sjob_01h4gev6h1j50ge5z3yn28ge5e"
          }
        },
        "required": [
          "detail"
        ]
      },
      "project": {
        "description": "GitLab Project details.",
        "type": "object",
        "required": [
          "id",
          "name",
          "description",
          "web_url",
          "avatar_url",
          "git_ssh_url",
          "git_http_url",
          "namespace",
          "visibility_level",
          "path_with_namespace",
          "default_branch",
          "homepage",
          "url",
          "ssh_url",
          "http_url"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the project."
          },
          "name": {
            "type": "string",
            "description": "The name of the project."
          },
          "description": {
            "type": "string",
            "description": "The description of the project."
          },
          "web_url": {
            "type": "string",
            "description": "The URL to view the repository.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test"
          },
          "avatar_url": {
            "type": "string",
            "description": "Repository avatar url.",
            "format": "uri",
            "example": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon"
          },
          "git_ssh_url": {
            "type": "string",
            "description": "SSH url of a project.",
            "format": "uri",
            "example": "ssh://git@example.com/gitlabhq/gitlab-test.git"
          },
          "git_http_url": {
            "type": "string",
            "description": "Url of a project.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test.git"
          },
          "namespace": {
            "type": "string",
            "description": "Project namespace.",
            "example": "GitlabHQ"
          },
          "visibility_level": {
            "type": "integer",
            "description": "Visibility level of a project.",
            "example": 20
          },
          "path_with_namespace": {
            "type": "string",
            "description": "Project path including namespace.",
            "example": "gitlabhq/gitlab-test"
          },
          "default_branch": {
            "type": "string",
            "description": "Project default branch.",
            "example": "develop"
          },
          "homepage": {
            "type": "string",
            "description": "Project homepage url.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test"
          },
          "url": {
            "type": "string",
            "description": "Url of a project.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test.git"
          },
          "ssh_url": {
            "type": "string",
            "description": "SSH url of a project.",
            "format": "uri",
            "example": "ssh://git@example.com/gitlabhq/gitlab-test.git"
          },
          "http_url": {
            "type": "string",
            "description": "Url of a project.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test.git"
          }
        },
        "additionalProperties": false,
        "title": "Project"
      },
      "repository-2": {
        "description": "GitLab repository details.",
        "type": "object",
        "required": [
          "name",
          "url",
          "description",
          "homepage",
          "git_http_url",
          "git_ssh_url",
          "visibility_level"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the project.",
            "example": "Awesome project"
          },
          "url": {
            "type": "string",
            "description": "Repository git url.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/awesome-project.git"
          },
          "description": {
            "type": "string",
            "description": "The description of the project.",
            "example": "Awesome project description."
          },
          "homepage": {
            "type": "string",
            "description": "Project homepage url.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/awesome-project"
          },
          "git_http_url": {
            "type": "string",
            "description": "Git url of a project.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test.git"
          },
          "git_ssh_url": {
            "type": "string",
            "description": "SSH url of a project.",
            "format": "uri",
            "example": "ssh://git@example.com/gitlabhq/gitlab-test.git"
          },
          "web_url": {
            "type": "string",
            "description": "The URL to view the repository.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/awesome-project"
          },
          "avatar_url": {
            "type": "string",
            "description": "Avatar url of the repository.",
            "format": "uri",
            "example": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon"
          },
          "visibility_level": {
            "type": "integer",
            "description": "Visibility level of a project.",
            "example": 20
          }
        },
        "additionalProperties": false,
        "title": "Repository"
      },
      "author": {
        "required": [
          "name",
          "email"
        ],
        "type": "object",
        "description": "Author details.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Author name.",
            "example": "John"
          },
          "email": {
            "type": "string",
            "description": "Author email.",
            "example": "john.doe@email.com"
          }
        },
        "additionalProperties": false
      },
      "commit-2": {
        "description": "Commit details.",
        "type": "object",
        "required": [
          "id",
          "message",
          "title",
          "timestamp",
          "url",
          "author",
          "added",
          "modified",
          "removed"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Commit sha.",
            "example": "b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327"
          },
          "message": {
            "type": "string",
            "description": "The commit message.",
            "example": "fixed readme"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The ISO 8601 timestamp of the commit."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL that points to the commit API resource.",
            "example": "http://example.com/mike/diaspora/commit/da1560886d4f094c3e6c9ef40349f7d38b5d27d7"
          },
          "author": {
            "$ref": "#/components/schemas/author"
          },
          "added": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An array of files added in the commit.",
            "example": [
              "CHANGELOG"
            ]
          },
          "modified": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An array of files modified by the commit.",
            "example": [
              "app/controller/application.rb"
            ]
          },
          "removed": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An array of files removed in the commit.",
            "example": [
              "app/controller/product.rb"
            ]
          }
        },
        "additionalProperties": false,
        "title": "Commit"
      },
      "push-2": {
        "type": "object",
        "required": [
          "object_kind",
          "before",
          "after",
          "ref",
          "checkout_sha",
          "user_id",
          "user_name",
          "user_username",
          "user_email",
          "user_avatar",
          "project_id",
          "project",
          "repository",
          "commits",
          "total_commits_count"
        ],
        "properties": {
          "object_kind": {
            "type": "string",
            "description": "Type of webhook event data.",
            "example": "push"
          },
          "before": {
            "type": "string",
            "description": "The SHA of the most recent commit on `ref` before the push.",
            "example": "95790bf891e76fee5e1747ab589903a6a1f80f22"
          },
          "after": {
            "type": "string",
            "description": "The SHA of the most recent commit on `ref` after the push.",
            "example": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7"
          },
          "ref": {
            "type": "string",
            "description": "The full git ref that is pushed. Example: `refs/heads/main`.",
            "example": "refs/heads/main"
          },
          "checkout_sha": {
            "type": "string",
            "description": "The SHA of the most recent commit on `ref` after the push.",
            "example": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7"
          },
          "user_id": {
            "type": "integer",
            "description": "Id of a gitlab user.",
            "example": 1
          },
          "user_name": {
            "type": "string",
            "description": "Name of a gitlab user.",
            "example": "John"
          },
          "user_username": {
            "type": "string",
            "description": "Nickname of a gitlab user.",
            "example": "john87"
          },
          "user_email": {
            "type": "string",
            "description": "Email of a gitlab user.",
            "example": "john87@email.com"
          },
          "user_avatar": {
            "type": "string",
            "description": "User avatar url.",
            "example": "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=8://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80"
          },
          "project_id": {
            "type": "integer",
            "description": "Project id.",
            "example": 15
          },
          "project": {
            "$ref": "#/components/schemas/project"
          },
          "repository": {
            "$ref": "#/components/schemas/repository-2"
          },
          "commits": {
            "type": "array",
            "description": "An array of commit objects describing the pushed commits. (Pushed commits are all commits that are included in the `compare` between the `before` commit and the `after` commit.) The array includes a maximum of 20 commits.",
            "items": {
              "$ref": "#/components/schemas/commit-2"
            }
          },
          "total_commits_count": {
            "type": "integer",
            "description": "Contains the actual number of commits.",
            "example": 34
          }
        },
        "additionalProperties": false,
        "title": "Push event"
      },
      "user-2": {
        "type": "object",
        "required": [
          "name",
          "username",
          "avatar_url"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "User name.",
            "example": "John"
          },
          "username": {
            "type": "string",
            "description": "User nickname.",
            "example": "johnDoe47"
          },
          "avatar_url": {
            "type": "string",
            "description": "User avatar url.",
            "example": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon"
          }
        },
        "additionalProperties": false,
        "title": "User"
      },
      "source": {
        "description": "Merge request source details.",
        "type": "object",
        "required": [
          "name",
          "description",
          "web_url",
          "avatar_url",
          "git_ssh_url",
          "git_http_url",
          "namespace",
          "visibility_level",
          "path_with_namespace",
          "default_branch",
          "homepage",
          "url",
          "ssh_url",
          "http_url"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the project."
          },
          "description": {
            "type": "string",
            "description": "The description of the project."
          },
          "web_url": {
            "type": "string",
            "description": "The URL to view the repository.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test"
          },
          "avatar_url": {
            "type": "string",
            "description": "Avatar url of the repository.",
            "format": "uri",
            "example": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon"
          },
          "git_ssh_url": {
            "type": "string",
            "description": "SSH url of a project.",
            "format": "uri",
            "example": "ssh://git@example.com/gitlabhq/gitlab-test.git"
          },
          "git_http_url": {
            "type": "string",
            "description": "Git url of a project.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test.git"
          },
          "namespace": {
            "type": "string",
            "description": "Project namespace.",
            "example": "GitlabHQ"
          },
          "visibility_level": {
            "type": "integer",
            "description": "Visibility level of a project.",
            "example": 20
          },
          "path_with_namespace": {
            "type": "string",
            "description": "Project path including namespace.",
            "example": "gitlabhq/gitlab-test"
          },
          "default_branch": {
            "type": "string",
            "description": "Project default branch.",
            "example": "develop"
          },
          "homepage": {
            "type": "string",
            "description": "Project homepage url.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test"
          },
          "url": {
            "type": "string",
            "description": "Url of a project.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test.git"
          },
          "ssh_url": {
            "type": "string",
            "description": "SSH url of a project.",
            "format": "uri",
            "example": "ssh://git@example.com/gitlabhq/gitlab-test.git"
          },
          "http_url": {
            "type": "string",
            "description": "Url of a project.",
            "format": "uri",
            "example": "http://example.com/gitlabhq/gitlab-test.git"
          }
        },
        "additionalProperties": false,
        "title": "Source"
      },
      "commit-flat": {
        "description": "Flattened commit details.",
        "type": "object",
        "required": [
          "id",
          "message",
          "title",
          "timestamp",
          "url",
          "author"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Commit SHA.",
            "example": "b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327"
          },
          "message": {
            "type": "string",
            "description": "The commit message.",
            "example": "fixed readme"
          },
          "title": {
            "type": "string",
            "description": "Commit title.",
            "example": "Update file README.md"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The ISO 8601 timestamp of the commit."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "URL that points to the commit API resource."
          },
          "author": {
            "$ref": "#/components/schemas/author"
          }
        },
        "additionalProperties": false,
        "title": "Commit"
      },
      "merge-request-details": {
        "description": "Merge request details.",
        "type": "object",
        "required": [
          "id",
          "target_branch",
          "source_branch",
          "source_project_id",
          "author_id",
          "assignee_id",
          "title",
          "created_at",
          "updated_at",
          "milestone_id",
          "state",
          "merge_status",
          "target_project_id",
          "iid",
          "description",
          "source",
          "target",
          "last_commit",
          "work_in_progress",
          "url",
          "action",
          "assignee"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Merge request id.",
            "example": 324
          },
          "target_branch": {
            "type": "string",
            "description": "Target branch name.",
            "example": "main"
          },
          "source_branch": {
            "type": "string",
            "description": "Source branch name.",
            "example": "feat/gitlab-implementation"
          },
          "source_project_id": {
            "type": "integer",
            "description": "Source project id.",
            "example": 32
          },
          "author_id": {
            "type": "integer",
            "description": "Author id.",
            "example": 2
          },
          "assignee_id": {
            "type": "integer",
            "description": "Assignee id.",
            "example": 4
          },
          "title": {
            "type": "string",
            "description": "Merge request title.",
            "example": "gitlab implementation"
          },
          "created_at": {
            "type": "string",
            "description": "Merge request created date.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "Merge request updated date.",
            "format": "date-time"
          },
          "milestone_id": {
            "type": "integer",
            "description": "Milestone id.",
            "example": 12
          },
          "state": {
            "type": "string",
            "description": "Merge request current state.",
            "enum": [
              "opened",
              "closed",
              "locked",
              "merged"
            ]
          },
          "merge_status": {
            "type": "string",
            "description": "Merge status.",
            "enum": [
              "unchecked",
              "can_be_merged",
              "cannot_be_merged"
            ]
          },
          "target_project_id": {
            "type": "integer",
            "description": "Target project id.",
            "example": 456
          },
          "iid": {
            "type": "integer",
            "description": "Merge request id unique only in scope of a single project.",
            "example": 254
          },
          "description": {
            "type": "string",
            "description": "Merge request description.",
            "example": "GitLab implementation"
          },
          "source": {
            "$ref": "#/components/schemas/source"
          },
          "target": {
            "$ref": "#/components/schemas/source"
          },
          "last_commit": {
            "$ref": "#/components/schemas/commit-flat"
          },
          "work_in_progress": {
            "type": "boolean",
            "description": "Work in progress flag."
          },
          "url": {
            "type": "string",
            "description": "Merge request url.",
            "example": "http://example.com/diaspora/merge_requests/324"
          },
          "action": {
            "type": "string",
            "enum": [
              "open",
              "close",
              "reopen",
              "update",
              "approved",
              "unapproved",
              "approval",
              "unapproval",
              "merge"
            ]
          },
          "assignee": {
            "$ref": "#/components/schemas/user-2"
          }
        },
        "additionalProperties": false,
        "title": "Merge request details"
      },
      "label-2": {
        "description": "GitLab label details.",
        "type": "object",
        "required": [
          "id",
          "title",
          "color",
          "project_id",
          "created_at",
          "updated_at",
          "template",
          "description",
          "type",
          "group_id"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "Label id.",
            "example": 202
          },
          "title": {
            "type": "string",
            "description": "Label title.",
            "example": "transport-label"
          },
          "color": {
            "type": "string",
            "description": "Label color specified using hexadecimal value.",
            "example": "#ffffff"
          },
          "project_id": {
            "type": "integer",
            "description": "Project id.",
            "example": 43
          },
          "created_at": {
            "type": "string",
            "description": "Label creation date.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "description": "Label last update date.",
            "format": "date-time"
          },
          "description": {
            "type": "string",
            "description": "Label description.",
            "example": "Transport related issues"
          },
          "type": {
            "type": "string",
            "description": "Label type.",
            "example": "ProjectLabel"
          },
          "group_id": {
            "type": "integer",
            "description": "Group id the label is created for.",
            "example": 41
          }
        },
        "additionalProperties": false,
        "title": "Label"
      },
      "updated-by-id": {
        "type": "object",
        "required": [
          "previous",
          "current"
        ],
        "properties": {
          "previous": {
            "type": "integer",
            "description": "Id of a user that previously updated merge request.",
            "example": 0
          },
          "current": {
            "type": "integer",
            "description": "Id of the most recent user that updated merge request.",
            "example": 1
          }
        },
        "additionalProperties": false,
        "title": "Updated by id"
      },
      "updated-at": {
        "type": "object",
        "required": [
          "previous",
          "current"
        ],
        "properties": {
          "previous": {
            "type": "string",
            "format": "date-time"
          },
          "current": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "title": "Updated at"
      },
      "labels": {
        "type": "object",
        "description": "Object specifying labels changes.",
        "required": [
          "previous",
          "current"
        ],
        "properties": {
          "previous": {
            "$ref": "#/components/schemas/label-2"
          },
          "current": {
            "$ref": "#/components/schemas/label-2"
          }
        },
        "additionalProperties": false,
        "title": "Labels"
      },
      "changes": {
        "type": "object",
        "description": "Object containing merge request change details.",
        "required": [
          "updated_by_id",
          "updated_at",
          "labels"
        ],
        "properties": {
          "updated_by_id": {
            "$ref": "#/components/schemas/updated-by-id"
          },
          "updated_at": {
            "$ref": "#/components/schemas/updated-at"
          },
          "labels": {
            "$ref": "#/components/schemas/labels"
          }
        },
        "additionalProperties": false,
        "title": "Change"
      },
      "merge-request-open": {
        "type": "object",
        "required": [
          "object_kind",
          "user",
          "project",
          "repository",
          "object_attributes",
          "labels",
          "changes"
        ],
        "properties": {
          "object_kind": {
            "type": "string",
            "enum": [
              "open"
            ],
            "description": "Type of webhook event data."
          },
          "user": {
            "description": "Merge request creator details.",
            "$ref": "#/components/schemas/user-2"
          },
          "project": {
            "$ref": "#/components/schemas/project"
          },
          "repository": {
            "$ref": "#/components/schemas/repository-2"
          },
          "object_attributes": {
            "$ref": "#/components/schemas/merge-request-details"
          },
          "labels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/label-2"
            }
          },
          "changes": {
            "$ref": "#/components/schemas/changes"
          }
        },
        "additionalProperties": false,
        "title": "Merge request open event"
      },
      "merge-request-reopen": {
        "type": "object",
        "required": [
          "object_kind",
          "user",
          "project",
          "repository",
          "object_attributes",
          "labels",
          "changes"
        ],
        "properties": {
          "object_kind": {
            "type": "string",
            "enum": [
              "reopen"
            ],
            "description": "Type of webhook event data."
          },
          "user": {
            "description": "Merge request creator details.",
            "$ref": "#/components/schemas/user-2"
          },
          "project": {
            "$ref": "#/components/schemas/project"
          },
          "repository": {
            "$ref": "#/components/schemas/repository-2"
          },
          "object_attributes": {
            "$ref": "#/components/schemas/merge-request-details"
          },
          "labels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/label-2"
            }
          },
          "changes": {
            "$ref": "#/components/schemas/changes"
          }
        },
        "additionalProperties": false,
        "title": "Merge request reopen event"
      },
      "merge-request-update": {
        "type": "object",
        "required": [
          "object_kind",
          "user",
          "project",
          "repository",
          "object_attributes",
          "labels",
          "changes"
        ],
        "properties": {
          "object_kind": {
            "type": "string",
            "enum": [
              "update"
            ],
            "description": "Type of webhook event data."
          },
          "user": {
            "description": "Merge request creator details.",
            "$ref": "#/components/schemas/user-2"
          },
          "project": {
            "$ref": "#/components/schemas/project"
          },
          "repository": {
            "$ref": "#/components/schemas/repository-2"
          },
          "object_attributes": {
            "$ref": "#/components/schemas/merge-request-details"
          },
          "labels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/label-2"
            }
          },
          "changes": {
            "$ref": "#/components/schemas/changes"
          }
        },
        "additionalProperties": false,
        "title": "Merge request update event"
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad Request.",
        "content": {
          "application/problem+json": {
            "schema": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "Error type.",
                  "example": "about:blank"
                },
                "title": {
                  "type": "string",
                  "description": "Error title.",
                  "example": "Unauthorized"
                },
                "status": {
                  "type": "integer",
                  "description": "HTTP status code generated by the origin server for this occurrence of the problem.",
                  "example": 401
                },
                "detail": {
                  "type": "string",
                  "description": "A human-readable message with more details.",
                  "example": "The request doesn't contain a GitHub signature"
                }
              },
              "required": [
                "detail"
              ]
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal Server Error.",
        "content": {
          "application/problem+json": {
            "schema": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "Error type.",
                  "example": "about:blank"
                },
                "title": {
                  "type": "string",
                  "description": "Error title.",
                  "example": "Internal server error"
                },
                "status": {
                  "type": "integer",
                  "description": "HTTP status code generated by the origin server for this occurrence of the problem.",
                  "example": 500
                },
                "detail": {
                  "type": "string",
                  "description": "A human-readable message with more details.",
                  "example": "Disk space is full"
                },
                "event": {
                  "type": "string",
                  "description": "Type of incoming webhook event.",
                  "example": "push"
                }
              },
              "required": [
                "detail"
              ]
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Unauthorized.",
        "content": {
          "application/problem+json": {
            "schema": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "description": "Error type.",
                  "example": "about:blank"
                },
                "title": {
                  "type": "string",
                  "description": "Error title.",
                  "example": "Unauthorized"
                },
                "status": {
                  "type": "integer",
                  "description": "HTTP status code generated by the origin server for this occurrence of the problem.",
                  "example": 401
                },
                "detail": {
                  "type": "string",
                  "description": "A human-readable message with more details.",
                  "example": "The request doesn't contain a GitHub signature"
                }
              },
              "required": [
                "detail"
              ]
            }
          }
        }
      }
    }
  }
}