Skip to main content

Authentication

All webhook endpoints require a valid session token:
Authorization: Bearer <session_token>

GET /api/alerts/webhook-config

Retrieve the current webhook configuration status.

Response

discord_configured
boolean
Whether Discord webhook URL is configured
slack_configured
boolean
Whether Slack webhook URL is configured

POST /api/alerts/webhook-config

Update webhook configuration. URLs are stored securely in the credential vault.

Request Body

discord_url
string
Discord webhook URL (must be HTTPS). Set to null or empty string to remove.
slack_url
string
Slack webhook URL (must be HTTPS). Set to null or empty string to remove.
At least one of discord_url or slack_url must be provided in the request.
Webhook URLs must use HTTPS and cannot point to localhost, private IPs, or internal hosts (unless FISHNET_DEV=1 is set).

Response

saved
boolean
Returns true if configuration was saved successfully
discord_configured
boolean
Updated Discord configuration status
slack_configured
boolean
Updated Slack configuration status

POST /api/alerts/webhook-test

Test webhook delivery by sending a test message.

Request Body

provider
string
Specific provider to test: discord or slack. If omitted, tests all configured webhooks.
message
string
Custom test message. Defaults to a timestamp-based test message.

Response

ok
boolean
Overall test result: true if at least one configured webhook was sent successfully
configured_any
boolean
Whether any webhooks are configured
results
array
Array of test results per provider

Error Responses

  • 400 Bad Request: Invalid URL, missing required fields, or invalid provider name
  • 401 Unauthorized: Missing or invalid session token
  • 500 Internal Server Error: Failed to save webhook configuration or vault error
curl -X GET https://localhost:3100/api/alerts/webhook-config \
  -H 'Authorization: Bearer fn_sess_abc123def456'
{
  "discord_configured": true,
  "slack_configured": false
}

Build docs developers (and LLMs) love