1. Successful application with screening questions and consents

Overview

A job seeker applies for a job offer containing screening questions and consents. An application contains answers to all of the questions and all consents.

Prerequisites

An offer containing screening questions and consents has been created in ATS and published on one of StepStone Group job boards.

Steps

  1. A job seeker finds an offer on a job board site, displays job offers details web page and decides to apply. Job offer data to display are fetched from the job board database, where they have been loaded via XmlFeed or manually using back office applications.
    sample job offer details web page

  2. An inquiry request is sent to ATS.
    sample inquiry request
    {
      "Header": {
        "Id": "d201d6ea-577d-460c-83fc-ae6cf3e47dbd",
        "OriginalUrl": "https://jobs.acme.com/743999715442320-software-engineer",
        "EffectiveUrl": "https://apply.acme.com/743999715442320-software-engineer",
        "JobBoardId": "totaljobs",
        "JobBoardName": "Totaljobs"
      }
    }
    
  3. ATS sends back job details.
    sample inquiry response
    {
      "Header": {
        "Id": "d201d6ea-577d-460c-83fc-ae6cf3e47dbd",
        "Status": "OK"
      },
      "Body": {
        "JobStatus": "ACTIVE",
        "Questions": [
          {
            "Id": "fe5cc6b3-c507-4688-a44d-f5092f1cc2e9",
            "Label": "What is your gender?",
            "Fields": [
              {
                "Type": "SINGLE_SELECT",
                "Required": true,
                "Values": [
                  {
                    "Id": "b77b57b4-ea8f-4d58-9fb7-6db374f49bf8",
                    "Label": "Male"
                  },
                  {
                    "Id": "9436c66e-0086-4ade-985c-d40cf700d714",
                    "Label": "Female"
                  },
                  {
                    "Id": "83ad5f74-4c99-404a-9b92-519086a9f9f0",
                    "Label": "I choose not to disclose"
                  }
                ]
              }
            ]
          },
          {
            "Id": "2607f0b1-3e5d-425a-8d76-d5d0c6cf300c",
            "Label": "Please state your salary expectations for this role",
            "Fields": [
              {
                "Type": "INPUT_TEXT",
                "Required": false
              }
            ]
          },
          {
            "Id": "2fc2ec66-795c-4ed4-927c-69a32782f5ad",
            "Label": "Do you have the right to work in the UK?",
            "Fields": [
              {
                "Type": "RADIO",
                "Required": false,
                "Values": [
                  {
                    "Id": "1",
                    "Label": "Yes"
                  },
                  {
                    "Id": "0",
                    "Label": "No"
                  }
                ]
              }
            ]
          },
          {
            "Id": "a87759d9-0382-4de9-9f9a-86a274a77493",
            "Label": "I agree to send me information about new offers",
            "Fields": [
              {
                "Type": "CHECKBOX",
                "Required": false,
                "Values": [
                  {
                    "Id": "1",
                    "Label": "Confirmed"
                  }
                ]
              }
            ]
          }
        ],
        "Consents": {
          "Mandatory": [
            {
              "Id": "ACMEPP",
              "OrgName": "Acme Software",
              "DocumentType": "PRIVACY_POLICY",
              "Url": "https://www.acme.com/about/privacy-policy"
            }
          ],
          "Optional": [
          ]
        }
      }
    }
    
  4. A job seeker fills in basic data, gives answers to all of the questions and applies for a job.
    sample application form


  5. An apply request is sent to ATS.
    sample apply request
    {
      "Header": {
        "Id": "d201d6ea-577d-460c-83fc-ae6cf3e47dbd",
        "OriginalUrl": "https://jobs.smartrecruiters.com/Totaljobs/743999715442320-software-engineer",
        "EffectiveUrl": "https://jobs.smartrecruiters.com/Totaljobs/743999715442320-software-engineer",
        "JobBoardId": "totaljobs",
        "JobBoardName": "Totaljobs"
      },
      "Body": {
        "FirstName": "John",
        "Surname": "Smith",
        "Email": "john.smith@example.com",
        "CV": {
          "BinaryData": "dGVzdA",
          "FileType": "pdf",
          "FileName": "resume_001.pdf"
        },
        "SalaryRangeMin": "50.000",
        "SalaryRangeMax": "54.999",
        "SalaryType": "Annual",
        "SalaryCurrency": "GBP",
        "JobTitle": "Software Engineer",
        "WorkEligibility": "UK",
        "Answers": [
          {
            "QuestionId": "fe5cc6b3-c507-4688-a44d-f5092f1cc2e9",
            "Records": [
              {
                "Fields": {
                  "value": [
                    "b77b57b4-ea8f-4d58-9fb7-6db374f49bf8"
                  ]
                }
              }
            ]
          },
          {
            "QuestionId": "2607f0b1-3e5d-425a-8d76-d5d0c6cf300c",
            "Records": [
              {
                "Fields": {
                  "value": [
                    "65000"
                  ]
                }
              }
            ]
          },
          {
            "QuestionId": "2fc2ec66-795c-4ed4-927c-69a32782f5ad",
            "Records": [
              {
                "Fields": {
                  "value": [
                    "1"
                  ]
                }
              }
            ]
          },
    	  {
            "QuestionId": "a87759d9-0382-4de9-9f9a-86a274a77493",
            "Records": [
              {
                "Fields": {
                  "value": [
                    "1"
                  ]
                }
              }
            ]
          }
        ],
        "Consents": {
          "Mandatory": [
            {
              "Id": "ACMEPP",
              "OrgName": "Acme Software",
              "DocumentType": "PRIVACY_POLICY",
              "Url": "https://www.acme.com/about/privacy-policy",
              "Accepted": "YES"
            }
          ],
          "Optional": []
        }
      }
    }
    
  6. ATS saves an application and sends back a response.
    sample apply response
    {
      "Header": {
        "Id": "d201d6ea-577d-460c-83fc-ae6cf3e47dbd",
        "Status": "OK"
      },
      "Body": {
        "Redirect": "NO"
      }
    }
    
  7. A job seeker is redirected to the application confirmation page.
    sample application confimation page


2. Successful application with basic data

Overview

A job seeker applies on an offer that requires only basic data.

Prerequisites

An offer requiring only basic data to apply has been created in ATS and published on one of StepStone Group job boards.

Steps

  1. A job seeker finds an offer on a job board site and decides to apply.
  2. An inquiry request to ATS is sent.
    sample inquiry request
    {
      "Header": {
        "Id": "f1e8f5fc-cb52-11ea-87d0-0242ac130003",
        "OriginalUrl": "https://jobs.acme.com/743999715442321-devops-engineer",
        "EffectiveUrl": "https://apply.acme.com/743999715442321-devops-engineer",
        "JobBoardId": "totaljobs",
        "JobBoardName": "Totaljobs"
      }
    }
    
  3. ATS sends back job details.
    sample inquiry response
    {
      "Header": {
        "Id": "f1e8f5fc-cb52-11ea-87d0-0242ac130003",
        "Status": "OK"
      },
      "Body": {
        "JobStatus": "ACTIVE"
      }
    }
    
  4. A job seeker fills in basic data and applies for a job.
  5. An apply request is sent to ATS.
    sample apply request
    {
      "Header": {
        "Id": "f1e8f5fc-cb52-11ea-87d0-0242ac130003",
        "OriginalUrl": "https://jobs.acme.com/743999715442321-devops-engineer",
        "EffectiveUrl": "https://apply.acme.com/743999715442321-devops-engineer",
        "JobBoardId": "totaljobs",
        "JobBoardName": "Totaljobs"
      },
      "Body": {
        "FirstName": "John",
        "Surname": "Smith",
        "Email": "john.smith@example.com",
        "CV": {
          "BinaryData": "dGVzdA",
          "FileType": "pdf",
          "FileName": "resume_001.pdf"
        },
        "SalaryRangeMin": "50.000",
        "SalaryRangeMax": "54.999",
        "SalaryType": "Annual",
        "SalaryCurrency": "GBP",
        "JobTitle": "Software Engineer",
        "WorkEligibility": "UK"
      }
    }
    
  6. ATS saves an application and sends back a response.
    sample apply response
    {
      "Header": {
        "Id": "f1e8f5fc-cb52-11ea-87d0-0242ac130003",
        "Status": "OK"
      },
      "Body": {
        "Redirect": "NO"
      }
    }
    
  7. A job seeker is redirected to the application confirmation page.


3. Error upon inquiry

Overview

A job seeker tries to apply for a job, but a technical error occurs on ATS end upon inquiry.

Prerequisites

A job offer has been published on a job board.

Steps

  1. A job seeker finds an offer on a job board site and decides to apply.
  2. An inquiry request to ATS is sent.
  3. ATS sends back a reply with Status=ERROR and ErrorMsg set to one of the following: JOB_NOT_FOUND, JOB_NOT_INTEGRATED, INVALID_REQUEST, TECHNICAL_ERROR.
    sample inquiry response
    {
      "Header": {
        "Id": "dc297f7c-36a9-49fa-a29d-8bf80fdd4094",
        "Status": "ERROR",
        "ErrorMsg": "JOB_NOT_FOUND"
      }
    }
    
  4. A job seeker is redirected to the external job offer URL published on the job board.


4. Apply error: application for an expired job offer

Overview

A job seeker tries to apply for a job offer that has already expired in ATS.

Prerequisites

An offer published on the job board has expired in ATS, but is still active on the job board.

Steps

  1. A job seeker finds an offer on a job board site and decides to apply.
  2. An inquiry request to ATS is sent.
  3. ATS sends back job details with JobStatus=EXPIRED. Currently JobStatus returned by ATS does not have any effect on the application flow. This means that even though JobStatus=EXPIRED is returned, a job seeker will still be able to try and apply. This is to be changed in future releases.
    sample inquiry response
    {
      "Header": {
        "Id": "dc297f7c-36a9-49fa-a29d-8bf80fdd4094",
        "Status": "OK"
      },
      "Body": {
        "JobStatus": "EXPIRED"
      }
    }
    
  4. A job seeker fills in basic data and applies for a job.
  5. An apply request is sent to ATS.
  6. ATS sends back a response with ErrorMsg = JOB_EXPIRED and BackUrl pointing to the page, where a job seeker should be redirected.
    sample apply response
    {
      "Header": {
        "Id": "dc297f7c-36a9-49fa-a29d-8bf80fdd4094",
        "Status": "ERROR",
        "ErrorMsg": "JOB_NOT_AVAILABLE",
        "ErrorDesc": "The job expired on July 20, 2020"
      },
      "Body": {
        "Redirect": "YES",
        "BackUrl": "https://apply.acme.com/jobs/123"
      }
    }
    
  7. A job seeker is redirected to the returned BackUrl.


5. Apply error: a duplicated application

Overview

A job seeker tries to apply for a job that they already applied for.

Prerequisites

A job seeker has already applied for a job.

Steps

  1. A job seeker finds an offer on a job board site and decides to apply.
  2. An inquiry request to ATS is sent.
  3. ATS sends back job details.
  4. A job seeker fills in basic data and applies for a job.
  5. An apply request is sent to ATS.
  6. ATS decides that an application is a duplicate and sends back a response with ErrorMsg = DUPLICATED_REQUEST and BackUrl to which the job seeker will be redirected. The way ATS determines if an application is a duplicate is ATS-specific.
    sample apply response
    {
      "Header": {
        "Id": "dc297f7c-36a9-49fa-a29d-8bf80fdd4094",
        "Status": "ERROR",
        "ErrorMsg": "DUPLICATED_REQUEST"
      },
      "Body": {
        "Redirect": "YES",
        "BackUrl": "https://apply.acme.com/jobs/123"
      }
    }
    
  7. A job seeker is redirected to the returned BackUrl.


6. Apply error: lack of required data in an apply request

Overview

A job seeker tries to apply for a job, but they don’t provide all required data.

Prerequisites

A job offer has been published on a job board that requires data that could not be parsed out from a job seeker’s CV.

Steps

  1. A job seeker finds an offer on a job board site and decides to apply.
  2. An inquiry request to ATS is sent.
  3. ATS sends back job details.
  4. A job seeker fills in basic data and applies for a job.
  5. An apply request is sent to ATS.
  6. ATS cannot find all required data in the request and sends back a response with ErrorMsg = INVALID_REQUEST and BackUrl to which the job seeker will be redirected.
    sample apply response
    {
      "Header": {
        "Id": "dc297f7c-36a9-49fa-a29d-8bf80fdd4094",
        "Status": "ERROR",
        "ErrorMsg": "INVALID_REQUEST",
        "ErrorDesc": "Missing required data: phone number, country, gender"
      },
      "Body": {
        "Redirect": "YES",
        "BackUrl": "https://apply.acme.com/jobs/123"
      }
    }
    
  7. A job seeker is redirected to the returned BackUrl.


7. Apply error: required screening questions not answered

Overview

A job seeker tries to apply for a job, but they don’t answer all required screening questions.

Prerequisites

A job offer has been published on a job board that contains required screening questions.

Steps

  1. A job seeker finds an offer on a job board site and decides to apply.
  2. An inquiry request to ATS is sent.
  3. ATS sends back job details.
  4. A job seeker fills in basic data and applies for a job.
  5. An apply request is sent to ATS.
  6. ATS cannot find answers to all required screening questions in the request and sends back a response with ErrorMsg = UNANSWERED_QUESTIONS and BackUrl to which the job seeker will be redirected.
    sample apply response
    {
      "Header": {
        "Id": "dc297f7c-36a9-49fa-a29d-8bf80fdd4094",
        "Status": "ERROR",
        "ErrorMsg": "UNANSWERED_QUESTIONS",
        "ErrorDesc": "Required questions not answered: What is you gender? (id=1), What is your current notice period? (id=4)"
      },
      "Body": {
        "Redirect": "YES",
        "BackUrl": "https://apply.acme.com/jobs/123"
      }
    }
    
  7. A job seeker is redirected to the returned BackUrl.


8. Apply error: technical error

Overview

A job seeker tries to apply for a job, but a technical error occurs on ATS end upon apply.

Prerequisites

A job offer has been published on a job board.

Steps

  1. A job seeker finds an offer on a job board site and decides to apply.
  2. An inquiry request to ATS is sent.
  3. ATS sends back job details.
  4. A job seeker fills in basic data and applies for a job.
  5. An apply request is sent to ATS.
  6. A technical error occurs on ATS end. A response with ErrorMsg = TECHNICAL_ERROR and BackUrl to which the job seeker will be redirected.
    sample apply response
    {
      "Header": {
        "Id": "dc297f7c-36a9-49fa-a29d-8bf80fdd4094",
        "Status": "ERROR",
        "ErrorMsg": "TECHNICAL_ERROR",
        "ErrorDesc": "Database connection error"
      },
      "Body": {
        "Redirect": "YES",
        "BackUrl": "https://apply.acme.com/jobs/123"
      }
    }
    
  7. A job seeker is redirected to the returned BackUrl.


9. ATS sends information about completed application to ATSi

Overview

A job seeker could not finish application on the job board and was redirected to ATS to finish the application. Once an application has been successfully completed, ATS sends a confirmation to ATSi

Prerequisites

A job offer has been published on a job board. A tracking cookie has been set by a job board in the job seeker’s browser. A job seeker is redirected to ATS to finish the application, because of an error in an inquiry/apply response or because a job offer is not integrated with ATSi.

Steps

  1. A job seeker finds and offer on a job board and tries to apply.
  2. An application process cannot be finished on the job board, so the job seeker is redirected to ATS to finish the application.
  3. The job seeker finishes the application on ATS site.
  4. ATS sends information about the finished application. Technically a confirmation is sent from a job seeker’s browser by sending a GET request to ATSi tracker endpoint. To enable this functionality, ATS should place javascript code as in the example below on a job application confirmation page:
    sample javascript tracking code
    (new Image()).src='https://www.at-ats.com/tracker/status?atsId=ACME_ATS&status=COMPLETE';
    


10. ATS sends information about an application status change to ATSi

Overview

Every time an application status changes, ATS sends a status change update to ATSi.

Prerequisites

A job seeker has successfully applied for a job offer.

Steps

  1. A job seeker successfully applies for a job offer.
  2. An application changes state in ATS e.g. from APPLIED to INTERVIEW.
  3. ATS sends an application status update to ATSi. An update is sent as a PUT request to https://www.at-ats.com/api/application/{applicationId}/status, where {applicationId} is an Id from inquiry/apply request’s Header section.
    sample application status update
    curl -X PUT \
      https://www.at-ats.com/api/application/dc297f7c-36a9-49fa-a29d-8bf80fdd4094/status \
      -H 'Content-Type: application/json' \
      -H 'X-AtsiToken: 1nwh2px2exa8a1d7006h0cnbof7' \
      -d '{
        "Status": "INTERVIEW"
    }'