export interface Role { roleId: number; roleName: string; description: string; } export interface UserOrganization { uuid: string; // ADR-019: Public identifier organizationCode: string; // Matches backend Organization entity organizationName: string; // Matches backend Organization entity } export interface User { uuid: string; userId?: number; // Excluded from API responses (ADR-019) username: string; email: string; firstName: string; lastName: string; isActive: boolean; lineId?: string; organization?: UserOrganization; // ADR-019: use organization.uuid — never expose INT id roles?: Role[]; // Security fields (from backend v1.5.1) failedAttempts: number; lockedUntil?: string; lastLoginAt?: string; // Audit columns createdAt?: string; updatedAt?: string; } export interface CreateUserDto { username: string; email: string; firstName: string; lastName: string; password?: string; isActive: boolean; lineId?: string; primaryOrganizationId?: string; // ADR-019: UUID string only roleIds: number[]; } export type UpdateUserDto = Partial; export interface SearchUserDto { page?: number; limit?: number; search?: string; roleId?: number; primaryOrganizationId?: string; // ADR-019: UUID string only }