Full Apply
This page specifies how to formulate a request to apply to a job which requires a more thorough application request. The JSON response from the /jobs/search endpoint for such jobs will meet the follow two criteria:
- The
apply_method
field for the job will equal"full_apply_endpoint"
- The
number_of_questions_allowed
field will have a value than 0
The email
, full name
, questions
and the Partner Attributes contained in the Job Search response are required. As with almost all other requests to the Apploi API, the X-Api-Key
header is required in the request and should contain the API key given to the partner to be able to use the API.
Questions For Apploi Jobs.
A JSON representation of the questions related to a job can be retrieved using the questions_url
field that is contained in the response from the /jobs/search endpoint. The questions_url
should look like this:
'https://ats-integrations.apploi.com/v1/apploi/{{job_id}}/questions.json?source=None'
In fact, that template should be usable in place of a call to the /jobs/search endpoint, by replacing {{job_id}}
with the ID of the specific job for which question data needs to be retrieved. If using that template doesn't work, then an explicit call to the /jobs/search endpoint can/should be made.
Example Questions Data
Here is an example of the some of the JSON body returned from a call to the questions_url
URL mentioned above. The example contains an entry for a few of the most common types of available questions: textarea
, date
, select
, and multiselect
.
{
"questions_en": [
{
'id': 1893206,
'question': 'Do you currently hold an active license as a professional counselor for the state of Texas?',
'required': True,
'type': 'textarea'
},
{
'id': 1920662,
'question': 'Date of Birth',
'required': True,
'type': 'date',
'format': 'dd/MM/yyyy'
},
{
'id': 1854409,
'question': 'Do you require Visa sponsorship? ',
'required': True,
'type': 'select',
'options': [{'value': 0, 'label': 'Yes'}, {'value': 1, 'label': 'No'}]
},
{
'id': 1841349,
'question': 'Do you have MHE Experience? (Forklift, Stockpicker, Reach Truck)',
'required': True,
'type': 'multiselect',
'options': [
{'value': 0, 'label': 'No experience; Need Training'},
{'value': 1, 'label': 'Experienced/Certified'},
{'value': 2, 'label': 'Some Experience; Require Additional Training'}
]
}
],
"questions_es": ["This will contain an array with the same data, but in Spanish"]
}
Question Schema
The following table provides an explanation of the specific fields returned in response to a call to the questions_url
.
Name | Schema | Description | Allowed values | Example |
---|---|---|---|---|
id | Yes | Unique ID for this question. | any string | "Yes" |
type | Yes | Describes the type of question. Refer to the following sections for a full explanation of each question type. | - text - select - multiselect - date | |
question | Yes | The question text that is displayed to applicants. | any string | “Veteran status?” |
format | Yes for type=date or type=text | Use the format for date or integer answers | - "dd/MM/yyyy" - integer | |
max | Yes format=integer | For format=integer | any integer for format=integer | 100 |
min | Yes format=integer | For format=integer | any integer for format=integer | 0 |
required | Yes | Allows the setting of a question as required. When required:true is present, Indeed Apply forces a non-empty text field or a non-empty selection. When the required parameter is not present, questions are optional. If a question is optional, a possible answer value is “”. | - true - false | |
Options | Yes for type=select and type=multiselect | The list of options available in the drop-down menu. | JSON | [{ "value":"1", "label":"Female" }] |
Label | Yes for type=select and type=multiselect | The text for options in any drop-down menu. | any string | Female |
Value | Yes for type=select and type=multiselect | The value corresponding to each option that will be returned for questions with drop-down menus. | any string | 1 |
Property by Question Type
Not all of the possible fields will be provided for every question returned in the response. Some of the fields returned will be included based on the type
of question.
Property/Question Type | Text | Select | Multiple | Date | Slider(number) |
---|---|---|---|---|---|
id | ✅ | ✅ | ✅ | ✅ | ✅ |
question | ✅ | ✅ | ✅ | ✅ | ✅ |
required | ✅ | ✅ | ✅ | ✅ | ✅ |
format | ❌ | ❌ | ❌ | ✅ | ✅ |
label | ❌ | ✅ | ✅ | ❌ | ❌ |
value | ❌ | ✅ | ✅ | ❌ | ❌ |
min | ❌ | ❌ | ❌ | ❌ | ✅ |
max | ❌ | ❌ | ❌ | ❌ | ✅ |
Answer Schema
The expected schema for answer objects in a request is provided below. If the answer object does not match the schema defined for the question associated with the given ID, then the answer for that question will not be saved. This will fail silently. If answers fail to be saved, it is most likely due to the answer being improperly formatted in the request.
Parameter | Value | Required | Description |
---|---|---|---|
id | Numeric string | Yes | The ID of the question for which this object provides an answer. The available question ids can be obtained from the question data retrieved as described above. |
value | String | Yes (for all answer types except multiselect ) | The string provided by this key/value pair represents the answer to the question. The precise string depends on what type of answer is required. The type of answer and the possible values are defined in the example questions data above. Different examples are also provided in the sample request above. |
values | Array of strings | Yes (for multiselect answers)No (for all other answer types) | An array of numeric strings. Each item in the array represents an answer option for a question which requires a multiselect answer. |
Answer types and associated formats
Here is another way of representing the data above, classified by answer type.
Answer Type | JSON Format |
---|---|
text, slider | {"id":string, "value":string} |
select | {"id":string, "value": "numeric_string"} |
calendar | {"id":string, "value": string(dd/MM/yyyy)} |
multiselect | {"id":string, "values": [string_1, string_2, string_n]} |
Example Request
URL
Note: Check the /easy-apply documentation and remember to add in the headers the x-api-key.
https://partners.apploi.com/v1/application/easy-apply/
Body
{
"applicant": {
"email": "{{email}}",
"fullName": "{{fullName}}",
"phoneNumber": "{{phoneNumber}}",
"resume": {}
},
"get_person_token": 1,
"enqueue": true,
"job": {
"jobId": "{{job_id}}"
},
"partner_attributes": {
"sponsored": true,
"redirect_apply": "https://jobs-univision.apploi.com/view/468036?utm_campaign=integration&utm_medium=job-board-search&utm_source=<utm_source>-boosted&ajs_event=LOAD_JOB_PAGE&ajs_aid=3f617530-4530-11e9-a2ca-7e775511d9e3&ajs_prop_search_fetch_id=efb330ceef1b44e3b07328adae1b1ccd&ajs_prop_keyword=&ajs_prop_page=1&ajs_prop_city_center=Unselected&ajs_prop_search_order=5&ajs_prop_job_id=468036&ajs_prop_doc_type=preferredjob&ajs_prop_job_location_lat=39.3798123&ajs_prop_job_location_lon=-74.5302804&ajs_prop_boosted=1&ajs_prop_utm_source=<utm_source>-boosted&ajs_prop_utm_medium=job-board-search&ajs_prop_utm_campaign=integration",
"utm_medium": "job-board-search",
"utm_campaign": "integration",
"keyword": "",
"search_fetch_id": "efb330ceef1b44e3b07328adae1b1ccd",
"page": 1,
"order": 5,
"city_center": "Unselected",
"utm_source": "<exploratory>-quick-apply-boosted",
"source": "<source>-apply"
},
"questions": {
"answers": [
// "text" type answer
{
"id": "1786806",
"value": "Text 1"
},
// "text" type answer
{
"id": "1786807",
"value": "Text Optional"
},
// "text" type answer for a question that requires a numerical answer
{
"id": "1786810",
"value": "20"
},
// "text" type answer for a question that requires a numerical answer
{
"id": "1786811",
"value": "90"
},
// "calendar" type answer
{
"id": "1786812",
"value": "17/11/2020"
},
// "calendar" type answer
{
"id": "1786813",
"value": "18/11/2020"
},
// "select" type answer
{
"id": "1786824",
"value": "0"
},
// "select" type answer
{
"id": "1786825",
"value": "1"
},
// "multiselect" type answer
{
"id": "1786826",
"values": [
"0"
]
},
// "multiselect" type answer
{
"id": "1786827",
"values": [
"1",
"2"
]
}
]
}
}
Request explained
Parameter | Value | Required | Description |
---|---|---|---|
get_person_token | 1 | No | Flag used to request bearer_token, allowing you to make requests related to the user. Check Other useful endpoints |
enqueue | true | No | |
resume | JSON Object | No | To check the entire structure go to /easy-apply |
questions | JSON Object | No | An object containing data about answers to the questions defined for applications to a given job. The data for the questions is described in the Questions For Apploi Jobs section above. The questions object, if present, contains one single key, answers , the value of which is an array of JSON objects.The full request schema for the JSON object for each item in the answers array is described in the Answer Schema section above. |
Example Response
{
"developer_message": "Submit Successful",
"errors": [],
"info": {
"person_id": 32424609,
"bearer_token": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MzI0MjQ2MDksInJvbGVzIjpbImFwcGxpY2FudCJdLCJleHAiOjE2MTMxNTgxMjF9.vQuM-HDaPliAW53RO0f99Ti9px6dOnIY_nBJAU4F-K0",
"job_id": "598551"
}
}
Status Code Response
- 200 (Successful): Return the application info and token.
- 409 (Conflict): if there is a duplicate application already in our system.
- 410 (Gone): if a job Apploi is no longer available.
Updated 2 months ago