IAM Platform — Entity Relationship Diagram

Renders on GitHub/Jira via Mermaid.

erDiagram
    organizations ||--o{ offices : has
    offices ||--o{ offices : "parent_of"

    organizations ||--o{ user_organizations : "members"
    users ||--o{ user_organizations : "memberships"

    users ||--o{ user_roles : "assignments"
    roles ||--o{ user_roles : "assignments"
    organizations ||--o{ user_roles : "scoped to"

    roles ||--o{ role_permissions : grants
    permissions ||--o{ role_permissions : "granted by"

    users ||--o{ user_scopes : "data scope"
    organizations ||--o{ user_scopes : "within"

    users ||--o{ refresh_tokens : owns
    users ||--o{ password_reset_tokens : owns

    organizations ||--o{ audit_logs : context
    users ||--o{ audit_logs : actor

    organizations {
        bigint id PK
        uuid uuid
        varchar name
        varchar code UK
        varchar status
        timestamp created_at
        timestamp updated_at
        timestamp deleted_at
    }
    offices {
        bigint id PK
        bigint organization_id FK
        bigint parent_id FK
        varchar name
        varchar code
    }
    users {
        bigint id PK
        uuid uuid
        varchar username UK
        varchar email UK
        varchar mobile
        text password_hash
        varchar first_name
        varchar middle_name
        varchar last_name
        varchar status
        timestamp last_login_at
        integer failed_login_attempts
        timestamp created_at
        timestamp deleted_at
    }
    roles {
        bigint id PK
        uuid uuid
        varchar name
        varchar code UK
        text description
        varchar status
        boolean is_system
    }
    permissions {
        bigint id PK
        uuid uuid
        varchar module
        varchar code UK
        text description
    }
    applications {
        bigint id PK
        uuid uuid
        varchar name
        varchar code UK
        text description
        varchar status
    }
    user_organizations {
        bigint id PK
        bigint user_id FK
        bigint organization_id FK
    }
    user_roles {
        bigint id PK
        bigint user_id FK
        bigint role_id FK
        bigint organization_id FK
        bigint assigned_by FK
        timestamp assigned_at
    }
    role_permissions {
        bigint id PK
        bigint role_id FK
        bigint permission_id FK
    }
    user_scopes {
        bigint id PK
        bigint user_id FK
        bigint organization_id FK
        bigint office_id FK
    }
    refresh_tokens {
        bigint id PK
        bigint user_id FK
        text token UK
        timestamp expires_at
        timestamp revoked_at
    }
    password_reset_tokens {
        bigint id PK
        bigint user_id FK
        text token UK
        timestamp expires_at
        timestamp used_at
    }
    audit_logs {
        bigint id PK
        bigint organization_id FK
        bigint user_id FK
        varchar action
        varchar resource_type
        varchar resource_id
        varchar ip_address
        text user_agent
        jsonb details_json
        timestamp created_at
    }

Back to documentation index