Close Sidebar
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

            }

        ]

    }