Backend REST API
JobHax Backend REST API
Overview
JobHax is a platform that allows you to track your job applications, their statuses, take some notes about them and see some metrics about your job seeking process. The JobHax API provides functionality to developers to create users, add job applications and all the related endpoints to manage them. All of the API endpoints work with JSON bodies and responses.
Postman Collection
You can explore all the endpoints of the JobHax API and their usage using this Postman collection.
Authentication
The JobHax API uses Django framework's OAuth system. In order to get an access_token to access the endpoints, you'll need to have a JobHax client_id and a JobHax client_secret. You can get an access_token either using email&password or using a third party access token like (Google access token, LinkedIn access token etc.)
How to generate Google access_token for test purposes:
For testing purposes Google's playground system can be used for generating dummy access tokens to use on JobHax API.
You will need to grant following permissions:
To generate a Google access token, please use this link
Get an access_token with using 3rd party provider
Request
POST https://backend.jobhax.com/api/users/auth_social_user
Authenticates the user and returns JobHax access_token and refresh_token related datas.
Request Body
{
"client_id": "<jobhax-client-id>",
"client_secret": "<jobhax-client-secret>",
"provider": "google-oauth2 or linkedin-oauth2",
"token": "access_token-from-the-3rd-party-provider"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": {
"access_token": "uoIWl9mk6Uobs4M9r4H8NdBjIDyZK7",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "4b0XdB9DGtTbHnYI15SkXL9WOUYZ21"
}
}
Get an access_token with using email&password
Request
POST https://backend.jobhax.com/api/users/login
Authenticates the user and returns JobHax access_token and refresh_token related datas.
Request Body
{
"client_id": "<jobhax-client-id>",
"client_secret": "<jobhax-client-secret>",
"username": "joesmith",
"password": "123456"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": {
"access_token": "uoIWl9mk6Uobs4M9r4H8NdBjIDyZK7",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "4b0XdB9DGtTbHnYI15SkXL9WOUYZ21"
}
}
API ENDPOINTS
USER RELATED API ENDPOINTS
Request
POST https://backend.jobhax.com/api/users/register
Registers a new user with using the details provided in the body
Request Body
{
"first_name": "Joe",
"last_name": "Smith",
"username": "joesmith",
"email": "[email protected]",
"password": "123456",
"password2": "123456"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
POST https://backend.jobhax.com/api/users/logout
To logout the current user
Request Body
{
"client_id": "<jobhax-client-id>",
"client_secret": "<jobhax-client-secret>",
"token": "current-jobhax-access-token"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
POST https://backend.jobhax.com/api/users/refresh_token
To refresh the JobHax access_token if its expired.
Request Body
{
"client_id": "<jobhax-client-id>",
"client_secret": "<jobhax-client-secret>",
"refresh_token": "vSmJDUilg7RIjLXtiTIzoBwvTDN0UN"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": {
"access_token": "RYQidDFQ6w6BQHLkR4CKrKCbUOfcmG",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "lHc5JiB9SohPjImcSB8aIRF9QNdK77"
}
}
Request
POST https://backend.jobhax.com/api/users/update_gmail_token
To refresh user's GMAIL token. (In such case; user's gmail token refreshed or mail_read permission granted after login)
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Request Body
{
"token": "access_token-from-the-3rd-party-provider"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
GET https://backend.jobhax.com/api/users/get_linkedin_profile
To get user's linkedinIn basic profile if the user logged in with their linkedIn profile.
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": {
"firstName": {
"localized": {
"en_US": "Bob"
},
"preferredLocale": {
"country": "US",
"language": "en"
}
},
"localizedFirstName": "Bob",
"headline": {
"localized": {
"en_US": "API Enthusiast at LinkedIn"
},
"preferredLocale": {
"country": "US",
"language": "en"
}
},
"localizedHeadline": "API Enthusiast at LinkedIn",
"vanityName": "bsmith",
"id": "yrZCpj2Z12",
"lastName": {
"localized": {
"en_US": "Smith"
},
"preferredLocale": {
"country": "US",
"language": "en"
}
},
"localizedLastName": "Smith",
"profilePicture": {
"displayImage": "urn:li:digitalmediaAsset:C4D00AAAAbBCDEFGhiJ"
}
}
}
Request
GET https://backend.jobhax.com/api/users/sync_user_emails
To sync user job application emails to JobHax DB if the user logged in with their google account
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
GET https://backend.jobhax.com/api/users/get_user_google_mails
To get all the emails that read from user's inbox which are related with the job applications
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
{
"subject": "You applied for Android Developer at Genuent",
"body": "<html><body>HTML content</body></html>",
"date": "2018-11-14 06:08:19+00:00"
}
]
}
JOB APPLICATION RELATED API ENDPOINTS
Request
GET https://backend.jobhax.com/api/jobapps/get_jobapps
To get user's all job applications from JobHax DB.
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
{
"id": 31,
"applicationStatus": {
"id": 1,
"value": "Applied"
},
"jobTitle": "🤖 Lead Android Engineer",
"company": "OpenPhone ",
"companyLogo": "/static/images/errorcvlogobright.png",
"applyDate": "2019-01-23T14:18:12Z",
"msgId": "1687ccad52768659",
"source": "Hired.com",
"user": 7
},
{
"id": 21,
"applicationStatus": {
"id": 1,
"value": "Applied"
},
"jobTitle": "Android Intern (Summer 2019)",
"company": "Mozilla",
"companyLogo": "https://media.licdn.com/dms/image/C4E0BAQGHz8JwrMTQ0A/company-logo_100_100/0?e=2159024400&v=beta&t=klSj-Z-6bTQr-5Tfl4HWe8JwjnboGzei8ncYUMs56Pc",
"applyDate": "2018-11-14T06:08:19Z",
"msgId": "16710d5be4d0ae7f",
"source": "LinkedIn",
"user": 7
}
]
}
Request
GET https://backend.jobhax.com/api/jobapps/get_statuses
To get all the job application statuses from JobHax DB.
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
{
"id": 1,
"value": "Applied"
}
]
}
Request
GET https://backend.jobhax.com/api/jobapps/get_status_history
To get status change history of a specific job application
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
URI Parameters
Key
Value
Required
jobapp_id
job-app-id
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
{
"applicationStatus": {
"id": 1,
"value": "Applied"
},
"update_date": "2019-02-10T10:38:36.202351Z"
}
]
}
Request
POST https://backend.jobhax.com/api/jobapps/add_jobapp
To add a new Job Application.
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Request Body
{
"job_title": "job_title",
"status_id": "1",
"company": "company_test",
"application_date": "2019-01-31",
"source": "Vettery"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
POST https://backend.jobhax.com/api/jobapps/update_jobapp
To update a Job Application's status or rejection status. 'status_id' and 'rejected' parameters are optional but at least one of them should be sent.
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Request Body
{
"jobapp_id": "576",
"status_id": "1",
"rejected": true
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
POST https://backend.jobhax.com/api/jobapps/delete_jobapp
To delete a specific Job Application.
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Request Body
{
"jobapp_id": "221"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
GET https://backend.jobhax.com/api/jobapps/get_jobapp_detail
To get details of a Job Application
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
URI Parameters
Key
Value
Required
jobapp_id
job-app-id
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": {
"posterInformation": {},
"decoratedJobPosting": {},
"topCardV2": {}
}
}
Request
POST https://backend.jobhax.com/api/jobapps/add_jobapp_note
To add a note to a specific Job Application
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Request Body
{
"jobapp_id": 269,
"description": "test note"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": {
"id": 1,
"description": "test note",
"created_date": "2019-03-18T03:26:27.780072Z",
"update_date": null
}
}
Request
POST https://backend.jobhax.com/api/jobapps/update_jobapp_note
To update a note of a specific Job Application
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Request Body
{
"jobapp_note_id": 1,
"description": "test note update"
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
POST https://backend.jobhax.com/api/jobapps/delete_jobapp_note
To delete a note from a Job Application
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Request Body
{
"jobapp_note_id": 1
}
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": null
}
Request
GET https://backend.jobhax.com/api/jobapps/get_jobapp_notes
To get details of a Job Application
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
URI Parameters
Key
Value
Required
jobapp_id
job-app-id
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
{
"id": 2,
"description": "test note update",
"created_date": "2019-03-18T03:40:04.770901Z",
"update_date": "2019-03-18T03:40:15.324041Z"
},
{
"id": 3,
"description": "test note 2",
"created_date": "2019-03-18T03:42:21.334071Z",
"update_date": null
}
]
}
METRICS RELATED API ENDPOINTS
Request
GET https://backend.jobhax.com/api/metrics/get_total_application_count
To get count of user's job application
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": {
"count": 28
}
}
Request
GET https://backend.jobhax.com/api/metrics/get_application_count_by_month
To get count of user's job application by month
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
[
{
"source": "Hired.com",
"data": [
0,
0,
0,
0,
0,
2,
2,
0,
0,
2,
1,
0
]
},
{
"source": "LinkedIn",
"data": [
0,
0,
0,
0,
2,
1,
0,
3,
0,
0,
5,
1
]
},
{
"source": "Indeed",
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
8,
6,
7,
2
]
},
{
"source": "Vettery",
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
9,
1,
1
]
},
{
"source": "Others",
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
],
[
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
"January",
"February",
"March"
]
]
}
Request
GET https://backend.jobhax.com/api/metrics/get_application_count_by_month_with_total
To get count of user's job application by month with total
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
[
{
"source": "Hired.com",
"data": [
0,
0,
0,
0,
0,
2,
2,
0,
0,
2,
1,
0
]
},
{
"source": "LinkedIn",
"data": [
0,
0,
0,
0,
2,
1,
0,
3,
0,
0,
5,
1
]
},
{
"source": "Indeed",
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
8,
6,
7,
2
]
},
{
"source": "Vettery",
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
9,
1,
1
]
},
{
"source": "Others",
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
{
"source": "Total",
"data": [
0,
0,
0,
0,
2,
3,
2,
3,
8,
17,
14,
4
]
}
],
[
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
"January",
"February",
"March"
]
]
}
Request
GET https://backend.jobhax.com/api/metrics/get_count_by_statuses
To get count of user's job application by its statuses
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
{
"name": "Applied",
"value": 27
},
{
"name": "Interviewing",
"value": 1
}
]
}
Request
GET https://backend.jobhax.com/api/metrics/get_word_count
To get unique words in job applications
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": [
{
"word": "ERG, Inc.",
"value": 1
},
{
"word": "BrainyPro",
"value": 1
},
{
"word": "Amazon ",
"value": 1
},
{
"word": "KgTiger",
"value": 1
},
{
"word": "Carvana",
"value": 1
}
]
}
Request
GET https://backend.jobhax.com/api/metrics/get_count_by_jobtitle_and_statuses
To get job application count by job title and status
Request Headers
Key
Value
Required
Authorization
Bearer jobhax-access-token
Y
Response
{
"success": true,
"error_code": 0,
"error_message": "",
"data": {
"jobs": [
"Android Engineer",
"Android Developer",
"Android Application Developer",
"Mobile Developer (iOS and Android)",
"Software Engineer",
"Senior Android Developer",
"Android Intern (Summer 2019)",
"Mobile Software Engineer",
"Urgent: Android Developer",
"Android",
"🤖 Lead Android Engineer",
"Android Software Engineer, Mobile Services",
"Software Engineer Intern",
"Android Application Developer (5007)",
"Software Engineer - Android"
],
"statuses": [
"Interviewing",
"Applied"
],
"data": [
{
"name": "Interviewing",
"data": [
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
{
"name": "Applied",
"data": [
6,
8,
2,
1,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
]
}
]
}
ERROR CODES
Error Code
Description
Explanation
0
-
-
1
Invalid credentials
-
2
User profile not found.
-
3
Error occured while updating the google token.
-
4
Google token has expired. Please refresh Google token.
-
5
Couldnt logout user...
-
6
Could not login... Please check your credentials...
-
7
Passwords do not match
-
8
That username is taken
-
9
That email is being used
-
10
Invalid parameters...
-
11
Record not found...
-
Last updated
Was this helpful?