RubyGems.org Registry API — Webhooks

Webhooks surface — Webhooks. 4 operations. Lead operation: List Web Hooks. Self-contained Naftiko capability covering one RubyGems business surface.

RubyGems.org Registry API — Webhooks is a Naftiko capability published by Ruby Programming Language and Popular API Gems, one of 9 capabilities the APIs.io network indexes for this provider. It bundles 4 operations across the POST, GET, and DELETE methods rooted at /v1/web-hooks.

The capability includes 2 read-only operations and 2 state-changing operations. Lead operation: List registered web hooks. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include RubyGems, Registry, and Webhooks.

Run with Naftiko RubyGemsRegistryWebhooks

What You Can Do

GET
Listwebhooks — List registered web hooks.
/v1/web-hooks
POST
Createwebhook — Register a web hook.
/v1/web-hooks
DELETE
Removewebhook — Remove a web hook.
/v1/web-hooks/remove
POST
Firewebhook — Test fire a web hook.
/v1/web-hooks/fire

MCP Tools

list-web-hooks

List registered web hooks.

read-only idempotent
create-web-hook

Register a web hook.

remove-web-hook

Remove a web hook.

idempotent
fire-web-hook

Test fire a web hook.

read-only

Capability Spec

rubygems-registry-webhooks.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "RubyGems.org Registry API — Webhooks"
  description: >-
    Webhooks surface — Webhooks. 4 operations. Lead operation: List Web Hooks.
    Self-contained Naftiko capability covering one RubyGems business surface.
  tags:
    - RubyGems
    - Registry
    - Webhooks
  created: "2026-05-23"
  modified: "2026-05-23"

binds:
  - namespace: env
    keys:
      RUBYGEMS_API_KEY: RUBYGEMS_API_KEY

capability:

  consumes:
    - type: http
      namespace: "rubygems-registry-webhooks"
      baseUri: "https://rubygems.org"
      description: "RubyGems.org Registry — Webhooks surface. Self-contained, no shared references."
      authentication:
        type: apikey
        key: Authorization
        value: "{{env.RUBYGEMS_API_KEY}}"
        placement: header
      resources:
        - name: "web-hooks"
          path: "/api/v1/web_hooks.json"
          operations:
            - name: "listWebHooks"
              method: GET
              description: "List registered web hooks."
              inputParameters: []
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "web-hooks-collection"
          path: "/api/v1/web_hooks"
          operations:
            - name: "createWebHook"
              method: POST
              description: "Register a web hook."
              inputParameters:
                - name: "body"
                  in: body
                  type: object
                  required: true
                  description: "Form body containing gem_name and url."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "remove-web-hook"
          path: "/api/v1/web_hooks/remove"
          operations:
            - name: "removeWebHook"
              method: DELETE
              description: "Remove a web hook."
              inputParameters:
                - name: "gem_name"
                  in: query
                  type: string
                  required: true
                  description: "Gem name (or * for global)."
                - name: "url"
                  in: query
                  type: string
                  required: true
                  description: "Callback URL to remove."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "fire-web-hook"
          path: "/api/v1/web_hooks/fire"
          operations:
            - name: "fireWebHook"
              method: POST
              description: "Test fire a web hook."
              inputParameters:
                - name: "body"
                  in: body
                  type: object
                  required: true
                  description: "Form body containing gem_name and url."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."

  exposes:
    - type: rest
      namespace: "rubygems-registry-webhooks-rest"
      port: 8080
      description: "REST adapter for RubyGems.org Registry — Webhooks."
      resources:
        - path: "/v1/web-hooks"
          name: "web-hooks"
          description: "REST surface for the web hooks listing."
          operations:
            - method: GET
              name: "listWebHooks"
              description: "List registered web hooks."
              call: "rubygems-registry-webhooks.listWebHooks"
              with: {}
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: "createWebHook"
              description: "Register a web hook."
              call: "rubygems-registry-webhooks.createWebHook"
              with:
                body: "rest.body"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/web-hooks/remove"
          name: "remove-web-hook"
          description: "REST surface for removing a web hook."
          operations:
            - method: DELETE
              name: "removeWebHook"
              description: "Remove a web hook."
              call: "rubygems-registry-webhooks.removeWebHook"
              with:
                gem_name: "rest.gem_name"
                url: "rest.url"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/web-hooks/fire"
          name: "fire-web-hook"
          description: "REST surface for test-firing a web hook."
          operations:
            - method: POST
              name: "fireWebHook"
              description: "Test fire a web hook."
              call: "rubygems-registry-webhooks.fireWebHook"
              with:
                body: "rest.body"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      namespace: "rubygems-registry-webhooks-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for RubyGems.org Registry — Webhooks."
      tools:
        - name: "list-web-hooks"
          description: "List registered web hooks."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "rubygems-registry-webhooks.listWebHooks"
          with: {}
          outputParameters:
            - type: object
              mapping: "$."
        - name: "create-web-hook"
          description: "Register a web hook."
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "rubygems-registry-webhooks.createWebHook"
          with:
            body: "tools.body"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "remove-web-hook"
          description: "Remove a web hook."
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "rubygems-registry-webhooks.removeWebHook"
          with:
            gem_name: "tools.gem_name"
            url: "tools.url"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "fire-web-hook"
          description: "Test fire a web hook."
          hints:
            readOnly: true
            destructive: false
            idempotent: false
          call: "rubygems-registry-webhooks.fireWebHook"
          with:
            body: "tools.body"
          outputParameters:
            - type: object
              mapping: "$."