Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
f8646d6
refactor: update webhooks page structure and remove unused components
sarimrmalik Apr 17, 2026
2e0e1da
refactor: simplify webhooks table and update styling
sarimrmalik Apr 17, 2026
9b80329
Merge remote-tracking branch 'origin/main' into refactor/webhooks-page
sarimrmalik Apr 23, 2026
99ebc97
Fix type errors
sarimrmalik Apr 23, 2026
d3cd38c
refactor: enhance layout and styling for dashboard components
sarimrmalik Apr 23, 2026
429f12e
refactor: enhance webhook add/edit dialog with example payload and ev…
sarimrmalik Apr 23, 2026
ab29a27
feat: add clearable input functionality to webhook dialog
sarimrmalik Apr 23, 2026
50b1a30
refactor: enhance webhook dialog with dynamic example payload
sarimrmalik Apr 24, 2026
ced46af
Merge remote-tracking branch 'origin/main' into refactor/webhooks-page
sarimrmalik Apr 24, 2026
333ad34
refactor: enhance webhook add/edit dialog with improved focus and sty…
sarimrmalik Apr 24, 2026
6c16231
feat: integrate clipboard functionality in webhook dialog
sarimrmalik Apr 24, 2026
63411f7
fix: ensure validation for webhook secret input
sarimrmalik Apr 27, 2026
0511804
Merge remote-tracking branch 'origin/main' into refactor/webhooks-page
sarimrmalik Apr 29, 2026
07d161e
refactor: overhaul webhooks management with TRPC integration
sarimrmalik Apr 29, 2026
ca97924
Merge remote-tracking branch 'origin/main' into refactor/webhooks-page
sarimrmalik May 4, 2026
59aa65d
feat: add maxLength to custom secret input in webhook dialog
sarimrmalik May 4, 2026
031df16
feat: integrate FinishWebhookSetupDialog for enhanced webhook setup e…
sarimrmalik May 4, 2026
a6eaccf
refactor: enhance WebhookTableRow component with improved structure a…
sarimrmalik May 4, 2026
8f32bf2
refactor: improve styling and structure of WebhooksTable and WebhookR…
sarimrmalik May 4, 2026
92c521a
refactor: update styling and structure of WebhookTableRow and Webhook…
sarimrmalik May 4, 2026
52bca58
Merge branch 'main' of https://github.com/e2b-dev/dashboard into refa…
sarimrmalik May 6, 2026
30a5425
refactor: update webhook management to use 'create' and 'update' modes
sarimrmalik May 6, 2026
2db48f4
refactor: update UserAvatar component to use 'label' prop instead of …
sarimrmalik May 7, 2026
ce17dd8
refactor: enhance WebhookTableRow with URL copy functionality
sarimrmalik May 7, 2026
1c45c47
refactor: enhance WebhookTableRow with event badges and tooltips
sarimrmalik May 7, 2026
8bf085d
feat: introduce SandboxLifecycleEventType for webhook management
sarimrmalik May 7, 2026
5e782c5
refactor: update WebhookTableRow and WebhooksTable for improved layou…
sarimrmalik May 7, 2026
ff7b46b
refactor: streamline WebhookTableRow actions and improve secret editi…
sarimrmalik May 7, 2026
42a4519
feat: add DiscardWebhookChangesDialog for unsaved changes confirmation
sarimrmalik May 7, 2026
3fdf280
refactor: replace WebhookDeleteDialog with DeleteWebhookDialog for im…
sarimrmalik May 7, 2026
9494a15
refactor: enhance webhook dialogs and table layout for improved usabi…
sarimrmalik May 7, 2026
d6af1ae
refactor: improve EditSecretDialog and UpsertWebhookDialog for better…
sarimrmalik May 7, 2026
07c1717
refactor: replace EditSecretDialog with UpdateWebhookSecretDialog for…
sarimrmalik May 7, 2026
43c62a3
refactor: enhance UpsertWebhookDialog and related components for impr…
sarimrmalik May 7, 2026
a29e59c
refactor: simplify button variant logic in UpsertWebhookDialog
sarimrmalik May 7, 2026
78094c5
refactor: enhance webhook upsert logic and validation
sarimrmalik May 7, 2026
7cc4045
refactor: update event handling and validation in UpsertWebhookDialog
sarimrmalik May 7, 2026
ec0a71c
feat: add clearable functionality to webhook input field in UpsertWeb…
sarimrmalik May 7, 2026
1edb57d
refactor: simplify WebhooksPageContent structure and enhance loading …
sarimrmalik May 7, 2026
29ec381
refactor: remove disabled prop from WebhooksSearchFieldShell for impr…
sarimrmalik May 7, 2026
a0b0b79
refactor: update UpsertWebhookDialog to improve event handling and de…
sarimrmalik May 7, 2026
14e3832
Remove unused component
sarimrmalik May 8, 2026
f072a70
refactor: update webhook context structure in webhooksRouter
sarimrmalik May 8, 2026
e4722c1
Merge remote-tracking branch 'origin/main' into refactor/webhooks-page
sarimrmalik May 11, 2026
cc60592
Merge branch 'feat/webhook-monitoring' of https://github.com/e2b-dev/…
sarimrmalik May 12, 2026
e7c369c
feat(webhooks): implement webhook delivery monitoring and details
sarimrmalik May 12, 2026
757dbe8
refactor(webhooks): simplify stats range handling and improve overvie…
sarimrmalik May 13, 2026
2d34a6b
refactor(webhooks): update WebhookTableRow to use Link component
sarimrmalik May 13, 2026
23dccee
feat(webhooks): enhance webhook details and event display
sarimrmalik May 13, 2026
a7811d4
refactor(webhooks): enforce delivery stats range validation and updat…
sarimrmalik May 14, 2026
854d047
feat(webhooks): implement cursor-based pagination for webhook deliveries
sarimrmalik May 14, 2026
1e62dc8
Fix warning
sarimrmalik May 14, 2026
5720a13
Merge origin/main into refactor/webhooks-page
sarimrmalik May 14, 2026
b2dca64
Remove unused constants
sarimrmalik May 14, 2026
31113b8
Merge remote-tracking branch 'origin/refactor/webhooks-page' into fea…
sarimrmalik May 14, 2026
9bff860
feat(webhooks): enhance webhook detail header and introduce IdBadge c…
sarimrmalik May 14, 2026
730292b
Use URL state for webhook stats range
sarimrmalik May 14, 2026
8ea57e9
refactor(webhooks): simplify webhook name display in settings
sarimrmalik May 14, 2026
8d4f343
refactor(webhooks): enhance webhook overview and timestamp handling
sarimrmalik May 14, 2026
0226d8a
refactor(webhooks): streamline event deliveries section layout
sarimrmalik May 14, 2026
df08a53
refactor(webhooks): update stats range handling and improve range sel…
sarimrmalik May 14, 2026
2e3db05
feat(webhooks): add start and end query parameters for delivery filte…
sarimrmalik May 18, 2026
11e0963
refactor(webhooks): update delivery status handling and introduce eve…
sarimrmalik May 18, 2026
f063514
refactor(webhooks): adjust table layout and improve delivery details …
sarimrmalik May 18, 2026
1901943
refactor(webhooks): enhance delivery data visualization and timestamp…
sarimrmalik May 18, 2026
7ee38c2
feat(webhooks): enhance response time metrics and chart visualization
sarimrmalik May 18, 2026
6916abf
fix(webhooks): improve tooltip transition for webhook stats chart
sarimrmalik May 18, 2026
f4b1732
Merge remote-tracking branch 'origin/main' into refactor/webhooks-page
sarimrmalik May 18, 2026
1831ec5
refactor(webhooks): simplify webhook name display and enhance row int…
sarimrmalik May 19, 2026
2668bf9
refactor(webhooks): adjust deliveries table width for improved layout
sarimrmalik May 19, 2026
21b766c
refactor(webhooks): update table and cell widths for improved layout
sarimrmalik May 19, 2026
63f898c
refactor(webhooks): updated the SelectTrigger component in the Webhoo…
sarimrmalik May 19, 2026
02433e2
refactor(webhooks): replace MetricCard and ChartCard components with …
sarimrmalik May 19, 2026
cf8d799
feat(webhooks): add CopyButton to timestamps and webhook URL for impr…
sarimrmalik May 19, 2026
98ec142
refactor(webhooks): enhance webhook stats chart and data handling
sarimrmalik May 19, 2026
9a02461
refactor(webhooks): improve delivery and response time data handling
sarimrmalik May 19, 2026
27cc0eb
refactor(webhooks): update timestamp formatting and improve webhook d…
sarimrmalik May 19, 2026
d0809d0
refactor(webhooks): simplify layout of webhook overview content
sarimrmalik May 19, 2026
6814704
refactor(webhooks): enhance deliveries content layout and detail pres…
sarimrmalik May 19, 2026
615f6d2
feat(webhooks): implement virtualized table for improved performance …
sarimrmalik May 19, 2026
f67d035
refactor(webhooks): enhance layout and responsiveness of webhook over…
sarimrmalik May 19, 2026
cc42ebf
style: adjust minimum width of webhooks table for better layout
sarimrmalik May 19, 2026
181f176
Merge remote-tracking branch 'origin/main' into refactor/webhooks-page
sarimrmalik May 19, 2026
849f37b
Merge remote-tracking branch 'origin/refactor/webhooks-page' into fea…
sarimrmalik May 19, 2026
ea2a47c
style: update layout of deliveries content for improved alignment
sarimrmalik May 19, 2026
33999c3
refactor(webhooks): update webhook overview content for improved clar…
sarimrmalik May 20, 2026
13026c2
refactor(webhooks): rename 'Average' to 'Avg' in webhook overview con…
sarimrmalik May 20, 2026
d2b7deb
refactor(webhooks): update OpenAPI specification and TypeScript types…
sarimrmalik May 20, 2026
9e96afc
refactor(webhooks): standardize webhook delivery status and duration …
sarimrmalik May 20, 2026
9b9273b
refactor(webhooks): enhance webhook delivery data visualization
sarimrmalik May 20, 2026
43da1be
refactor(webhooks): improve logic for hiding inactive zero-value poin…
sarimrmalik May 20, 2026
51cf737
refactor(webhooks): remove webhook delivery retrieval functionality
sarimrmalik May 20, 2026
aa8b50a
refactor(webhooks): update data types for webhook delivery statistics
sarimrmalik May 21, 2026
c9d4c85
Comply with nextCursor in payload
sarimrmalik May 21, 2026
457e946
merge(dashboard): pull main into refactor webhooks page
sarimrmalik May 21, 2026
c0cb9e0
fix(webhooks): organize imports after main merge
sarimrmalik May 21, 2026
a00d82b
refactor(webhooks): reuse upsert schema types
sarimrmalik May 21, 2026
7c0b26b
refactor(webhooks): handle secret tab changes directly
sarimrmalik May 21, 2026
f326960
refactor(webhooks): simplify copied secret state
sarimrmalik May 21, 2026
39a9fc6
Merge branch 'main' of https://github.com/e2b-dev/dashboard into refa…
sarimrmalik May 22, 2026
3d1aef1
refactor(api): update errorClass type in OpenAPI and TypeScript defin…
sarimrmalik May 22, 2026
7c22bcf
refactor(webhooks): rename WebhookDeliveryEvent to WebhookDeliveryGroup
sarimrmalik May 27, 2026
69660f8
refactor(webhooks): improve row click handling in webhook table
sarimrmalik May 28, 2026
0326d88
Merge remote-tracking branch 'origin/main' into refactor/webhooks-page
sarimrmalik May 28, 2026
3699936
Merge remote-tracking branch 'origin/refactor/webhooks-page' into fea…
sarimrmalik May 28, 2026
e78677e
refactor(webhooks): adjust spacing in webhook table rows
sarimrmalik May 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
306 changes: 306 additions & 0 deletions spec/openapi.argus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,190 @@ components:
type: string
description: Secret used to sign the webhook payloads

WebhookDelivery:
description: Webhook delivery attempt
required:
- id
- teamId
- webhookId
- eventId
- sandboxId
- eventType
- status
- durationMs
- requestBody
- requestHeaders
- requestUrl
- errorClass
- timestamp
properties:
id:
type: string
format: uuid
description: Delivery attempt identifier
teamId:
type: string
format: uuid
description: Team identifier
webhookId:
type: string
format: uuid
description: Webhook configuration identifier
eventId:
type: string
format: uuid
description: Sandbox event identifier
sandboxId:
type: string
description: Sandbox identifier
eventType:
type: string
description: Sandbox event type
status:
type: string
enum: [success, failed]
description: Delivery attempt status
durationMs:
type: integer
format: int32
description: Delivery request duration in milliseconds
requestBody:
type: string
description: Serialized webhook request body
requestHeaders:
type: string
description: JSON-encoded request headers with sensitive values redacted
requestUrl:
type: string
format: uri
description: URL attempted for this delivery
responseBody:
type: string
nullable: true
description: Truncated response body, if a response was received
responseHeaders:
type: string
nullable: true
description: JSON-encoded response headers, if a response was received
responseHttpStatusCode:
type: integer
format: int32
nullable: true
description: HTTP response status code, if a response was received
errorClass:
type: string
nullable: true
enum:
- http_error
- dns_error
- timeout
- transport_error
- request_error
- signature_error
- canceled
description: Machine-readable non-HTTP or HTTP failure class
errorMessage:
type: string
nullable: true
description: Error message for failures without a useful response body
timestamp:
type: string
format: date-time
description: Time when the delivery attempt started

WebhookDeliveryStats:
description: Webhook delivery aggregate stats
required:
- buckets
- total
- failed
- durationMs
properties:
buckets:
type: array
items:
$ref: "#/components/schemas/WebhookDeliveryStatsBucket"
total:
type: integer
format: int64
failed:
type: integer
format: int64
durationMs:
$ref: "#/components/schemas/WebhookDeliveryDurationStats"

WebhookDeliveryDurationStats:
description: Webhook delivery duration statistics in milliseconds
required:
- minimum
- average
- maximum
properties:
minimum:
type: number
format: double
average:
type: number
format: double
maximum:
type: number
format: double

WebhookDeliveryStatsBucket:
description: Webhook delivery stats for a time bucket
required:
- timestamp
- total
- failed
- durationMs
properties:
timestamp:
type: string
format: date-time
total:
type: integer
format: int64
failed:
type: integer
format: int64
durationMs:
$ref: "#/components/schemas/WebhookDeliveryDurationStats"

WebhookDeliveryGroup:
description: Webhook delivery attempts grouped by sandbox event
required:
- eventId
- eventType
- sandboxId
- attempts
properties:
eventId:
type: string
format: uuid
eventType:
type: string
sandboxId:
type: string
attempts:
type: array
items:
$ref: "#/components/schemas/WebhookDelivery"

WebhookDeliveriesListPayload:
description: Paginated webhook delivery attempts grouped by event
required:
- data
- nextCursor
properties:
data:
type: array
items:
$ref: "#/components/schemas/WebhookDeliveryGroup"
nextCursor:
type: string
nullable: true
description: Cursor to pass to the next list request, or null when there is no next page.

paths:
/health:
get:
Expand Down Expand Up @@ -501,5 +685,127 @@ paths:
$ref: "#/components/responses/404"
"401":
$ref: "#/components/responses/401"
"500":
$ref: "#/components/responses/500"

/events/webhooks/{webhookID}/deliveries:
get:
operationId: webhookDeliveriesList
description: List webhook delivery attempts.
tags: [webhooks]
security:
- ApiKeyAuth: []
- Supabase1TokenAuth: []
Supabase2TeamAuth: []
parameters:
- $ref: "#/components/parameters/webhookID"
- name: cursor
in: query
required: false
schema:
type: string
description: Opaque cursor from the previous response's nextCursor field.
- name: limit
in: query
required: false
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 25
- name: orderAsc
in: query
required: false
schema:
type: boolean
default: false
- name: start
in: query
required: false
schema:
type: string
format: date-time
description: Include deliveries at or after this timestamp.
- name: end
in: query
required: false
schema:
type: string
format: date-time
description: Include deliveries before this timestamp.
- name: deliveryStatus
in: query
required: false
style: form
explode: true
schema:
type: array
items:
type: string
enum: [success, failed]
description: Filter deliveries by delivery status
- name: eventType
in: query
required: false
style: form
explode: true
schema:
type: array
items:
type: string
description: Filter deliveries by event type
responses:
"200":
description: List of webhook delivery attempts grouped by event.
content:
application/json:
schema:
$ref: "#/components/schemas/WebhookDeliveriesListPayload"
"400":
$ref: "#/components/responses/400"
"404":
$ref: "#/components/responses/404"
"401":
$ref: "#/components/responses/401"
"500":
$ref: "#/components/responses/500"

/events/webhooks/{webhookID}/stats:
get:
operationId: webhookDeliveryStats
description: Get webhook delivery aggregate stats.
tags: [webhooks]
security:
- ApiKeyAuth: []
- Supabase1TokenAuth: []
Supabase2TeamAuth: []
parameters:
- $ref: "#/components/parameters/webhookID"
- name: start
in: query
required: false
schema:
type: string
format: date-time
description: Inclusive stats range start. Defaults to 24 hours ago.
- name: end
in: query
required: false
schema:
type: string
format: date-time
description: Exclusive stats range end. Defaults to now.
responses:
"200":
description: Webhook delivery stats.
content:
application/json:
schema:
$ref: "#/components/schemas/WebhookDeliveryStats"
"404":
$ref: "#/components/responses/404"
"401":
$ref: "#/components/responses/401"
"500":
$ref: "#/components/responses/500"
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { WebhookDeliveriesContent } from '@/features/dashboard/settings/webhooks/detail'
import { prefetch, trpc } from '@/trpc/server'

type WebhookDeliveriesPageProps = {
params: Promise<{
teamSlug: string
webhookId: string
}>
}

export default async function WebhookDeliveriesPage({
params,
}: WebhookDeliveriesPageProps) {
const { teamSlug, webhookId } = await params

prefetch(
trpc.webhooks.listDeliveries.infiniteQueryOptions({
teamSlug,
webhookId,
limit: 25,
})
)

return <WebhookDeliveriesContent teamSlug={teamSlug} webhookId={webhookId} />
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { notFound } from 'next/navigation'
import { INCLUDE_ARGUS } from '@/configs/flags'
import { WebhookDetailLayout } from '@/features/dashboard/settings/webhooks/detail'
import { HydrateClient, prefetch, trpc } from '@/trpc/server'

type WebhookTabsLayoutProps = {
children: React.ReactNode
params: Promise<{
teamSlug: string
webhookId: string
}>
}

export default async function WebhookTabsLayout({
children,
params,
}: WebhookTabsLayoutProps) {
if (!INCLUDE_ARGUS) {
return notFound()
}

const { teamSlug, webhookId } = await params

prefetch(trpc.webhooks.get.queryOptions({ teamSlug, webhookId }))

return (
<HydrateClient>
<WebhookDetailLayout teamSlug={teamSlug} webhookId={webhookId}>
{children}
</WebhookDetailLayout>
</HydrateClient>
)
}
Loading
Loading