Add JSON API for webhook deliveries (#2785)

* Add JSON API for webhook deliveries

* Extract sanitized_request method on Webhook::Delivery

* Extract response_summary method on Webhook::Delivery
This commit is contained in:
Rob Zolkos
2026-04-07 15:08:27 -04:00
committed by GitHub
parent f3bacffe2b
commit 21981898d2
9 changed files with 231 additions and 0 deletions
@@ -0,0 +1,19 @@
class Webhooks::DeliveriesController < ApplicationController
include BoardScoped
before_action :ensure_admin
before_action :set_webhook
def index
respond_to do |format|
format.json do
set_page_and_extract_portion_from @webhook.deliveries.ordered.includes(event: [ :creator, { eventable: :card } ])
end
end
end
private
def set_webhook
@webhook = @board.webhooks.find(params[:webhook_id])
end
end
+12
View File
@@ -44,6 +44,18 @@ class Webhook::Delivery < ApplicationRecord
raise
end
def sanitized_request
if headers = request&.dig("headers")&.except("X-Webhook-Signature")
{ headers: headers }
end
end
def response_summary
if response.present?
{ code: response[:code], error: response[:error] }
end
end
def failed?
(errored? || completed?) && !succeeded?
end
@@ -0,0 +1,10 @@
json.cache! delivery do
json.(delivery, :id, :state)
json.created_at delivery.created_at.utc
json.updated_at delivery.updated_at.utc
json.request delivery.sanitized_request
json.response delivery.response_summary
json.event delivery.event, partial: "webhooks/deliveries/event", as: :event
end
@@ -0,0 +1,15 @@
json.cache! [ event, event.creator, event.eventable ] do
json.(event, :id, :action)
json.created_at event.created_at.utc
json.creator do
json.id event.creator_id
json.name event.creator.name
end
json.eventable do
json.type event.eventable_type
json.id event.eventable_id
json.url polymorphic_url(event.eventable)
end
end
@@ -0,0 +1 @@
json.array! @page.records, partial: "webhooks/deliveries/delivery", as: :delivery