--- title: Module 5(Jobs CRUD) tags: general --- # List of APIs ### Module 5: Jobs Module #### Prerequisites **New Tables** - jobs - id: uuid - title: string - isFeatured: boolean (default = False) - description: Text - company: (Many to One) Client - industry: (Many to One) Industry - skills: (Many To Many) skills - totalVacancies: number - creditPerVacancy: number - locations: (Many to Many) locations - urgency: number - process: json - status: OPEN or CLOSED or In_PROGRESS - created_at: Date (Auto) - updated_at: Date (Auto) - created_by: User Mapping - updated_by: User Mapping - filledVacancies: number (optional) **Note:** I have kept filled vacancies as optional because I don't know at this point if it is useful or not ##### 1) Create job **Endpoint:**: POST '/jobs' **Requirement**: isCCAdminOrSuperAdmin ##### 2) Get All jobs **Endpoint:**: GET '/jobs' **Response**: ``` { meta: { ... }, data: [{ title, description, dates, isFeatured etc. }, ...] } ``` ##### 3) Edit job **EndPoint**: PUT 'jobs/:job_id' **Required**: isCCAdminOrCCSuperAdmin Process: Same as other Edit table functions. ##### 5) Disable jobs **EndPoint**: POST 'jobs/disable' **Required**: isCCAdminOrCCSuperAdmin Process: Same as recruiter members, will work with the given job_id. Request Body: ``` [{ jobId: {job's id}, disable: true/false }] ``` If disable == true then disable the client else enable it. ##### 6) Delete jobs **EndPoint**: DELETE '/jobs' **Required**: isCCAdminOrCCSuperAdmin Process: Same as recruiter members, will work with the given job_id. Request Body: ``` [{ jobId: {job's id} }] ``` If disable == true then disable the client else enable it. ##### 7) Filters on jobs same as before