Skip to content

Latest commit

 

History

History
159 lines (104 loc) · 4.54 KB

readme.md

File metadata and controls

159 lines (104 loc) · 4.54 KB

Github

Overview

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.

Base URL

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/

Endpoints

Authentication Endpoints

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 }

User Endpoints

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 }

Job Endpoints

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 }

Company Endpoints

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 }

To run this locally:

node server.js

To run the tests:

jest -i