Admin API
Convex functions for admin operations
Admin API
Functions for moderating jobs and managing the platform.
Queries
getPendingJobs
Get all jobs pending review.
const pending = useQuery(api.admin.getPendingJobs);Authentication: Admin or Moderator role required
Returns: Array of pending job submissions.
getApprovedJobs
Get all jobs with any status.
const approvedJobs = useQuery(api.admin.getApprovedJobs);Authentication: Admin role required
Returns: Array of approved jobs.
Mutations
updateJobStatus
Approve a pending job submission.
const updateJobStatus = useMutation(api.admin.updateJobStatus);
await updateJobStatus({ jobId, status: "approved" });Authentication: Admin or Moderator role required
Parameters:
jobId- ID of job to updatestatus-"approved"or"rejected"
Returns: Confirmation object.
markJobOutdated
Reject a pending job submission.
const markJobOutdated = useMutation(api.admin.markJobOutdated);
await markJobOutdated({ jobId });Authentication: Admin or Moderator role required
Parameters:
jobId- ID of job to reject
Returns: Confirmation object.
delete
Permanently delete a job.
const deleteJob = useMutation(api.admin.deleteJob);
await deleteJob({ jobId });Authentication: Admin role required
Parameters:
jobId- ID of job to delete
Returns: Confirmation object.
Deleted jobs are removed from listings; tracked applications remain available in user dashboards as closed entries.
Role Checking
Admin functions validate roles from the profiles table:
const identity = await ctx.auth.getUserIdentity();
const role = identity?.publicMetadata?.role;
if (role !== "admin" && role !== "moderator") {
throw new Error("Unauthorized");
}