webhooks: - id: vpn-diagnostic label: Run VPN diagnostic description: Runs a diagnostic on the VPN server and returns latency and health metrics. method: POST url: ${WEBHOOK_VPN_DIAGNOSTIC_URL} required_roles: - webhook-runner confirmation_required: true payload_template: source: pi-chat user_id: "{{user.id}}" session_id: "{{session.id}}" last_user_message: "{{chat.last_user_message}}" - id: service-restart label: Restart service description: Restarts a system service. The service name is read from the payload. method: POST url: ${WEBHOOK_SERVICE_RESTART_URL} required_roles: - webhook-runner - sre confirmation_required: true payload_template: source: pi-chat user_id: "{{user.id}}" session_id: "{{session.id}}" service: "{{payload.service}}" last_user_message: "{{chat.last_user_message}}" - id: dns-flush label: Flush local DNS description: Clears the local DNS cache and returns the result. method: POST url: ${WEBHOOK_DNS_FLUSH_URL} required_roles: - webhook-runner confirmation_required: true payload_template: source: pi-chat user_id: "{{user.id}}" session_id: "{{session.id}}" last_user_message: "{{chat.last_user_message}}" - id: disk-cleanup label: Clean /tmp description: Removes files in /tmp older than 7 days. method: POST url: ${WEBHOOK_DISK_CLEANUP_URL} required_roles: - webhook-runner - sre confirmation_required: true payload_template: source: pi-chat user_id: "{{user.id}}" session_id: "{{session.id}}" last_user_message: "{{chat.last_user_message}}" - id: log-tail label: Tail service log description: Returns the last N lines of a service log. method: GET url: ${WEBHOOK_LOG_TAIL_URL} required_roles: - webhook-runner confirmation_required: false payload_template: service: "{{payload.service}}" lines: "{{payload.lines}}" - id: cache-purge label: Purge CDN cache description: Invalidates the CDN cache for the provided paths. method: POST url: ${WEBHOOK_CACHE_PURGE_URL} required_roles: - webhook-runner confirmation_required: true payload_template: source: pi-chat user_id: "{{user.id}}" session_id: "{{session.id}}" paths: "{{payload.paths}}" last_user_message: "{{chat.last_user_message}}"