Does Idencia have an API I can use to integrate with other systems?

In this article, get an in depth description of Idencia's available API calls


Applicable Subscription Levels:   

STARTER  |  PRO  |  PRO+  |  ENTERPRISE


Overview

There are 5 basic tasks that can be performed via GET, POST and PUT calls to the Idencia Public API.

In this article, topics include:

Configuration

Get a List of Items

Get a List of Jobs

Create a New Item Type

Create a New Item

Create a New Job

Create a New Custom Item Type (within an existing Job)

Create a New Custom Property

Update an Existing Item

Update an Item's Custom Property

Update an Existing Job

Update an Item Type

Update a Custom Item Type (within a Job)

Also included at the end of this article is a downloadable file of Executable API Descriptions in the form of a JSON Postman App Collection.

Configuration

Contact your customer liaison for instructions on configuring your site with an API key.

Get a List of Items

This call returns items that match the specified parameters.

Endpoint (URL)

/api/Items

Content-Type

application/json

Method

GET

Authorization

N/A

URL Parameters

Name

Notes Data Type
modifiedAfter limits items returned to items with a modified date after the given date

UTC DateTime

Format: yyyy-MM-ddThh:mm:ss

modifiedBefore limits items returned to items with a modified date before the given date

UTC DateTime

Format: yyyy-MM-ddThh:mm:ss

createdAfter limits items returned to items with a create date after the given date

UTC DateTime

Format: yyyy-MM-ddThh:mm:ss

createdBefore limits items returned to items with a create date before the given date

UTC DateTime

Format: yyyy-MM-ddThh:mm:ss

jobNumber limits items returned to items within the given Job Number Varchar(50)
itemTypeNumber limits items returned to items with the given Item Type Number Varchar(100)
serialNumber limits items returned to just the item with the given Serial Number Varchar(50)
itemGroupNumber limits items returned to just items with the given Item Group Number Varchar(50)
processName limits items returned to just items with the given Process attached Varchar(100)
itemStatus limits items returned to just items with the given Item Status Varchar(100)

 

Example:

https://<server name>.idencia.net/api/items?modifiedafter=<date and time>&jobNumber=<number>

  • Where <server name> is the sub-domain name for the Idencia website
  • Where <date and time> is a date/time formatted as "yyyy-MM-ddThh:mm:ss". The date and time should be converted to UTC time zone.
  • Where <number> is the Job Number to which the items should belong

For the example call above, the API will return an XML tree of all Items in the specified Job that have been modified since the specified date and time.  

Response:

The format of the XML response will contain the following:

<ArrayOfItemType> - the top level of the returned list of items.

  • <ItemType> - Under this tag is all of the information about the Item Type of this Item.
    • <Id> - The internal unique identifier for the item type.  This is a 16 byte GUID.
    • <Number> - The item type's Number field.
    • <Name> - The item type's Name field
    • <ModifiedOnServerUtc> - The UTC date/time stamp the item type was last modified on the server.
    • <CustomProperties> - Under this tag are all of the Item Type Custom Properties that have values.
      • <CustomProperty> - (multiple) - Under this tag will be Name and Value pairs for each Item Type Custom property that has a value
        • <Name> - The name of the Custom Property
        • <Value> - The value of the Custom Property
    • <Items> - Under this tag will be listed each item within the Item Type
      • <Item> (multiple) - a single item in the list of items that match the request parameters
        • <Id> - The internal unique identifier for the item.  This is a 16 byte GUID.
        • <IsDeleted> - A flag to indicate if the item has been deleted.  'true' if deleted, or 'false' if not deleted.
        • <ModifiedOnServerUtc> - The UTC date/time stamp the item was last modified on the server.
        • <CreatedById> - The unique identifier of the user who created the item.
        • <CreatedBy> - The first and last name of the user who created the item.
        • <CreatedOnUtc> - The UTC date/time stamp the item was created.
        • <CurrentPhase> - The name of the most recent Process Phase
        • <CustomProperties> - Under this tag are all of the Item Custom Properties that have values
          • <CustomProperty> - Under this tag will be Name and Value pairs for each Item Custom property that has a value
            • <Name> - The name of the Custom Property
            • <Value> - The value of the Custom Property
        • <HasFailedSteps> - A flag to indicate if the Item has Pass/Fail steps in the current process marked as Failed. 'true' if there are failed steps, 'false' if there are no failed steps.
        • <IsProcessComplete> - A flag to indicate if the Item is currently running a process or not.  'true' if no process is running, or 'false' if a process is running.
        • <SerialNumber> - The serial number assigned to the Item.
        • <ItemStatus> - The status of the Item
        • <CreatedOnSourceServerUtc> - The date/time the Item was created
        • <Process> (multiple) - Under this tag is all of the information about a process.  If more than one process has been run on an item, this tag is used for each process.
          • <Name> - The name of the Process.
          • <Phases> (multiple) - Under this tag are all of the Process Phases
            • <Phase> (multiple) - Under this tag are the Phase properties
              • <Name> - The name of the Phase
              • <Steps> - Under this tag are all of the steps in the Phase
                • <Step> (multiple) - This tag indicates a step within this phase of the process.
                  • <Name> - The name of the step.
                  • <StepType> - The type of step.  
                  • <ModifiedOnServerUtc> - The UTC date/time stamp the step was last modified on the server.
                  • <ModifiedById> - The unique identifier of the user who recorded the step.
                  • <ModifiedBy> - The first and last name of the user who recorded the step.
                  • <StepResult> - The recorded value of the step.
                    If Step Type is "Pass, Fail", result can be "Pass" or "Fail" or "N/A".
                    If Step type is "Set *Custom Property Name*", result is the value of the custom property
                  • <ModifiedOnUtc> - The UTC date/time the step was recorded on the device.

In addition to the parameters listed above, there are two additional parameters that can be set in Azure that will affect the data returned by the API.

Item Grouping: The value of this parameter must be an Item Custom Property name.  If this setting is defined, the XML tree that is returned will include an <ItemGrouping> node for each different value of the custom property defined for the Item Grouping.  For example, if you have an Item Custom Property called "Inspection Date" and would like items in the XML tree to be grouped by Inspection Date, this setting can provide that grouping.

Item Filter:  The value of this parameter is an expression that controls which items are returned from the API call. If this setting is not used, ALL items modified after the requested date are returned.  If the setting is used, then ONLY the items where the result of the expression is True are returned.  For example, you can use this filter to make sure the API only returns items that have been inspected by setting the parameter to the expression '([Inspection Date] != NULL)'.
These two parameters are set in Azure and cannot be overridden via the GET call, nor updated by the customer.  These settings can only be set by Idencia staff.  Please contact your customer liaison for additional information.

Get a List of Jobs

This call retrieves Jobs that match the specified parameters

Endpoint (URL)

/api/Jobs

Content-Type

application/json

Method

GET

Authorization

API Key
Body Parameters

Name

Notes Data Type
key Provided during API configuration
Name limits jobs returned to jobs with the given name

Varchar(100)

CompletedStatus limits jobs returned to jobs with the given status True or False
CompletionDate limits jobs returned to jobs completed on the given date Date/Time
CustomerName limits jobs returned to jobs with the given name Varchar(100)
Number limits jobs returned to jobs with the given number Varchar(50)

 

Example:

URL

https://<server name>.idencia.net/api/jobs

  • Where <server name> is the sub-domain name for the Idencia website

Example Body:  

{
    "Key" : "54443053-dbe0-43fb-aef3-c69ee2a3b1b8",
    "Name" : "",
    "Number" : "1003",
    "CompletedStatus" : null,
    "CompletionDate" : "",
    "CustomerName" : ""
}

For the example call above, the API will return an array of properties associated with the specified Job number.

The format of the returned JSON response will include the following:

  • "Name" - The name of the Job
  • "Number" - The number of the Job
  • "CreatedOnUtc" - The date/time the Job was created
  • "IsItemsLimited" - Are the items limited to the number required? (True/False)
  • "CompletedStatus" - Is the Job complete? (True/False)
  • "CompletionDate" - The date/time the Job was completed (if complete)
  • "CustomerName" - The name of the Job's customer
  • "ProcessName" - The name of the Job's default process
  • "CustomProperties" - An array of custom property names and values
    • "CustomPropertyName" - The name of the custom property followed by the value

Create a New Item Type

This call will create a new Item Type (not job specific)

Endpoint (URL)

/api/ItemType

Content-Type

application/json

Method

POST

Authorization

API Key

Body Parameters

Name

Notes Data Type
key Provided during API configuration
number the unique Number for the new Item Type Varchar(100)
name the name of the new Item Type Varchar(100)

process

the name of the Default Process to run when a new Item of this type is scanned for the first time (this can be an empty string, "", for no default Process)

Varchar(100)

productsegment

the NCDOT product segment of the Item Type

NOTE: omit this if you are not an NCDOT customer using the HiCAMS integration

Valid Values:

Precast
Prestressed
Neither

properties

the list of custom property name and value pairs that should be added to the Item Type 

 

 
Example:

In this example an Item Type with the Number "Span A - 93-7 1/2" and Name "39x36 Box Beams" will be created. A large list of Custom Properties will be set for this Item Type.

{

    "Key": "99999999-99aa-aa99-99aa-9a9a9a9a9a9a",
    "Name":"39x36 Box Beams",
    "Number":"Span A - 93-7 1/2",
    "Process":"",
    "Properties": [
        {
            "Name":"Material",
            "Value":"Prestressed Concrete Box Beams, 39in"},
        {
            "Name":"Material Type",
            "Value":"Prestressed Concrete Members - E"},
        {
            "Name":"Material ID",
            "Value":"60534"},
        {
            "Name":"Material Type ID",
            "Value":"125"},
        {
            "Name":"Producer",
            "Value":"Eastern Vault Company - Princeton, WV"},
        {
            "Name":"Producer ID",
            "Value":"PS24"},
        {
            "Name":"Unit Type",
            "Value":"LF"},
        {
            "Name":"Unit Value",
            "Value":"93.625"},
        {
            "Name":"Bridge Number",
            "Value":"850034"},
        {
            "Name":"Station",
            "Value":"14"},
        {
            "Name":"Station Fraction",
            "Value":"43"},
        {
            "Name":"Location",
            "Value":"NC 104"},
        {
            "Name":"County",
            "Value":"084"},
        {
            "Name":"NCDOT Contract Number",
            "Value":"C203509"},
    ]
}
 
Result Codes  
200 OK
400 this is returned if the request is bad due to various reasons including:
  • Item Type's Process name does not exist in database.
  • Item Type's Property name does not exist in database.
  • Item Type's Property value does not match property type.
  • The API Key does not exist in the database.
401 If authorization key is invalid or not exists
404 An item with a particular number does not exist
409 A property can not be updated
500 This is returned if the Item Type Number already exists in the database

 

Create a New Item

This call will create a new Item with the specified properties.

Endpoint (URL)

/api/Item

Content-Type

application/json

Method

POST

Authorization

API Key

Body Parameters

Name

Notes Data Type
key Provided during API configuration
number the unique Serial Number for the new Item Varchar(50)
itemtype the number of the Item Type to use for this Item Varchar(100)
properties the list of custom property name and value pairs that should be added to the Item  
Custom Property Parameters
name the name of the item custom property Varchar(100)
value the value of the item custom property dependent on datatype
 

Example:

In this example, an Item with the Serial Number "123456789" will be created using the item type "C203509-Span A - 93-7 1/2".  Custom Properties "Concrete Mix", "Pour Date" and "Pour Number" are set to the associated values for this Item.

{
    "Key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",
    "Number":"123456789",
    "ItemType":"C203509-Span A - 93-7 1/2",
    "Properties": [
        {
            "Name":"Concrete Mix",
            "Value":"24PVUNC785NVPSE"},
        {
            "Name":"Pour Date",
            "Value":"12/12/2015"},
        {
            "Name":"Pour Number",
            "Value":"1"}
    ]
}

 

Result Codes 
200 OK
400 this is returned if the request is bad due to various reasons including:
  • Item's Item Type Number does not exist in the database.
  • Item's Custom Property name does not exist in database.
  • Item's Custom Property value does not match property type.
  • The API Key does not exist in the database.
401 If authorization key is invalid or not exists

 

Create a New Job

This call will insert a new Job.

Endpoint (URL)

/api/Job

Content-Type

application/json

Method

POST

Authorization

API Key

Body Parameters

Name

Notes Data Type
key Provided during API configuration
number the unique number for the new Job Varchar(50)
name the name of the new Job Varchar(100)
customer the name of the Job's customer

This can be an empty string ("") for no Customer.

isitemslimited

true or false

Should Item Types in the Job be limited to the number required?

iscompleted

true or false

Is the Job complete?

defaultprocess the default process to be applied to all Custom Item Types in the Job  
customproperties the list of custom property name and value pairs that should be added to the Job  
 

Example:

In this example, a Job with the number 123456789 and name "Test Job 123456789" will be created with the settings and custom property values described in the code block below.  

{
    "key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",
    "number": "123456789",
    "name": "Test Job 123456789",
    "customer": "Test Customer 2",
    "IsItemsLimited": false, //true and false
    "IsCompleted": false, //true and false
    "defaultprocess": "NCR", 
    "customproperties": {
        "Address": "Address Line 1",
        "City": "New York"
    }
}
 
Result Codes 
200 OK
400 this is returned if the request is bad due to various reasons including:
  • The specified Customer does not exist 
  • A specified Custom Property does not exist
  • A specified Custom Property value does not match the property type
  • The API Key does not exist in the database.
401 If authorization key is invalid or not exists

 

Create a New Custom Item Type (within an existing Job)

This call will insert a new Custom Item Type within the specified Job.

Endpoint (URL)

/api/CustomItemType

Content-Type

application/json

Method

POST

Authorization

API Key

URL Parameters

Name

Notes Data Type

jobNumber

the unique Number for the Job into which the Custom Item Type will be inserted

Varchar(100)

Body Parameters

Name

Notes Data Type
key Provided during API configuration
number the unique Number for the new Item Type Varchar(100)
name the name of the new Item Type Varchar(100)

defaultprocess

the name of the Default Process to run when a new Item of this type is scanned for the first time (this can be an empty string, "", for no default Process)

Varchar(100)

quantityrequired

the quantity of the Item Type that will be required

Integer

customproperties

the list of custom property name and value pairs that should be added to the Item Type 

 

 

Example:

Endpoint:   /api/CustomItemType/jDR556

In this example a Custom Item Type with the Number "BB-12A" and Name "Bridge Beam 12A" will be created in Job DR556. A large list of Custom Properties will be set for this Item Type.

{
    "key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",
    "number": "BB-12A",
    "name": "Bridge Beam 12A",
    "defaultprocess": "",
    "quantityrequired": 10,
    "customproperties": {
        "design depth (in)": 25,
        "design width (in)": 10,
        "design length (in)": 35
    }
}
 
Result Codes
200 OK
400 this is returned if the request is bad due to various reasons including:
  • Job does not exist in database.
  • Item Type's Process name does not exist in database.
  • Item Type's Custom Property name does not exist in database.
  • Item Type's Property value does not match property type.
  • API Key does not exist in the database.
401 If authorization key is invalid or not exists
404 An item with a particular number does not exist
409 Any property can not be updated
500 This is returned if the Item Type Number already exists in the database

 

Create a New Custom Property

This call will insert a new Custom Property of the specified type and category.

Endpoint (URL)

/api/CustomProperty/{{Category}}

Content-Type

application/json

Method

POST

Authorization

API Key

URL Parameters

Name

Notes

 Job

 Used when creating Job Custom Properties

Item

Used when creating an Item Custom Property

ItemType

Used when creating an Item Type Custom Property

Body Parameters

Name

Notes Data Type
key Provided during API configuration
custompropertytype the datatype for the custom property

Valid Values:

Numeric, Date, Text

name the name of the new Custom Property Varchar(100)

showinapp

true or false

Should the custom property appear in the mobile app?

 
Example:

Endpoint:   /api/CustomProperty/Job

In this example a Text, Job Custom Property with the Name "Delivery Address".  This custom property will not appear in the mobile application.

{

    "key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",
    "CustomPropertyType": "Text",
    "name": "Delivery Address",
    "showinapp": false
}
Result Codes  
200 OK
400 this is returned if the request is bad due to various reasons including:
  • Custom Property Name, Type & Category combination already exists
  • The API Key does not exist in the database
  • The Property Type is invalid
  • The Category is invalid
401 If authorization key is invalid or not exists
404 An item with a particular number does not exist
409 Any property can not be updated
500 This is returned if the Item Type Number already exists in the database

 

Update an Existing Item

This call will update the Item Type, Job, and/or one or more Custom Properties of the specified Item.

Endpoint (URL)

/api/Item

Content-Type

application/json

Method

PUT

Authorization

API Key

Body Parameters

Name

Notes Data Type
key Provided during API configuration
number the unique Serial Number for the Item being updated  
job (optional) the new job number for the Item  
ItemType the number of the new Item Type or Custom Item Type for this Item  
properties (optional)

the list of Item custom property values to be updated for this Item

Item custom properties not included in this list will be ignored; NULL values must be expressly set in the call

 
Custom Property Parameters
name the name of the item custom property  
value the value of the item custom property  
 

Example:

{
    "key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",  
    "number": "1558440247",
    "job":"test job",
    "itemtype": "test custom item type",
    "properties": [
        {
            "name": "Form ID",
            "value": "1"
        }
    ]
}

Result Codes 
200 OK
400 this is returned if the request is bad due to various reasons including:
  • An item with the specified serial number does not exist.
  • Item's Item Type Number does not exist in the database.
  • Item's Custom Property name does not exist in database.
  • Item's Custom Property value does not match property type.
401 If authorization key is invalid or not exists
404 an item with that unique serial number does not exist
409 a property cannot be updated
 
 
 
Update an Item's Custom Property

This call will update a single custom property for the specified Item.

Endpoint (URL)

/api/Item/customProperty

Content-Type

application/json

Method

PUT

Authorization

API Key

Body Parameters

Name

Notes Data Type
key Provided during API configuration
ItemNumber the unique Serial Number for the Item being updated  
CustomPropertyName name of the Item custom property being updated  
CustomPropertyValue value of the custom property being updated  

 

Example:

{
    "key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",
    "ItemNumber": "1557923345",
    "CustomPropertyName":"Date Produced",
    "CustomPropertyValue":"34"
}
Result Codes  
200 OK
400 this is returned if the request is bad due to various reasons including:
  • Item's Custom Property name does not exist in database.
  • Item's Custom Property value does not match property type.
401 If authorization key is invalid or not exists
404 an item with that unique serial number does not exist
409 a property cannot be updated
 
 
Update an Existing Job

This call will update one or more properties of the specified Job

Endpoint (URL)

/api/Job/{{jobNumber}}

Content-Type

application/json

Method

PUT

Authorization

API Key

URL Parameters

jobNumber the Job to be updated

Body Parameters

Name

Notes Data Type
key Provided during API configuration
name the new job name Varchar(100)
customer the new job customer Varchar(100)
isitemslimited

true or false

Should Item Types in the Job be limited to the number required?

Click here for more information about limiting Item Types to the number required

iscompleted

true or false

Is the Job complete?

Click here for more information about completing Jobs.

defaultprocess the default process to be applied to all Custom Item Types in the Job Click here for more information about the default process specified in a Job.
customproperties (optional) the list of custom property name and value pairs that should be added to the Job Custom properties not included in this list will be ignored; NULL values must be expressly set in the call

 

Example:

Endpoint:   /api/Job/98765

{
    "key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",
    "name": "Update Demo job 2",
    "customer": "",
    "IsItemsLimited": false, //true and false
    "IsCompleted": false, //true and false
    "defaultprocess": "NCR"
     }
}

Result Codes  
200 OK
400 this is returned if the request is bad due to various reasons including:
  • The specified Custom Property name does not exist in database.
  • The specified Custom Property value does not match property type.
  • The job does not exist
  • The customer name does not exist in the database
  • The API Key does not exist
401 If authorization key is invalid or not exists
409 a property cannot be updated
 
 
Update an Item Type

This call will update one or more properties of the specified Item Type

Endpoint (URL)

Endpoint:  /api/ItemType/{{itemTypeNumber}}

Content-Type

application/json

Method

PUT

Authorization

API Key

URL Parameters

itemTypeNumber the Item Type Number to be updated

Body Parameters

Name

Notes Data Type
key Provided during API configuration
name the new Item Type name Varchar(100)
informationurl (optional) the url where information about the Item Type can be found  
defaultprocess (optional) the new default process for the Item Type  
customproperties (optional) the list of custom property name and value pairs that should be added to the Job Custom properties not included in this list will be ignored; NULL values must be expressly set in the call

 

Example:

/api/ItemType/123456

{
    "key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",
    "name": "new Item Type name",
    "informationurl": "",
    "defaultprocess": "",
    "customproperties": {
          "design depth": 50,
          "design height": 110,
          "design length": 11,
          "material": "test"
     }
}

Result Codes  
200 OK
400 this is returned if the request is bad due to various reasons including:
  • The specified Custom Property name does not exist in database.
  • The specified Custom Property value does not match property type.
  • The Item Type does not exist
  • The customer name does not exist
  • The API Key does not exist in the databas
401 If authorization key is invalid or not exists
409 a property cannot be updated

 

Update a Custom Item Type (within a Job)

This call will update one or more properties of the specified Custom Item Type

Endpoint (URL)

Endpoint:  /api/CustomItemType/{{jobNumber}}/{{customItemTypeNumber}}

Content-Type

application/json

Method

PUT

Authorization

API Key

URL Parameters

customItemTypeNumber the Custom Item Type Number to be updated
jobNumber the Job Number to which the Custom Item Type belongs

Body Parameters

Name

Notes Data Type
key Provided during API configuration
name the new Item Type name Varchar(100)
informationurl (optional) the new url where information about the Item Type can be found Varchar(max)
quantityrequired

the new quantity of the Item Type that will be required

Integer

customproperties (optional) the list of custom property name and value pairs that should be added to the Job Custom properties not included in this list will be ignored; NULL values must be expressly set in the call

 

Example:

/api/CustomItemType/12345/9875

{
    "key": "jj5693ec-17dc-4e27-accf-db840a76bfd7",
    "name": "Updated Item Type name",
    "informationurl": "https://myintranetsite.com/ItemTypeInfo",
    "defaultprocess": "Pre Pour Inspection",
    "customproperties": {
          "design depth": 50,
          "design height": 110,
          "design length": 11,
          "material": "test"
     }
}

Result Codes  
200 OK
400 this is returned if the request is bad due to various reasons including:
  • The specified Job Number does not exist in the database.
  • The specified Custom Property name does not exist in the database.
  • The specified Custom Property value does not match property type.
  • The Item Type does not exist
  • The specified Default Process does not exist
  • The Quantity Required is missing or less than 1
  • The API Key does not exist in the database
401 If authorization key is invalid or not exists
409 a property cannot be updated

 

Postman collection

Click the link below to download a sample Postman Collection.

Idencia API - Postman Collection (JSON)