wulf-pulse/app/api/webhooks/autotask/route.ts

100 lines
3.5 KiB
TypeScript
Raw Normal View History

feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
/**
* Autotask Webhook Receiver Endpoint
* Receives and processes real-time webhook events from Autotask
*
* Actual Autotask payload format:
* { Action, Guid, EntityType (singular), Id, Fields, EventTime, SequenceNumber, PersonId }
* Signature header: x-hook-signature: sha1=<base64>
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
*/
import { NextRequest, NextResponse } from 'next/server';
import { webhookService } from '@/lib/services/webhook-service';
import { AutotaskRawWebhookPayload, normalizeWebhookPayload } from '@/lib/types/webhook';
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
/**
* POST /api/webhooks/autotask
* Receives webhook events from Autotask
*/
export async function POST(request: NextRequest) {
try {
// Extract source IP — Autotask sends from 8.34.161.x via Cloudflare/Pangolin
const sourceIp = request.headers.get('cf-connecting-ip')
|| request.headers.get('x-forwarded-for')?.split(',')[0].trim()
|| request.headers.get('x-real-ip')
feat: add IP address logging to webhooks for whitelisting Implements comprehensive IP logging for webhook requests to enable IP whitelisting and security monitoring. Features: - Capture source IP from webhook requests (x-forwarded-for, x-real-ip) - Capture user agent for identification - Store in webhook_logs table - New API endpoint: GET /api/webhooks/ips - View unique IPs with request counts and statistics - Identify Autotask IPs for whitelisting Database Changes: - Added source_ip column (VARCHAR 45) to webhook_logs - Added user_agent column (TEXT) to webhook_logs - Added index on source_ip for efficient queries - Migration 005 for existing installations API Endpoints: - GET /api/webhooks/ips?hours=168&entityType=Tickets Returns unique IPs with: * Request counts (total, successful, failed) * First/last seen timestamps * Entity types accessed * User agent strings Use Cases: 1. Identify Autotask webhook IPs 2. Configure IP whitelist in nginx/Pangolin/Cloudflare 3. Monitor for unauthorized webhook attempts 4. Audit webhook sources 5. Detect IP changes from Autotask Security Benefits: - Enable IP whitelisting for webhook endpoint - Block unauthorized webhook attempts - Monitor for suspicious activity - Audit trail of webhook sources Documentation: - Complete IP whitelisting guide (WEBHOOK_IP_WHITELISTING.md) - Configuration examples for nginx, Pangolin, Cloudflare - Monitoring queries and best practices - Troubleshooting guide Files Modified: - migrations/004_webhook_support.sql - Added IP columns - migrations/005_add_webhook_ip_logging.sql - Migration for existing installs - lib/types/webhook.ts - Added IP fields to WebhookLog - lib/services/webhook-service.ts - Capture and log IPs - app/api/webhooks/autotask/route.ts - Extract IP from headers - app/api/webhooks/ips/route.ts - New IP viewing endpoint - docs/WEBHOOK_IP_WHITELISTING.md - Complete guide Next Steps: 1. Run migration (004 for new, 005 for existing) 2. Deploy updated code 3. Receive webhooks from Autotask 4. View IPs via /api/webhooks/ips 5. Configure IP whitelist in proxy/tunnel
2026-01-24 17:28:56 -05:00
|| 'unknown';
const userAgent = request.headers.get('user-agent') || 'unknown';
// Read raw body for signature verification
const rawBody = await request.text();
// Verify webhook signature (x-hook-signature: sha1=<base64>)
const signatureHeader = request.headers.get('x-hook-signature');
if (!webhookService.verifySignature(rawBody, signatureHeader)) {
console.warn(`[WEBHOOK API] Invalid signature from IP: ${sourceIp}`);
return NextResponse.json(
{ error: 'Invalid webhook signature' },
{ status: 401 }
);
}
// Parse raw Autotask payload
const rawPayload: AutotaskRawWebhookPayload = JSON.parse(rawBody);
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
// Validate required fields
if (!rawPayload.Guid || !rawPayload.Action || !rawPayload.EntityType || !rawPayload.Id) {
console.warn(`[WEBHOOK API] Invalid payload from IP: ${sourceIp}`, rawBody.substring(0, 200));
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
return NextResponse.json(
{ error: 'Invalid webhook payload: missing required fields (Guid, Action, EntityType, Id)' },
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
{ status: 400 }
);
}
// Normalize to our internal format
const payload = normalizeWebhookPayload(rawPayload);
console.log(`[WEBHOOK API] Received ${rawPayload.Action} event for ${rawPayload.EntityType} #${rawPayload.Id} from IP: ${sourceIp}`);
// Process the webhook — return 200 quickly to avoid Autotask timeouts
feat: add IP address logging to webhooks for whitelisting Implements comprehensive IP logging for webhook requests to enable IP whitelisting and security monitoring. Features: - Capture source IP from webhook requests (x-forwarded-for, x-real-ip) - Capture user agent for identification - Store in webhook_logs table - New API endpoint: GET /api/webhooks/ips - View unique IPs with request counts and statistics - Identify Autotask IPs for whitelisting Database Changes: - Added source_ip column (VARCHAR 45) to webhook_logs - Added user_agent column (TEXT) to webhook_logs - Added index on source_ip for efficient queries - Migration 005 for existing installations API Endpoints: - GET /api/webhooks/ips?hours=168&entityType=Tickets Returns unique IPs with: * Request counts (total, successful, failed) * First/last seen timestamps * Entity types accessed * User agent strings Use Cases: 1. Identify Autotask webhook IPs 2. Configure IP whitelist in nginx/Pangolin/Cloudflare 3. Monitor for unauthorized webhook attempts 4. Audit webhook sources 5. Detect IP changes from Autotask Security Benefits: - Enable IP whitelisting for webhook endpoint - Block unauthorized webhook attempts - Monitor for suspicious activity - Audit trail of webhook sources Documentation: - Complete IP whitelisting guide (WEBHOOK_IP_WHITELISTING.md) - Configuration examples for nginx, Pangolin, Cloudflare - Monitoring queries and best practices - Troubleshooting guide Files Modified: - migrations/004_webhook_support.sql - Added IP columns - migrations/005_add_webhook_ip_logging.sql - Migration for existing installs - lib/types/webhook.ts - Added IP fields to WebhookLog - lib/services/webhook-service.ts - Capture and log IPs - app/api/webhooks/autotask/route.ts - Extract IP from headers - app/api/webhooks/ips/route.ts - New IP viewing endpoint - docs/WEBHOOK_IP_WHITELISTING.md - Complete guide Next Steps: 1. Run migration (004 for new, 005 for existing) 2. Deploy updated code 3. Receive webhooks from Autotask 4. View IPs via /api/webhooks/ips 5. Configure IP whitelist in proxy/tunnel
2026-01-24 17:28:56 -05:00
const result = await webhookService.processWebhook(payload, sourceIp, userAgent);
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
if (result.success) {
return NextResponse.json({
success: true,
eventId: result.eventId,
action: result.action,
processingTime: result.processingTime,
});
} else {
// Return 200 even on processing failure to prevent Autotask retries/deactivation
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
console.error(`[WEBHOOK API] Processing failed: ${result.error}`);
return NextResponse.json({
success: false,
eventId: result.eventId,
error: result.error,
});
}
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
console.error('[WEBHOOK API] Error processing webhook:', errorMessage);
// Return 200 to prevent Autotask from deactivating the webhook on errors
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
return NextResponse.json(
{ error: 'Internal server error', details: errorMessage },
{ status: 200 }
feat: add webhook support for real-time Autotask updates Implements comprehensive webhook infrastructure to receive and process real-time entity updates from Autotask, reducing API calls and improving data freshness. Features: - Webhook receiver endpoint: POST /api/webhooks/autotask - Automatic entity mapping and upsert to PostgreSQL - Event logging and tracking in webhook_logs table - Duplicate event prevention via unique event_id - Failed event tracking with error messages - Statistics and monitoring APIs - Support for 8 entity types: Companies, Tickets, Tasks, Projects, Time Entries, Contacts, Contracts, Configuration Items Architecture: - WebhookService: Core processing logic - Database tables: webhook_logs, webhook_configs - API endpoints: /autotask (receiver), /logs, /stats - Automatic data mapping using existing entity-mapper Benefits: - Near real-time updates (<1 minute vs 24 hours) - Reduced API usage (webhooks vs polling) - Complements daily incremental sync for redundancy - Automatic recovery from webhook failures Files Added: - lib/types/webhook.ts - TypeScript types and interfaces - lib/services/webhook-service.ts - Webhook processing service - app/api/webhooks/autotask/route.ts - Webhook receiver - app/api/webhooks/logs/route.ts - Logs API - app/api/webhooks/stats/route.ts - Statistics API - migrations/004_webhook_support.sql - Database schema - docs/WEBHOOK_SETUP.md - Complete setup guide (47 sections) - docs/WEBHOOKS_README.md - Quick start guide Next Steps: 1. Run database migration 2. Configure webhooks in Autotask 3. Test endpoint and monitor logs See docs/WEBHOOK_SETUP.md for detailed setup instructions.
2026-01-24 10:07:20 -05:00
);
}
}
/**
* GET /api/webhooks/autotask
* Health check endpoint for webhook receiver
*/
export async function GET() {
return NextResponse.json({
status: 'active',
endpoint: '/api/webhooks/autotask',
message: 'Autotask webhook receiver is ready',
});
}