raqim / lib /api-zod /src /generated /api.ts
RAQIM Deploy
Deploy RAQIM 2026-05-02 23:08
3e9069b
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Api
* RAQIM — Document to Markdown conversion platform API
* OpenAPI spec version: 0.1.0
*/
import * as zod from "zod";
/**
* @summary Health check
*/
export const HealthCheckResponse = zod.object({
status: zod.string(),
});
/**
* @summary Submit a join request (creates pending account)
*/
export const RegisterUserBody = zod.object({
email: zod.string().email(),
password: zod.string(),
displayName: zod.string().optional(),
});
/**
* @summary Login with email and password
*/
export const LoginUserBody = zod.object({
email: zod.string().email(),
password: zod.string(),
});
export const LoginUserResponse = zod.object({
accessToken: zod.string(),
user: zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
role: zod.enum(["user", "admin"]),
status: zod.enum(["pending", "active", "suspended"]),
createdAt: zod.coerce.date(),
}),
});
/**
* @summary Logout and invalidate refresh token
*/
export const LogoutUserResponse = zod.object({
message: zod.string(),
});
/**
* @summary Refresh access token
*/
export const RefreshTokenResponse = zod.object({
accessToken: zod.string(),
user: zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
role: zod.enum(["user", "admin"]),
status: zod.enum(["pending", "active", "suspended"]),
createdAt: zod.coerce.date(),
}),
});
/**
* @summary Get current authenticated user
*/
export const GetCurrentUserResponse = zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
role: zod.enum(["user", "admin"]),
status: zod.enum(["pending", "active", "suspended"]),
createdAt: zod.coerce.date(),
});
/**
* @summary Request password reset email
*/
export const ForgotPasswordBody = zod.object({
email: zod.string().email(),
});
export const ForgotPasswordResponse = zod.object({
message: zod.string(),
});
/**
* @summary Reset password using token
*/
export const ResetPasswordBody = zod.object({
token: zod.string(),
password: zod.string(),
});
export const ResetPasswordResponse = zod.object({
message: zod.string(),
});
/**
* @summary List folders for current user
*/
export const ListFoldersQueryParams = zod.object({
parentId: zod.coerce
.string()
.optional()
.describe("Parent folder ID (null for root)"),
});
export const ListFoldersResponseItem = zod.object({
id: zod.string(),
name: zod.string(),
parentId: zod.string().nullish(),
ownerId: zod.string(),
fileCount: zod.number(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
});
export const ListFoldersResponse = zod.array(ListFoldersResponseItem);
/**
* @summary Create a new folder
*/
export const CreateFolderBody = zod.object({
name: zod.string(),
parentId: zod.string().nullish(),
});
/**
* @summary Rename or move a folder
*/
export const UpdateFolderParams = zod.object({
id: zod.coerce.string(),
});
export const UpdateFolderBody = zod.object({
name: zod.string().optional(),
parentId: zod.string().nullish(),
});
export const UpdateFolderResponse = zod.object({
id: zod.string(),
name: zod.string(),
parentId: zod.string().nullish(),
ownerId: zod.string(),
fileCount: zod.number(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
});
/**
* @summary Move folder to trash
*/
export const DeleteFolderParams = zod.object({
id: zod.coerce.string(),
});
export const DeleteFolderResponse = zod.object({
message: zod.string(),
});
/**
* @summary List files for current user
*/
export const ListFilesQueryParams = zod.object({
folderId: zod.coerce
.string()
.optional()
.describe("Folder ID (null for root)"),
search: zod.coerce.string().optional().describe("Search by name"),
trashed: zod.coerce.boolean().optional().describe("Show trashed files"),
shared: zod.coerce.boolean().optional().describe("Show files shared with me"),
});
export const ListFilesResponseItem = zod.object({
id: zod.string(),
name: zod.string(),
folderId: zod.string().nullish(),
ownerId: zod.string(),
originalName: zod.string(),
originalType: zod.string(),
sizeBytes: zod.number(),
status: zod.enum([
"uploading",
"queued",
"processing",
"done",
"failed",
"trashed",
]),
qualityScore: zod.number().nullish(),
wordCount: zod.number().nullish(),
language: zod.string().nullish(),
isShared: zod.boolean(),
sharedWith: zod
.array(
zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
}),
)
.optional(),
permission: zod.enum(["owner", "read", "edit", "full"]).nullish(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
});
export const ListFilesResponse = zod.array(ListFilesResponseItem);
/**
* @summary Get file metadata
*/
export const GetFileParams = zod.object({
id: zod.coerce.string(),
});
export const GetFileResponse = zod.object({
id: zod.string(),
name: zod.string(),
folderId: zod.string().nullish(),
ownerId: zod.string(),
originalName: zod.string(),
originalType: zod.string(),
sizeBytes: zod.number(),
status: zod.enum([
"uploading",
"queued",
"processing",
"done",
"failed",
"trashed",
]),
qualityScore: zod.number().nullish(),
wordCount: zod.number().nullish(),
language: zod.string().nullish(),
isShared: zod.boolean(),
sharedWith: zod
.array(
zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
}),
)
.optional(),
permission: zod.enum(["owner", "read", "edit", "full"]).nullish(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
});
/**
* @summary Rename or move a file
*/
export const UpdateFileParams = zod.object({
id: zod.coerce.string(),
});
export const UpdateFileBody = zod.object({
name: zod.string().optional(),
folderId: zod.string().nullish(),
});
export const UpdateFileResponse = zod.object({
id: zod.string(),
name: zod.string(),
folderId: zod.string().nullish(),
ownerId: zod.string(),
originalName: zod.string(),
originalType: zod.string(),
sizeBytes: zod.number(),
status: zod.enum([
"uploading",
"queued",
"processing",
"done",
"failed",
"trashed",
]),
qualityScore: zod.number().nullish(),
wordCount: zod.number().nullish(),
language: zod.string().nullish(),
isShared: zod.boolean(),
sharedWith: zod
.array(
zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
}),
)
.optional(),
permission: zod.enum(["owner", "read", "edit", "full"]).nullish(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
});
/**
* @summary Move file to trash
*/
export const DeleteFileParams = zod.object({
id: zod.coerce.string(),
});
export const DeleteFileResponse = zod.object({
message: zod.string(),
});
/**
* @summary Get file markdown content
*/
export const GetFileContentParams = zod.object({
id: zod.coerce.string(),
});
export const GetFileContentResponse = zod.object({
id: zod.string(),
markdownContent: zod.string(),
originalMarkdown: zod.string(),
updatedAt: zod.coerce.date(),
});
/**
* @summary Update file markdown content (auto-save)
*/
export const UpdateFileContentParams = zod.object({
id: zod.coerce.string(),
});
export const UpdateFileContentBody = zod.object({
markdownContent: zod.string(),
});
export const UpdateFileContentResponse = zod.object({
message: zod.string(),
});
/**
* @summary Restore file from trash
*/
export const RestoreFileParams = zod.object({
id: zod.coerce.string(),
});
export const RestoreFileResponse = zod.object({
message: zod.string(),
});
/**
* @summary Export file as DOCX or PDF
*/
export const ExportFileParams = zod.object({
id: zod.coerce.string(),
});
export const ExportFileBody = zod.object({
format: zod.enum(["md", "docx", "pdf", "print"]),
fileName: zod.string().optional(),
});
export const ExportFileResponse = zod.object({
downloadUrl: zod.string(),
fileName: zod.string(),
format: zod.string(),
});
/**
* @summary Start document conversion job
*/
export const StartConversionBody = zod.object({
fileId: zod.string(),
pageStart: zod.number().nullish(),
pageEnd: zod.number().nullish(),
});
/**
* @summary Get conversion job status and progress
*/
export const GetConversionStatusParams = zod.object({
jobId: zod.coerce.string(),
});
export const GetConversionStatusResponse = zod.object({
jobId: zod.string(),
fileId: zod.string(),
status: zod.enum([
"queued",
"analyzing",
"routing",
"ocr",
"layout",
"scoring",
"merging",
"cleanup",
"done",
"failed",
]),
progress: zod.number().describe("0-100"),
steps: zod.array(
zod.object({
name: zod.string(),
status: zod.enum(["pending", "running", "done", "failed"]),
label: zod.string(),
}),
),
queuePosition: zod.number().nullish(),
elapsedSeconds: zod.number().nullish(),
estimatedSeconds: zod.number().nullish(),
errorMessage: zod.string().nullish(),
createdAt: zod.coerce.date(),
});
/**
* @summary List shares for current user (owned + shared with me)
*/
export const ListSharesResponseItem = zod.object({
id: zod.string(),
fileId: zod.string().nullish(),
folderId: zod.string().nullish(),
ownerId: zod.string(),
sharedWithId: zod.string(),
permission: zod.enum(["read", "edit", "full"]),
fileName: zod.string().nullish(),
folderName: zod.string().nullish(),
ownerEmail: zod.string(),
sharedWithEmail: zod.string(),
createdAt: zod.coerce.date(),
});
export const ListSharesResponse = zod.array(ListSharesResponseItem);
/**
* @summary Share a file or folder with a user
*/
export const CreateShareBody = zod.object({
fileId: zod.string().nullish(),
folderId: zod.string().nullish(),
sharedWithId: zod.string(),
permission: zod.enum(["read", "edit", "full"]),
});
/**
* @summary Update share permission
*/
export const UpdateShareParams = zod.object({
id: zod.coerce.string(),
});
export const UpdateShareBody = zod.object({
permission: zod.enum(["read", "edit", "full"]),
});
export const UpdateShareResponse = zod.object({
id: zod.string(),
fileId: zod.string().nullish(),
folderId: zod.string().nullish(),
ownerId: zod.string(),
sharedWithId: zod.string(),
permission: zod.enum(["read", "edit", "full"]),
fileName: zod.string().nullish(),
folderName: zod.string().nullish(),
ownerEmail: zod.string(),
sharedWithEmail: zod.string(),
createdAt: zod.coerce.date(),
});
/**
* @summary Remove a share
*/
export const DeleteShareParams = zod.object({
id: zod.coerce.string(),
});
export const DeleteShareResponse = zod.object({
message: zod.string(),
});
/**
* @summary Search users by email or username for sharing
*/
export const SearchUsersForSharingQueryParams = zod.object({
q: zod.coerce.string(),
});
export const SearchUsersForSharingResponseItem = zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
});
export const SearchUsersForSharingResponse = zod.array(
SearchUsersForSharingResponseItem,
);
/**
* @summary List all users
*/
export const AdminListUsersQueryParams = zod.object({
status: zod.enum(["active", "suspended", "pending"]).optional(),
role: zod.enum(["user", "admin"]).optional(),
search: zod.coerce.string().optional(),
});
export const AdminListUsersResponseItem = zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().nullish(),
role: zod.enum(["user", "admin"]),
status: zod.enum(["pending", "active", "suspended"]),
fileCount: zod.number(),
lastLoginAt: zod.coerce.date().nullish(),
createdAt: zod.coerce.date(),
});
export const AdminListUsersResponse = zod.array(AdminListUsersResponseItem);
/**
* @summary Admin creates user directly (active status)
*/
export const AdminCreateUserBody = zod.object({
email: zod.string().email(),
password: zod.string(),
displayName: zod.string().optional(),
role: zod.enum(["user", "admin"]).optional(),
});
/**
* @summary Update user role or status
*/
export const AdminUpdateUserParams = zod.object({
id: zod.coerce.string(),
});
export const AdminUpdateUserBody = zod.object({
role: zod.enum(["user", "admin"]).optional(),
status: zod.enum(["active", "suspended"]).optional(),
});
export const AdminUpdateUserResponse = zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().nullish(),
role: zod.enum(["user", "admin"]),
status: zod.enum(["pending", "active", "suspended"]),
fileCount: zod.number(),
lastLoginAt: zod.coerce.date().nullish(),
createdAt: zod.coerce.date(),
});
/**
* @summary Permanently delete a user
*/
export const AdminDeleteUserParams = zod.object({
id: zod.coerce.string(),
});
export const AdminDeleteUserResponse = zod.object({
message: zod.string(),
});
/**
* @summary List pending join requests
*/
export const ListJoinRequestsResponseItem = zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().nullish(),
requestedAt: zod.coerce.date(),
});
export const ListJoinRequestsResponse = zod.array(ListJoinRequestsResponseItem);
/**
* @summary Approve or reject a join request
*/
export const ProcessJoinRequestParams = zod.object({
id: zod.coerce.string(),
});
export const ProcessJoinRequestBody = zod.object({
action: zod.enum(["approve", "reject"]),
reason: zod.string().nullish(),
});
export const ProcessJoinRequestResponse = zod.object({
message: zod.string(),
});
/**
* @summary Get platform statistics
*/
export const GetAdminStatsResponse = zod.object({
totalUsers: zod.number(),
activeUsers: zod.number(),
pendingRequests: zod.number(),
totalFiles: zod.number(),
filesConvertedToday: zod.number(),
filesConvertedThisWeek: zod.number(),
successRate: zod.number(),
averageQualityScore: zod.number(),
averageProcessingSeconds: zod.number(),
topFileType: zod.string().optional(),
conversionsByType: zod.record(zod.string(), zod.number()).optional(),
});
/**
* @summary List trashed files and folders for current user
*/
export const ListUserTrashResponse = zod.object({
files: zod.array(
zod.object({
id: zod.string(),
name: zod.string(),
folderId: zod.string().nullish(),
ownerId: zod.string(),
originalName: zod.string(),
originalType: zod.string(),
sizeBytes: zod.number(),
status: zod.enum([
"uploading",
"queued",
"processing",
"done",
"failed",
"trashed",
]),
qualityScore: zod.number().nullish(),
wordCount: zod.number().nullish(),
language: zod.string().nullish(),
isShared: zod.boolean(),
sharedWith: zod
.array(
zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
}),
)
.optional(),
permission: zod.enum(["owner", "read", "edit", "full"]).nullish(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
}),
),
folders: zod.array(
zod.object({
id: zod.string(),
name: zod.string(),
parentId: zod.string().nullish(),
ownerId: zod.string(),
fileCount: zod.number(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
}),
),
});
/**
* @summary Permanently delete all current user's trashed items
*/
export const EmptyUserTrashResponse = zod.object({
message: zod.string(),
});
/**
* @summary List ALL users' trashed files/folders (admin only)
*/
export const AdminListTrashResponse = zod.object({
files: zod.array(
zod.object({
id: zod.string(),
name: zod.string(),
folderId: zod.string().nullish(),
ownerId: zod.string(),
originalName: zod.string(),
originalType: zod.string(),
sizeBytes: zod.number(),
status: zod.enum([
"uploading",
"queued",
"processing",
"done",
"failed",
"trashed",
]),
qualityScore: zod.number().nullish(),
wordCount: zod.number().nullish(),
language: zod.string().nullish(),
isShared: zod.boolean(),
sharedWith: zod
.array(
zod.object({
id: zod.string(),
email: zod.string(),
displayName: zod.string().optional(),
}),
)
.optional(),
permission: zod.enum(["owner", "read", "edit", "full"]).nullish(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
}),
),
folders: zod.array(
zod.object({
id: zod.string(),
name: zod.string(),
parentId: zod.string().nullish(),
ownerId: zod.string(),
fileCount: zod.number(),
createdAt: zod.coerce.date(),
updatedAt: zod.coerce.date(),
}),
),
});
/**
* @summary Permanently delete all trashed items for current admin user
*/
export const AdminEmptyTrashResponse = zod.object({
message: zod.string(),
});