The job search API allows users to manage and interact with user, job, and company data. It has various endpoints that handle authentication, user, company, and job operations.
All request and response bodies are in JSON format.
If you want to run this project locally, base URL is:
http://localhost:3001/
I'll suggest using the following base URL which is already deployed:
https://jobly-backend-x9gn.onrender.com/
POST /auth/token
Description: Authenticates a user and returns a token.
Authorization: None
Request Body: { username, password }
Response Body: { token }
POST /auth/register
Description: Registers a new user and returns a token.
Authorization: None
Request Body: { username, password, firstName, lastName, email }
Response Body: { token }
POST /users
Description: Adds a new user (Admin only).
Authorization: Admin
Request Body: userNewSchema
Response Body: {user: { username, firstName, lastName, email, isAdmin }, token }
GET /users
Description: Returns a list of all users (Admin only).
Authorization: Admin
Response Body: { users: [ {username, firstName, lastName, email }, ... ] }
GET /users/:username
Description: Returns user data.
Authorization: Admin or same user as :username
Response Body: { username, firstName, lastName, isAdmin, jobs }
PATCH /users/:username
Description: Updates user data.
Authorization: Admin or same user as :username
Request Body: { firstName, lastName, password, email }
Response Body: { username, firstName, lastName, email, isAdmin }
DELETE /users/:username
Description: Deletes a user.
Authorization: Admin or same user as :username
Response Body: { deleted: username }
POST /users/:username/jobs/:id
Description: Allows a user to apply to a job.
Authorization: Admin or same user as :username
Response Body: { applied: jobId }
POST /jobs
Description: Adds a new job (Admin only).
Authorization: Admin
Request Body: { title, salary, equity, companyHandle }
Response Body: { id, title, salary, equity, companyHandle }
GET /jobs
Description: Returns a list of all jobs, optionally filtered by search parameters.
Authorization: None
Request Body: { minSalary, hasEquity, title }
Response Body: { jobs: [ { id, title, salary, equity, companyHandle, companyName }, ...] }
GET /jobs/:id
Description: Returns job data.
Authorization: None
Response Body: { id, title, salary, equity, company }
PATCH /jobs/:id
Description: Updates job data (Admin only).
Authorization: Admin
Request Body: { title, salary, equity }
Response Body: { id, title, salary, equity, companyHandle }
DELETE /jobs/:id
Description: Deletes a job (Admin only).
Authorization: Admin
Response Body: { deleted: id }
POST /companies
Description: Adds a new company (Admin only).
Authorization: Admin
Request Body: { handle, name, Description, numEmployees, logoUrl }
Response Body: { handle, name, Description, numEmployees, logoUrl }
GET /companies
Description: Returns a list of all companies, optionally filtered by search parameters.
Authorization: None
Request Body: { minEmployees, maxEmployees, nameLike }
Response Body: { companies: [ { handle, name, Description, numEmployees, logoUrl }, ...] }
GET /companies/:handle
Description: Returns company data.
Authorization: None
Response Body: { handle, name, Description, numEmployees, logoUrl, jobs }
PATCH /companies/:handle
Description: Updates company data (Admin only).
Authorization: Admin
Request Body: { name, Description, numEmployees, logo_url }
Response Body: { handle, name, Description, numEmployees, logo_url }
DELETE /companies/:handle
Description: Deletes a company (Admin only).
Authorization: Admin
Response Body: { deleted: handle }
node server.js
jest -i