Example Sequence Diagram

Complete flow of the Alert to Ticket integration with MSPCentric.

sequenceDiagram
    participant V as Vendor
    participant API as MSPCentric Platform API
    participant PSA as PSA System
    participant DB as Database
    
    Note over V,DB: Alert Creation Flow
    V->>API: POST /api/oem-alerts-api/alerts
    API->>API: Validate Request & Auth
    alt Integration Alerting Disabled
        API->>DB: Store Event (correlationId)
        API-->>V: 409 Forbidden (alerting not enabled for integration)
    else Integration Alerting Enabled
        API->>API: Evaluate Suppression Rules
        API->>API: Check service-based suppression
        API->>API: Check status-based suppression
        alt Rules Allow Ticket Creation
            API-->>API: Proceed with ticket creation
                API->>API: Check Ticket Appending Toggle
                alt Appending Enabled
                    API->>DB: Check for existing tickets
                    alt Existing Ticket Found
                        API->>PSA: Update Ticket (append description)
                        PSA-->>API: Ticket Updated
                        API->>DB: Store Event (correlationId, appended)
                        API-->>V: 200 OK (existing correlationId, appended)
                    else No Existing Ticket
                        API->>PSA: Create New Ticket
                        PSA-->>API: Ticket Created (ticket_id)
                        API->>DB: Store Event (correlationId, success)
                        API-->>V: 201 Created (correlationId, ticket_id)
                    end
                else Appending Disabled
                    API->>PSA: Create New Ticket
                    PSA-->>API: Ticket Created (ticket_id)
                    API->>DB: Store Event (correlationId, success)
                    API-->>V: 201 Created (correlationId, ticket_id)
                end
        else Rules Suppress Ticket Creation
            API-->>API: Suppress ticket creation
            API->>DB: Store Event (correlationId, suppressed_by_rules)
            API-->>V: 200 OK (suppressed by rules)
        end
    end
    
    Note over V,DB: Self-Healing Flow
    V->>API: POST /api/oem-alerts-api/alerts/
    API->>API: Check integration features for alerting enabled
    alt Integration Alerting Disabled
        API->>DB: Store Event (correlationId)
        API-->>V: 409 Forbidden (alerting not enabled for integration)
    else Integration Alerting Enabled
        API->>API: Check Self-Healing Toggle (enabled?)
        alt Self-Healing Enabled
            API->>API: Validate Request & Find Ticket
            API->>DB: Lookup Ticket by correlationId
            API->>PSA: Update Ticket Status (resolved/closed)
            alt PSA Success
                PSA-->>API: Ticket Status Updated
                API->>DB: Store Event (correlationId, self_healed)
                API-->>V: 200 OK (ticket resolved)
            else Ticket Already Closed
                PSA-->>API: Ticket Already Closed
                API->>DB: Store Event (correlationId, already_closed)
                API-->>V: 409 Conflict (ticket already closed)
            else PSA Failure
                PSA-->>API: Error Response
                API->>DB: Store Event (correlationId, error)
                API-->>V: 500/502 Error (error message)
            end
        else Self-Healing Disabled
            API->>DB: Store Event (correlationId, self_healing_disabled)
            API-->>V: 200 OK (self-healing disabled)
        end
    end
    
    Note over V,DB: Status Query Flow
    V->>API: GET /api/oem-alerts-api/alerts/{correlationId}
    API->>DB: Lookup Event History
    API-->>V: 200 OK (status, history, ticket_id)