- Question sections
schemaVersionscreenerQuestionsdemographicQuestions- JSON questions parameters
idtypequestiontextoptionsvaluelabelrequiredformatlimitminCharCountminmaxminSelectionCountmaxSelectionCountconditionhierarchicalOptionsqualification- Qualification parameters
typematchrange- Match parameters
typevalues- Range parameters
minmax- Questions types
- textarea
- text
- select
- multiselect
- condition
- hierarchical
- date
- file
- information
- pagebreak
- Automatic population of screener question responses
- Questions schema
- Questions example (JSON)
- Questions schema (OpenAPI YAML)
- Best practices
JSON for screener questions
JSON screener question parameters.
- By using this API and its documentation and building an integration, you agree to the Additional API Terms and Guidelines.
Systems that support screener questions must implement JSON screener question parameters on Indeed Apply for integration approval.
To surface screener questions in the Indeed Apply application flow, you can either:
-
Format them in JSON and host them at an HTTPS URL that you include in each
<job>in the<indeed-apply-questions>parameter under the<indeed-apply-data>element. See Add Indeed Apply screener questions. -
Call the Job Sync API to create a job posting with screener questions.
To verify the syntax of your Screener Questions JSON file, use the Indeed Apply Questions tool.
Do not include phone numbers and email addresses in screener questions. By default, application data includes email addresses. Use Indeed Apply parameters to get phone numbers.
Question sections
schemaVersion
| Description | The version of the Indeed Apply screener questions schema. If you use the The current version is 1.3. As Indeed adds features, we ship minor version upgrades. The delivery postbody includes the schema version as 1.X — for example, 1.1, 1.2, and so on. Keep this value flexible so minor upgrades don't break your integration. |
|---|---|
| Values | version number |
| Example | |
screenerQuestions
| Description | Use this field for general, well-formatted questions about the job — for example, work experience, skills, or certifications. Don't mix in demographic questions about ethnicity, gender, or disability. Some jurisdictions regulate questions related to protected classes, and both Indeed's systems and yours must handle these questions in special ways. Put demographic questions in the |
|---|---|
| Values | Object |
| Example | |
demographicQuestions
| Description | Use this field for specific, well-formatted questions about a job applicant's protected class — such as ethnicity, gender, or disability. Some jurisdictions regulate these questions, and both Indeed's systems and yours must handle them in special ways. Indeed limits demographic questions to U.S.-based jobs for EEO compliance. Don't mix in general screener questions about work experience, skills, or certifications. Put those in the
|
|---|---|
| Values | Object |
| Example | |
JSON questions parameters
id
| Description | Unique ID for this question. |
|---|---|
| Values | Any string. |
| Example | |
type
| Description | The question type. For details, see the description of each value. |
|---|---|
| Values | |
| Example | |
question
"type": "information""type": "pagebreak"| Description | The question text that the applicant sees. |
|---|---|
| Values | Any string. |
| Example | |
text
| Description | The text that the applicant sees. Other question types do not support this field. |
|---|---|
| Values | Any string. |
| Example | |
options
| Description | The available options. |
|---|---|
| Values | JSON. |
| Example | |
value
| Description | The value for each option. |
|---|---|
| Values | Any string. |
| Example | |
label
| Description | The text for menu options. Each label in a select or multiselect question must be unique within that question. |
|---|---|
| Values | Any string. |
| Example | |
required
| Description | Set to true to require the question, which forces a non-empty text field or selection. Omit this parameter to make the question optional. If the question is optional and the candidate skips it, Indeed sends an answer value of "". |
|---|---|
| Values | true |
| Example | |
format
| Description | The format that the input accepts. For For |
|---|---|
| Values | Text formats:
|
| Example | integer, dd/MM/yyyy |
limit
| Description | For "type": "text" and "type": "textarea", the character limit for the answer. |
|---|---|
| Values | Any integer. |
| Example | |
minCharCount
| Description | For "type": "text" and "type": "textarea", the minimum number of characters for the answer. minCharCount applies only to non-numeric formats. |
|---|---|
| Values | Any integer. |
| Example | |
min
| Description | The minimum accepted answer.
|
|---|---|
| Values | Any integer for Any decimal for Any date for |
| Example | |
max
| Description | The maximum accepted answer.
|
|---|---|
| Values | Any integer for Any decimal for Any date for |
| Example | |
minSelectionCount
| Description | For "multi-select", the minimum number of options that the applicant must select. |
|---|---|
| Values | Any integer. |
| Example | |
maxSelectionCount
| Description | For "multi-select", the maximum number of options that the applicant can select. |
|---|---|
| Values | Any integer. |
| Example | |
condition
| Description | Makes a question conditional on the answer to a previous select question. Specify the id of the previous question and the option value that activates this question. For example, you ask the applicant whether they served in the military. If they answer yes, you show a conditional question that asks which branch they served in. |
|---|---|
| Values | JSON. |
| Example | |
hierarchicalOptions
| Description | A question that shows follow-up questions and answers based on a previous selection. For example, you ask the applicant to choose a state, and then offer a dropdown of cities in that state. Each hierarchical question supports up to three levels. |
|---|---|
| Values | JSON. |
| Example | |
qualification
| Description | Questions that ask the applicant about qualifications that the job might require. The applicant's answer must meet the conditions that the employer specifies. Indeed delivers every application to the employer, whether or not the applicant meets the qualification criteria. Does not support Supported question types are |
|---|---|
| Values | Object. |
| Example | |
Qualification parameters
type
| Description | Indicates the type of qualification, either
|
|---|---|
| Values | enum: "non-blocking" "knockout" |
| Example | |
match
| Description | Indicates the evaluation method for this question is match. The question types are select and multiselect. |
|---|---|
| Values | object See Match parameters. |
| Example | |
range
| Description | Indicates the evaluation method for this question is range. The user's answers must fall within the range that either or both
Only the |
|---|---|
| Values | JSON |
| Example | |
Match parameters
type
| Description | Indicates if the applicant's answer must match "any" or "all" of the provided values. |
|---|---|
| Values | enum: "any" "all" Use Default: "any" |
| Example | |
values
| Description | The values that the applicant must match. |
|---|---|
| Values | array |
| Example | |
Range parameters
min
| Description | The minimum value of the accepted range. |
|---|---|
| Values | Any integer for Any decimal for Any date for |
| Example | |
max
| Description | The maximum value of the accepted range. |
|---|---|
| Values | Any integer for Any decimal for Any date for |
| Example | |
Questions types
textarea
A question that shows a multi-line text entry field. Use this question type for long-form answers.
{ "id": "envirotext", "type": "textarea", "question": "Describe your ideal work environment:"}text
A question that displays a single-line text entry field. Use this question type for short answers.
For more about the formats available for text questions, see the following examples and the JSON screener questions parameters table. The available formats are integer, decimal, and numeric_text.
No format specification
{ "id": "city", "type": "text", "question": "What city are you located in?", "required": true}Integer
Shows whole numbers. Does not accept decimals or leading zeroes.
{ "id": "age", "type": "text", "question": "Age?", "format": "integer", "min": "16", "max": "75"}Numeric text
Accepts numbers with leading zeroes. Does not accept decimals.
{ "id": "experience", "type": "text", "format": "numeric_text", "question": "How many years of experience do you have in this field?", "required": false}Decimal
Shows numbers with decimals. Accepts leading zeroes.
{ "id": "gpa", "type": "text", "format": "decimal", "question": "What was your GPA?", "required": true}select
A question that shows a dropdown menu and lets the applicant select a single answer. Use this question type for multiple-choice questions.
If you include one to five answer options, Indeed shows them as radio buttons. If you include six or more options, Indeed shows them in a dropdown menu.
{ "id": "gender", "type": "select", "question": "Gender?", "options": [{ "value": "0", "label": "Decline to answer" }, { "value": "1", "label": "Male" }, { "value": "2", "label": "Female" }]}multiselect
A question that shows a list of checkboxes and lets the applicant select multiple answers. Use this question type for questions with more than one answer.
{ "id": "favoritecolors", "type": "multiselect", "question": "Select your two favorite colors:", "options": [{ "value": "0", "label": "Maize" }, { "value": "1", "label": "Blue" }, { "value": "2", "label": "Green" }]}condition
A question that appears or hides based on responses to previous questions. For example, you ask the applicant if they are at least 18 years of age. If they answer no, you ask if they can provide the required work documentation.
[{ "id": "profile-atLeast18", "question": "Are you at least 18 years of age?", "required": true, "options": [{ "value": "1", "label": "Yes" }, { "value": "0", "label": "No" }], "type": "select"}, { "id": "profile-permit", "question": "Can you provide a work permit?", "required": true, "condition": { "id": "profile-atLeast18", "value": "0" }, "options": [{ "value": "1", "label": "Yes" }, { "value": "0", "label": "No" }], "type": "select"}]hierarchical
A question that shows follow-up questions and answers based on a previous selection. For example, you ask the applicant to choose a state, and then offer a dropdown of cities in that state. Each hierarchical question supports up to three levels, such as state/city/county.
Hierarchical questions are similar to conditional questions, but they fit cases where the first selection determines the answer set for later questions. Use the hierarchical pattern to reduce the number of questions you need to gather related information.
demographicQuestions does not support this question type.
[{ "id": "hierarchical", "type": "hierarchical", "question": "State", "required": true, "options": [{ "value": "0", "label": "California" }, { "value": "1", "label": "Texas" }, { "value": "2", "label": "New York" }], "hierarchicalOptions": [{ "id": "cali_cities", "options": [{ "value": "0", "label": "San Francisco" }, { "value": "1", "label": "Los Angeles" }], "condition": { "id": "hierarchical", "value": "0" } }, { "id": "texas_cities", "options": [{ "value": "0", "label": "San Antonio" }, { "value": "1", "label": "Austin" }], "condition": { "id": "hierarchical", "value": "1" } }, { "id": "sa_zipcodes", "options": [{ "value": "0", "label": "78212" }, { "value": "1", "label": "78209" }], "condition": { "id": "texas_cities", "value": "0" } }]}]date
A question that shows a text field that only accepts date entry. Use this question type for questions that the applicant must answer with a date.
Specify a format for this question type. Use dd/MM/yyyy or another locale-specific format that follows Unicode CLDR formatting.
Indeed uses SimpleDateFormat, so format the month as MM. mm causes misconfiguration.
The type=date format affects how Indeed sends the application to the ATS and how Indeed parses minimum and maximum values. The job seeker enters the date in their own locale, not in the format you specify, and Indeed shows validation errors in the job seeker's locale. Use yyyy instead of yy to avoid confusion.
{ "id": "startdate", "required": true, "type": "date", "question": "Start date?", "format": "dd/MM/yyyy", "min": "01/06/2023", "max": "03/10/2023"}file
A question that shows a file upload control. Use this question type for questions that require a file as the answer, such as certifications, portfolios, or work samples. As described in Application data reference, the JSON POST request returns three answer fields: contentType, data, and fileName.
Valid file types are:
docdocxgifjfifjifjpejpegjpgpdfpngrtftiftifftxt
Each file is limited to 5 MB. Each application is limited to 15 MB total, including the resume file.
Do not use this question type to collect resumes. Use the Indeed Apply Resume configuration parameter instead.
demographicQuestions does not support this question type.
{ "id": "file2", "type": "file", "question": "Please attach a recent example of your work.", "required": true, "min": "1", "max": "3"}information
A text display that does not require a response. Use this question type for explanatory text or section headings.
You can include these HTML elements in the text:
<b><p><br><li><ul><ol><a href=" ">
URLs accept only HTTP and HTTPS protocols. Links open in a new tab.
Do not use <br> to force line breaks after paragraphs. Indeed inserts line breaks between paragraphs automatically.
The information question type does not support the condition JSON question parameter. See the JSON screener questions parameters table.
[{ "id": "first_header", "type": "information", "text": "The next set of questions are <b>optional</b> and are for recording purposes only. MView the <a href = 'http://www.eeoc.gov/employers/upload/poster_screen_reader_optimized.pdf'> EEO is the Law </a> poster.", "fontsize": 8}]pagebreak
Groups questions on a page. Indeed displays all questions between two pagebreak types on the same page. You can group up to 20 questions on the same page. By default, Indeed displays 3 questions per page on desktop and groups all questions onto a single page on mobile.
[{ "id": "page1_open", "type": "pagebreak"}, { "id": "question_sample", "type": "text", "question": "Age?"}, { "id": "page1_close", "type": "pagebreak"}]Automatic population of screener question responses
Only for Japan.
Indeed might automatically pre-populate answers to certain screener questions from a job seeker's previous application.
Indeed only pre-populates answers when the question text or question type matches specific rules.
| Item category | Suggested Question sample |
|---|---|
| Last name furigana | Last name furigana, last name furigana |
| First name furigana | First name furigana, first name furigana |
| Name pronunciation | Furigana, furigana |
| Date of birth (year) | Date of birth (year), Date of birth year |
| Date of birth (month) | Date of birth (month), Date of birth month |
| Date of birth (day) | Date of birth (day), Date of birth day |
| Date of birth | Date of birth |
| Gender | Gender |
| Prefecture | Prefecture |
| Nearest train station | Nearest train station |
| Occupation | Occupation, current occupation |
| Postal code | Postal code |
| Municipality | Municipality, city or ward / town or village |
| Town name / address number | Town name and address number, Town name / address number |
| Building name / room number | Building name, building name / room number, address |
| Marital status | Married, unmarried |
Questions schema
This schema describes an endpoint that the ATS hosts and Indeed queries. It represents questions that an employer wants to pose to a job seeker in a job application that Indeed Apply administers.
Questions example (JSON)
{ "schemaVersion": "1.0", "screenerQuestions": { "questions": [{ "id": "favorite-widget-color", "type": "text", "question": "What is your favorite widget color?" }, { "id": "last-four-social-security", "type": "text", "question": "What are the last four digits of your social security number??", "format": "numeric_text" }, { "id": "org-annual-widget-volume", "type": "text", "question": "How many widgets can you craft in an hour?", "required": true, "format": "integer", "min": 0, "max": 100 }, { "id": "widget-passion", "type": "textarea", "question": "What makes you passionate about widget crafting?" }, { "id": "widget-crafting-license", "type": "select", "question": "Do you have a widget crafting license issued by the Widget Organization for Widgets?", "required": true, "options": [{ "label": "false", "value": "0" }, { "label": "true", "value": "1" }] }, { "id": "widget-crafting-license-certifications", "type": "multiselect", "question": "Please select all certifications on your widget crafting license.", "required": true, "options": [{ "label": "Wooden Widget Certification", "value": "0" }, { "label": "Plastic Widget Certification", "value": "1" }, { "label": "Quantum Foam Widget Certification", "value": "3" }], "condition": { "id": "widget-crafting-license", "value": "1" }, "qualification": { "type": "non-blocking", "match": { "type": "any", "values": ["1", "3"] } } }, { "id": "widget-crafting-state", "type": "hierarchical", "question": "What is the most recent US state, city, and zip code in which you've crafted widgets?", "options": [{ "label": "California", "value": "0" }, { "label": "Texas", "value": "1" }], "hierarchicalOptions": [{ "id": "cali-cities", "options": [{ "label": "SanFrancisco", "value": "0" }], "condition": { "id": "widget-crafting-state", "value": "0" } }, { "id": "texas-cities", "options": [{ "label": "San Antonio", "value": "0" }, { "label": "Austin", "value": "1" }], "condition": { "id": "widget-crafting-state", "value": "1" } }, { "id": "san-antonio-zips", "options": [{ "label": "78212", "value": "0" }, { "label": "78209", "value": "1" }], "condition": { "id": "texas-cities", "value": "0" } }] }, { "id": "widget-crafting-license-expiration", "type": "date", "question": "When does your widget crafting license expire?", "required": true, "format": "dd/MM/yyyy", "condition": { "id": "widget-crafting-license", "value": "1" } }, { "id": "favorite-widget-pic", "type": "file", "question": "Please upload a picture of your most handsomely crafted widget." }, { "id": "page-1", "type": "pagebreak" }, { "id": "strange-widget-disclosure", "type": "information", "text": "The widgets we produce are sometimes flavored strange. By applying to this job you agree that you are comfortable crafting strange flavored widgets." }] }, "demographicQuestions": { "questions": [{ "id": "disabilities", "type": "select", "question": "Do you have a disability?", "options": [{ "label": "false", "value": "0" }, { "label": "true", "value": "1" }], "required": false }] }}Questions schema (OpenAPI YAML)
openapi: "3.0.3"info: title: "Indeed Questions Schema" description: "This defines Indeed's Application Questions schema. As a client of\ \ Indeed who wishes to utilize Indeed Apply to administer job application questions\ \ to job seekers, you must host these this API on a server of your choice. The\ \ schema defines job application questions you or your customer would like to\ \ pose to job seekers through the Indeed Apply product." version: "1.0"servers:- url: "https://YourQuestionsEndpoint.com"tags:- name: "Job Application Question Fetching" description: "Question lists that Indeed will fetch from your configured **indeed-apply-questions**\ \ URL when rendering your job application for a job seeker\n\nCHANGE LOG for this\ \ version:\n* ***BREAKING!*** Root changed to object instead of array\n* Added\ \ root fields ```schmeaVersion```, ```screenerQuestions```, ```demographicQuestions```\n\ * Added ```qualification``` field/concept to numeric\ \ literal, date, select and multiselect question types\n*"paths: /questions: get: tags: - "job application question fetching" summary: "Fetch job application questions" description: "Returns all the questions Indeed needs to faithfully render your\ \ job application for a job seeker" responses: "200": description: "successful operation" content: application/json: schema: $ref: "#/components/schemas/QuestionsBody" example: schemaVersion: "1.0" screenerQuestions: questions: - id: "favorite-widget-color" type: "text" question: "What is your favorite widget color?" - id: "org-annual-widget-volume" type: "text" question: "What are the last four digits of your social security\ \ number??" format: "numeric_text" - id: "last-four-social-security" type: "text" question: "How many widgets can you craft in an hour?" required: true format: "integer" min: 0 max: 100 - id: "widget-passion" type: "textarea" question: "What makes you passionate about widget crafting?" - id: "widget-crafting-license" type: "select" question: "Do you have a widget crafting license issued by the\ \ Widget Organization for Widgets?" required: true options: - label: "false" value: "0" - label: "true" value: "1" - id: "widget-crafting-license-certifications" type: "multiselect" question: "Please select all certifications on your widget crafting\ \ license." required: true options: - label: "Wooden Widget Certification" value: "0" - label: "Plastic Widget Certification" value: "1" - label: "Quantum Foam Widget Certification" value: "3" condition: id: "widget-crafting-license" value: "1" qualification: type: "non-blocking" match: type: "any" values: - "1" - "2" - id: "widget-crafting-state" type: "hierarchical" question: "What is the most recent US state, city, and zip code\ \ in which you've crafted widgets?" options: - label: "California" value: "0" - label: "Texas" value: "1" hierarchicalOptions: - id: "cali-cities" options: - label: "SanFrancisco" value: "0" condition: id: "widget-crafting-state" value: "0" - id: "texas-cities" options: - label: "San Antonio" value: "0" - label: "Austin" value: "1" condition: id: "widget-crafting-state" value: "1" - id: "san-antonio-zips" options: - label: "78212" value: "0" - label: "78209" value: "1" condition: id: "texas-cities" value: "0" - id: "widget-crafting-license-expiration" type: "date" question: "When does your widget crafting license expire?" required: true format: "dd/MM/yyyy" condition: id: "widget-crafting-license" value: "1" - id: "favorite-widget-pic" type: "file" question: "Please upload a picture of your most handsomely crafted\ \ widget." - id: "page-1" type: "pagebreak" - id: "strange-widget-disclosure" type: "information" text: "The widgets we produce are sometimes flavored strange.\ \ By applying to this job you agree that you are comfortable\ \ crafting strange flavored widgets." demographicQuestions: questions: - id: "disabilities" type: "select" question: "Do you have a disability?" options: - label: "false" value: "0" - label: "true" value: "1" required: false "404": description: "Questions not found"components: schemas: QuestionsBody: title: "Questions Body" type: "object" required: - "schemaVersion" properties: schemaVersion: type: "string" description: "This is the [semantic version](https://semver.org) of the\ \ schema. (Or rather, the semantic-version-light. We do not use the 3rd\ \ (PATCH) element.)" screenerQuestions: type: "object" properties: questions: allOf: - $ref: "#/components/schemas/QuestionsList" - description: "The screener questions should be a list of general,\ \ well formatted questions pertaining to the underlying job such\ \ as work experience, skills, certifications, and so on It should ***NOT***\ \ contain demographic questions such as question about ethnicity,\ \ gender, or disability. Questions related to \"protected classes\"\ \ of people are regulated in certain jurisdictions meaning they\ \ must be handled in special ways inside Indeed systems (and potentially\ \ yours). This schema provides a separate list for demographic questions\ \ called \"demographicQuestions\" below." demographicQuestions: type: "object" properties: questions: allOf: - $ref: "#/components/schemas/QuestionsList" - description: "The demographics questions should be a list of specific,\ \ well formatted questions pertaining to the job applicant's \"\ protected class\" (such as ethnicity, gender, disability, and so on). These\ \ sorts of questions are regulated in certain jurisdictions meaning\ \ they must be handled in special ways in Indeed systems (and potentially\ \ yours). Please do not mix general screener questions such as\ \ those pertaining to work experience, skills, or certifications\ \ into this list. Instead place them in the \"screenerQuestions\"\ \ list above." QuestionsList: title: "Questions List" type: "array" items: $ref: "#/components/schemas/Question" example: questionPlatform: questionSetId: "abc123" Question: type: "object" anyOf: - $ref: "#/components/schemas/TextQuestion" - $ref: "#/components/schemas/TextAreaQuestion" - $ref: "#/components/schemas/SelectQuestion" - $ref: "#/components/schemas/HierarchicalQuestion" - $ref: "#/components/schemas/DateQuestion" - $ref: "#/components/schemas/FileQuestion" - $ref: "#/components/schemas/InformationText" - $ref: "#/components/schemas/PagebreakFormating" discriminator: propertyName: "type" mapping: text: "#/components/schemas/TextQuestion" textarea: "#/components/schemas/TextAreaQuestion" select: "#/components/schemas/SelectQuestion" multiselect: "#/components/schemas/SelectQuestion" hierarchical: "#/components/schemas/HierarchicalQuestion" date: "#/components/schemas/DateQuestion" file: "#/components/schemas/FileQuestion" information: "#/components/schemas/InformationText" pagebreak: "#/components/schemas/PagebreakFormating" TextQuestion: title: "Text Question" type: "object" description: "Displays a single-line text entry field and is used for questions\ \ with shorter answers." anyOf: - $ref: "#/components/schemas/PureTextQuestionAddIn" - $ref: "#/components/schemas/NumericTextQuestionAddIn" - $ref: "#/components/schemas/NumericLiteralTextQuestionAddIn" example: id: "text-question-id" type: "text" question: "What short piece of info are you willing to provide?" required: true PureTextQuestionAddIn: title: "Pure Text Question Add-In" type: "object" example: id: "text-format-default-id" type: "text" question: "Can you provide some normal text?" required: true NumericTextQuestionAddIn: title: "Numeric Text Question Add-In" type: "object" description: "Allows for numbers with leading zeroes; does not allow for decimals." required: - "format" properties: format: type: "string" enum: - "numeric_text" example: id: "text-format-numeric-id" type: "text" question: "Can you provide some numeric text with leading zeros such as 01234?" required: false format: "numeric_text" NumericLiteralTextQuestionAddIn: title: "Numeric Literal Text Question Add In" anyOf: - $ref: "#/components/schemas/DecimalTextQuestionAddIn" - $ref: "#/components/schemas/IntegerTextQuestionAddIn" DecimalTextQuestionAddIn: title: "Decimal Text Question Add-In" type: "object" description: "Numbers with decimals; allows for leading zeroes." required: - "format" properties: format: type: "string" enum: - "decimal" min: type: "number" description: "The minimum value for the answer" max: type: "number" description: "The maximum value for the answer" qualification: $ref: "#/components/schemas/QualificationDecimal" example: id: "text-format-integer" type: "text" question: "Can you provide a decimal between 0.665 and 100.1 inclusive?" required: true format: "decimal" min: 0.665 max: 100.1 QualificationDecimal: title: "Qualification Decimal" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: range: type: "object" description: "Indicates the evaluation method for this question is range,\ \ meaning that the user’s answers must fall within the range defined\ \ by the provided ```min``` and/or ```max``` values" anyOf: - required: - "min" properties: min: type: "number" max: type: "number" example: min: 4.5 - required: - "max" properties: min: type: "number" max: type: "number" example: min: 4.5 max: 60.33 QualificationBase: title: "Qualification Base" type: "object" description: "Indicates this question contains the need to\ \ assess if the given answer is correct.\n\nSupported for conditional schema.\ \ Not supported for hierarchical. \n\nQualification questions are marked as\ \ required for applicants to answer\n" required: - "type" properties: type: type: "string" enum: - "non-blocking" description: "Indicates the type of qualification in regards to the effect\ \ on the user’s application in the indeed apply flow.\n * ```non-blocking```\ \ will allow the user to move to the next section\ \ in the apply flow even if the answer does not meet the specification\ \ defined in the qualification.\n" IntegerTextQuestionAddIn: title: "Integer Text Question Add-In" type: "object" description: "Whole numbers; does not allow for decimals or leading zeroes." properties: format: type: "string" enum: - "integer" min: type: "integer" description: "The minimum value for the answer" max: type: "integer" description: "The maximum value for the answer" qualification: $ref: "#/components/schemas/QualificationInteger" example: id: "text-format-integer" type: "text" question: "Can you provide an integer between 0 and 100 inclusive?" required: true format: "integer" min: 0 max: 100 QualificationInteger: title: "Qualification Integer" type: "object" description: "Indicates the evaluation method for this question is range, meaning\ \ that the user’s answers must fall within the range defined by the provided\ \ ```min``` and/or ```max``` values" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: range: type: "object" anyOf: - required: - "min" properties: min: type: "integer" max: type: "integer" example: min: 4 max: 60 - required: - "max" properties: min: type: "integer" max: type: "integer" example: max: 60 TextAreaQuestion: title: "Text Area Question" type: "object" description: "Displays a multi-line text entry field and is used for questions\ \ with long-form answers." allOf: - $ref: "#/components/schemas/TextualQuestionBase" - type: "object" required: - "type" properties: type: type: "string" enum: - "textarea" example: id: "textarea-question-id" type: "text" question: "What deep concepts are you thinking about?" required: true TextualQuestionBase: title: "Textual Question Base" type: "object" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" properties: limit: type: "integer" description: "The character limit for the answer" QuestionBase: title: "Question Base" type: "object" allOf: - $ref: "#/components/schemas/QuestionItemBase" - type: "object" required: - "question" properties: question: type: "string" description: "The question text that the applicants see." required: type: "boolean" description: "If set to true, the question is required, which produces\ \ a non-empty text field or selection. Omit this parameter to define\ \ questions as optional. If a question is optional and the candidate\ \ chooses not to answer, Indeed sends an answer value of \"\"." condition: type: "object" description: "Marks a question as conditional, depending on the answer\ \ to a previous select question. Specify the id of the previous question\ \ as well as the option value that activates this question. For example,\ \ you might ask the applicant if the have a pertinent license. If they\ \ answer yes, you display a conditional question that asks when it expires." properties: id: type: "string" description: "The unique question id on which the display of this\ \ question depends." value: type: "string" description: "The value that the dependent questions answer must match\ \ before this condition question is displayed." QuestionItemBase: title: "Question Item Base" type: "object" required: - "id" properties: id: type: "string" description: "Unique ID for this question." SelectQuestion: title: "Select Question" type: "object" description: "Types:\n- ***select*** - A question that displays a dropdown menu\ \ that allows the applicant to select a single answer. Used for questions\ \ with multiple choice answers.\n - Note: If you include from 1 to 5 answer\ \ options, they appear with radio buttons. If you include from 6 or more answer\ \ options, they appear in a dropdown menu.\n- ***multiselect*** - A question\ \ that displays a list of checkboxes that enables the applicant to select\ \ multiple answers. Used for questions with multiple answers.\n" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" required: - "type" - "options" properties: type: type: "string" enum: - "select" - "multiselect" options: $ref: "#/components/schemas/SelectOptions" qualification: anyOf: - $ref: "#/components/schemas/QualificationSelect" - $ref: "#/components/schemas/QualificationMultiselect" discriminator: propertyName: "type" mapping: select: "#/components/schemas/QualificationSelect" multiselect: "#/components/schemas/QualificationMultiselect" example: id: "select-question-id" type: "select" question: "Please select an option below." required: true options: - label: "no" value: "0" - label: "yes" value: "1" SelectOptions: title: "Select Options" type: "array" items: type: "object" required: - "label" - "value" properties: label: type: "string" value: type: "string" QualificationSelect: title: "Qualification Select" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: match: type: "object" description: "Indicates the evaluation method for this question is match,\ \ meaning that the user’s answers must match ```any``` of the provided\ \ values" required: - "values" properties: values: type: "array" items: type: "string" type: type: "string" enum: - "any" default: "any" QualificationMultiselect: title: "Qualification Multiselect" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: match: type: "object" description: "Indicates the evaluation method for this question is match,\ \ meaning that the user’s answers must match ```any``` or ```all```\ \ of the provided values" required: - "values" properties: values: type: "array" items: type: "string" type: type: "string" enum: - "all" - "any" default: "any" HierarchicalQuestion: title: "Hierarchical Question" type: "object" description: "A question that displays additional questions and responses based\ \ on previously selected answers. For example, you might ask an applicant\ \ to choose a state. Then, depending on what they select, you could offer\ \ them a dropdown list of cities within that state. Additionally could ask\ \ for a zip code within the city they select. Each hierarchical question is\ \ limited to three levels. For example state -> city -> zip.\nNote: Hierarchical\ \ questions are similar to conditional questions. However, hierarchical questions\ \ may be better suited to certain question types where an initial selection\ \ defines potential answers for subsequent questions. Using the hierarchical\ \ functionality reduces the total number of questions needed to obtain related\ \ information.\n" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" required: - "type" - "options" properties: type: type: "string" enum: - "hierarchical" options: $ref: "#/components/schemas/SelectOptions" hierarchicalOptions: type: "array" items: required: - "id" properties: id: type: "string" description: "The identifier of the hierarchical option" options: $ref: "#/components/schemas/SelectOptions" condition: type: "object" required: - "id" - "value" properties: id: type: "string" value: type: "string" example: id: "hierarchical-question-top-id" type: "hierarchical" question: "Can you navigate this nested hierarchy?" options: - label: "Top-level A" value: "0" - label: "Top-level B" value: "1" - label: "Top-level C" value: "2" hierarchicalOptions: - id: "top-level-a-mids-id" options: - label: "Top-level A -> Mid-level 1" value: "0" - label: "Top-level A -> Mid-level 2" value: "1" condition: id: "hierarchical-question-top-id" value: "0" - id: "top-level-b-mids-id" options: - label: "Top-level B -> Mid-level 1" value: "0" - label: "Top-level B -> Mid-level 2" value: "1" condition: id: "hierarchical-question-top-id" value: "1" - id: "top-level-b-mid-1-lows-id" options: - label: "78212" value: "0" - label: "78209" value: "1" condition: id: "top-level-b-mids-id" value: "0" DateQuestion: title: "Date Question" type: "object" description: "A question that displays a text field that only accepts date entry.\ \ Used for questions that must be answered with a date.\nNote: Format is required\ \ when using this screener question type. The format must be dd/MM/yyyy or\ \ another locale specific format that meets Unicode CLDR formatting.\n Indeed\ \ uses the SimpleDateFormat, so month must be formatted as MM. Using mm results\ \ in misconfiguration.\n The format of type=date impacts how the application\ \ is passed to the ATS and the parsing of minimum and maximum values. The\ \ job seeker still enters the date based on their locale, not the specified\ \ format, and validation error messages are in their locale’s format. Use\ \ yyyy instead of yy in the format to prevent confusion.\n" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" required: - "type" - "format" properties: type: type: "string" enum: - "date" format: type: "string" enum: - "dd/MM/yyyy" - "integer" min: type: "string" max: type: "string" qualification: $ref: "#/components/schemas/QualificationDate" example: id: "date-question-id" type: "date" question: "Do you have a favorite date?" required: true format: "dd/MM/yyyy" condition: id: "select-question-id" value: "1" QualificationDate: title: "Qualification Date" type: "object" description: "Indicates the evaluation method for this question is range, meaning\ \ that the user’s answers must fall within the range defined by the provided\ \ ```min``` and/or ```max``` values" allOf: - $ref: "#/components/schemas/QualificationBase" - type: "object" properties: range: type: "object" anyOf: - required: - "min" properties: min: anyOf: - type: "string" - type: "integer" max: anyOf: - type: "string" - type: "integer" example: min: 1693586842725 - required: - "max" properties: min: anyOf: - type: "string" - type: "integer" max: anyOf: - type: "string" - type: "integer" example: min: "01/01/2020" max: "12/31/2020" FileQuestion: title: "File Question" type: "object" description: "A question that displays a file upload interface. Used for questions\ \ that require a file upload as an answer, such as certifications, portfolios,\ \ or example work. As detailed in Application data reference, the answer data\ \ returned in the JSON POST request contains three fields: contentType, data,\ \ and fileName.\n\nValid file types are:\n * doc\n * docx\n * gif\n *\ \ jfif\n * jif\n * jpe\n * jpeg\n * jpg\n * pdf\n * png\n * rtf\n \ \ * tif\n * tiff\n * txt\n\n File size limit is 5 MB. The maximum combined\ \ limit per application is 15MB, including resume file.\n" allOf: - $ref: "#/components/schemas/QuestionBase" - type: "object" required: - "type" properties: type: type: "string" enum: - "file" min: type: "string" max: type: "string" example: id: "file-question-id" type: "file" question: "Please upload a file." required: false InformationText: title: "Information Text" type: "object" description: "A text display that does not require a response. Creates explanatory\ \ text or provide section headings.\n\nYou can include the following HTML\ \ elements in the text:\n\n* <b>\n* <p>\n* <br>\n* <li>\n\ * <ul>\n* <ol>\n* <a href=" ">\n\nOnly HTTP and\ \ HTTPS protocols are allowed in URLs. Links open in a new tab.\n\nNote: Do\ \ not use <br> to force line breaks after paragraphs. Indeed automatically\ \ inserts line breaks between paragraphs.\n" allOf: - $ref: "#/components/schemas/QuestionItemBase" - type: "object" required: - "type" - "text" properties: type: type: "string" enum: - "information" text: type: "string" example: id: "information-text-id" type: "information" text: "Here is some information for you to consume: Roses are red" PagebreakFormating: title: "Pagebreak Formating" description: "Groups questions on a page. All questions included between two\ \ pagebreak types appear on the same page. You can group up to 20 questions\ \ on the same page. Indeed defaults to 3 questions per page on desktop and\ \ groups all questions onto a single page for mobile." allOf: - $ref: "#/components/schemas/QuestionItemBase" - type: "object" required: - "type" properties: type: type: "string" enum: - "pagebrake" example: id: "page-1" type: "pagebrake"Best practices
Use the pagebreak question type to split applications into logical sections. When your JSON does not include page breaks, Indeed inserts them automatically, which can split your application in unintended ways. Indeed shows up to ten questions per page on both mobile and desktop.
Provide guidance to job seekers when answers require a specific format. Indeed uses SimpleDateFormat, so format months as MM. Using mm causes misconfiguration.