Workflow Status Update

View Documentation
Description

The Applicant Workflow Status update event is used by iCIMS to send person and job data to a third party vendor when an internal Platform user modifies a candidate’s status in the iCIMS platform.  This event is most commonly used by clients who use a third party Background Check provider, but can be used for other integrations as well.

API Examples

The Workflow Status Update Event is used to initiate a connection from iCIMS to a Partner. This event is triggered by a Platform user who wishes to send candidate or new hire and job information to a Partner.

What does the event do?: 

The Status Flow Update event was designed to provide recruiters and other Platform users with a way to initiate a connection to an iCIMS Partner.  A Platform user must select a Workflow profile and take action on a candidate/new hire that is attached to a Job or New Hire Category.  A specific status can be set as the trigger; once the candidate/new hire is placed into the trigger status, the connection will begin. The payload will be a JSON message containing the following parameters used to describe the request:

Parameter iCIMS Field Mapping Purpose
newStatus New status Specifies the ID of the new status of the candidate
oldStatus Old status Specifies the ID of the prior status of the candidate
customerId Customer ID Specifies the ID of the customer
jobId  Job System ID Specifies the ID of the job the candidate is attached to
userId Platform User (Recruiter) System ID Specifies the ID of the person who initiated the event
personId Candidate/ New Hire System ID Specifies the ID of the candidate/new hire
links GET Links Specifies the exact GET request necessary to return additional information for an entity.
eventType Event Type Specifies event type, which will be WorkFlowStatusChangeEvent.
systemId Workflow System ID Specifies the person/ new hire & job/ new hire category relationship

The partner replies to the original request in Step 1 with any of the following HTTP Status Codes and the criteria for these responses:

  • HTTP 200 OK: The request was valid and was processed successfully; no further action is required. The partner should send a confirmation message to be displayed to the user in the JSON payload - {"userMessage":"Your message goes here.","code":200}
  • HTTP 303 See Other: The request was valid and was processed successfully; the redirect link is provided in the response header.
  • HTTP 400 Bad Request: The partner received an incorrect or malformed request, or is otherwise unable to service the request due to its contents.

In iCIMS, each Workflow Status change event has a ‘Show Confirmation’ option that must be configured in the platform. If this is ‘on’ for a successful transaction either a default message will be shown to the user that states  'Follow the link to confirm the action' or the partner can code a successful usermessage with the 200 OK response code. The default message will only apply to the integration if the partner is redirecting the iCIMS user with a 303 See Other return code to the partner platform to complete the request. If this is not the case, the partner will need to code a successful message or have the ‘Show Confirmation’ option turned 'off', in the sandbox as well as for each client. It provides a better user experience when the user sees a confirmation message however, it is not required. The partner will need to request to have the 'Show Confirmation' option set based on how they will be handling a successful transaction. All error messages returned with the 400 Bad Request response code will be displayed to the user. 

Example:
iCIMS -> Partner:

POST /rest/rest/echo HTTP/1.1
Connection: close
Link: https://api.icims.com/customers/1234/applicantworkflows/2203;rel="applicantWorkflow";title="Applicant Workflow",https://api.icims.com/customers/1234/jobs/1242;rel="job";title="Job Profile",https://api.icims.com/customers/1234/people/1364;rel="person";title="Person Profile",https://api.icims.com/customers/1234/people/3;rel="user";title="Posting User",
Content-Length: 280
Content-Type: application/json
Content-Encoding: gzip
Host: dummyserver.icims.com
User-Agent: Apache-HttpClient/4.2.1 (java 1.5)
Accept-Encoding: gzip,deflate

{
    "newStatus": "9782",
    "oldStatus": "1752",
    "customerId": "1234",
    "jobId": "1242",
    "userId": "3",
    "personId": "1364",
    "links": [
        {
            "title": "Applicant Workflow",
            "rel": "applicantWorkflow",
            "url": "https://api.icims.com/customers/1234/applicantworkflows/2203"
        },
        {
            "title": "Job Profile",
            "rel": "job",
            "url": "https://api.icims.com/customers/1234/jobs/1242"
        },
        {
            "title": "Person Profile",
            "rel": "person",
            "url": "https://api.icims.com/customers/1234/people/1364"
        },
        {
            "title": "Posting User",
            "rel": "user",
            "url": "https://api.icims.com/customers/1234/people/3"
        }
    ],
    "eventType": "WorkFlowStatusChangeEvent",
    "systemId": "2203"
}

Use Cases: 

Status Flow Update:

The Status Flow Update event is used by iCIMS to send person and job data to a third party vendor when an internal Platform user modifies a candidate’s status in the iCIMS Talent Platform. This event is most commonly used by clients who use a third party Background Check, Assessment, Video Interview, or Tax Credit provider, but can be used for other integrations as well.

Onboard Portal Task

View Documentation
Description

The Onboard Portal Task event is used by iCIMS to send Person and Job data to a third party vendor.   The event is triggered when an employee begins the verification process on their employee Portal.  This event is most commonly used for clients who use a third party for E-Verify verifications.

API Examples

The process detailed on the Onboard Portal Task page includes the ability to integrate iCIMS Onboard with a post-hire system.

What does the event do?: 

The Onboard Portal Task event allows a recruiter to create a task with a dynamic re-direct to a third party post-employment system.  The JSON payload of the POST contains the following variables:

Parameter iCIMS Field Mapping Purpose
returnUrl Portal Return URL Specifies the URL on the Portal where the new hire should return to if the task is complete.
incompleteUrl Portal Return URL Specifies the URL on the Portal where the new hire should return to if the task is incomplete.
customerId Customer ID Specifies the ID of the customer
userId New Hire System ID Specifies the new hire who initiated the request 
links GET Links Specifies the exact GET request necessary to return additional information for an entity.
eventType Event Type Specifies event type, which will be OnboardPortalTaskEvent.
systemId New Hire System ID Specifies the new hire who initiated the request 

Note: The incompleteUrl sends the new hire back to the Onboard Portal without marking the task as complete. The returnUrl does mark the task as complete.

The partner replies to the original request in Step 1 with any of the following HTTP Status Codes and the criteria for these responses:

  • HTTP 303 See Other: The request was valid and was processed successfully; the link to complete the task is provided in the response header.
  • HTTP 400 Bad Request: The partner received an incorrect or malformed request, or is otherwise unable to service the request due to its contents.
Example:

iCIMS Web Services -> External Partner:

Connection: close
Link: http://test.icims.com/customers/1769/people/255;rel="user";title="User", https://test.icims.com/customers/1769/onboardworkflows/37532;rel="onboardWorkflow";title="Onboard Workflow", https://test.icims.com/customers/1769/newhirecategories/36705;rel="newHireCategory";title="New Hire Category", https://test.icims.com/customers/1769/jobs/4540;rel="job";title="Associated Job",
Content-Length: 218
Content-Type: application/json
Content-Encoding: gzip
Host: dummyserver.icims.com<br>
User-Agent: Apache-HttpClient/4.2.1 (java 1.5)
Accept-Encoding: gzip,deflate
{
    "returnUrl": "https://onboarding-test.icims.com/onboard/task?task=607&amp;hashed=1864849861",
    "incompleteUrl": "https://onboarding-test.icims.com/onboard/task?task=607&hashed=1864849861",
    "customerId": "1769",
    "userId": "255",
    "links": [
        {
            "title": "User",
            "rel": "user",
            "url": "http://test.icims.com/customers/1769/people/255"
        }
        {
            "title": "Onboard Workflow",
            "rel": "onboardWorkflow",
            "url": "https://test.icims.com/customers/1769/onboardworkflows/37532"
        }
        {
            "title": "New Hire Category",
            "rel": "newHireCategory",
            "url": "https://test.icims.com/customers/1769/newhirecategories/36705"
        }
        {
            "title": "Associated Job",
            "rel": "job",
            "url": "https://test.icims.com/customers/1769/jobs/4540"
        }
        ],
    "eventType": "OnboardPortalTaskEvent",
    "systemId": "255"
}

Use Cases: 

Employment Eligibility Verification: I-9 & E-Verify

New hire’s Work Opportunity Tax Credit: WOTC

The Onboard Portal Task event is used by iCIMS to send Person data to a third party vendor.   The event is triggered when an employee views a specified task on the Onboarding portal.  This event is most commonly used by clients who use a third party for E-Verify verifications.

Associated Products

Job Unposting

View Documentation
Description

The Job Unpost event is used by iCIMS to send job information to a third party vendor when a user selects to un-post an externally posted job in the iCIMS Platform.  This event is most commonly used by iCIMS clients wishing to send jobs to third party aggregators.

API Examples

iCIMS Talent Platform users kick off the Job Unpost Event from within the Platform. For more details on this event, see below.

What does the event do?: 

The Job Unpost Event occurs when the user navigates to the Source tab on a Job Profile inside iCIMS, clicks the Job Board Posting panel. The user will then select the posting(s) that they wish to remove and click the Cancel Post icon.  This UI interaction will generate a POST request to the external job posting partner, who will then remove the posting(s). The Partner can respond with a message to the user indicate success. The payload will be a JSON message containing the following parameters used to describe the request:

Parameter iCIMS Field Mapping Purpose
systemId Job System ID Specifies the job to be posted. May be used to query the job by ID using existing Web Services at api.icims.com
eventType Event Type Specifies event type, which can be JobPostToWebEvent or JobUnpostToWebEvent
customerId Customer ID Specifies the ID of the customer
userId User System ID Specifies the user who initiated the request 

The event type (parameter eventType) is now modified to read as JobUnpostToWebEvent.The process for unposting a job is the same as a job post, with the following differences:

  1. The portalURL parameter is no longer present.
  2. The partner should reply with HTTP 200 OK instead of HTTP 303 See Other.
  3. The link url field will call out the ID of the Job to be Unposted. 
Example: 

iCIMS -> Partner (1):

POST /1.0/event HTTP/1.1
Connection: close
Link: http://providertest.icims.com/customers/1234/jobs/1209;rel="job";title="Job Profile",http://providertest.icims.com/customers/1234/people/121;rel="user";title="Posting User",
Content-Length: 92
Content-Type: application/json
Content-Encoding: gzip
Host: icims.api.jobtarget.com
User-Agent: Apache-HttpClient/4.2.1 (java 1.5)
Accept-Encoding: gzip,deflate

{
    "customerId": "1234",
    "userId": "121",
    "eventType": "JobUnpostToWebEvent",
    "systemId": "1209"
}

Use Cases: 

Job Unpost

The Job Unpost event is used by iCIMS to send job information to a third party vendor when a user selects to un-post an externally posted job in the iCIMS platform.  This event is most commonly used by iCIMS clients wishing to send jobs to third party aggregators.

Associated Products

Job Posting

View Documentation
Product Description

The Job Post event is used by iCIMS to send job information to a third party vendor when a user selects to post a job externally in the iCIMS Platform.  This event is most commonly used by iCIMS clients wishing to send jobs to third party aggregators.  

API Examples

The process detailed on the Job Post Marketplace Integration page involves the push notification step and its response. The high-level process involves sending a POST containing a system ID and the information about the job to be posted, and then expecting a reply providing the Platform with a link that is used to direct the user to the appropriate URL to complete the job posting process. The following outlines the process for posting a job to the Web.

What does the event do?: 

The Job Post Event occurs when the user navigates to the Source tab on a Job Profile inside iCIMS. From the Source tab, the user will then first access the Career Portal Posting panel to post a job to an iCIMS Career Portal, and will then access the Job Board Posting panel to post a job to a Partner's site. (Note that the job must be posted to at least one iCIMS Career Portal before the user can post it to a Partner's site.) This UI interaction will generate a POST request to the external job posting partner, who will then return the URL that can be used to finish the transaction. The Platform will then launch a page pointed at this URL. The payload will be a JSON message containing the following parameters used to describe the request:

Parameter iCIMS Field Mapping Purpose
systemId Job System ID Specifies the job to be posted. May be used to query the job by ID using existing Web Services at api.icims.com
portalUrl Portal URL Specifies the URL on the Portal that is used in applying for the job
eventType Event Type Specifies event type, which can be JobPostToWebEvent or JobUnpostToWebEvent
customerId Customer ID Specifies the ID of the customer
userId User System ID Specifies the user who initiated the request 

The partner may issue a Web Service request to obtain additional details about the job in question.

The server should acknowledge the response with any of the following HTTP response codes:

  • HTTP 303 See Other
  • HTTP 400 Bad Request

The criteria for issuing these responses should be as follows:

  • 303 See Other: The job post initiation request was successful, and the user should be redirected to the specified URL to complete the process.
  • 400 Bad Request: The job post initiation request was not successful. Must be accompanied by a message to be displayed to the user.

Additionally, a JSON message should be returned with the following parameters:

  • technicalMessage: a message specifying the technical outcome
  • userMessage: a user-friendly message that may be displayed, indicating the outcome
Example:

iCIMS -> Job Post Partner:

POST /JobPost/iCIMS/iCIMS.asp HTTP/1.1
Host: import.example.com
Content-Type: application/json;charset=UTF-8;charset=UTF-8
Content-Length: 248
Link: api.icims.com/customers/1234/jobs/1289;rel="job";title="Job Profile",
api.icims.com/customers/1234/people/400;rel="user";title="Posting User"
Date: Fri,06 Dec 2012 16:25:14 GMT

{
                "systemId":"1289",
                "portalUrl":"jobs-customer.iCIMS.com/jobs/1289/login",
                “eventType”:“JobPostToWebEvent”,
                "customerId":"1234",
                “userId”:“400”
}

Use Cases: 

Job Post

The Job Post event is used by iCIMS to send job information to a third party vendor when a user selects to post a job externally in the iCIMS platform.  This event is most commonly used by iCIMS clients wishing to send jobs to third party aggregators.  

Associated Products

Job Edit

View Documentation
Product Description

The Job Edit event is used by iCIMS to send updated job information to a third party vendor when a user has modified an externally posted job in the iCIMS Platform.  This event is most commonly used by iCIMS clients wishing to send jobs to third party aggregators.

API Examples

iCIMS Talent Platform users kick off the Job Edit Event from within the Platform. For more details on this event, see below.

What does the event do?: 

The Job Post Edit Event occurs when the user navigates to the Source tab on a Job Profile inside iCIMS, clicks the Job Board Posting panel, and then clicks the link associated with the job posting. This UI interaction will generate a POST request to the external job posting partner, who will then return the URL that can be used to edit the job posting details. The Platform will then launch a page pointed at this URL.  The payload will be a JSON message containing the following parameters used to describe the request:

Parameter iCIMS Field Mapping Purpose
systemId Job System ID Specifies the job to be posted. May be used to query the job by ID using existing Web Services at api.icims.com
eventType Event Type Specifies event type, which can be JobPostToWebEvent or JobUnpostToWebEvent
customerId Customer ID Specifies the ID of the customer
userId User System ID Specifies the user who initiated the request 
Example: 

iCIMS -> Partner:

POST /1.0/event HTTP/1.1
Connection: close
Link: http://providertest.icims.com/customers/1234/jobs/1209;rel="job";title="Job Profile",http://providertest.icims.com/customers/1234/people/121;rel="user";title="Posting User",
Content-Length: 92
Content-Type: application/json
Content-Encoding: gzip
Host: icims.api.jobtarget.com
User-Agent: Apache-HttpClient/4.2.1 (java 1.5)
Accept-Encoding: gzip,deflate

{
    "customerId": "1234",
    "userId": "121",
    "eventType": "ViewJobWebPostEvent",
    "systemId": "1209"
}

 
Use Cases: 

Job Edit

The Job Edit event is used by iCIMS to send updated job information to a third party vendor when a user has modified an externally posted job in the iCIMS platform.  This event is most commonly used by iCIMS clients wishing to send jobs to third party aggregators.

Associated Products

Application Complete

View Documentation
Description

The Application Complete event is used by iCIMS to send person and job data to a third party vendor once a candidate has completed the online application and filled out any other Screening or EEO questions on a client’s external Portal.  This event is most commonly used by clients who use a third party for Assessments or WOTC verifications.

API Examples

The Application Complete Event allows a client to initiate an integration with an iCIMS partner and the candidates that are applying to their requisitions.

What does the event do?: 

The Application Complete event was designed to fulfill a seamless application process and candidate experience.  Once a candidate has applied to a job where an event should be triggered, a communication from iCIMS to the Partner will be initiated when that candidate reached the end of the application process.  The Partner will have the ability to take that candidate to their environment and provide a return URL for that candidate to navigate back to the client's Career Portal.  The JSON payload of the POST contains the following variables:

Parameter iCIMS Field Mapping Purpose
returnUrl Portal Return URL Specifies the URL on the Portal where the candidate should return to finish the application process.
customerId Customer ID Specifies the ID of the customer
userId User System ID Specifies the candidate who initiated the request 
links GET Links Specifies the exact GET request necessary to return additional information for an entity.
eventType Event Type Specifies event type, which will be AssessmentEvent.
systemId Recruiting Workflow System ID Specifies the candidate and job relationship. 

The partner replies to the original request in Step 1 with any of the following HTTP Status Codes and the criteria:

  • HTTP 303 See Other: The request was valid and was processed successfully; the redirect link for the candidate is provided in the response header.
  • HTTP 400 Bad Request: The partner received an incorrect or malformed request, or is otherwise unable to service the request due to its contents.
Example:
 

iCIMS  -> Partner:

POST /rest/rest/echo HTTP/1.1
Connection: close
Link: https://api.icims.com/customers/1234/applicantworkflows/8702;rel="applicantWorkflow";title="Applicant Workflow",https://api.icims.com/customers/1234/jobs/2014;rel="job";title="Job Profile",https://api.icims.com/customers/1234/people/1417;rel="person";title="Person Profile",https://api.icims.com/customers/1234/people/1417;rel="user";title="Posting User",
Content-Length: 296
Content-Type: application/json
Content-Encoding: gzip
Host: dummyserver.icims.com
User-Agent: Apache-HttpClient/4.2.1 (java 1.5)
Accept-Encoding: gzip,deflate

{
    "returnUrl": "https://jobs-customername.icims.com/jobs/2014/customer-service-rep-1/assessment?i=1"
          "customerId": "1234",
           "userId": "1417",
           "links": [{,
             "title": "Applicant Workflow",
             "rel": "applicantWorkflow",
             "url": "https://api.icims.com/customers/1234/applicantworkflows/8702"
        },
        {
            "title": "Job Profile",
            "rel": "job",
            "url": "https://api.icims.com/customers/1234/jobs/2014"
        },
        {
            "title": "Person Profile",
            "rel": "person",
            "url": "https://api.icims.com/customers/1234/people/1417"
        },
        {
            "title": "Posting User",
            "rel": "user",
            "url": "https://api.icims.com/customers/1234/people/1417"
        }
    ],
    "eventType": "ApplicationCompletedEvent",
    "systemId": "8702"
}
Use Cases: 

Application Complete: Assessments & Tax Credits

The Application Complete event is used by iCIMS to send person and job data to a third party vendor once a candidate has completed the online application and filled out any other Screening or EEO questions on a client’s external Portal.  This event is most commonly used by clients who use a third party for Assessments or WOTC verifications.

Workflows API

View Documentation
Description

The Workflows Endpoint allows vendors to interact with various workflows, which connect a baseProfile and an associatedProfile, in the iCIMS Talent Platform. For example, a Recruiting Worfklow is the connection between a Job Profile (the baseProfile) and a Person Profile (the associatedProfile).

Workflow Types

The list below contains all current workflow types supported by the iCIMS Talent Platform, as well as each profile's workflowType, which is necessary to access the profile via the API. (Refer to Add new workflow entry, below, for more information.) 

Note that not all clients have all workflow types enabled.

  • Recruiting Workflow: applicantworkflows
  • Sourcing Workflow: sourceworkflows
  • Onboarding Workflow: onboardworkflows
  • Event Attendees: connecteventworkflows

Note: Recruiting Workflows were formerly called Applicant Workflows; this terminology remains in iCIMS API, as seen in the code examples below.

API Examples

Add new workflow entry

A new workflow entry is a new association between the baseProfile and associatedProfile. The API expects a Profile JSON object of the workflow and must always contain a baseProfile and an associatedProfile.

URL:   https://api.icims.com/customers/{customerId}/{workflowType}

{workflowType}

The identifier for recruiting workflows, onboard workflows, or for any future custom workflows.

Action   Definition 
Get: Not Supported
Post:

Add a new recruiting workflow entry

https://api.icims.com/customers/1234/applicantworkflows

POST HTTP/1.1
Content-Type: application/json;charset=UTF-8

 

{

    "baseprofile": 1008,

    "source": "Identify Feature",

    "status": {

        "id": "D10100",

        "value": "Recently Applied"

    },

    "associatedprofile": 2468

}

 

Response:
HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
Location: https://api.icims.com/customers/1234/applicantworkflows/13”

Add a new Onboard workflow entry

POST /onboardworkflows/
Content-Type:application/json;charset=UTF-8

{
    "baseprofile": 1,
    "status": {
        "id": "D37002023001"
    },
    "associatedprofile": 100
}

Response:
HTTP/1.1 201 Created
Location:“https://api.icims.com/customers/1234/onboardworkflows/1”

Patch: Not Supported
Delete Not Supported

Retrieve, update, and/or delete workflow information

Retrieve basic information of a specific workflow.

All workflows have their own set of standard fields that are available (see the separate sections for each workflow type for their fields) along with the read-only fields id,createddatecreatedby (except for Recruiting Workflow),updateddate, and updatedby. Custom fields are included with the attribute name field along with a numeric internal identifier for the field. For example, a custom field could look like field1234.

Use the query parameter fields to specify specific fields to retrieve. When the fields parameter is not specified, the following fields are returned per workflow:

  • Recruiting Workflow:
    • baseprofile
    • associatedprofile
    • status
    • source
    • sourcename
  • Sourcing Workflow:
    • baseprofile
    • associatedprofile
    • status
    • sourceorigin
    • source
    • sourcename
  • Onboard Workflow:
    • baseprofile
    • associatedprofile
    • status

Retrieve the history log for a specific Recruiting Workflow

Querying the submittalstatuslog field returns the history of the customer organization's recruiting workflow updates, limited to the 100 most recent results. Includes details about the recruiting workflow status and the user who completed the update.

URL:  https://api.icims.com/{customerId}/applicantworkflows/{workflowId}?fields=submittalstatuslog

Update workflow information

Expects a JSON object of the workflow in the same form as when retrieving with only the fields to be updated. Note that you cannot patch the baseprofile or the associatedprofile fields, as they can only be specified with creating a workflow.

Delete workflow entry (i.e., unassociate baseProfile and associatedProfile)

This is only supported for Recruiting Workflows.

URL:  https://api.icims.com/customers/{customerId}/{workflowType}/{workflowId}

{workflowID}  -  Numeric identifier of the workflow.

Note: An additional endpoint is available to GET and PATCH Recruiting Workflows:

https://api.icims.com/customers/{customerId}/applicantworkflows/person/{personid}/job/{jobid}

{personid}  -  Numeric identifier of the Person profile.

{jobid}  -  Numeric identifier of the Job profile.

Action  Definition
Get:

Retrieve basic information from a recruiting workflow.

https://api.icims.com/customers/1234/applicantworkflows/13 

HTTP/1.1 200 OK
{Cache-Control=[no-cache,no-store,no-transform,must-revalidate,max-age=0,s-maxage=0], 
Content-Type=[application/json;charset=UTF-8],
Content-Language=[en_US], Content-Encoding=[UTF-8],
Link=[https://api.dev.icims.com/customers/448/applicantworkflows/146247;rel="self";title="The current profile being viewed.",https://api.dev.icims.com/customers/448/jobs/25477;rel="self";title="The base profile of this workflow.",https://api.dev.icims.com/customers/448/people/115503;rel="self";title="The associated profile of this workflow.",], 
X-Content-Type-Options=[nosniff], 
X-TRANSACTION=[{F867A067-0FAB-6059-B04A-9836398BD0A2}], 
X-RateLimit-Limit=[50000], X-RateLimit-Remaining=[49995], 
X-RateLimit-Reset=[18516], 
Date=[Thu, 04 Oct 2012 18:51:26 GMT], 
Content-Length=[344]}

{

    "id": 13,

    "baseprofile": {

        "id": 3,

        "value": "Accountant",

        "profile": "https: //api.icims.com/customers/1234/jobs/3/"

    },

    "associatedprofile": {

        "id": 5,

        "value": "JohnSmith",

        "profile": "https: //api.icims.com/customers/1234/people/5/"

    },

    "status": {

        "id": "D5432",

        "value": "InterviewScheduled"

    },

    "source": "iCIMS.com",

    "sourcename": "Internal"

    },

}

Retrieve the history log for a specific recruiting workflow

https://api.icims.com/customers/1234/applicantworkflows/3839?fields=submittalstatuslog

{

    "submittalstatuslog": [

        {

            "updatedBy": {

                "profile": "https://api.icims.com/customers/1234/people/1",

                "id": 1,

                "value": "iAdmin (demo301)"

            },

            "updatedDate": "2022-06-21 10:41:11",

            "status": {

                "id": "C25587",

                "formattedvalue": "Hired - Hired",

                "value": "Hired - Hired"

            }

        }

],

"links": [

        {

                "rel": "self",

                "title": "The current profile being viewed.",

                "url": "https://api.icims.com/customers/1234/applicantworkflows/3839"

        }

    ]

}

Retrieve basic information from an Onboard workflow

GET /onboardworkflows/

{
    "baseprofile": {
        "id":"1",
        "value":"Test Hire Category",
        "profile":"https://api.dev.icims.com/customers/1234/newhirecategories/1"
    },
    "status":{
        "id":"D37002023001",
        "value":"Ready to Onboard",
        "formattedvalue":"Ready to Onboard"
    },
    "associatedprofile":{
        "id":"100",
        "value":"Test User",
        "profile":"https://api.dev.icims.com/customers/1234/people/100"
    }
}

Post: Not Supported
Patch

Update recruiting (applicant) workflow information
https://api.icims.com/customers/1234/applicantworkflows/13

PATCH HTTP/1.1
Content-Type:application/json;charset=UTF-8

{

    "source": "dice.com"

}

 

Response:
HTTP/1.1 204 No Content
Content-Type:application/json;charset=UTF-8
Location:https://api.icims.com/customers/1234/applicantworkflows/13”

Update Onboard workflow information PATCH /onboardworkflows/
Content-Type:application/json;charset=UTF-8 

{

     "baseprofile": 1,

     "status": {

     "id": "D37002023001"

     },

     "associatedprofile": 100

}

 

RETURN HTTP / 1.1 204 No Content Location: https: //api.icims.com/customers/1234/onboardworkflows/1

Delete:

Delete workflow entry (i.e. unassociate baseProfile and associatedProfile)

This is only supported for recruiting (applicant) workflows, not Onboard workflows

Response:

HTTP/1.1 204 No Content

 

Search API

View Documentation
Description

The iCIMS API now supports the ability to query (search) for System IDs matching a given set of criteria. Up to 1,000 matching results will be returned at a time, and more can be fetched using paging filters. The ability to Search via the iCIMS API will work for the Search API Endpoints listed below.

The Search API Endpoints listed below support both GET requests and POST requests. The POST method is provided for convenience to avoid escaping, unicode, and data length issues, but otherwise functions the same as the GET method.

Important Notes:

  • In order to utilize the Search API, a user must be part of the Integration User group.
  • The results of the search will return System IDs. iCIMS cannot customize the result set (i.e. custom response payloads).
  • Search API supports the ability to search for the text value of a list item (rather than requiring the Node ID of that particular list item).  
  • Search API also supports the ability to search for a list item's SystemID (rather than requiring the Node ID of that particular list item).
  • All requests are parsed and all responses are created using JSON.
  • At this time, iCIMS does not support real-time usage of the Search API.  The Search API is currently optimized for synching data between two different systems in the background. (For example, to create a customizable Career Portal, job information should be synced from iCIMS into a database or content repository.  Then, the external repository could provide data for a Portal.)

Caching and the Staleness Parameter

The URL also takes an optional GET parameter called "staleness." The staleness argument takes a positive integer number of minutes. This indicates how old the search results may be when returning results. For example, using a staleness of 5 means that the returned results may be up to 5 minutes out of date. If there are already recent enough results in our internal cache, those will be returned; otherwise, a new search will be run and return new results. If no staleness is specified, it will default 15 minutes. (Note: The cache is stored across multiple users where possible, meaning that if two users run the same search, the second user could use cached data within the default or specified staleness timeframe.)

Example:

Search for jobs with the default staleness (15 minutes):
https://api.icims.com/customers/1060/search/jobs?searchJson=<your filters...>

Search for jobs live (no staleness or caching):
https://api.icims.com/customers/1060/search/jobs?staleness=0&searchJson… filters...>

Search for jobs with up to 5 minutes of staleness:
https://api.icims.com/customers/1060/search/jobs?staleness=5&searchJson… filters...>

Available Filters

In addition to standard fields being allowed as search filters, custom fields and custom collections can also be used as search filters. The comprehensive list of search filters that exist in the search API schema list are below. Four hash signs (####) designates the custom field ID (i.e., RCF, JCF). The filter type is listed in parentheses beside each filter.

person

  • person.id (number)
  • person.idCSV (text) - to Select Multiple IDs
  • person.firstname (text)
  • person.middlename (text)
  • person.lastname (text)
  • person.email (text)
  • person.emailaddress (text)
  • person.folder (multiselect)
  • person.externalid (text)
  • person.logingroupid (multiselect)
  • person.addresszip (text)
  • person.addresscountry (text)
  • person.addresscity (text)
  • person.addressstate (listnode)
  • person.createddate (datetime)
  • person.updateddate (datetime)
  • person.employeeinfo (relation)
  • person.customfield#### (relation)
  • person.collectionfield####text (text or multiselect)
  • person.collectionfield####number
  • person.collectionfield####date
  • person.collectionfield####listnode
  • person.collectionfield####person (multiselect)
  • person.collectionfield####job (multiselect)
  • person.firstnamelastupdated (datetime)
  • person.lastnamelastupdated (datetime)
  • person.emaillastupdated (datetime)
  • person.jobtitlelastupdated (datetime)
  • person.folderlastupdated (datetime)
  • person.addresslastupdated (datetime)
  • person.isfullaccessuser
  • person.login.lastaccess (datetime)

employeeinfo

  • person.startdate (dateonly)
  • person.hiredate (dateonly)
  • person.enddate (dateonly)

job

  • job.id (number)
  • job.idCSV (text)
    job.folder (multiselect)
  • job.jobnumber (text)
  • job.externalid (text)
  • job.jobtitle (text)
  • job.jobtype (multiselect)
  • job.numberofpositions (number)
  • job.numberofpositionsremaining (number)
  • job.hiretype (multiselect)
  • job.startdate (dateonly)
  • job.duedate (dateonly)
  • job.positionlevel (multiselect)
  • job.positiontype (multiselect)
  • job.positioncategory (multiselect)
  • job.createddate (datetime)
  • job.updateddate (datetime)
  • job.customfield#### (relation)
  • job.collectionfield####text (text or multiselect)
  • job.collectionfield####number
  • job.collectionfield####date
  • job.collectionfield####listnode
  • job.collectionfield####person (multiselect)
  • job.collectionfield####job (multiselect)
  • job.jobpost.enddate (datetime)
  • job.jobpost.isposted (select)
  • job.jobpost.postdate (datetime)
  • job.jobpost.postedtohub (select)
  • job.jobpost.status (multiselect)
  • job.jobpost.type (multiselect)
  • job.joblocation.addresscity (text)
  • job.joblocation.addressstate (listnode)
  • job.joblocation.addressstatetext (text)
  • job.joblocation.addresscountry (multiselect)
  • job.joblocation.addresscountrytext (text)
  • job.joblocation.addresszip (text)
  • job.joblocation.zipradius (zipradius)
  • job.joblocation.companyid (number)
  • job.postedto (multiselect)
  • job.priority (multiselect)

company

  • company.id (number)
    company.idCSV (text)
  • company.name (text)
  • company.addresscity (text)
  • company.addresszip (text)
  • company.addresscountry (multiselect)
  • company.addressstate (listnode)
    company.zipradius (zipradius)
  • company.createddate (datetime)
  • company.updateddate (datetime)
  • company.customfield#### (relation)
  • company.collectionfield####text
  • company.collectionfield####number
  • company.collectionfield####date
  • company.collectionfield####listnode
  • company.collectionfield####person (multiselect)
  • company.collectionfield####job (multiselect)

applicantworkflow

  • applicantworkflow.bin (multiselect)
  • applicantworkflow.status (multiselect)
  • applicantworkflow.updateddate (datetime)
  • applicantworkflow.person (relation)
    • Example: { "name": "applicantworkflow.person.id", "value": ["system ID"], }
  • applicantworkflow.job (relation)
    • Example: { "name": "applicantworkflow.job.id", "value": ["system ID"], }
  • applicantworkflow.customfield#### (relation)
  • applicantworkflow.collectionfield####text
  • applicantworkflow.collectionfield####number
  • applicantworkflow.collectionfield####date
  • applicantworkflow.collectionfield####listnode
  • applicantworkflow.collectionfield####person (multiselect)
  • applicantworkflow.collectionfield####job (multiselect)

talentpools

  • talentpool.createddate (datetime)
  • talentpool.updateddate (datetime)
  • talentpool.postedto (multiselect)
  • talentpool.title.text
  • talentpool.externalid.text
  • talentpool.folder.number
  • talentpool.owner.number
  • talentpool.customfield#### (rcf 4 digit)

sourceworkflows

  • sourceworkflow.associatedprofile.person (multiselect)
  • sourceworkflow.createddate (datetime)
  • sourceworkflow.updateddate (datetime)
  • sourceworkflow.postedto (multiselect)
  • sourceworkflow.baseprofile.number
  • sourceworkflow.source.number
  • sourceworkflow.sourceorigin.number
  • sourceworkflow.sourcename.number
  • sourceworkflow.sourceperson.person (multiselect)
  • sourceworkflow.status.number
  • sourceworkflow.vendorname.text
  • sourceworkflow.customfield####(rcf 4 digit).(fieldtype)

formdata

  • formdata.id (Backend Note: Schema - FormDataIDNumeric, alias FormDataID - label="Form Data ID")
  • formdata.formid (Schema - FormID - label="Form Name") (multiselect)
  • formdata.formstatus (multiselect)
  • formdata.updateddate (datetime)
  • formdata.completeddate (datetime)
  • formdata.form (relation)
    • Example: {"name":"formdata.form.formname","value":['[form name]']
  • ​​formdata.personformpersonid (text)
  • formdata.submittalformsubmittalid (text)
  • formdata.submittalformpersonid (text)
  • formdata.submittalformjobid (text)
  • formdata.onboardworkflowformonboardworkflowid (text)

form

  • form.formname (text) 

 

Note: All ID filters must be added manually to the query JSON. In addition, password and custom password fields are not supported through the Search API and cannot be used as filter criteria.

API Examples

Available Filter Operators

The following list of filter operators that can be used within a given Search Query is below. (Note: If none is specified, '=' is assumed. These are not all valid for all filter types.)

Operator Description Available Field Types
'==' Exact match for text type fields. text
'!==' Is not an exact match for text type fields. (Note: Some fields do not support this operator.) text
'=' Listnode, multiselect, select, zipradius, dateonly, datetime, and number fields filter by exact match. Text based fields filter by contains. listnode, multiselect, select, zipradius, dateonly, datetime, number, text
'!=' Multiselect, select, dateonly, datetime, and number fields filter by not matching. Text based fields filter by does not contain. (Note: Some fields do not support this operator.) multiselect, select, dateonly, datetime, number, text
'<' Less than dateonly, datetime, number
'>' Greater than dateonly, datetime, number
'<=' Less than or equal to dateonly, datetime, number
'>=' Greater than or equal to dateonly, datetime, number

 

Basic Example

In following example, the "operator" for the filter group is omitted. It is assumed to be "&", but in this case it makes no difference, since there is only one filter.

{
     "filters": [
           {
                "name": "person.firstname",
                "value": ["Mike"],
                "operator": "="
           }
     ]
}

Multiple Filters

In the following example, the "operator" for the filters are omitted. They are assumed to be "=".

The operator for the filter group is explicitly included and set to "&". It could also be "|".

{
     "filters": [
           {
                "name": "person.firstname",
                "value": ["Mike"]
           },
           {
                "name": "person.lastname",
                "value": ["Smith"]
           }
     ],
     "operator": "&"
}

Custom Field Filters

Assume that person profiles have a custom field, "rcf2145," that stores text data; the following example will demonstrate how to query on this custom field data. Other custom field types can be queried using "number", "date", "listnode", "person", or "job" filters, if the field supports those filter types.

{
     "filters": [
           {
                "name": "person.customfield2145.text",
                "value": ["test"]
           }
     ]   
}

Collections are similar, however, they do not get a dot. The same arguments are valid: "text", "number", "date", "listnode", "person", or "job". Assume now that there is a numerical custom field "rcf2231" that exists within a collection on the person profile; the following example will demonstrate how to query on this data, as well as how to specify a ">" operator. Note that this operator only works with numerical field types.

{
     "filters": [
           {
                "name": "person.collectionfield2231number",
                "value": ["1234"],
                "operator": ">"
           }
     ]
}

Date Filters

Dates in the Search API may be in either a "yyyy-MM-dd hh:mm a" or a  "yyyy-MM-dd" format (with no time added). All dates in the Search API will be assumed to be in the UTC time zone, regardless of user settings; if no time is specified, Midnight UTC will be assumed. If a date is not formatted properly, it will be ignored. This is in line with the core Search Engine. This brings Search API dates in line with dates elsewhere in the API.

If a date is used via the Search API that is in a format that is not recognized, then the search will assume the most lenient date range, allowing all results through. Date filters also do not support blank searches; i.e. a data must be specified when using the value or secondary value search filter.

For custom date ranges, the JSON will take a VALUE parameter as the initial start date and SECONDARYVALUE as the end date. An example of a Date search request is below:

{
    "filters": [
        {
            "secondaryValue": [
                "2013-06-10 11:59 PM"
            ],
            "name": "person.updateddate",
            "value": [
                "2013-05-01 12:00 AM"
            ],
            "operator": "="
        }
    ],
    "operator": "&"
}

iCIMS system admin users can access the Get SQL button on the search engine to show dates in the correct format and time zone to match what is selected in the filter. This function is restricted to iCIMS support.

Date filters use the "secondaryValue" of the filter. A date filter may omit either the value or the secondaryValue. Searches that include valid values for both will be constrained only to entries between those times. If a date is invalid or omitted, then that boundary is removed and the search will extend indefinitely.

The following example search will find all entries between midnight June 10th and June 17th of 2013:

{
     "filters": [
           {
                "name": "person.updateddate",
                "value": ["2013-06-10"],
                "secondaryValue": ["2013-06-17"]
           }
     ]
}

If the end date is omitted, the search will find all entries starting at 5:00 PM on September 5th, with no end boundary:

{
     "filters": [
           {
                "name": "person.updateddate",
                "value": ["2013-09-05 05:00 PM"]
           }
     ]
}

To get all entries before the specified date, omit the value and specify a secondaryValue.

And/Or Nesting

To combine filters in a more complicated way, use the "children" attribute on the filter group. For example, the following query could be used to find a person with a first name of "John" or "Jane", but always with a last name of "Doe".

{
     "filters": [
           {
                "name": "person.lastname",
                "value": ["Doe"]
           }
     ],
     "operator": "&",
     "children": [
          {
                "filters": [
                     {
                           "name": "person.firstname",
                           "value": ["John"]
                     },
                     {
                           "name": "person.firstname",
                           "value": ["Jane"]
                     }
                ],
                "operator": "|"
           }
     ]
}

This query uses a child grouping that contains the filters for checking the first name of John or Jane, using the "|" operator on the filter group. The top level filter group uses the "&" operator to compare the results of the child groups to the native filter it has in the top group.

Paging

Results are always sorted in ascending order by System ID. If there are more than 1000 results, only the first 1000 will be displayed. To fetch the next 1000 results, appending a filter on the ID. For example, assume the following query returns more than 1000 results:

{
     "filters": [
           {
                "name": "person.lastname",
                "value": ["Smith"]
           }
     ]
}

When reading through the results, keep track of the last system ID that is returned, which is guaranteed to be the greatest one.

Assume for the following example that the highest system ID returned by the above query is 1234. By modifying the query in the following way, the next 1000 results will be fetched:

{
     "filters": [
           {
                "name": "person.lastname",
                "value": ["Smith"]
           },
           {
                "name": "person.id",
                "value": ["1234"],
                "operator": ">"
           }
     ]
}

To fetch subsequent pages, replace the "1234" value with the new highest system ID from the previous page's results.

Responses

Links to the search endpoint should be added to the generic API information request results.

All profile and form references returned by the API will now include a "self" attribute that contains a link to the current profile via the API. All links that appear in the headers for all API integrations will now also appear in the JSON response body. The headers are not removed from API requests that already have them; the new "self" attributes exist in addition to the headers for previously existing requests.

The results will be in a standardized format, also formatted as JSON.

{
     "searchResults": [
           {
                "id": "1",
                "self": "LINK"
           },
           {
                "id": "2",
                "self": "LINK"
           }
     ]
}

The "id" is the System ID, which is useful for paging and making API requests to get more information about a specific profile. The "self" attribute provides a direct link to make a request for more information from that profile as a convenience, so you won't have to generate it yourself. The results will always be ordered by "id" in ascending order, so for paging, you only have to look at the last result in the JSON array.

If the search has no results, it will return an empty searchResults array:

{
     "errors": [
           {
                "errorMessage": "MESSAGE",
                "errorCode": "CODE"
           }
     ]
}

 

Error Handling

The following error messages can be sent as a response when searching the API:

  • Scenario: Must specify at least one filter.
  • Error Message: At least one filter must be specified
  • Scenario: Invalid filter or hidden filter
  • Error Message: The following filter is either not valid or hidden: [filter]
  • Scenario: Invalid filter operator
  • Error Message: The following filter operator is not valid in the given context: [operator]
  • Scenario: Invalid group operator
  • Error Message: The following group operator is not valid in the given context: [operator]
  • Scenario: Unrecognized filter attribute
  • Error Message: The following filter attribute is unrecognized: [attribute]
  • Scenario: Unrecognized group attribute: xxxx
  • Error Message: The following group attribute is unrecognized: [attribute]
  • Scenario: Unknown parsing error.
  • Error Message: An unknown parsing error occurred

Any invalid filters added into the API search query will be rejected and an error will be shown indicating which one is invalid. Blank filter names will be rejected and filter names that include criteria for the wrong search type. For example, the following are now invalid:

  • A filter where name is not defined at all.
  • A filter where name is defined as ''.
  • A filter on a person search that has a name of 'job.*' or vice versa.

When specifying an altogether invalid operator, the request will be denied. If you choose the wrong operator for a specific filter, the request will fail. If the query specifies an attribute with an unrecognized name (e.g., 'name1' instead of 'name'), the entire query will be rejected (even if the rest of the query is fine).

Valid operators for filters are different than for groups, and it validates based on context.

When specifying an invalid list node id, all results will be filtered out. Searches that do not specify at least one filter are rejected.

Schema API

View Documentation
Description

This endpoint returns the schema details (i.e., what JSON schema should you expect when you ask for the particular data) for a specified profile type, search results, search filters, list of iForms, or specific iForm. Note: iCIMS utilizes the industry standard JSON schema as defined on http://json-schema.org.

API Examples

Get the JSON schema for the specified profile type

This endpoint provides the JSON schema to expect when calling the Search API.

URL:   https://api.icims.com/customers/{customerId}/profiledefinitions/v1/{profileType}/schema

{profileType}

The type of profile. Acceptable values include person, job, company, submittal, source, sourceworkflow, onboard, onboardworkflow, room and connectevent.

Action Definition
Get:

Example Request:

GET /customers/1771/profiledefinitions/v1/job/schema HTTP/1.1
Host: api.icims.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json
Cache-Control: no-cache

Example Response Payload (truncated):

{
    "type": "object",
    "properties": {
        "jobtemplate": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "secondaryrecruiter": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "talentpools": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "talentpool": {
                        "type": "object",
                        "properties": {
                            "profile": {
                                "type": "string"
                            },
                            "id": {
                                "type": "integer"
                            },
                            "value": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "hiringmanager": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "positioncategory": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "formattedvalue": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "bonus": {
            "type": "string"
        },
        "fee": {
            "type": "object",
            "properties": {
                "amountstring": {
                    "type": "string"
                },
                "amount": {
                    "type": "number"
                },
                "currency": {
                    "type": "string"
                }
            }
        },
        "joblength": {
            "type": "number"
        },
        "startdate": {
            "format": "date",
            "type": "string"
        },
        [...]
    }
}

 

Get the JSON schema for the specified field

This endpoint provides the JSON schema to expect when calling a specific field from the Profiles API.

URL:   https://api.icims.com/customers/{customerId}/profiledefinitions/v1/{profileType}/{field}/schema

{field}

The WebService Field ID for the field.

Action Definition
Get:

Example Request:

GET /customers/1771/profiledefinitions/v1/job/department/schema HTTP/1.1
Host: api.icims.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json
Cache-Control: no-cache

Example Response Payload:

{
    "type": "object",
    "properties": {
        "department": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "formattedvalue": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            }
        }
    }
}

 

Get the JSON schema for search results

This endpoint provides the JSON schema to expect when calling the Search API.

URL:   https://api.icims.com/customers/{customerId}/search/resultsSchema

Action Definition
Get:

Example Request:

GET /customers/1771/search/resultsSchema HTTP/1.1
Host: api.icims.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json
Cache-Control: no-cache

Example Response Payload:

{
    "type": "object",
    "properties": {
        "searchResults": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "self": {
                        "type": "string"
                    },
                    "id": {
                        "type": "integer"
                    }
                }
            }
        }
    }
}

 

Get the JSON schema for search filters

This endpoint provides the JSON schema to expect when calling the Search API.

Action Definition
Get:

Example Request:

GET /customers/1771/search/filtersSchema HTTP/1.1
Host: api.icims.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json
Cache-Control: no-cache
 

Example Response Payload:

{
    "type": "object",
    "properties": {
        "children": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "name": {
                                    "type": "string"
                                },
                                "secondaryValue": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "value": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "operator": {
                                    "options": [
                                        "=",
                                        "!=",
                                        "<",
                                        ">",
                                        "<=",
                                        ">="
                                    ],
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "operator": {
                        "options": [
                            "&",
                            "|"
                        ],
                        "type": "string"
                    }
                },
                "required": [
                    "filters"
                ]
            }
        },
        "filters": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "secondaryValue": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "value": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "operator": {
                        "options": [
                            "=",
                            "!=",
                            "<",
                            ">",
                            "<=",
                            ">="
                        ],
                        "type": "string"
                    }
                }
            }
        },
        "operator": {
            "options": [
                "&",
                "|"
            ],
            "type": "string"
        }
    },
    "required": [
        "filters"
    ]
}

 

 

Get the JSON schema for iForms

This endpoint provides the JSON schema to expect when calling the "List all iForms accessible via web services" method described on iForms API.

URL:   https://api.icims.com/customers/{customerId}/forms/list/schema

Action Definition
Get:

Example Request:

GET /customers/1771/forms/list/schema HTTP/1.1
Host: api.icims.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json
Cache-Control: no-cache
 

Example Response Payload:

{
    "type": "object",
    "properties": {
        "forms": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "standardizedLevel": {
                        "type": "string",
                        "enum": [
                            "STANDARD",
                            "STANDARD_EDITED",
                            "CUSTOM",
                            "ACKNOWLEDGEMENT"
                        ]
                    },
                    "isPublicAnswers": {
                        "type": "boolean"
                    },
                    "displayName": {
                        "type": "string"
                    },
                    "formName": {
                        "type": "string"
                    },
                    "id": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    }
                }
            }
        }
    }
}

 

Get the JSON-schema for a specific iForm

This endpoint provides the JSON schema to expect when calling the "List out all questions for a specified Form" method described on iForms API.

URL:   https://api.icims.com/customers/{customerId}/forms/{formName}/meta/data_schema

Action Definition
Get:

Example Request:

GET /customers/1771/forms/Background_Check_template/meta/data_schema HTTP/1.1
Host: api.icims.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json
Cache-Control: no-cache
 

Example Response Payload:

{
    "type": "object",
    "properties": {
        "updatedby": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "signature": {
            "type": "boolean"
        },
        "BG_Phone": {
            "type": "string"
        },
        "formname": {
            "type": "string"
        },
        "LastName2": {
            "type": "string"
        },
        "updatedfor": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "Current_Addresses": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "entry": {
                        "type": "integer"
                    }
                }
            }
        },
        "Prim_Phone": {
            "type": "string"
        },
        "requestedby": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "BG_Address": {
            "type": "string"
        },
        "FirstName2": {
            "type": "string"
        },
        "Phones": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "entry": {
                        "type": "integer"
                    }
                }
            }
        },
        "Education": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "entry": {
                        "type": "integer"
                    }
                }
            }
        },
        "Employment": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "entry": {
                        "type": "integer"
                    }
                }
            }
        },
        "Subscriber_Name": {
            "type": "string"
        },
        "completedby": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "MiddleName2": {
            "type": "string"
        },
        "ME_MA_MN_NJ_OK_copy": {
            "type": "boolean"
        },
        "FrDate": {
            "format": "date",
            "type": "string"
        },
        "owner": {
            "type": "object",
            "properties": {
                "profile": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "BG_URL": {
            "type": "string"
        },
        "otherfirst": {
            "type": "string"
        },
        "TDate": {
            "format": "date",
            "type": "string"
        },
        "CA_copy": {
            "type": "boolean"
        },
        "BG_Company_Name2": {
            "type": "string"
        },
        "BG_Phone2": {
            "type": "string"
        },
        "Previous_Addresses": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "Prev1Addr2": {
                        "type": "string"
                    },
                    "entry": {
                        "type": "integer"
                    }
                }
            }
        },
        "otherlast": {
            "type": "string"
        },
        "requesteddate": {
            "type": "string"
        },
        "Aliases": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "entry": {
                        "type": "integer"
                    }
                }
            }
        },
        "BG_Company_Name": {
            "type": "string"
        },
        "References": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "entry": {
                        "type": "integer"
                    }
                }
            }
        },
        "BG_Address2": {
            "type": "string"
        },
        "updateddate": {
            "type": "string"
        },
        "Package": {
            "type": "string"
        },
        "completeddate": {
            "type": "string"
        },
        "status": {
            "type": "string"
        }
    }
}

Profiles API

View Documentation
Description

The Profiles Endpoint allows a user to access various profile types within the iCIMS Talent Platform and interact with the information housed within fields on those profiles. 

Profile Types

The list below contains all current profile types supported by the iCIMS Talent Platform, as well as each profile's profileType, which is necessary to access the profile via the API. (Refer to Add new Profile of specified type, below, for more information.) 

Note that not all clients have all profile types enabled.

  • Person Profile: people
  • Job Profile: jobs
  • Location/Company Profile: companies
  • New Hire Category Profile: newhirecategories
  • Talent Pool Profile: talentpools
  • Room Profile: rooms
  • Event Profile: connectevents

Permissions

The interaction of Profiles through the Profiles API will generally follow the same conventions as if a user were to access the information through the iCIMS Talent Platform. That is, if a user would be able to access a field or profile in the iCIMS Talent Platform, that field or profile should be present in the returned JSON when the same user accesses it via iCIMS Profiles API. (Conversely, if a user does not have access to a field in the Platform, they will not be able to return that field via iCIMS Profiles API.) These permissions are based on the credentials provided in the Authorization header.

GET

In order to be returned in the JSON, the field (or entire Profile) must:

  • Have a value.
  • Not be hidden by attribute configuration settings.
  • Not be hidden by Security Rules.
  • Not be hidden by Search Locks.
  • Not be hidden by Profile layout configuration (i.e., the tab that the field is on in the Platform cannot be hidden).

POST & PATCH

The same conventions apply for users attempting to save or update information through the Profiles API; if a user could save or update information in the Platform, they should be able to do so via the Profiles API. In addition, in order to save or update a field, that field must:

  • Pass field-specific validation.
  • Not be hidden by attribute configuration settings.
  • Not be locked by attribute configuration settings.
  • Not be hidden by Security Rules.
  • Not be hidden by Search Locks.
  • Not be hidden by Profile layout configuration (i.e., the tab that the field is on in the profile cannot be hidden).

     Note:

  • If the Profile is locked in attribute configuration settings, the user can create Profiles (POST) but cannot update them (PATCH). This mimics the behavior in the Platform.

  • Both POST and PATCH will validate that the Profile the user is trying to create or update has all of the required fields filled out. If a user sends a PATCH to update a Profile and the Profile is missing required fields, the PATCH will fail unless the required fields are filled in.

  • For Person Profiles, Roles affect validation when POST is used to create a new Person. If the folder used is a Role-specific folder, the required fields on the Role-restricted tabs are validated along with the general Person tab required fields. If using a PATCH, all of the Roles the Person Profile includes will be validated in the same fashion.
    • Example: When creating a candidate (Person Profile with the candidate folder), the required field checks will apply to all of the fields that are viewable to a person in general and the tabs restricted to candidate roles. When creating a Person Profile with a non-Role specific folder, the required field checks will apply to all of the fields that are viewable to a person in general with no Role-specific tabs.
  • For Person Profiles, Roles can also be assigned using the roles parameter. When using this parameter, required fields are not validated for the assigned role(s). To assign a role, set the specific role (candidate, employee or hiringmanager) to trueIf a role should not assigned, set it to false or omit it entirely from the call. Once a role is assigned, it cannot be removed.
    • Example: "roles": { "candidate": true, "employee": true, "hiringmanager": false }
    • Note: Roles can only be PATCHED via this parameter if at least one other field is included the payload. Roles cannot be PATCHED independently.
API Examples

Add new Profile of specified type

Expects a Profile JSON object. The JSON object is in the same form as when updating a Profile. The formats of each field when creating/updating vs. retrieving can be slightly different as well (see field types section for details on differences).

Examples below are shown for JobPerson, and New Hire Category Profiles.

Note: Certain fields should be given as IDs, including joblocation, hiringmanager, and jobowner.

URL:   https://api.icims.com/customers/{customerId}/{profileType}

{profiletype}

The identifier for people, jobs, companies, new hire categories, or any future custom Profiles. Note that this is case-sensitive.

Action Definition
Get:

Not Supported

Post:

Creating a Job Profile

https://api.icims.com/customers/1234/jobs

POST /customers/1234/jobs HTTP/1.1
Content-Type:application/json;charset=UTF-8

Host: api.icims.com

 

{

    "folder": {

        "id": "C17881",

        "value": "Approved Q3"

    },

    "jobtitle": "Data Support Analyst",

    "joblocation": 1049,

    "hiringmanager": 19981,

    "field17236": "This Field",

    "jobowner": 19831

}

 

Response:
HTTP/1.1 201 Created
Location:“https://api.icims.com/customers/1234/jobs/8”

Creating a Person Profile

https://api.icims.com/customers/1234/people

POST /customers/1234/people HTTP/1.1
Content-Type:application/json;charset=UTF-8

Host: api.icims.com

 

 

{

    "folder": {

        "id": "D32006",

        "value": "Cand:Unreviewed"

    },

    "email": "someguy@gmail.com",

    "lastname": "some",

    "firstname": "guy",

    "addresses": [

        {

            "addresstype": {

                "id": "D84002",

                "value": "Home"

            },

            "addresscountry": {

                "id": "D41001",

                "value": "United States"

            },

            "addressstreet1": "123 Streert",

            "entry": 1351,

            "addressstate": {

                "id": "D41001046",

                "value": "Texas"

            },

            "addresscity": "Austin"

        }

    ],

    "phones": [

        {

            "phonetype": {

                "id": "D83002",

                "value": "Home"

            },

            "phonenumber": "5121234567",

            "entry": 2104

        }

    ]

}

 

Response:
HTTP/1.1 201 Created
Location:“https://api.icims.com/customers/1234/people/18”

Creating a New Hire Category Profile

POST/newhirecategories
Content-Type: application/json;charset=UTF-8

{
    "folder": {
        "id": "D37002022001"
    },
    "title": "Test Hire Category",
    "overview": "Overview",
    "owner": 1234,
    "externaltitle": "External Title"
}

Response: HTTP/1.1 201 Created
Location:“https://api.icims.com/customers/1234/newhirecategories/1”

Patch: Not Supported
Delete: Not Supported

 

Retrieve and/or update basic Profile information

Retrieve basic information of a specific Profile

When retrieving information from a specific Profile, a JSON object of the Profile is returned. All Profiles have their own set of standard fields that are available (see the separate sections for each Profile type for their fields) along with the read-only fields idcreateddatecreatedbyupdateddate, and updatedby.

Custom fields are included with the attribute name field along with a numeric internal identifier for the field. For example, a custom field could look like field1234. See the field types page for details on how each field type differs in its representation.

When the fields parameter is not specified, the following fields are returned per workflow:

  • Person:
    • firstname
    • lastname
    • email
    • folder
    • phones
    • addresses
  • Job:
    • jobid
    • folder
    • jobtitle
    • hiringmanager
    • joblocation
    • recruiter
  • Company:
    • name
    • email
    • folder
    • addresses
  • Talent Pool:
    • title
    • externalid
    • owner
    • folder
  • New Hire Category:
    • title
    • externaltitle
    • folder

Update a specific Profile

When updating a specific Profile, the API expects a JSON object of the Profile in the same form as when creating a Profile, with only the fields to be updated. An id is not necessary, because the URL indicates the Profile the PATCH is based on. The formats of each field when creating/updating vs. retrieving can be slightly different as well (see the field types page for details on differences).

URL:  https://api.icims.com/customers/{customerId}/{profileType}/{profileId}

{profileID}

Identifier of the Profile, such as PersonID, JobID, CompanyID. Note that this is case-sensitive.

Note: You can also use the format below to GET basic Person profile information:

https://api.icims.com/customers/{customerId}/people/by-email?email={emailaddress}

{emailaddress}

The Person profile’s Email Address

Action Definition
Get:

Retrieving a Person Profile https://api.icims.com/customers/1234/people/5

HTTP/1.1 200 OK
Headers:
{Cache-Control=[no-cache,no-store,no-transform,must-revalidate,max-age=0,s-maxage=0],
Content-Type=[application/json;charset=UTF-8], Content-Language=[en_US], 
Content-Encoding=[UTF-8], 
Link=[https://api.dev.icims.com/customers/448/people/146985;rel="self";title="The current profile being viewed.",], 
X-Content-Type-Options=[nosniff], 
X-TRANSACTION=[{8C267333-BFCC-321E-2879-487A0FC15E16}], 
X-RateLimit-Limit=[50000], 
X-RateLimit-Remaining=[49998], 
X-RateLimit-Reset=[26348], 
Date=[Thu, 04 Oct 2012 16:40:52 GMT], 
Content-Length=[348]}

{

    "firstname": "John",

    "lastname": "Smith",

    "folder": {

        "id": D1234,

        "value": "Cand: Active"

    },

    "email: "john.smith@cool.com",

    "phones": [

        {

            "phonenumber": "212-555-5555",

            "phoneextension": "233"

        }

    ],

    "addresses": [

        {

            "addressstreet1”: "123MainStreet",

            "addressscity": "Hazlet",

            "addresscountry": {

                "id": D456,

                "value": "UnitedStates"

            }

            "entry": 12

        }

    ]

}

 

Retrieving a New Hire Category Profile

GET /newhirecategories/{profileID}

{
    "folder": {
        "id": "D37002022001",
        "value": "Active",
        "formattedvalue": "Active"
    },
    "title": "Test Hire Category",
    "links": [
        {
            "title": "The current profile being viewed.",
            "rel": "self",
            "url": "https://api.dev.icims.com/customers/1234/newhirecategories/1"
        }
    ],
    "externaltitle": "External Title"
}

Post: Not Supported
Patch:

Updating a Person Profile https://api.icims.com/customers/1234/people/7
 
Content-Type:application/json;charset=UTF-8

{

    "folder": {

        "id": "D123"

    },

    "middlename": "Edward"

}

 

Response:
HTTP/1.1 204 No Content
Location:https://api.icims.com/customers/1234/people/7

Updating a New Hire Category Profile

PATCH /newhirecategories/{profileID}
Content-Type:application/json;charset=UTF-8

{
    "folder": {
        "id": "D37002022001"
    },
    "title": "Test Hire Category",
    "overview": "Overview",
    "owner": 1234,
    "externaltitle": "External Title"
}

RETURN HTTP/1.1 204 No Content
Location:https://api.icims.com/customers/1234/newhirecategories/1

Delete: Not Supported

 

Get and/or update only the specific fields on the specified Profile

See below for an example updating specific fields on the Person profile.

URL:  https://api.icims.com/customers/{customerId}/{profileType}/{profileId}?fields={fieldId1,fieldId2,fieldId3}

{fieldId1,fieldId2,fieldId3}

Comma delimited list of fields to include from the requested Profile.

Note: You can also use the format below to GET specific fields on the specified Person profile:

https://api.icims.com/customers/{customerId}/people/by-email?email={emailaddress}?fields={fieldId1,fieldId2,fieldId3}

{emailaddress}

The Person profile’s Email Address

Action Definition
Get:

Get only the specific fields on the specified Profile https://api.icims.com/customers/1234/people/5?fields=folder,field1579,createdby

HTTP/1.1 200 OK
Content-Type:application/json;charset=UTF-8
Link:<https://api.icims.com/customers/1234/people/5/workflows>;rel=”workflows”;title=”View the workflows types that this profile is associated to.”;

 

{

    "id": 5,

    "folder": {

        "id": 1234,

        "value": "Cand:Active"

    },

    "createdby": {

        "id": 3,

        "value": "Bob Smith",

        "profile": "https://api.icims.com/customers/1234/people/3/"

    },

    "field1579": "Advanced"

}

Post: Not Supported
Patch: The fields query parameter is ignored in this case, and all fields sent in the JSON are updated.
Delete: Not Supported

 

Get the System ID of a Job, Person, or Company Profile using the External ID

This endpoint allows a vendor to exact-match search based on a Job, Person, or Company's External ID. If found, the profile's System ID will be returned.

Note that this endpoint can only be used to search for Job, Person, and Company Profiles at this time.

URL:   https://api.icims.com/customers/{customerId}/{profileType}/lookup?type=externalid&value={externalId_value}

{externalId_value}

The external ID of the Job, Person, or Company

Action Definition
Get:

Example request:

 

GET /customers/1771/jobs/lookup?type=externalid&value=12345 HTTP/1.1

Host: api.icims.com

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Content-Type: application/json

Cache-Control: no-cache

 

Example Response Payload:

 

{

    "id": 1013

}

Errors:

The following errors may be returned.

If no profiles match the provided external ID:

{

    "errors": [

        {

            "errorMessage": "No profile found matching external ID",

            "errorCode": 33

        }

    ]

}

 

If more than one profile matches the provided external ID:

 

{

    "errors": [

        {

            "errorMessage": "More than one profile matches external ID",

            "errorCode": 33

        }

    ]

}

 

If attempting to look up a profile that does not support this endpoint:

 

{

    "errors": [

        {

            "errorMessage": "For input string: \"lookup\"",

            "errorCode": 2

        }

    ]

}