Redocly Webhooks API

Operations related to incoming git webhooks.

Operations 2

POST /webhooks/github Create GitHub webhook event #
POST /webhooks/gitlab Create GitLab webhook event #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/redocly-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

redocly-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: '1.0'
  title: Redocly Scout agent Webhooks API
  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
servers:
- url: '{host}'
  variables:
    host:
      default: http://localhost
      description: Server host.
tags:
- name: Webhooks
  description: Operations related to incoming git webhooks.
paths:
  /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:
  schemas:
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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

# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/redocly/refs/heads/main/openapi/redocly-webhooks-api-openapi.yml