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'
        '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: >-
            http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=identicon
        git_ssh_url:
          type: string
          description: SSH url of a project.
          format: uri
          example: 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: 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: git@example.com:gitlabhq/awesome-project.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: >-
            http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=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: >-
            http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=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: >-
            http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=identicon
        git_ssh_url:
          type: string
          description: SSH url of a project.
          format: uri
          example: 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: 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:
    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
