Automated Action 2adbcd0535 Complete multi-tenant SaaS platform with external integrations
- Implemented comprehensive multi-tenant data isolation using database-level security
- Built JWT authentication system with role-based access control (Super Admin, Org Admin, User, Viewer)
- Created RESTful API endpoints for user and organization operations
- Added complete audit logging for all data modifications with IP tracking
- Implemented API rate limiting and input validation with security middleware
- Built webhook processing engine with async event handling and retry logic
- Created external API call handlers with circuit breaker pattern and error handling
- Implemented data synchronization between external services and internal data
- Added integration health monitoring and status tracking
- Created three mock external services (User Management, Payment, Communication)
- Implemented idempotency for webhook processing to handle duplicates gracefully
- Added comprehensive security headers and XSS/CSRF protection
- Set up Alembic database migrations with proper SQLite configuration
- Included extensive documentation and API examples

Architecture features:
- Multi-tenant isolation at database level
- Circuit breaker pattern for external API resilience
- Async background task processing
- Complete audit trail with user context
- Role-based permission system
- Webhook signature verification
- Request validation and sanitization
- Health monitoring endpoints

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-27 21:14:30 +00:00

54 lines
1.2 KiB
Python

from pydantic import BaseModel
from typing import Dict, Any, Optional
from datetime import datetime
from app.models.integration import WebhookStatus, IntegrationType
class WebhookEventCreate(BaseModel):
external_id: str
event_type: str
payload: Dict[str, Any]
integration_type: IntegrationType
organization_id: int
class WebhookEventResponse(BaseModel):
id: int
organization_id: int
integration_id: int
external_id: str
event_type: str
payload: Dict[str, Any]
status: WebhookStatus
retry_count: int
max_retries: int
error_message: Optional[str] = None
processed_at: Optional[datetime] = None
created_at: datetime
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
class WebhookPayloadBase(BaseModel):
"""Base webhook payload structure"""
event_id: str
event_type: str
timestamp: datetime
data: Dict[str, Any]
class UserWebhookPayload(WebhookPayloadBase):
"""User management service webhook payload"""
pass
class PaymentWebhookPayload(WebhookPayloadBase):
"""Payment service webhook payload"""
pass
class CommunicationWebhookPayload(WebhookPayloadBase):
"""Communication service webhook payload"""
pass