Repository navigation
Webhook Documentation
Maattt GoobyFRS edited this page Aug 15, 2026
·
2 revisions
GoobyDesk supports both outbound webhook notifications (sending ticket events to chat platforms) and inbound webhook ingestion (creating tickets automatically from third-party monitoring tools).
Outbound notifications fire whenever a ticket is created or its status changes (see local_handlers/local_webhook_handler.py). Each configured, enabled platform receives a short embed/attachment containing the ticket number, subject, and status.
- Config keys:
discord.enabled,discord.webhook_urlinconfiguration.yml - Sends an embed titled
New Ticket: <number> - Subject: <subject>for new tickets, orTicket: <number> updated — Status: <status>for updates - Blue accent color for new tickets, yellow for status updates
- Config keys:
slack.enabled,slack.webhook_urlinconfiguration.yml - Sends an attachment using the same title format and color scheme as Discord
- Config keys:
teams365.enabled,teams365.webhook_urlinconfiguration.yml - Support is present in
template_configuration.ymlbut the sender is currently disabled/commented out in code; not yet functional
- Notifications are best-effort: failures are logged and do not block ticket creation/updates
- Each platform is checked independently via
enabledflags; disabled platforms are skipped - Requests use a 5 second timeout and are sent as a simple
POSTwith a JSON payload
Inbound endpoints live under the /api blueprint (blueprints/api_module.py) and automatically create tickets from external systems. All endpoints expect a JSON body and are unauthenticated, so restrict access at the network/reverse-proxy layer.
- Creates a
Changerequest ticket from any Tailscale webhook payload - Requestor is set to
Tailscale; notification email comes fromemail.tailscale_notify_email - Impact/Urgency default to
Medium
- Creates an
Incidentticket for Uptime-Kuma heartbeat events - Only
DOWN(status0) andPENDING(status2) heartbeats create tickets;UPandMAINTENANCEare ignored -
DOWNevents areHighimpact/urgency;PENDINGevents areMediumimpact/urgency - Requestor is set to
Uptime Kuma
- Creates an
Incidentticket from LibreNMS's default alert-transport payload - Only newly-triggered alerts (
state == 1) create a ticket; recoveries/acknowledgements are ignored -
criticalseverity maps toHighimpact/urgency, otherwiseMedium - Requestor is set to
LibreNMS; notification email comes fromemail.librenms_notify_email
- Simple health/identification endpoint
- Returns
{"is_GoobyDesk": true, "installed": true, "edition": "community", "license_key": null}
- Successful ingestion returns
{"status": "success", "ticket": "<ticket_number>"} - Untracked states/statuses return
{"status": "ignored", "reason": "..."}with HTTP 200 - Malformed/empty payloads return HTTP 400
- Unexpected errors are logged with a correlation ID and return HTTP 500 without leaking internal details
- Raw payloads are never logged directly; only opaque hashed identifiers appear in logs
- Every successfully created ticket triggers the outbound notification flow described above