> ## Documentation Index
> Fetch the complete documentation index at: https://docs.staging.supersync.com.au/llms.txt
> Use this file to discover all available pages before exploring further.

# Call Flows

> Client <-> Api

```mermaid
sequenceDiagram                                                                                                            
    participant Client as Client (React)                                                                                   
    participant ProtectedRoute as Protected Route                                                                          
    participant UnprotectedRoute as Unprotected Route                                                                      
    participant AuthMiddleware as Auth Middleware                                                                          
    participant TRPCRouter as tRPC Router                                                                                    
    participant Service as Service Layer                                                                                     
    participant Prisma as Prisma/DB                                                                                          
                                                                                                                           
    %% Authentication Flow                                                                                                 
    Client->>UnprotectedRoute: Access auth form (/auth/form)                                                               
    UnprotectedRoute->>Client: Render Authentication component                                                             
    Client->>AuthMiddleware: Submit credentials                                                                            
    AuthMiddleware->>PasswordlessService: signUp/signIn                                                                    
    PasswordlessService->>SessionService: create session                                                                   
    SessionService-->>Client: Return auth token                                                                            
                                                                                                                           
    %% Protected Route Access                                                                                              
    Client->>ProtectedRoute: Request protected route                                                                       
    ProtectedRoute->>AuthMiddleware: Check session                                                                         
    AuthMiddleware->>SessionService: validate session                                                                      
    SessionService-->>ProtectedRoute: Session valid                                                                        
    ProtectedRoute->>TRPCRouter: Route request                                                                             
                                                                                                                           
    %% CRUD Operations Examples                                                                                            
    %% Practice Clients                                                                                                    
    Client->>ProtectedRoute: /practice-clients                                                                             
    ProtectedRoute->>TRPCRouter: practiceClientRouter                                                                      
    TRPCRouter->>Service: create/read/update                                                                               
    Service->>Prisma: DB operation                                                                                         
    Prisma-->>Service: Return data                                                                                         
    Service-->>TRPCRouter: Return result                                                                                   
    TRPCRouter-->>Client: Return data                                                                                      
                                                                                                                           
    %% Consultations                                                                                                       
    Client->>ProtectedRoute: /encounters                                                                                   
    ProtectedRoute->>TRPCRouter: consultationRouter                                                                        
    TRPCRouter->>Service: create/read/delete                                                                               
    Service->>Prisma: DB operation                                                                                         
    Prisma-->>Service: Return data                                                                                         
    Service-->>TRPCRouter: Return result                                                                                   
    TRPCRouter-->>Client: Return data                                                                                      
                                                                                                                           
    %% Tenant Owner Invitations                                                                                            
    Client->>ProtectedRoute: /tenant-owner-user-invitations                                                                
    ProtectedRoute->>TRPCRouter: tenantOwnerUserInvitationRouter                                                           
    TRPCRouter->>Service: create/read/delete                                                                               
    Service->>Prisma: DB operation                                                                                         
    Prisma-->>Service: Return data                                                                                         
    Service-->>TRPCRouter: Return result                                                                                   
    TRPCRouter-->>Client: Return data                                                                                      
                                                                                                                           
    %% Permission Flow                                                                                                     
    loop Permission Check                                                                                                  
        ProtectedRoute->>UserRoleService: Check permissions                                                                
        UserRoleService->>SessionService: get claims                                                                       
        SessionService-->>UserRoleService: return permissions                                                              
        UserRoleService-->>ProtectedRoute: has permission?                                                                 
    end                                                                                                                                                                                                                        
```
