2026-04-18 02:00:09 +00:00
|
|
|
/**
|
|
|
|
|
* Generated by orval v8.5.3 🍺
|
|
|
|
|
* Do not edit manually.
|
|
|
|
|
* Api
|
2026-04-20 09:20:50 +00:00
|
|
|
* TeaBoy OS API specification
|
2026-04-18 02:00:09 +00:00
|
|
|
* OpenAPI spec version: 0.1.0
|
|
|
|
|
*/
|
|
|
|
|
export interface HealthStatus {
|
|
|
|
|
status: string;
|
|
|
|
|
}
|
2026-04-20 09:20:50 +00:00
|
|
|
|
|
|
|
|
export interface ErrorResponse {
|
|
|
|
|
error: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SuccessResponse {
|
|
|
|
|
success: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface RegisterBody {
|
|
|
|
|
username: string;
|
|
|
|
|
email: string;
|
|
|
|
|
password: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameEn?: string | null;
|
|
|
|
|
preferredLanguage?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface LoginBody {
|
|
|
|
|
username: string;
|
|
|
|
|
password: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UpdateLanguageBody {
|
|
|
|
|
language: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface AuthUser {
|
|
|
|
|
id: number;
|
|
|
|
|
username: string;
|
|
|
|
|
email: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameEn?: string | null;
|
|
|
|
|
preferredLanguage: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
avatarUrl?: string | null;
|
|
|
|
|
isActive: boolean;
|
|
|
|
|
roles: string[];
|
|
|
|
|
createdAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UserProfile {
|
|
|
|
|
id: number;
|
|
|
|
|
username: string;
|
|
|
|
|
email: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameEn?: string | null;
|
|
|
|
|
preferredLanguage: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
avatarUrl?: string | null;
|
|
|
|
|
isActive: boolean;
|
|
|
|
|
roles: string[];
|
|
|
|
|
createdAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UpdateUserBody {
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameEn?: string | null;
|
|
|
|
|
isActive?: boolean;
|
|
|
|
|
preferredLanguage?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface App {
|
|
|
|
|
id: number;
|
|
|
|
|
slug: string;
|
|
|
|
|
nameAr: string;
|
|
|
|
|
nameEn: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionEn?: string | null;
|
|
|
|
|
iconName: string;
|
|
|
|
|
route: string;
|
|
|
|
|
color: string;
|
|
|
|
|
isActive: boolean;
|
|
|
|
|
isSystem: boolean;
|
|
|
|
|
sortOrder: number;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
updatedAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CreateAppBody {
|
|
|
|
|
slug: string;
|
|
|
|
|
nameAr: string;
|
|
|
|
|
nameEn: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionEn?: string | null;
|
|
|
|
|
iconName: string;
|
|
|
|
|
route: string;
|
|
|
|
|
color: string;
|
|
|
|
|
isActive?: boolean;
|
|
|
|
|
isSystem?: boolean;
|
|
|
|
|
sortOrder?: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UpdateAppBody {
|
|
|
|
|
nameAr?: string;
|
|
|
|
|
nameEn?: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionEn?: string | null;
|
|
|
|
|
iconName?: string;
|
|
|
|
|
route?: string;
|
|
|
|
|
color?: string;
|
|
|
|
|
isActive?: boolean;
|
|
|
|
|
sortOrder?: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface Service {
|
|
|
|
|
id: number;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
categoryId?: number | null;
|
|
|
|
|
nameAr: string;
|
|
|
|
|
nameEn: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionEn?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
imageUrl?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
price?: string | null;
|
|
|
|
|
isAvailable: boolean;
|
|
|
|
|
sortOrder: number;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
updatedAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CreateServiceBody {
|
|
|
|
|
/** @nullable */
|
|
|
|
|
categoryId?: number | null;
|
|
|
|
|
nameAr: string;
|
|
|
|
|
nameEn: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionEn?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
imageUrl?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
price?: string | null;
|
|
|
|
|
isAvailable?: boolean;
|
|
|
|
|
sortOrder?: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UpdateServiceBody {
|
|
|
|
|
/** @nullable */
|
|
|
|
|
categoryId?: number | null;
|
|
|
|
|
nameAr?: string;
|
|
|
|
|
nameEn?: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
descriptionEn?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
imageUrl?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
price?: string | null;
|
|
|
|
|
isAvailable?: boolean;
|
|
|
|
|
sortOrder?: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ServiceCategory {
|
|
|
|
|
id: number;
|
|
|
|
|
nameAr: string;
|
|
|
|
|
nameEn: string;
|
|
|
|
|
sortOrder: number;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ParticipantInfo {
|
|
|
|
|
id: number;
|
|
|
|
|
username: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
displayNameEn?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
avatarUrl?: string | null;
|
|
|
|
|
isAdmin: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface MessageWithSender {
|
|
|
|
|
id: number;
|
|
|
|
|
conversationId: number;
|
|
|
|
|
senderId: number;
|
|
|
|
|
content: string;
|
|
|
|
|
sender: ParticipantInfo;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
updatedAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ConversationWithDetails {
|
|
|
|
|
id: number;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
nameAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
nameEn?: string | null;
|
|
|
|
|
isGroup: boolean;
|
|
|
|
|
createdBy: number;
|
|
|
|
|
participants: ParticipantInfo[];
|
|
|
|
|
lastMessage?: MessageWithSender | null;
|
|
|
|
|
unreadCount: number;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
updatedAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CreateConversationBody {
|
|
|
|
|
participantIds: number[];
|
|
|
|
|
/** @nullable */
|
|
|
|
|
nameAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
nameEn?: string | null;
|
|
|
|
|
isGroup?: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SendMessageBody {
|
|
|
|
|
content: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface Notification {
|
|
|
|
|
id: number;
|
|
|
|
|
userId: number;
|
|
|
|
|
titleAr: string;
|
|
|
|
|
titleEn: string;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
bodyAr?: string | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
bodyEn?: string | null;
|
|
|
|
|
type: string;
|
|
|
|
|
isRead: boolean;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
relatedId?: number | null;
|
|
|
|
|
/** @nullable */
|
|
|
|
|
relatedType?: string | null;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface HomeStats {
|
|
|
|
|
totalApps: number;
|
|
|
|
|
totalServices: number;
|
|
|
|
|
unreadNotifications: number;
|
|
|
|
|
unreadMessages: number;
|
|
|
|
|
totalUsers: number;
|
|
|
|
|
}
|