HTTP Webhooks¶
Connect Gira with external services for real-time automation, notifications, and integrations using HTTP webhooks.
๐ Table of Contents¶
- What are Webhooks?
- Quick Start
- Configuration
- Service Templates
- Event Filtering
- CLI Reference
- Security & Authentication
- Monitoring & Health Checks
- Integration with Hooks
- Troubleshooting
๐ฏ What are Webhooks?¶
Webhooks are HTTP callbacks that Gira sends to external services when events occur. They enable real-time integration with:
- Team Communication: Slack, Discord, Microsoft Teams
- Project Management: Jira, Asana, Linear
- CI/CD Systems: GitHub Actions, Jenkins, GitLab CI
- Monitoring: Datadog, New Relic, PagerDuty
- Automation Platforms: Zapier, Make.com, IFTTT
- Custom Services: Your own APIs and microservices
How Webhooks Work¶
- Event Occurs โ Ticket created, updated, or moved
- Payload Generated โ Gira creates standardized JSON payload
- Filtering Applied โ Check if webhook should receive this event
- HTTP Delivery โ POST request sent to webhook URL
- Retry Logic โ Automatic retries with exponential backoff on failure
๐ Quick Start¶
Step 1: Add Your First Webhook¶
# Simple webhook for all ticket events
gira webhook add my-service https://api.example.com/webhook
# Slack integration with template
gira webhook add slack https://hooks.slack.com/services/T00/B00/XXX --template slack
# Filtered webhook for high-priority issues
gira webhook add alerts https://api.example.com/alerts \
--filter "priority:high OR type:bug" \
--events ticket_created,ticket_updated
Step 2: Test Your Webhook¶
# Test connectivity
gira webhook test my-service
# Check health status
gira webhook health
# View delivery statistics
gira webhook stats
Step 3: Monitor and Manage¶
# List all webhooks
gira webhook list
# Disable temporarily
gira webhook disable my-service
# Re-enable
gira webhook enable my-service
# Remove webhook
gira webhook remove my-service
โ๏ธ Configuration¶
Webhooks are configured in your project's .gira/config.json
:
{
"extensibility": {
"webhooks": {
"enabled": true,
"timeout": 30,
"retry_attempts": 3,
"signing_secret": "${GIRA_WEBHOOK_SECRET}",
"endpoints": [
{
"name": "slack-notifications",
"url": "https://hooks.slack.com/services/T00/B00/XXX",
"enabled": true,
"events": ["ticket_created", "ticket_updated", "ticket_moved"],
"template": "slack",
"headers": {
"Content-Type": "application/json"
}
},
{
"name": "critical-alerts",
"url": "https://api.example.com/webhooks/alerts",
"enabled": true,
"events": ["*"],
"filter": "priority:critical OR (type:bug AND labels~security)",
"timeout": 15,
"retry_attempts": 5,
"auth": {
"type": "bearer",
"token": "${ALERT_API_TOKEN}"
}
}
]
}
}
}
Global Settings¶
Setting | Description | Default |
---|---|---|
enabled |
Enable/disable webhook system | true |
timeout |
Default HTTP timeout (seconds) | 30 |
retry_attempts |
Default retry attempts | 3 |
signing_secret |
HMAC signing secret | none |
Per-Endpoint Settings¶
Setting | Description | Required |
---|---|---|
name |
Unique webhook identifier | โ |
url |
HTTP endpoint URL | โ |
enabled |
Enable this webhook | No (true ) |
events |
Events to listen for | No (["*"] ) |
template |
Service template to use | No |
filter |
Event filter expression | No |
timeout |
HTTP timeout override | No |
retry_attempts |
Retry attempts override | No |
headers |
Custom HTTP headers | No |
auth |
Authentication configuration | No |
๐จ Service Templates¶
Pre-built templates for popular services make integration quick and easy.
Available Templates¶
Slack¶
Rich message formatting with ticket details, priority colors, and action buttons.
Discord¶
Embed-based notifications with color coding and field organization.
Jira¶
Bidirectional sync format compatible with Atlassian Jira webhooks.
Microsoft Teams¶
Adaptive card notifications with Office 365 integration.
GitHub Actions¶
gira webhook add github https://api.github.com/repos/user/repo/dispatches \
--template github-actions \
--auth bearer --token "${GITHUB_TOKEN}"
Workflow trigger format for repository dispatch events.
Custom Templates¶
Create your own service templates in src/gira/templates/webhooks/
:
{
"name": "my-service",
"description": "Custom service integration",
"template": "custom",
"events": ["ticket_created", "ticket_updated"],
"headers": {
"Content-Type": "application/json",
"X-Custom-Header": "value"
},
"example_url": "https://api.myservice.com/webhook",
"setup_instructions": [
"1. Create webhook in service settings",
"2. Copy webhook URL",
"3. Use: gira webhook add my-service <url> --template my-service"
]
}
๐ Event Filtering¶
Control which events trigger webhooks using powerful filter expressions.
Filter Syntax¶
Basic Field Matching¶
# Priority filtering
--filter "priority:high"
--filter "priority:critical"
# Type filtering
--filter "type:bug"
--filter "type:feature"
# Status filtering
--filter "status:in_progress"
--filter "status:done"
Boolean Logic¶
# OR conditions
--filter "priority:high OR priority:critical"
--filter "type:bug OR type:task"
# AND conditions
--filter "type:bug AND priority:high"
--filter "status:in_progress AND assignee:dev@example.com"
# Complex combinations
--filter "(type:bug OR type:task) AND priority:high"
Contains Matching¶
# Label contains
--filter "labels~security"
--filter "labels~frontend"
# Title contains
--filter "title~urgent"
--filter "title~hotfix"
Advanced Examples¶
# Security-related high priority items
--filter "priority:high AND labels~security"
# Bugs and critical features
--filter "type:bug OR (type:feature AND priority:critical)"
# Development team assignments
--filter "assignee~@company.com AND status:in_progress"
Supported Fields¶
Field | Description | Example Values |
---|---|---|
priority |
Ticket priority | low , medium , high , critical |
type |
Ticket type | feature , bug , task , epic |
status |
Ticket status | todo , in_progress , review , done |
assignee |
Assigned user | user@example.com |
reporter |
Ticket creator | user@example.com |
labels |
Ticket labels | frontend , backend , security |
title |
Ticket title | Any text |
epic_id |
Epic assignment | EPIC-001 |
Filter Validation¶
# Validate filter syntax
gira webhook filter validate "priority:high OR type:bug"
# Get filter help and examples
gira webhook filter help
๐ก CLI Reference¶
Core Commands¶
Add Webhook¶
gira webhook add <name> <url> [OPTIONS]
Options:
--events, -e Events to subscribe to [default: ticket_created,ticket_updated,ticket_moved]
--template, -t Service template to use
--filter, -f Event filter expression
--timeout HTTP timeout in seconds [default: 30]
--retry-attempts Number of retry attempts [default: 3]
--headers Custom HTTP headers (JSON format)
--auth Authentication type [bearer|api_key|basic]
--token Auth token (for bearer auth)
--api-key API key name (for api_key auth)
--api-value API key value (for api_key auth)
--username Username (for basic auth)
--password Password (for basic auth)
--enabled/--disabled Enable/disable webhook [default: enabled]
List Webhooks¶
gira webhook list [OPTIONS]
Options:
--verbose, -v Show detailed information
--format Output format [table|json] [default: table]
Test Webhook¶
gira webhook test <name> [OPTIONS]
Options:
--event Event type for test [default: test]
--verbose, -v Show detailed output
Health Monitoring¶
# Check webhook health
gira webhook health [name] [OPTIONS]
# View delivery statistics
gira webhook stats [name]
Options:
--verbose, -v Show detailed health information
Management¶
# Enable/disable webhooks
gira webhook enable <name>
gira webhook disable <name>
# Remove webhook
gira webhook remove <name>
# Update webhook configuration
gira webhook update <name> [OPTIONS]
๐ Security & Authentication¶
Authentication Methods¶
Bearer Token¶
API Key¶
gira webhook add service https://api.example.com/webhook \
--auth api_key --api-key "X-API-Key" --api-value "${SERVICE_KEY}"
Basic Auth¶
gira webhook add service https://api.example.com/webhook \
--auth basic --username "${SERVICE_USER}" --password "${SERVICE_PASS}"
Webhook Signing¶
Secure webhook delivery with HMAC-SHA256 signatures:
# Configure signing secret
export GIRA_WEBHOOK_SECRET="your-secret-key"
# Add to config
gira config set webhooks.signing_secret "${GIRA_WEBHOOK_SECRET}"
Verify signatures in your webhook handler:
import hmac
import hashlib
def verify_webhook_signature(payload, signature, secret):
expected = hmac.new(
secret.encode(),
payload.encode(),
hashlib.sha256
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)
# In your webhook handler
signature = request.headers.get('X-Gira-Signature-256')
timestamp = request.headers.get('X-Gira-Timestamp')
payload = request.get_data(as_text=True)
if verify_webhook_signature(f"{timestamp}.{payload}", signature, secret):
# Process webhook
pass
Environment Variables¶
Use environment variables for sensitive configuration:
# Set environment variables
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."
export API_TOKEN="your-api-token"
export DATABASE_URL="postgresql://..."
# Reference in config
{
"url": "${SLACK_WEBHOOK_URL}",
"auth": {
"type": "bearer",
"token": "${API_TOKEN}"
}
}
๐ Monitoring & Health Checks¶
Health Monitoring¶
# Check all webhook health
gira webhook health
# Check specific webhook
gira webhook health slack --verbose
# Continuous monitoring
watch -n 30 'gira webhook health'
Health check output:
Webhook Health Status
โโโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Name โ Status โ Response Time โ URL โ Error โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ slack โ ๐ข Healthy โ 245ms โ https://hooks.slack.com/services/T00/B00/XXX โ โ
โ api-service โ ๐ด Unhealthy โ N/A โ https://api.example.com/webhook โ Connection timeout โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Health Summary: 1/2 endpoints healthy
Delivery Statistics¶
# View delivery stats for all webhooks
gira webhook stats
# View stats for specific webhook
gira webhook stats slack
Statistics output:
Webhook Delivery Statistics
โโโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Endpoint โ Total โ Success โ Failed โ Success Rate โ Last Activity โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ slack โ 156 โ 154 โ 2 โ 98.7% โ 2025-08-01T11:45 โ
โ api-service โ 23 โ 18 โ 5 โ 78.3% โ 2025-08-01T11:30 โ
โ github โ 45 โ 45 โ 0 โ 100.0% โ 2025-08-01T11:50 โ
โโโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Integration with Hooks¶
Webhooks work seamlessly with Gira's existing hook system. Both systems are triggered by the same events and can complement each other.
Unified Event Pipeline¶
Ticket Event โ Hook System โ Local Scripts โ HTTP Webhooks โ External Services
(GCM-626) (.gira/hooks/) (GCM-350) (APIs)
Configuration¶
Both systems are configured in the same .gira/config.json
:
{
"extensibility": {
"hooks": {
"enabled": true,
"timeout": 30,
"on_failure": "warn"
},
"webhooks": {
"enabled": true,
"timeout": 30,
"retry_attempts": 3,
"endpoints": [...]
}
}
}
Complementary Use Cases¶
Local Hooks | HTTP Webhooks |
---|---|
Git operations | Team notifications |
File system changes | External API updates |
Local validation | Cloud integrations |
Project-specific logic | Service-agnostic payloads |
Fast execution | Reliable delivery |
Example: Combined Workflow¶
# Local hook for git operations
# .gira/hooks/ticket-created.sh
#!/bin/bash
git checkout -b "feature/$GIRA_TICKET_ID"
echo "Created feature branch for $GIRA_TICKET_ID"
# Webhook for team notification (configured separately)
gira webhook add slack https://hooks.slack.com/... --template slack
# Webhook for external project tracking
gira webhook add jira https://company.atlassian.net/webhook --template jira
When a ticket is created: 1. Local hook creates git branch 2. Slack webhook notifies team 3. Jira webhook syncs with external system
๐ง Troubleshooting¶
Common Issues¶
Webhook Not Firing¶
Symptoms: No webhook deliveries despite events occurring
Diagnosis:
# Check if webhooks are enabled
gira config get webhooks.enabled
# Verify webhook configuration
gira webhook list --verbose
# Check event filtering
gira webhook filter validate "your-filter-expression"
Solutions:
- Enable webhooks: gira config set webhooks.enabled true
- Verify webhook events match your triggers
- Check filter expressions for syntax errors
- Ensure webhook is enabled: gira webhook enable <name>
HTTP Delivery Failures¶
Symptoms: 4xx/5xx HTTP errors, timeouts
Diagnosis:
# Check webhook health
gira webhook health <name> --verbose
# View delivery statistics
gira webhook stats <name>
# Test webhook manually
gira webhook test <name> --verbose
Solutions:
- Verify webhook URL is correct and accessible
- Check authentication credentials
- Increase timeout: gira webhook update <name> --timeout 60
- Verify service is accepting webhooks
- Check firewall/network connectivity
Authentication Issues¶
Symptoms: 401/403 HTTP errors
Diagnosis:
# Test webhook with verbose output
gira webhook test <name> --verbose
# Check authentication configuration
gira webhook list --verbose
Solutions: - Verify authentication type and credentials - Check environment variables are set correctly - Ensure API tokens have required permissions - Test authentication outside of Gira
Filter Not Working¶
Symptoms: Webhooks firing for wrong events
Diagnosis:
# Validate filter expression
gira webhook filter validate "your-expression"
# Get filter help
gira webhook filter help
# Check webhook configuration
gira webhook list --verbose
Solutions: - Fix filter syntax errors - Use correct field names and operators - Test filters with sample data - Check operator precedence in complex expressions
Debug Mode¶
Enable verbose output for debugging:
# Test with detailed output
gira webhook test <name> --verbose
# Health check with details
gira webhook health <name> --verbose
# List webhooks with full configuration
gira webhook list --verbose
Log Files¶
Check webhook logs for debugging:
# View recent webhook activity
tail -f .gira/logs/webhooks.log
# Search for specific webhook
grep "webhook-name" .gira/logs/webhooks.log
Manual Testing¶
Test webhook endpoints outside of Gira:
# Test with curl
curl -X POST https://your-webhook-url \
-H "Content-Type: application/json" \
-d '{
"event": "test",
"timestamp": "2025-08-01T12:00:00Z",
"source": "gira",
"data": {"test": true}
}'
Getting Help¶
- CLI Help:
gira webhook --help
orgira webhook <command> --help
- Filter Help:
gira webhook filter help
- Configuration:
gira config list | grep webhooks
- Community: Share webhook configurations and get help
- Issues: Report bugs with webhook logs and configuration details
๐ Next Steps¶
- Hook System: Learn about local hook integration
- Webhook Examples: See practical integration examples
- CLI Reference: Complete command documentation
Ready to integrate with your favorite services? Check out the webhook examples for step-by-step setup guides!