This assessment is intended to help us measure if your skills are suitable for an integrations engineer role, you will be building an API and integrate with a 3rd party system.
We expect your solution to be built with Nodejs JS/TS and your API to use your framework of choice.
Note: Please read the entire assessment before you start designing your solution.
- Jobs
- Job Adverts
- Job Applications
- Candidates
-
POST
/jobs: Create a new job posting with an expiry_date set by default for 30 days. -
GET
/jobs: Retrieves all the active (none-expired) jobs with pagination -
GET
/jobs/indeed.xmlRetrieves all the active jobs without pagination in XML format that aligns with Indeed XML Feed reference you can ignore the<url>field or leave it blank.
Ensure that the data exchange format is JSON except for the endpoint /jobs/indeed.xml
Document your API with the openAPI spec, most API frameworks have a plugin or extension to integrate a generated UI such as swagger.
Implement error handling for common API issues (e.g. not found, forbidden, network issues, etc) as you see fit.
For your JSON endpoint ensure the response follows the following interface
interface API_RESPONSE {
result: any
meta: any
errors: Array<{
code: number;
name: string;
message: string;
details: any
}> // you may ignore the error structure if you're using a validation library like typbox, zod, joi, etc but if you manage to transform the default validation errors that would be a plus ;)
}Indeed has this job application testing tool that helps developers build their own indeed integration for handling incoming candidates.
You are expected to build an endpoint that can handle incoming job applications and candidates from this tool and adhere to the requirements from Indeed based on their Application delivery reference
Hint: to expose your API endpoint to indeed, you can use any tunneling software to expose an http port.
We can recommend that you use ngrok you can sign up for a free account if you like to have a stable reserved free subdomain and you can use their local Web Interface to help you log and debug incoming requests
Another option would be a VSCode port forwarding
Please write integration / Unit tests for your endpoints. You may use the test runner of choice, hint: Vitest is easy to setup.