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: "$."