FirstDevJob Docs
API Reference

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 update
  • status - "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");
}

On this page