Logo
My activities

Resolver Core API - Examples

About the Resolver Core API

The Core API is a RESTful web service that leverages JSON for both request and response payloads. Some URLs include inline parameters or query parameters, while some URLs take POST payloads to execute. The HTTP verbs GET, PUT, POST, and DELETE are used throughout the API where appropriate.

The API powers the Core user interface, and offers a complete set of functionality for the application. Everything that can be done through the Core user interface can be achieved (with varying amounts of difficulty) through the API. The API can be explored and tested through Swagger, a web-based API browser.ob

Before continuing, please review the Resolver Core API - Getting Started article for information on authentication options and obtaining an API Key.

About this Article

This article aims to provide detailed examples for using a few of Core's most useful API endpoints for moving data to and from Core. The information provided should allow you to achieve the following:

  • Push objects, fields, role assignments and relationships to Core, individually or in batch.
  • Pull objects, fields, role assignments and relationships from core, individually or in batch.
  • Find the unique identifiers required to map objects, fields and relationships to your Resolver Core applications.

Please Note

  1. This article is a work in progress, and is intended for early adopters.  The API endpoints described below are subject to change without warning. Resolver is currently in the process of formalizing our Core API support. When complete, this article will transition to the Resolver Core Knowledge Base, and will include an official support policy.
  2. This article assumes administrative familiarity with Resolver Core. If training/assistance is required, please contact your Resolver Professional Services project team (for new customers) or your Resolver Customer Success Manager (for existing customers).

Examples

The following API examples are provided in cURL, a simple command line data transfer utility included with most common operating systems, including Windows, Mac and Linux.

CURL examples are automatically generated when a command is executed through Swagger.

cURL on Windows:

CURL is included in Windows 10 as a command line utility:

mceclip1.png

Before executing a cURL command in Windows, make sure to replace all single quotes [ ' ] with double quotes [ " ]. Attempting to execute a command using single quotes will result in the following error:

curl : (1) Protocol https not supported or disabled in libcurl

When using cURL in Windows PowerShell, make sure to call curl.exe as Microsoft has make curl a default alias for Invoke-WebRequest:

mceclip2.png

Authentication

The following cURL examples assume authentication via API Key. If you elect to authenticate with user credentials instead, you will need to provide the session bearer token in place of an API Key.

 

API Limitations

Resolver Core does not currently have a mechanism for calling an external system's API. All communication must originate from outside of Core.

Help! The API endpoint I'm interested in isn't listed here. What now?

The Core API is fully open to our customers. If you can perform an action through the UI, that same action can be performed via the API.

However:

  • Core uses dozens of API endpoints, many of which were only intended to serve the user interface. Providing full documentation for every endpoint is outside the scope of this article.
  • Some actions may involve making numerous API calls, working asynchronously, or parsing complex payloads.

If you require assistance, please contact Resolver Support.

The following resources may also help:

  1. Explore the API in the Swagger web interface:

    The Swagger page is accessible from inside Core under Settings > Tools:

    mceclip0.png

    or directly at:

    https://YOUR_ENVIRONMENT.resolver.com/api?

    Swagger provides access to all Core API endpoints, organized by service:
    mceclip11.png

    When exploring an endpoint, make note of:
    1. The Response Body model and example:
      mceclip4.png

      mceclip5.png
    2. The response content type, parameter descriptions and sample cURL output:
      mceclip6.png
    3. The returned response body and response code:
      mceclip7.png
    4. The request body model and example (for endpoints that accept a json body):
      mceclip8.png

      mceclip10.png
      Tip: clicking on the example will copy it to the body field.
  2. Observing API calls live in a web browser:

    Remember: The Core API is primarily used by the Core user interface. The best way to see how the API is used is to observe it in action in your web browser:

    mceclip0.png

    mceclip2.png

    mceclip3.png

    This will allow you to explore:
    1. the request method, destination and response code
    2. the request headers
    3. the response headers
    4. the response body
    5. a formatted, expandable preview of the response body (if the returned body is JSON)

About Unique IDs in Core

Every object and every configuration element in Core is represented by two unique identifiers: Internal ID and External Reference ID. Objects also have a third: Unique ID.

Internal ID

Environmentally unique internal identifier

  • Intended for internal use within Core
  • Numeric
  • Automatically assigned when an object or configuration element is created
  • Unique within the environment
  • Can not be changed
  • Visible in Swagger and in the the URL for Objects and some configuration elements:
     Object:
    mceclip22.png
    {
    "id": 1246,
    "name": "My Object",
    "description": "",
    "externalRefId": "CA_127365123",
    "uniqueId": "57",
    "objectTypeId": 54634,
    .
    .
    .
    }

    Object Type:
    mceclip23.png

    {
    "id": 54634,
    "name": "Object Type 1",
    "pluralName": "",
    "description": "",
    "monogram": "OT1",
    "nameKey": "app:objectType:name:7e0a7a5a-82dd-4589-8242-8ab47edf5ff8",
    "descriptionKey": "app:objectType:description:f20b5af6-2d6a-4eab-8a29-87f335d31f4f",
    "pluralNameKey": "app:objectType:pluralName:364bb151-f951-413b-828a-4f6ef24f0fbd",
    "monogramKey": "app:objectType:monogram:e4ad9aa1-ddc7-43d4-899a-706f365cb186",
    "color": "",
    "objectLifeCycleId": 70978,
    "externalRefId": "07d511b1-9401-4c8a-a01a-a89e25673d81",
    "created": "2019-03-29T21:36:59.594Z",
    "modified": "2020-02-09T03:40:57.758Z",
    .
    .
    .
    }

External Reference ID

Organizationally unique external identifier

  • Object External Reference IDs are intended for cross-referencing records with external systems
  • Configuration element External Reference IDs are preserved when exporting and importing a configuration file from one org to another, and intended to maintain the relationships between configuration components across multiple orgs sharing the same configuration (i.e. Sandboxes and Production Orgs). When importing an existing configuration into an org, each configuration element will be assigned a new Internal ID, but the External Reference ID will stay the same.
  • Alphanumeric
  • For configuration elements: automatically assigned when a configuration element is created
  • For imported objects: a unique External Reference ID must be specified on import
  • For objects created in Core:  automatically assigned an unique MD5 hash when the object is created
  • Unique within your org
  • Can be changed (Swagger only)
  • Visible only in Swagger:

    Object:
    {
    "id": 1246,
    "name": "My Object",
    "description": "",
    "externalRefId": "CA_127365123",
    "uniqueId": "57",
    "objectTypeId": 54634,
    .
    .
    .
    }

    Object Type:
    {
    "id": 54634,
    "name": "Object Type 1",
    "pluralName": "",
    "description": "",
    "monogram": "OT1",
    "nameKey": "app:objectType:name:7e0a7a5a-82dd-4589-8242-8ab47edf5ff8",
    "descriptionKey": "app:objectType:description:f20b5af6-2d6a-4eab-8a29-87f335d31f4f",
    "pluralNameKey": "app:objectType:pluralName:364bb151-f951-413b-828a-4f6ef24f0fbd",
    "monogramKey": "app:objectType:monogram:e4ad9aa1-ddc7-43d4-899a-706f365cb186",
    "color": "",
    "objectLifeCycleId": 70978,
    "externalRefId": "07d511b1-9401-4c8a-a01a-a89e25673d81",
    "created": "2019-03-29T21:36:59.594Z",
    "modified": "2020-02-09T03:40:57.758Z",
    .
    .
    .
    }

Unique ID

Object Type unique internal identifier

  • Intended as a convenient unique visual object identifier
  • Numeric
  • Automatically assigned when an object is created
  • Unique within an Object Type
  • Can not be changed
  • Visible in Swagger and in the GUI with the Object Type's monogram prepended:
     
    Object:
    mceclip21.png
    {
    "id": 1246,
    "name": "My Object",
    "description": "",
    "externalRefId": "CA_127365123",
    "uniqueId": "57",
    "objectTypeId": 54634,
    .
    .
    .
    }

When possible, integrations should exclusively use External Reference IDs both for referencing Objects (data) and for referencing configuration elements. Advantages:

  1. For objects imported from an external system, the External Reference ID will already be available from that system
  2. For configuration elements, all External Reference IDs are preserved when exporting and importing a configuration file from one org to another. Using External Reference IDs allows an integration to be developed on a Sandbox org, then migrated to the Production org without any changes.

Current Support for External Reference IDs in the Core API

Not all Endpoints support External Reference IDs. We are continuing to add direct support for External Reference IDs to all Core's API endpoints intended for external integrations.. For now, some necessary endpoints only take Internal IDs. As discussed above, the Internal ID of a configuration element will change when a configuration is loaded into a new org. To ensure that your integration continues to work when moving from one org to another, we recommend the following approach:

  1. Write your integration using External Reference IDs.
  2. Request and store the configuration of all elements required for your integration, including the Internal ID and External Reference ID.
  3. Request the Internal ID of Objects as needed.
  4. Map External Reference IDs  to Internal IDs when required for an endpoint.

If retrieving configuration and cross-referencing External Reference IDs with Internal IDs is not possible (as in the case of simple push integrations from an external system) then:

  1. Retrieve the internal IDs of all configuration elements required for your integration.
  2. Be prepared to update the internal IDs when moving your integration from your Sandbox to your Production org.

 

API Endpoints

Example Scenario: bidirectional synchronization of Incident data

Riverdale Industries uses Resolver Core for Incident Management. They also have an existing external system "ExtSys" as one source of Incident data. They need to maintain a two-way sync of Incident records between ExtSys and Core, and have decided on a daily synchronization schedule.

They need to perform the following on a nightly basis:

  1. Import all new and modified Person records from ExtSys to Core. Person records may include a photo.
  2. Import all new and modified Incident records from ExtSys to Core, including any linked Person records.
  3. Export any modified Incident records from Core to ExtSys, only if the records were imported from ExtSys originally. Incidents may also be created directly in Core or may be imported from other External systems, but these should not be exported to ExtSys.

In Core's Incident Management base application, the Incident and Person records map to three object types, with three related object types required to classify an Incident:

  1. Person: stores all static information for a person:
    mceclip1.png

  2. Involved Person: links a person to an Incident with details as to how that person is involved:
    mceclip0.png

  3. Incident: stores all base information for an incident, with details stored in related object types:
    mceclip2.png

  4. Incident Type: a high-level category for Incidents (e.g. Theft, Fraud):
    mceclip3.png

  5. Business Unit: Business Unit most directly affected by the Incident:
    mceclip4.png

  6. Company: Company comprised of Business Units:
    mceclip9.png
    The Company object type is not directly linked to Incidents, but it will be used as a report anchor to pull all of the company's Incidents via their linked Business Units.

Riverdale wishes to sync the following record elements:

Person

Element Type Description
Name Property On import, set as First Name + " " + Last Name to match the name concatenation configured on the Person object type.
First Name Single Line Text Field

Person's first name

Last Name Single Line Text Field Person's last name
Photo Image Attachment Field Headshot (e.g. employee ID photo or suspect mugshot).
Person User Role If this person is also a Core user, assign the user to this role on the Person object to tie the user to the record.


Incident

Element Type Description
Name Property A short description of the incident
Description Property A detailed description of the incident
Incident Start DateTime Date Field Date and Time that the incident occured
Incident Reported DateTime Date Field Date and Time that the incident was reported
Primary Incident Type Relationship to Incident Type Object Type Links the Incident object to the the Incident Type object that best categorizes this incident
Business Unit Relationship to Business Unit Object Type Links the Incident object to the Business Unit object affected by this incident.
Involved People Relationship to Involved Person Object Type Links the Incident object to one or more Involved Person object (one for each person involved in the incident)
Incident Status Workflow State All imported incidents should be assigned to the Open workflow state.

 

Involved Person

Element Type Description
Name Property Copy from the Name property of the linked Person record.
Person Involvement Type Single Select List Field How the Person is involved with the Incident (e.g. Victim, Witness, Reporting Party...).
Linked Person Relationship to Person Object Type Links the Involved Person object containing the involvement details to the Person object containing the Person's details.

 

Incident Type

Element Type Description
Name Property Name of the Incident Type category

 

Business Unit

Element Type Description
Name Property Name of the Business Unit

 

Company

Element Type Description
Name Property Name of the Company

 

Throughout the guide, we will revisit this scenario, demonstrating the required API calls building the data mapping.

 

Retrieving Configuration Elements

Retrieve subsets of the application configuration to facilitate mapping of External Reference IDs to Internal IDs

Object Types

Retrieve all Object Types with their Internal and External Reference IDs:

mceclip27.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType'


Response Body

{
Array of all configured Object Types:
"data": [
{
"id": 58677, <-- internal id
"name": "Training Report", <-- object type name
"pluralName": "",
"description": "",
"monogram": "TR",
.
.
.
"color": "#dadee0",
"objectLifeCycleId": 76293, <-- internal library workflow id
"externalRefId": "1162db75-63b1-44d5-ab95-81cba683bf5e", <-- external reference id
.
.
.
},
.
.
.
]
}e


Response Code

200

 

Example Scenario: Retrieve Object Type IDs for the Incident, Person, Involved Person, Incident Type, Business Unit and Company object types

Before Riverdale Industries can start writing the integration, they need to retrieve the Internal and External Reference IDs of the Person, Incident and Involved Person object types. They retrieve all object types. From the returned JSON output, they isolate the 5 required object types:

Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType'

Response Body

{
"data": [
{
"id": 101362,
"name": "Incident",
"pluralName": "Incidents",
.
.
.
"externalRefId": "Incident",
.
.
.
},
{
"id": 101372,
"name": "Involved Person",
"pluralName": "Involved People",
.
.
.
"externalRefId": "InvolvedPerson",
 .
.
.
},
{
"id": 101389,
"name": "Person",
"pluralName": "People",
.
.
.
"externalRefId": "Person",
.
.
.
},
{
"id": 101344,
"name": "Business Unit",
"pluralName": "Business Units",
.
.
.
"externalRefId": "BusinessUnit",
.
.
.
},
{
"id": 101348,
"name": "Company",
"pluralName": "Companies",
.
.
.
"externalRefId": "Company",
.
.
.
},
{
"id": 101364,
"name": "Incident Type",
"pluralName": "Incident Types",
.
.
.
"externalRefId": "IncidentType",
.
.
.
},
.
.
.
]
}

Object Type IDs

Object Type External Reference ID Internal ID
Incident Incident 101362
Involved Person InvolvedPerson 101372
Person Person 101389
Business Unit BusinessUnit 101344
Company Company 101348
Incident Type IncidentType 101364


Recommendation

Recall that external reference IDs do not change when moving from one org to another. Using external reference IDs allows us to write and test an integration using a sandbox org, then move it to the production org unchanged. The recommended approach is:

  1. Write the integration using the retrieved External Reference IDs.
  2. As the first step of the integration, retrieve the object type data and store it.
  3. If object type internal IDs are necessary for a particular endpoint, cross-reference them using the External Reference IDs.

 

Fields

Field Types

Field Type Description
0 Text
1 Numeric
2 DateTime
3 Single Select List
4 Attachment
5 Multi Select List
6 Image Attachment

 

Retrieve all Fields for an Object Type with their Internal and External Reference IDs:

mceclip29.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectTypeId path

The internal ID of the object type.

includeFieldOptions query

true = include configured options for Select List fields

false = do not include options


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/58677/field?includeFieldOptions=true'


Response Body

Array of all fields for the specified Object Type:
[
A Numeric Field:
{
"id": 300960, <-- internal field ID
"name": "Number of Attendees", <-- field name
"nameKey": "app:field:name:2d51b922-7189-453c-8b21-6f7fbdfac5c5",
"uniqueName": "NUMBEROFAT", <-- field unique name (used on Excel data import template)
"type": 1, <-- field type
"longName": "",
.
.
.
"externalRefId": "9e3e2a99-d30e-4669-84e4-f78ef6a3f01f", <-- external reference ID
"options": []
},

A Select List Field:
{
"id": 300924, <-- internal field ID
"name": "Session Type", <-- field name
"nameKey": "app:field:name:c8cbaf67-a76d-4386-8017-6d3590fb70ec",
"uniqueName": "SESSIONTYP", <-- field unique name (used on Excel data import template)
"type": 3, <-- field type
"longName": "",
"longNameKey": "app:field:longName:8955e545-7468-47b5-bb9d-f26ebe619439",
"pii": false,
"created": "2018-05-16T12:23:54.540Z",
"modified": "2018-05-16T12:23:54.766Z",
"org": 1017,

Legacy Properties Section [Warning: do NOT reference the options array under the properties section as it is not updated when options are modified after field creation.]:
"properties": {
"options": [
{
"id": "fd02e740-5903-11e8-b3d8-e5cf179e011d",
"color": null,
"label": "Training Delivery",
"numeric": null,
"defaultOption": true
},
{
"id": "fd02e741-5903-11e8-b3d8-e5cf179e011d",
"color": null,
"label": "Conference Presentation",
"numeric": null,
"defaultOption": false
},
{
"id": "fd02e742-5903-11e8-b3d8-e5cf179e011d",
"color": null,
"label": "Conference Attendance",
"numeric": null,
"defaultOption": false
}
]
}
"defaultSelection": null,
"nextFieldOptionOrdinal": 3,
"externalRefId": "9029a6c7-5970-4ff9-a05f-690e7664e7a6", <-- external reference ID

Array of Field Options:
"options": [
{
"id": 942592, <-- internal field option id
"fieldId": 300924,
"label": "Training Delivery", <-- option label
"labelKey": "app:fieldOption:label:c9ccd3a4-ea5e-47a6-98bb-021234a27dc8",
"numeric": 1 <-- option value
"color": null, <-- option color
"ordinal": 0, <-- option order
"defaultOption": true, <-- this option is set as the default value on object creation
"created": "2018-05-16T12:23:54.766Z",
"modified": null,
"org": 1017,
"externalRefId": "4ee0458a-1461-4aaa-903b-458cc323a540"
},
{
"id": 942752,
"fieldId": 300924,
"label": "Conference Attendance",
"labelKey": "app:fieldOption:label:a0231c88-c90c-4e85-afcf-4d30399d5363",
"numeric": null,
"color": null,
"ordinal": 2,
"defaultOption": false,
"created": "2018-05-16T12:23:54.766Z",
"modified": null,
"org": 1017,
"externalRefId": "65892bbd-50c7-45f5-bea3-64a6fceb112f"
},
{
"id": 942838,
"fieldId": 300924,
"label": "Conference Presentation",
"labelKey": "app:fieldOption:label:77133048-ccc0-46b7-921e-b9bf32aea176",
"numeric": null,
"color": null,
"ordinal": 1,
"defaultOption": false,
"created": "2018-05-16T12:23:54.766Z",
"modified": null,
"org": 1017,
"externalRefId": "70b769bc-493d-4320-8c43-363e8e6ddbf5"
}
.
.
.
]
},
.
.
.
]


Response Code

200

 

Example Scenario: Retrieve the Field IDs for the Incident, Person and Involved Person object types

Riverdale Industries does not need to retrieve fields for the Incident Type, Business Unit and Company object types, as they are not importing them. The names and external reference IDs are sufficient as they only need to link new Incidents to the existing Incident Type and Business Unit objects, and they only need to execute a report on a single Company object. They pull the fields for the other three object types:

Object Type IDs

Object Type External Reference ID Internal ID
Incident Incident 101362
Involved Person InvolvedPerson 101372
Person Person 101389
Business Unit BusinessUnit 101344
Company Company 101348
Incident Type IncidentType 101364

 

Person

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/101389/field?includeFieldOptions=true'

Response Body

[
{
"id": 573395,
"name": "First Name",
"nameKey": "app:field:name:a24f1624-ff38-423b-aaa0-698805632cae",
"uniqueName": "FIRSTNAME",
"type": 0,
"longName": "",
"longNameKey": "app:field:longName:cdcea2cc-dc88-4c2c-a87c-130460575801",
"pii": false,
"created": "2017-12-14T20:28:06.519Z",
"modified": null,
"org": 1521,
"properties": {
"multipleLines": false
},
"defaultSelection": null,
"nextFieldOptionOrdinal": 0,
"externalRefId": "a7f04ab2-15d1-422d-bd15-51561f438829",
"options": []
},
{
"id": 573433,
"name": "Last Name",
"nameKey": "app:field:name:a679efac-c382-4480-b5fc-cda20fa02e1d",
"uniqueName": "LASTNAME",
"type": 0,
"longName": "",
"longNameKey": "app:field:longName:0ede9bd6-4805-499e-b41a-13c92fa231b5",
"pii": false,
"created": "2017-12-14T20:28:06.519Z",
"modified": null,
"org": 1521,
"properties": {
"multipleLines": false
},
"defaultSelection": null,
"nextFieldOptionOrdinal": 0,
"externalRefId": "b5e0365e-474b-401b-af24-fdc5055789cb",
"options": []
},
{
"id": 572923,
"name": "Photo",
"nameKey": "app:field:name:b532090c-016f-4d39-964a-13ae4dde2549",
"uniqueName": "PHOTO",
"type": 6,
"longName": " ",
"longNameKey": "app:field:longName:99580e74-2ade-474e-9708-11ff687bc854",
"pii": false,
"created": "2017-12-14T20:28:06.519Z",
"modified": "2019-01-03T19:10:41.752Z",
"org": 1521,
"properties": {
"multipleLines": false
},
"defaultSelection": null,
"nextFieldOptionOrdinal": 0,
"externalRefId": "05a64fb4-1382-4950-98f1-8fd4e6c84b74",
"options": []
},
.
.
.
]

Fields

Element Type External Reference ID Internal ID Unique Name Options
Name Property n/a n/a n/a n/a
First Name Single Line Text Field a7f04ab2-15d1-422d-bd15-51561f438829 573395 FIRSTNAME n/a
Last Name Single Line Text Field b5e0365e-474b-401b-af24-fdc5055789cb 573433 LASTNAME n/a
Photo Image Attachment Field 05a64fb4-1382-4950-98f1-8fd4e6c84b74 572923 PHOTO n/a
Person User Role      n/a n/a

 

Involved Person

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/101372/field?includeFieldOptions=true'

Response Body

 [
{
"id": 573102,
"name": "Person Involvement Type",
"nameKey": "app:field:name:5450fd0b-bab0-4dd7-9b76-0c709df4af3f",
"uniqueName": "PERSONINVO",
"type": 3,
"longName": "",
"longNameKey": "app:field:longName:12bbdf3b-871f-4301-8edd-a3b0239d126a",
"pii": false,
"created": "2017-12-14T20:28:06.519Z",
"modified": "2018-11-05T17:06:31.163Z",
"org": 1521,
"properties": {
"multipleLines": false
},
"defaultSelection": null,
"nextFieldOptionOrdinal": 12,
"externalRefId": "460fd47c-74fe-4aa0-a483-35bc35e5e115",
"options": [
{
"id": 1833216,
"fieldId": 573102,
"label": "Person of Interest",
"labelKey": "app:fieldOption:label:c21823bf-e575-435b-9f5f-743f01e44f47",
"numeric": 2,
"color": "#fff183",
"ordinal": 1,
"defaultOption": true,
"created": "2017-11-29T21:23:16.057Z",
"modified": "2018-10-05T21:46:32.802Z",
"org": 1521,
"externalRefId": "092a5146-5f7d-45c9-a362-df7e34eca599"
},
{
"id": 1833523,
"fieldId": 573102,
"label": "Law Enforcement",
"labelKey": "app:fieldOption:label:796b3f31-c2e6-4777-a516-f725811bd527",
"numeric": 0,
"color": "#ff97e7",
"ordinal": 7,
"defaultOption": false,
"created": "2017-11-29T21:23:16.057Z",
"modified": "2019-06-21T18:45:40.919Z",
"org": 1521,
"externalRefId": "2b8185c3-bd9e-43c5-92df-db2ae1adec01"
},
{
"id": 1833603,
"fieldId": 573102,
"label": "Reporting Party",
"labelKey": "app:fieldOption:label:e951ac1f-a6d1-4e1a-a9f8-679b2d9bc3c1",
"numeric": 0,
"color": "#c4ffa4",
"ordinal": 8,
"defaultOption": false,
"created": "2018-11-05T17:06:31.163Z",
"modified": "2019-06-21T18:45:43.395Z",
"org": 1521,
"externalRefId": "34ac4e92-3ca9-466c-ae43-aac9283e524c"
},
{
"id": 1833611,
"fieldId": 573102,
"label": "Victim Relative",
"labelKey": "app:fieldOption:label:ec8a1920-2233-44ec-91bc-fc26013c64c1",
"numeric": 0,
"color": "#bfa4ff",
"ordinal": 5,
"defaultOption": false,
"created": "2018-11-05T17:06:31.163Z",
"modified": "2019-06-21T18:45:35.683Z",
"org": 1521,
"externalRefId": "352a8b9a-aa3b-4b20-a786-a47bce00f424"
},
{
"id": 1833801,
"fieldId": 573102,
"label": "Victim",
"labelKey": "app:fieldOption:label:01f3a68f-6ecb-40d5-a2ba-6ad3e26efc4f",
"numeric": 0,
"color": "#ffc899",
"ordinal": 3,
"defaultOption": false,
"created": "2018-10-05T21:46:22.394Z",
"modified": "2019-06-21T18:45:30.851Z",
"org": 1521,
"externalRefId": "4c91576d-9ee3-42da-9d7f-ff10961914aa"
},
{
"id": 1834039,
"fieldId": 573102,
"label": "Suspect",
"labelKey": "app:fieldOption:label:6ca0265f-cdd6-4842-8da2-4f4da0b6c9e3",
"numeric": 1,
"color": "#b71c1c",
"ordinal": 0,
"defaultOption": false,
"created": "2017-11-29T21:23:16.057Z",
"modified": "2018-10-05T21:46:30.256Z",
"org": 1521,
"externalRefId": "6aed41fd-ed17-4d3c-8f65-9349d0d49a1b"
},
{
"id": 1834112,
"fieldId": 573102,
"label": "Patient Acquaintance",
"labelKey": "app:fieldOption:label:5160d98f-120e-4f0a-8f29-e506aa2fc482",
"numeric": 0,
"color": "#ffe998",
"ordinal": 10,
"defaultOption": false,
"created": "2018-11-05T17:06:31.163Z",
"modified": "2019-06-21T18:45:49.147Z",
"org": 1521,
"externalRefId": "74c2cf12-00db-47ad-a898-3c19ea0b77b1"
},
{
"id": 1834166,
"fieldId": 573102,
"label": "Witness",
"labelKey": "app:fieldOption:label:5fc0ff2a-466c-4f63-b81f-3575d59ce367",
"numeric": 0,
"color": "#add1e1",
"ordinal": 2,
"defaultOption": false,
"created": "2017-12-14T20:28:06.519Z",
"modified": "2019-06-21T18:45:28.515Z",
"org": 1521,
"externalRefId": "7c827f32-e2ce-4b1a-9393-1955c8dd4ce5"
},
{
"id": 1834247,
"fieldId": 573102,
"label": "Patient Relative",
"labelKey": "app:fieldOption:label:bdebdf61-1a3c-4c20-820c-51302b85df23",
"numeric": 0,
"color": "#ffa9a9",
"ordinal": 11,
"defaultOption": false,
"created": "2018-11-05T17:06:31.163Z",
"modified": "2019-06-21T18:45:51.527Z",
"org": 1521,
"externalRefId": "86c7668a-5ced-496e-8dc3-d0c485e7bf08"
},
{
"id": 1834566,
"fieldId": 573102,
"label": "First Responder",
"labelKey": "app:fieldOption:label:6ffa691c-7f2d-48ae-b981-29aea4b1d866",
"numeric": 0,
"color": "#89ffff",
"ordinal": 6,
"defaultOption": false,
"created": "2017-12-14T20:28:06.519Z",
"modified": "2019-06-21T18:45:38.490Z",
"org": 1521,
"externalRefId": "a9b09b19-4127-402b-b1a8-5e80d4c9f27a"
},
{
"id": 1834865,
"fieldId": 573102,
"label": "Victim Acquaintance",
"labelKey": "app:fieldOption:label:22d67a35-2fb4-4b54-9b2e-7de0ccd26100",
"numeric": 0,
"color": "#96dcff",
"ordinal": 4,
"defaultOption": false,
"created": "2018-11-05T17:06:31.163Z",
"modified": "2019-06-21T18:45:33.087Z",
"org": 1521,
"externalRefId": "d05f2b2a-a635-463b-ac8e-01815bcdc76b"
},
{
"id": 1834992,
"fieldId": 573102,
"label": "Patient",
"labelKey": "app:fieldOption:label:81f88352-80f9-40fa-aec9-d4b6c5bf53b9",
"numeric": 0,
"color": "#a3afff",
"ordinal": 9,
"defaultOption": false,
"created": "2018-11-05T17:06:31.163Z",
"modified": "2019-06-21T18:45:46.821Z",
"org": 1521,
"externalRefId": "dcfe5d19-4faa-4f53-87a3-441bd625f8c2"
}
]
},
.
.
.
]

Fields

Element Type External Reference ID Internal ID Unique Name Options
Name Property n/a n/a n/a n/a
Person Involvement Type Single Select List Field 460fd47c-74fe-4aa0-a483-35bc35e5e115 573102 PERSONINVO
Label External Reference ID Internal ID
Person of Interest 092a5146-5f7d-45c9-a362-df7e34eca599 1833216
Law Enforcement 2b8185c3-bd9e-43c5-92df-db2ae1adec01 1833523
Reporting Party 34ac4e92-3ca9-466c-ae43-aac9283e524c 1833603
Victim Relative 352a8b9a-aa3b-4b20-a786-a47bce00f424 1833611
Victim 4c91576d-9ee3-42da-9d7f-ff10961914aa 1833801
Suspect 6aed41fd-ed17-4d3c-8f65-9349d0d49a1b 1834039
Patient Acquaintance 74c2cf12-00db-47ad-a898-3c19ea0b77b1 1834112
Witness 7c827f32-e2ce-4b1a-9393-1955c8dd4ce5 1834166
Patient Relative 86c7668a-5ced-496e-8dc3-d0c485e7bf08 1834247
First Responder a9b09b19-4127-402b-b1a8-5e80d4c9f27a 1834566
Victim Acquaintance d05f2b2a-a635-463b-ac8e-01815bcdc76b 1834865
Patient dcfe5d19-4faa-4f53-87a3-441bd625f8c2 1834992
Linked Person Relationship to Person Object Type      n/a n/a

 

Incident

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/101362/field?includeFieldOptions=true'

Response Body

[
{
"id": 573051,
"name": "Incident Start DateTime",
"nameKey": "app:field:name:90ed6fe3-d412-4a14-b82f-0e1ff466abeb",
"uniqueName": "INCIDENTDA",
"type": 2,
"longName": "The date and time that the incident occurred",
"longNameKey": "app:field:longName:b5faebe4-7d92-4d09-8855-12a9307a5425",
"pii": false,
"created": "2017-12-14T20:28:06.519Z",
"modified": null,
"org": 1521,
"properties": {
"multipleLines": false,
"dateTimeFormat": "MMMM D, YYYY h:mm a"
},
"defaultSelection": null,
"nextFieldOptionOrdinal": 0,
"externalRefId": "33489478-b00d-42ea-9d62-8ea4d545dcad",
"options": []
},
{
"id": 573011,
"name": "Incident Reported DateTime",
"nameKey": "app:field:name:1d5ad40a-efd9-4c0b-9ac3-64a534fc1d0f",
"uniqueName": "INCIDENTRE",
"type": 2,
"longName": "The date and time the Incident was reported",
"longNameKey": "app:field:longName:0b5cbaba-e81d-491c-bed2-c7efad5229ad",
"pii": false,
"created": "2017-12-14T20:28:06.519Z",
"modified": "2018-10-16T14:27:11.644Z",
"org": 1521,
"properties": {
"multipleLines": false,
"dateTimeFormat": "MMMM D, YYYY h:mm a"
},
"defaultSelection": null,
"nextFieldOptionOrdinal": 0,
"externalRefId": "241f6f58-7a5e-491e-846b-8668f5d91e89",
"options": []
},
]

Fields

Element Type External Reference ID Internal ID Unique Name Options
Name Property n/a n/a n/a n/a
Description Property n/a n/a n/a n/a
Incident Start DateTime Date Field 33489478-b00d-42ea-9d62-8ea4d545dcad 573051 INCIDENTDA n/a
Incident Reported DateTime Date Field 241f6f58-7a5e-491e-846b-8668f5d91e89 573011 INCIDENTRE n/a
Primary Incident Type Relationship to Incident Type Object Type     n/a n/a
Business Unit Relationship to Business Unit Object Type     n/a n/a
Involved People Relationship to Involved Person Object Type     n/a n/a
Incident Status Workflow State     n/a  

 

Recommendation

As with the object types, the recommended approach is to pull and store the fields at the beginning of the integration. Write the integration using the field and field option external reference IDs, and cross-reference the internal IDs if needed for an endpoint.

 

 

Formulas

Retrieve all Formulas for an Object Type with their Internal and External Reference IDs: 

mceclip41.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectTypeId path

The internal ID of the object type.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY 'https://sandbox.resolver.com/object/objectType/95308/formulas'


Response Body

{
Array of all Formulas for the specified object type:
"data": [
{
"id": 314127, <-- internal formula ID
"name": "Reported in Last 7, 15 and 30 days (Workflow)", <-- formula name
"nameKey": "app:formula:name:c6a47e83-377b-4b39-97be-f4e0318b9494",
"script": "timeDiff(today(),REPORTED,\"days\") == 8 OR timeDiff(today(),REPORTED,\"days\") == 16 OR timeDiff(today(),REPORTED,\"days\") == 31",
"format": null,
"formatStyle": 0,
"rangeStyle": 0,
"objectTypeId": 95308,
"type": 2,
"created": "2018-10-18T20:10:06.177Z",
"modified": "2020-01-16T16:08:46.027Z",
"org": 1460,
"externalRefId": "92969aec-7475-4aab-bebc-4e3cb40825c3",
"transitionId": 512077
},
.
.
.
]
}


Response Code

200

 

Retrieve Formula Ranges for a Formula:

mceclip42.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectTypeId path

The internal ID of the object type.

formulaId path

The internal ID of the formula.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY 'https://sandbox.resolver.com/object/objectType/95308/formulas/314127/ranges'


Response Body

Array of all Formulas Ranges for the specified formula:
[
{
"id": 989643, <-- internal ID of formula range
"name": "Low", <-- formula range name / label
"nameKey": "app:formulaRange:name:007e6875-d8f6-460c-80c0-438051a505a4",
"formulaId": 314127,
"maximum": 33, <-- range's maximum value
"color": "#6FB93A",
"created": "2018-10-18T20:10:06.177Z",
"modified": null,
"org": 1460,
"externalRefId": "ca0ff44c-4a9a-4b73-a18e-a55ff7eba088" <-- formula range external reference ID
},
{
"id": 988926,
"name": "Medium",
"nameKey": "app:formulaRange:name:548a791f-315a-4b13-bc46-2f99a0171037",
"formulaId": 314127,
"maximum": 66,
"color": "#F8E71C",
"created": "2018-10-18T20:10:06.177Z",
"modified": null,
"org": 1460,
"externalRefId": "55e84b2c-1227-4887-808a-132e9ee6dc9e"
},
{
"id": 989696,
"name": "High",
"nameKey": "app:formulaRange:name:b429a45c-979d-4835-90cb-895d7f51134c",
"formulaId": 314127,
"maximum": 100,
"color": "#D0021B",
"created": "2018-10-18T20:10:06.177Z",
"modified": null,
"org": 1460,
"externalRefId": "d1f038f4-e491-4dd0-bb5c-6d598a21905d"
}
]


Response Code

200

 

Roles

Retrieve all Roles for an Object Type with their Internal and External Reference IDs:

mceclip30.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectTypeId path

The internal ID of the object type.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/58691/role'


Response Body

Array of all roles for the specified Object Type:
[
{
"id": 38752, <-- internal role ID
"name": "Activity Owner", <-- role name
"description": "",
"nameKey": "app:role:name:adcbc506-e3c2-4ad0-ae45-da92b9f52112",
"descriptionKey": "app:role:description:fa38b9d9-17dd-4acc-baca-a6798f32d0bf",
"isGlobal": false,
"created": "2018-09-14T15:24:00.932Z",
"modified": "2020-01-15T03:06:52.532Z",
"org": 1017,
"externalRefId": "78cd0402-8e7c-4741-9a76-51e2a92fb9c6", <-- external reference ID
"canPerformSearch": true,
"canQuickCreate": true,
"canGetHelp": true,
"canSearchArchive": true
}
.
.
.
]


Response Code

200

 

Example Scenario: Retrieve the Role IDs for the Person object type

Riverdale Industries pulls the Role IDs for the Person object type, as it contains the only role they are concerned with.

Object Type IDs

Object Type External Reference ID Internal ID
Incident Incident 101362
Involved Person InvolvedPerson 101372
Person Person 101389
Business Unit BusinessUnit 101344
Company Company 101348
Incident Type IncidentType 101364

 

Person

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/101389/role'

Response Body

[
{
"id": 75612,
"name": "Person User",
"description": "",
"nameKey": "app:role:name:49a79205-9106-411f-a7ec-dbc9fae27d63",
"descriptionKey": "app:role:description:20a19009-6488-4a37-a029-5f6f2dd4edd5",
"isGlobal": false,
"created": "2018-03-19T15:59:12.994Z",
"modified": "2019-02-26T21:13:56.601Z",
"org": 1521,
"externalRefId": "f084e414-51ad-4781-9010-de6aa93017c8",
"canPerformSearch": false,
"canQuickCreate": false,
"canGetHelp": false,
"canSearchArchive": false
},
.
.
.
]

Roles

Element Type External Reference ID Internal ID Unique Name Options
Name Property n/a n/a n/a n/a
First Name Single Line Text Field a7f04ab2-15d1-422d-bd15-51561f438829 573395 FIRSTNAME n/a
Last Name Single Line Text Field b5e0365e-474b-401b-af24-fdc5055789cb 573433 LASTNAME n/a
Photo Image Attachment Field 05a64fb4-1382-4950-98f1-8fd4e6c84b74 572923 PHOTO n/a
Person User Role f084e414-51ad-4781-9010-de6aa93017c8  75612 n/a n/a

 

Recommendation

As with the fields, the recommended approach is to pull and store the roles at the beginning of the integration. Write the integration using the role external reference IDs, and cross-reference the internal IDs if needed for an endpoint.

 

Workflows

Retrieve all Workflows and Workflow States for an Object Type, with their Internal and External Reference IDs:

mceclip31.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectTypeId path

The internal ID of the object type.

includeStates query

true = include all workflow states with each workflow

false = return workflows only


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/58691/objectLifeCycle?includeStates=true'


Response Body

{
Array of all workflows for the specified Object Type:
"data": [
{
"id": 76340, <-- internal workflow id
"name": "Activity", <-- workflow name
"type": 1,
"nameKey": "app:objectLifeCycle:name:6c7167c9-8785-413b-b258-7da93aa77195",
"description": null,
"descriptionKey": "app:objectLifeCycle:description:5517d9c7-5bb9-442a-b595-1b54a97271cd",
"created": "2018-09-06T17:26:20.763Z",
"modified": "2019-09-20T12:23:24.641Z",
"org": 1017,
"nextStateOrdinal": 4,
"externalRefId": "94f49977-7a80-4702-8cff-dce8019e9ea5", <-- external reference id
"objectTypeId": 58691,
"states": [
{
"id": 289278, <-- internal workflow state id
  "objectLifeCycleId": 76340,
"name": "Creation", <-- workflow state name
"stateCategoryId": null,
"nameKey": "app:objectLifeCycleState:name:e036afa5-814e-4d59-9ca2-0c6b3c9436f8",
"color": "#0fc0fc",
"ordinal": -1,
"created": "2018-09-06T17:26:20.763Z",
"modified": null,
"org": 1017,
"creation": true,
"externalRefId": "e6a8c6f9-2ddf-4ff4-98dd-cf9b05783585" <-- external reference id
},
{
"id": 288889,
"objectLifeCycleId": 76340,
"name": "Open - Follow Up Required",
"stateCategoryId": 2,
"nameKey": "app:objectLifeCycleState:name:7a0547aa-c334-4363-aaa0-e7cb50e61217",
"color": "#ffa537",
"ordinal": 0,
"created": "2018-09-06T17:26:20.763Z",
"modified": "2018-12-12T22:16:14.428Z",
"org": 1017,
"creation": false,
"externalRefId": "210c4809-857d-409d-a484-b410a4b43bb0"
},
.
.
.
]
}
]
}


Response Code

200

 

Example Scenario: Retrieve the Workflow states for the Incident object type

Riverdale Industries pulls the workflow states for the Incident Object type, as they need to put new Incidents into the Open workflow state on import into Core, and they will want to pull the current workflow state of existing Incidents when syncing them back to ExtSys.

Object Type IDs

Object Type External Reference ID Internal ID
Incident Incident 101362
Involved Person InvolvedPerson 101372
Person Person 101389
Business Unit BusinessUnit 101344
Company Company 101348
Incident Type IncidentType 101364

 

Incident

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/101362/objectLifeCycle?includeStates=true'

Response Body

{
"data": [
{
"id": 133856,
"name": "Incident Status",
"type": 1,
"nameKey": "app:objectLifeCycle:name:d64de61b-f918-4499-92ae-bfcbbb1b8c29",
"description": null,
"descriptionKey": "app:objectLifeCycle:description:4674f657-e406-4ebb-8555-d1acc412f3ee",
"created": "2017-12-15T06:28:06.519Z",
"modified": "2020-02-11T22:47:05.159Z",
"org": 1521,
"nextStateOrdinal": 8,
"externalRefId": "450912c1-fab7-4e32-a5a0-aacda21c4c4d",
"objectTypeId": 101362,
"states": [
{
"id": 529842,
"objectLifeCycleId": 133856,
"name": "Creation",
"stateCategoryId": null,
"nameKey": "app:objectLifeCycleState:name:c29335e6-8c7d-46ff-8d9b-f48b40188512",
"color": "#0fc0fc",
"ordinal": -1,
"created": "2017-12-15T06:28:06.519Z",
"modified": null,
"org": 1521,
  "creation": true,
"externalRefId": "95423516-446a-4d74-9fae-359553acb273"
},
{
"id": 529675,
"objectLifeCycleId": 133856,
"name": "Draft",
"stateCategoryId": 1,
"nameKey": "app:objectLifeCycleState:name:d2cf5e43-76dd-4794-bd44-9c8f3979aeac",
"color": "#DADEE0",
"ordinal": 0,
"created": "2017-12-15T06:28:06.519Z",
"modified": "2018-08-01T19:40:27.753Z",
"org": 1521,
"creation": false,
"externalRefId": "50afdd84-3ec6-40ff-981d-9904c01e0d7f"
},
{
"id": 529765,
"objectLifeCycleId": 133856,
"name": "Triage",
"stateCategoryId": 5,
"nameKey": "app:objectLifeCycleState:name:7225b810-e505-4f4e-bfff-574f0023a64b",
"color": "#66CDF4",
"ordinal": 1,
"created": "2017-12-15T06:28:06.519Z",
"modified": "2019-11-26T22:03:37.797Z",
"org": 1521,
"creation": false,
"externalRefId": "7244366c-7a7d-4fb4-b0d6-5af102816be1"
},
{
"id": 529919,
"objectLifeCycleId": 133856,
"name": "Open",
"stateCategoryId": 2,
"nameKey": "app:objectLifeCycleState:name:65079d3e-e31b-4249-b394-dc6eb13a1c47",
"color": "#00a0dc",
"ordinal": 2,
"created": "2017-11-29T21:23:16.057Z",
"modified": "2019-11-26T22:03:28.086Z",
"org": 1521,
"creation": false,
"externalRefId": "b34175da-f0ab-42b8-b61e-232f703c443c"
},
{
"id": 529646,
"objectLifeCycleId": 133856,
"name": "Under Investigation",
"stateCategoryId": 2,
"nameKey": "app:objectLifeCycleState:name:50989a91-1064-4e4a-8a96-2d20685b0bd1",
"color": "#00678E",
"ordinal": 3,
"created": "2017-11-29T21:23:16.057Z",
"modified": "2019-11-26T22:03:42.444Z",
"org": 1521,
"creation": false,
"externalRefId": "461beb32-22b3-4d17-adc1-8da26ddf965c"
},
{
"id": 530092,
"objectLifeCycleId": 133856,
"name": "Review",
"stateCategoryId": 2,
"nameKey": "app:objectLifeCycleState:name:e218fb99-70b5-4042-b48f-69c472930851",
"color": "#00455F",
"ordinal": 4,
"created": "2017-11-29T21:23:16.057Z",
"modified": "2019-11-26T22:03:50.393Z",
"org": 1521,
"creation": false,
"externalRefId": "ecf194a1-f967-4b7c-a17e-0f7959eddde5"
},
{
"id": 529668,
"objectLifeCycleId": 133856,
"name": "Legal Hold",
"stateCategoryId": 2,
"nameKey": "app:objectLifeCycleState:name:0b2ec3d1-a51d-4224-bb7d-f999571e7eeb",
"color": "#ffbf02",
"ordinal": 5,
"created": "2018-11-01T22:00:24.875Z",
"modified": "2019-11-26T22:08:17.072Z",
"org": 1521,
"creation": false,
"externalRefId": "4d272716-847d-4038-bc5a-469385eaac28"
},
{
"id": 529892,
"objectLifeCycleId": 133856,
"name": "Closed",
"stateCategoryId": 3,
"nameKey": "app:objectLifeCycleState:name:0eb34bca-c5c2-458a-a887-786a2bc97ecc",
"color": "#090203",
"ordinal": 6,
"created": "2017-12-15T06:28:06.519Z",
"modified": "2019-05-21T20:17:41.905Z",
"org": 1521,
"creation": false,
"externalRefId": "a7f12a23-19d5-4661-8a72-57c4bb36b92c"
},
{
"id": 529567,
"objectLifeCycleId": 133856,
"name": "Expired",
"stateCategoryId": 3,
"nameKey": "app:objectLifeCycleState:name:35b55be5-3c1e-443c-935e-cff541de2694",
"color": "#bbbbbb",
"ordinal": 7,
"created": "2018-11-01T17:01:48.896Z",
"modified": "2019-11-26T22:09:23.743Z",
"org": 1521,
"creation": false,
"externalRefId": "277608d4-95bd-448d-b1f5-aa390c4ff14f"
},
{
"id": 529697,
"objectLifeCycleId": 133856,
"name": "Restricted",
"stateCategoryId": 2,
"nameKey": "app:objectLifeCycleState:name:9cb3515b-8a0e-4cbe-bf95-d1f03d1d5f5c",
"color": "#ffbf02",
"ordinal": 8,
"created": "2018-04-27T16:28:18.353Z",
"modified": "2019-11-26T22:07:22.485Z",
"org": 1521,
"creation": false,
"externalRefId": "591c4be0-fd17-450f-9bcd-49b7e83aa37c"
}
]
}
]
}

Workflow States

Element Type External Reference ID Internal ID Unique Name Options
Name Property n/a n/a n/a n/a
Description Property n/a n/a n/a n/a
Incident Start DateTime Date Field 33489478-b00d-42ea-9d62-8ea4d545dcad 573051 INCIDENTDA n/a
Incident Reported DateTime Date Field 241f6f58-7a5e-491e-846b-8668f5d91e89 573011 INCIDENTRE n/a
Primary Incident Type Relationship to Incident Type Object Type      n/a n/a
Business Unit Relationship to Business Unit Object Type      n/a n/a
Involved People Relationship to Involved Person Object Type      n/a n/a
Incident Status Workflow State  450912c1-fab7-4e32-a5a0-aacda21c4c4d  133856 n/a
Name External Reference ID Internal ID
Creation 95423516-446a-4d74-9fae-359553acb273 529842
Draft 50afdd84-3ec6-40ff-981d-9904c01e0d7f 529675
Triage 7244366c-7a7d-4fb4-b0d6-5af102816be1 529765
Open b34175da-f0ab-42b8-b61e-232f703c443c 529919
Under Investigation 461beb32-22b3-4d17-adc1-8da26ddf965c 529646
Review ecf194a1-f967-4b7c-a17e-0f7959eddde5 530092
Legal Hold 4d272716-847d-4038-bc5a-469385eaac28 529668
Closed a7f12a23-19d5-4661-8a72-57c4bb36b92c 529892
Expired 277608d4-95bd-448d-b1f5-aa390c4ff14f 529567
Restricted 591c4be0-fd17-450f-9bcd-49b7e83aa37c 529697

 

Recommendation

As with the roles, the recommended approach is to pull and store the workflow states at the beginning of the integration. Write the integration using the workflow state external reference IDs, and cross-reference the internal IDs if needed for an endpoint.

 

Relationships

Retrieve all Relationships and References for an Object Type with their Internal and External Reference IDs:

mceclip32.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectTypeId path

The internal ID of the object type.

inverse query

true = return references as well as relationships

false = return relationships only

includeObjectTypes query

true = return details for all linked object types

false = return relationship/reference details only


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/58691/relationship?inverse=true&includeObjectTypes=true'


Response Body

{
Array of related object types:
"objectTypes": [
{
"id": 58752, <-- internal object type ID
"name": "Shift Log", <-- object type name
"pluralName": "Shift Logs",
"description": "",
"monogram": "SL",
"nameKey": "app:objectType:name:88abd592-0294-4185-89a5-5c9f4fc2858d",
"descriptionKey": "app:objectType:description:b8251140-c291-45cd-961f-1007c409d65d",
"pluralNameKey": "app:objectType:pluralName:8b7a99ea-a379-4e5b-ac51-fab33b34581b",
"monogramKey": "app:objectType:monogram:2a805595-51d7-4c54-9dae-b2c1bc4272fc",
"color": "",
"objectLifeCycleId": 76346,
"externalRefId": "ShiftLog", <-- object type external reference ID
"created": "2018-12-13T20:56:31.708Z",
"modified": "2019-09-20T12:23:24.641Z",
"nextElement": 6,
"org": 1017,
"assessment": false,
"anchor": null,
"anchorRelationship": null,
"dataDefinitionId": null
},
{
"id": 58758,
"name": "Task",
"pluralName": "Tasks",
"description": "",
"monogram": "T",
"nameKey": "app:objectType:name:74a2d6d6-a549-46c8-b280-f555c5803d02",
"descriptionKey": "app:objectType:description:d10d3bb1-b0e9-498a-9dd9-c3c42cbc600f",
"pluralNameKey": "app:objectType:pluralName:55282e35-e34c-4fb8-b9ea-44ef715fc93f",
"monogramKey": "app:objectType:monogram:5261e425-9fb5-4e7e-8655-b22d5cb1fb6e",
"color": "#dadee0",
"objectLifeCycleId": 76281,
"externalRefId": "Task",
"created": "2017-11-29T21:23:16.057Z",
"modified": "2019-09-20T12:23:24.641Z",
"nextElement": 23,
"org": 1017,
"assessment": false,
"anchor": null,
"anchorRelationship": null,
"dataDefinitionId": null
},
.
.
.
],

Array of object type groups linked to relationships:
"objectTypeGroups": [
{
"id": 71038, <-- internal object type group ID
"name": "Task", <-- object type group name
"longName": "",
"nameKey": "app:objectTypeGroup:name:bd0d8d47-289f-4b93-bbc8-92f162bf39a4",
"longNameKey": "app:objectTypeGroup:longName:6a3aa2b0-8be9-443a-b87b-38bd696385b2",
"created": "2017-11-29T21:23:16.057Z",
"modified": null,
"org": 1017,
"externalRefId": "f73c67a9-b50d-4fb3-b1dd-a33dba502ce8", <-- object type group external reference ID
"autoGenerated": false,

Array of destination object types for this object type group:
"objectTypes": [
58758 <-- destination object type external reference ID
]
},
.
.
.
],

Array of all references (reverse relationships) for the specified object type:
"incoming": [
{
"id": 117766, <-- internal Reference ID
"name": "Activities", <-- Reference name
"longName": "",
"referenceName": "",
"nameKey": "app:relationship:name:da7a6ae5-8092-4106-8f39-cb6621e14bf4",
"longNameKey": "app:relationship:longName:606f7c90-b84b-47bd-bae9-93bc9ca4feda",
"referenceNameKey": "app:relationship:referenceName:79349763-78b9-41d1-aad5-1078e143165e",
"objectTypeId": 58752,
"objectTypeGroupId": 70968,
"maximumAllowedEdges": 0,
"created": "2018-12-13T20:59:34.592Z",
"modified": null,
"org": 1017,
"externalRefId": "faf8bf6d-fb60-412e-a3bf-6745f87f794f" <-- Reference external reference ID
},
.
.
.
],

Array of all relationships for the specified object type:
"outgoing": [
{
"id": 117595, <-- internal Relationship id
"name": "Activity Tasks", <-- Relationship name
"longName": "",
"referenceName": "Activity", <-- Reference (reverse direction) name
"nameKey": "app:relationship:name:4afee950-51ff-4d53-8424-9e824806bd45",
"longNameKey": "app:relationship:longName:8ad2bec3-f200-4519-81ae-af427f129431",
"referenceNameKey": "app:relationship:referenceName:669ecb7a-3400-4a30-bae4-f92098963886",
"objectTypeId": 58691,
"objectTypeGroupId": 71038, <-- destination object type group ID
"maximumAllowedEdges": 0,
"created": "2018-10-03T17:23:04.392Z",
"modified": "2018-12-12T22:49:18.770Z",
"org": 1017,
"externalRefId": "Activity-Task" <-- Relationship external reference ID
},
.
.
.
]
}


Response Code

200

 

Example Scenario: Retrieve the Relationships from the Incident and Involved Person Object Types

Riverdale Industries pulls the Relationships from the Incident and Involved Person object types. Incidents are linked to a Primary Incident Type, a Business Unit and one or more Involved Persons. Involved Person records are linked to a Person record.

Object Type IDs

Object Type External Reference ID Internal ID
Incident Incident 101362
Involved Person InvolvedPerson 101372
Person Person 101389
Business Unit BusinessUnit 101344
Company Company 101348
Incident Type IncidentType 101364

 

Incident

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/101362/relationship?inverse=false&includeObjectTypes=true'

Response Body

{
"outgoing": [
{
"id": 220719,
"name": "Primary Incident Type",
"longName": "Choose an applicable Incident Type",
"referenceName": "Incidents as Primary",
"nameKey": "app:relationship:name:f9519861-d089-4fab-9bb9-898f235aeb75",
"longNameKey": "app:relationship:longName:3a6771d5-ae73-4fa5-9db6-97b8c5fa730a",
"referenceNameKey": "app:relationship:referenceName:b6d848c1-ae16-4a7d-aaac-4db15a7e6a50",
"objectTypeId": 101362,
"objectTypeGroupId": 125773,
"maximumAllowedEdges": 1,
"created": "2017-11-29T21:23:16.057Z",
"modified": "2019-04-08T15:47:25.393Z",
"org": 1521,
"externalRefId": "Incident-PrimaryType"
},
{
"id": 220712,
"name": "Involved People",
"longName": " ",
"referenceName": "Related Incident",
"nameKey": "app:relationship:name:299da3a7-b9f8-4f53-83f3-76dda65d0fb3",
"longNameKey": "app:relationship:longName:8e69907c-3582-4555-9a85-772e1d3f1490",
"referenceNameKey": "app:relationship:referenceName:de992933-e279-42ac-9527-7f82724f0306",
"objectTypeId": 101362,
"objectTypeGroupId": 125858,
"maximumAllowedEdges": 0,
"created": "2017-11-29T21:23:16.057Z",
"modified": null,
"org": 1521,
"externalRefId": "Incident-InvolvedPerson"
},
{
"id": 220700,
"name": "Business Unit",
"longName": " ",
"referenceName": "Incidents",
"nameKey": "app:relationship:name:f8b1f2ca-7344-419e-a0d7-b2e97f301aa0",
"longNameKey": "app:relationship:longName:fad29fba-3d88-4925-982d-126a7f213285",
"referenceNameKey": "app:relationship:referenceName:e86dac31-f5b9-4ccb-8816-792cfe18db5f",
"objectTypeId": 101362,
"objectTypeGroupId": 125879,
"maximumAllowedEdges": 1,
"created": "2018-05-15T18:07:35.980Z",
"modified": "2019-12-16T16:31:02.549Z",
"org": 1521,
"externalRefId": "Incident-BusinessUnit"
},
.
.
.
],
"incoming": [
]
}

Relationships

Element Type External Reference ID Internal ID Unique Name Options
Name Property n/a n/a n/a n/a
Description Property n/a n/a n/a n/a
Incident Start DateTime Date Field 33489478-b00d-42ea-9d62-8ea4d545dcad 573051 INCIDENTDA n/a
Incident Reported DateTime Date Field 241f6f58-7a5e-491e-846b-8668f5d91e89 573011 INCIDENTRE n/a
Primary Incident Type Relationship to Incident Type Object Type  Incident-PrimaryType  220719  n/a n/a
Business Unit Relationship to Business Unit Object Type  Incident-BusinessUnit  220700  n/a n/a
Involved People Relationship to Involved Person Object Type  Incident-InvolvedPerson  220712  n/a n/a
Incident Status Workflow State     n/a  

 

Involved Person

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/objectType/101372/relationship?inverse=false&includeObjectTypes=true'

Response Body

{
"outgoing": [
{
"id": 220739,
"name": "Linked Person",
"longName": "",
"referenceName": "Incident History",
"nameKey": "app:relationship:name:775e957b-a02e-428c-8ff8-97cfa3127a9a",
"longNameKey": "app:relationship:longName:37966d94-a047-41a4-8d82-1d48a10009e7",
"referenceNameKey": "app:relationship:referenceName:d7808985-e862-49a5-8851-762d6952b836",
"objectTypeId": 101372,
"objectTypeGroupId": 125841,
"maximumAllowedEdges": 1,
"created": "2017-11-29T21:23:16.057Z",
"modified": "2018-10-09T14:18:57.665Z",
"org": 1521,
"externalRefId": "InvolvedPerson-Person"
}
],
.
.
.
"incoming": []
}

Relationships

Element Type External Reference ID Internal ID Unique Name Options
Name Property n/a n/a n/a n/a
Person Involvement Type Single Select List Field 460fd47c-74fe-4aa0-a483-35bc35e5e115 573102 PERSONINVO
Label External Reference ID Internal ID
Person of Interest 092a5146-5f7d-45c9-a362-df7e34eca599 1833216
Law Enforcement 2b8185c3-bd9e-43c5-92df-db2ae1adec01 1833523
Reporting Party 34ac4e92-3ca9-466c-ae43-aac9283e524c 1833603
Victim Relative 352a8b9a-aa3b-4b20-a786-a47bce00f424 1833611
Victim 4c91576d-9ee3-42da-9d7f-ff10961914aa 1833801
Suspect 6aed41fd-ed17-4d3c-8f65-9349d0d49a1b 1834039
Patient Acquaintance 74c2cf12-00db-47ad-a898-3c19ea0b77b1 1834112
Witness 7c827f32-e2ce-4b1a-9393-1955c8dd4ce5 1834166
Patient Relative 86c7668a-5ced-496e-8dc3-d0c485e7bf08 1834247
First Responder a9b09b19-4127-402b-b1a8-5e80d4c9f27a 1834566
Victim Acquaintance d05f2b2a-a635-463b-ac8e-01815bcdc76b 1834865
Patient dcfe5d19-4faa-4f53-87a3-441bd625f8c2 1834992
Linked Person Relationship to Person Object Type  InvolvedPerson-Person  220739  n/a n/a

 

Recommendation

As with the workflow states, the recommended approach is to pull and store the relationship data at the beginning of the integration. Write the integration using the relationship external reference IDs, and cross-reference the internal IDs if needed for an endpoint.

 

Reports

Retrieve all Reports with their Internal and External Reference IDs:

mceclip0.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY 'https://sandbox.resolver.com/object/report'


Response Body

{
Array of all configured reports:
"
data": [
{
"id": 94250, <-- internal report ID
"name": "IM - Incident List Report", <-- report name
"description": "An exportable overview of all Incidents available to the report user, with 13 key pieces of information for each Incident, including Name, Type, Severity, Incident Owner, Start Date, Involvement counts, Age, Value and Status.",
"nameKey": "app:report:name:57f8d5bd-27df-4633-a550-548527c9c5e0",
"descriptionKey": "app:report:description:785e3e9c-b106-458b-88fd-974d7f5cf833",
"objectTypeId": 95294,
"created": "2018-09-04T16:59:10.412Z",
"modified": "2019-10-18T17:05:55.490Z",
"org": 1460,
"externalRefId": "6fef6a1a-c3e3-44c6-849d-793c8a644904", <-- report external reference ID
"nextReportComponentOrdinal": 2,
"type": 1,
"showArchiveData": false
},
.
.
.
]
}


Response Code

200

 

Retrieve all Filters for a Report with their Internal and External Reference IDs:

mceclip38.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
reportId path

The internal report ID.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY 'https://sandbox.resolver.com/object/report/94250/filter'


Response Body

Array of all configured filters for the report:
[
{
"id": 185563, <-- internal ID of the filter
"reportId": 94250,
"type": 1,
"elementId": 530270, <-- internal ID of the element (field, role or workflow state) used for the filter --> In this case, the DateTime field 'Incident Reported DateTime'
"objectTypeId": 95308,
"subtype": 2, <-- element type (2 = Field)
"created": "2017-12-13T22:02:47.788Z",
"modified": null,
"org": 1460,
"externalRefId": "7f8989a9-7d9a-4e17-81f9-ad161bb6a176", <-- filter external reference ID
"columnFilter": false,
"required": false
},
.
.
.
]


Response Code

200

 

Retrieve all Components (tables, charts, etc) for a Report with their Internal and External Reference IDs:

Component Sub Types

Subtype Element
1 Free Form Text
2 Table
3 Pie / Half-Pie Chart
4 Heat Map
5 Bar / Column Chart
6 n/a
7 Repeatable Forms
8 Page Break

 

Table Column Types

Type Element
1 Field
2 Relationship
3 Formula
4 Role
5 Property
6 n/a
7 Workflow State

 

mceclip39.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
reportId path

The internal report ID.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY 'https://sandbox.resolver.com/object/report/94250/reportComponents'


Response Body

Array of all report components:
{
"data": [
{
"id": 297778, <-- internal component ID
.
.
.
"type": 1,
"subtype": 2, <-- component sub-type (2 = table)
"ordinal": 2, <-- component order within the report
.
.
.
"externalRefId": "e18b26df-284a-422f-ae25-6bd466b3dc8e", <-- component external reference ID
"showColoredCellsAsOvals": false,
"dataProperties": {
"enabledForms": {},
"forms": {},

Array of table columns:
"columns": [
  {
"id": 1339634, <-- internal column ID
"componentId": 297778,
"nodeId": 2414297,
"type": 1, <-- component type (1 = field)
"ordinal": 2, <-- column order within the table
"subtype": 0,
"identifier": 530369, <-- internal ID of the column element (property, field, formula, relationship, role or workflow state) --> Title field
"objectTypeId": 95308, <-- internal object type ID (Incident)
.
.
.
"externalRefId": "451e0c84-82cb-4410-ab03-b463f4bf41e8", <-- column external reference ID
"readOnly": false,
"path": "",
"pathAnchor": 95308
},
{
"id": 1339606, <-- internal column ID
"componentId": 297778,
"nodeId": 2414297,
"type": 5, <-- component type (5 = property)
"ordinal": 1, <-- column order within the table
"subtype": null,
"identifier": "name", <-- internal ID of the column element (property, field, formula, relationship, role or workflow state). In this case, this is the name property.
"objectTypeId": null, <-- internal object type ID 
.
.
.
"externalRefId": "4106331b-5e97-42f6-b4e6-cc46a48c3df0", <-- column external reference ID
"readOnly": false,
"path": "",
"pathAnchor": 95308
},
.
.
.
],
"parameters": [],
"titles": {},
.
.
.
}
}
.
.
.
]
}


Response Code

200

 

Example Scenario: Retrieve the IDs for a custom Incident report

Riverdale Industries creates a custom report for pulling the required data. They build and test the report in Core prior to using it for their integration:

mceclip7.png

mceclip8.png

  1. The report will be executed on the "Riverdale Industries" Company object, which links to all Incidents via Company > Business Unit > Incident.
  2. The report contains a table of Incidents with their linked Business Unit.
  3. The report also contains a table of Incidents with their linked Primary Incident Type. Retrieving this relationship in a separate table is the simplest approach for reasons that are outside the scope of this article.
  4. The report contains a final table of Incidents with involved Persons. The required elements from the Incident, Involved Person and Person object types are displayed as columns in a single row.
  5. The Photo column contains direct-download URLs for any images attached to the Photo field on Person objects.
  6. If an Involved Person is also a Core user, their account is listed under the Person User column.
  7. The report has been configured with the Incident object type's Modified On property as a parameter. This will automatically filter the report results to just the Incident records that have been modified today, matching the requirement to run the report daily. Alternatively, the report can be configured with a filter using any of the date fields on Incident, and a filter value can be supplied when executing the report.

They retrieve all Reports and isolate their custom report:

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY 'https://sandbox.resolver.com/object/report'

Response Body

{
"data": [
{
"id": 106608,
"name": "Incident Export",
"description": "",
"nameKey": "app:report:name:d80d6402-fed0-4dd1-b531-375577f4a48e",
"descriptionKey": "app:report:description:18f6f795-491a-4aee-a2c1-76f22382b800",
"objectTypeId": 101348,
"created": "2020-02-27T18:48:35.832Z",
"modified": "2020-02-27T19:52:34.469Z",
"org": 1521,
"externalRefId": "b79cd607-9ec8-429c-96b7-b0507f405ab0",
"nextReportComponentOrdinal": 6,
"type": 1,
"showArchiveData": false
}
.
.
.
]
}

Report IDs

Report External Reference ID Internal ID
Incident Export b79cd607-9ec8-429c-96b7-b0507f405ab0 106608

 

They then retrieve the report components, and isolate the 3 report tables and their columns:

Request 

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY 'https://sandbox.resolver.com/object/report/106608/reportComponents'

Response Body

{
"data": [
{
"id": 335149,
"type": 1,
"subtype": 2,
"ordinal": 1,
"externalRefId": "bcd73696-9942-439e-a862-15c308ec9914",
"dataProperties": {
"columns": [
{
"id": 1568366,
"type": 5,
"ordinal": 7,
"identifier": "name",
"objectTypeId": null,
"externalRefId": "79e17075-3454-417c-b0f0-6773d3931959",
},
{
"id": 1568365,
"type": 5,
"ordinal": 6,
"identifier": "externalRefId",
"objectTypeId": null,
"externalRefId": "d98dda9f-e0e0-4b0b-a71a-ca61d9e0bf25",
},
{
"id": 1568361,
"type": 5,
"ordinal": 2,
"identifier": "description",
"objectTypeId": null,
"externalRefId": "7db47908-b212-414a-a866-5df22ff5981a",
},
{
"id": 1568360,
"type": 5,
"ordinal": 1,
"identifier": "name",
"objectTypeId": null,
"externalRefId": "d7a89ad4-ec8a-4e5e-b615-9fbf626c3a04",
},
{
"id": 1568359,
"type": 5,
"ordinal": 0,
"identifier": "externalRefId",
"objectTypeId": null,
"externalRefId": "1f7763a8-4f29-4911-a6c1-4487e48e5119",
},
{
"id": 1568363,
"type": 1,
"ordinal": 4,
"identifier": 573011,
"objectTypeId": 101362,
"externalRefId": "c04d5ac3-c7d3-46b6-8684-1583b6e96b7c",
},
{
"id": 1568362,
"type": 1,
"ordinal": 3,
"identifier": 573051,
"objectTypeId": 101362,
"externalRefId": "9f2782ce-c4d4-4518-b5d9-3b9d6d2e6757",
},
{
"id": 1568364,
"type": 7,
"ordinal": 5,
"identifier": 133856,
"objectTypeId": 101362
"externalRefId": "caa2d9be-887d-485a-ba5b-2cba4f675621",
}
]
}
},
{
"id": 335151,
"type": 1,
"subtype": 2,
"ordinal": 3,
"externalRefId": "a3d9494b-37b3-434b-aa87-ed3087144118",
"dataProperties": {
"columns": [
{
"id": 1568340,
"type": 5,
"ordinal": 0,
"identifier": "externalRefId",
"objectTypeId": null,
"externalRefId": "13f9aefa-fa46-4d8f-81f1-2833cd05473a",
},
{
"id": 1568339,
"type": 5,
"ordinal": 1,
"identifier": "name",
"objectTypeId": null,
"externalRefId": "dfea5b3f-82c9-4c08-80ea-b6b2e74dbec6",
},
{
"id": 1568338,
"type": 5,
"ordinal": 2,
"identifier": "externalRefId",
"objectTypeId": null,
"externalRefId": "ccf8f083-9203-4f85-9e49-600dfedf24a5",
},
{
"id": 1568337,
"type": 5,
"ordinal": 3,
"identifier": "name",
"objectTypeId": null,
"externalRefId": "7e9e3bc6-e912-45f2-8b09-e7c3bfc2a6cd",
}
]
}
},
{
"id": 335154,
"type": 1,
"subtype": 2,
"ordinal": 5,
"externalRefId": "b4db6b70-7090-471f-bab0-7c04ede335e8",
"dataProperties": {
"columns": [
{
"id": 1568346,
"type": 5,
"ordinal": 0,
"identifier": "externalRefId",
"objectTypeId": null,
"externalRefId": "bd74046b-17ae-4ca5-98b2-2c9e236c091e",
},
{
"id": 1568345,
"type": 5,
"ordinal": 1,
"subtype": null,
"identifier": "name",
"objectTypeId": null,
"externalRefId": "2df06fec-cf4b-463a-b284-9641d606bc3e",
},
{
"id": 1568344,
"type": 5,
"ordinal": 2,
"identifier": "externalRefId",
"objectTypeId": null,
"externalRefId": "8b493530-849f-41a6-a757-b0c5fb1a6b46",
},
{
"id": 1568343,
"type": 5,
"ordinal": 3,
"identifier": "name",
"objectTypeId": null,
"externalRefId": "3140b885-5eb0-401f-8187-1c23d9408177",
},
{
"id": 1568342,
"type": 5,
"ordinal": 5,
"identifier": "externalRefId",
"objectTypeId": null,
"externalRefId": "1b55a3bb-b6e1-4a92-835b-4fce84240796",
},
{
"id": 1568341,
"type": 5,
"ordinal": 6,
"identifier": "name",
"objectTypeId": null,
"externalRefId": "fd6cca68-6a05-4a42-b9c0-3ea150e862d4",
},
{
"id": 1568347,
"type": 4,
"ordinal": 10,
"identifier": 75612,
"objectTypeId": 101389,
"externalRefId": "0f313731-c8ce-4e38-b29b-126bbf3664d4",
},
{
"id": 1568351,
"type": 1,
"ordinal": 4,
"identifier": 573102,
"objectTypeId": 101372,
"externalRefId": "1d4a9e0e-60c2-469a-95b2-475e31e88db1",
},
{
"id": 1568350,
"type": 1,
"ordinal": 7,
"identifier": 573395,
"objectTypeId": 101389,
"externalRefId": "a1fa0047-a12c-4f36-ac8e-25de4cc482cb",
},
{
"id": 1568349,
"type": 1,
"ordinal": 8,
"identifier": 573433,
"objectTypeId": 101389,
"externalRefId": "2fd15c0d-3242-4c5b-bc8a-158022c1fa96",
},
{
"id": 1568348,
"type": 1,
"ordinal": 9,
"identifier": 572923,
"objectTypeId": 101389,
"externalRefId": "91ce4df3-af43-4e84-9c25-49b469a51694",
}
]
}
},
.
.
.
]
}

 

Report Table IDs

Table External Reference ID Internal ID
Incidents (with Business Unit) bcd73696-9942-439e-a862-15c308ec9914 335149
Incidents (with Incident Types) a3d9494b-37b3-434b-aa87-ed3087144118 335151
Incidents (with Involved People) b4db6b70-7090-471f-bab0-7c04ede335e8 335154

 

Incidents (with Business Unit)

Object Type Element Element Type Element External Reference ID Element Internal ID Column External Reference ID Column Internal ID
Incident External Reference ID Property n/a n/a 1f7763a8-4f29-4911-a6c1-4487e48e5119 1568359
Incident Name Property n/a n/a d7a89ad4-ec8a-4e5e-b615-9fbf626c3a04 1568360
Incident Description Property n/a n/a 7db47908-b212-414a-a866-5df22ff5981a 1568361
Incident Incident Start DateTime Date Field 33489478-b00d-42ea-9d62-8ea4d545dcad 573051 9f2782ce-c4d4-4518-b5d9-3b9d6d2e6757 1568362
Incident Incident Reported DateTime Date Field 241f6f58-7a5e-491e-846b-8668f5d91e89 573011 c04d5ac3-c7d3-46b6-8684-1583b6e96b7c 1568363
Incident Workflow State Workflow State 450912c1-fab7-4e32-a5a0-aacda21c4c4d 133856 caa2d9be-887d-485a-ba5b-2cba4f675621 1568364
Business Unit External Reference ID Property n/a n/a d98dda9f-e0e0-4b0b-a71a-ca61d9e0bf25 1568365
Business Unit Name Property n/a n/a 79e17075-3454-417c-b0f0-6773d3931959 1568366

 

Incidents (with Incident Types)

Object Type Element Element Type Element External Reference ID Element Internal ID Column External Reference ID Column Internal ID
Incident External Reference ID Property n/a n/a 13f9aefa-fa46-4d8f-81f1-2833cd05473a 1568340
Incident Name Property n/a n/a dfea5b3f-82c9-4c08-80ea-b6b2e74dbec6 1568339
Incident Type External Reference ID Property n/a n/a ccf8f083-9203-4f85-9e49-600dfedf24a5 1568338
Incident Type Name Property n/a n/a 7e9e3bc6-e912-45f2-8b09-e7c3bfc2a6cd 1568337

 

Incidents (with Involved People)

Object Type Element Element Type Element External Reference ID Element Internal ID Column External Reference ID Column Internal ID
Incident External Reference ID Property n/a n/a bd74046b-17ae-4ca5-98b2-2c9e236c091e 1568346
Incident Name Property n/a n/a 2df06fec-cf4b-463a-b284-9641d606bc3e 1568345
Involved Person External Reference ID Property n/a n/a 8b493530-849f-41a6-a757-b0c5fb1a6b46 1568344
Involved Person Name Property n/a n/a 3140b885-5eb0-401f-8187-1c23d9408177 1568343
Involved Person Person Involvement Type Single Select List Field 573102 101372 1d4a9e0e-60c2-469a-95b2-475e31e88db1 1568351
Person External Reference ID Property n/a n/a 1b55a3bb-b6e1-4a92-835b-4fce84240796 1568342
Person Name Property n/a n/a fd6cca68-6a05-4a42-b9c0-3ea150e862d4 1568341
Person First Name Single Line Text Field a7f04ab2-15d1-422d-bd15-51561f438829 573395 a1fa0047-a12c-4f36-ac8e-25de4cc482cb 1568350
Person Last Name Single Line Text Field b5e0365e-474b-401b-af24-fdc5055789cb 573433 2fd15c0d-3242-4c5b-bc8a-158022c1fa96 1568349
Person Photo Image Attachment Field 05a64fb4-1382-4950-98f1-8fd4e6c84b74 572923 91ce4df3-af43-4e84-9c25-49b469a51694 1568348
Person Person User Role f084e414-51ad-4781-9010-de6aa93017c8 75612 0f313731-c8ce-4e38-b29b-126bbf3664d4 1568347

 

Recommendation

As with the relationships, the recommended approach is to pull and store the report and it's components at the beginning of the integration. Write the integration using the report, table and column external reference IDs, and cross-reference the internal IDs if needed for an endpoint.

 

Pulling Data from Core

Retrieve a Single Object

Retrieve an Object by External Reference ID:

mceclip24.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
id path

The internal or external reference ID of the object.

byRef path

True = accept external reference ID

False = accept internal ID.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/CA_127365123?byRef=true'


Response Body

{
"id": 1246, <-- Internal ID
"name": "My Object", <-- Object Name
"description": "The Object's Description", <-- Object Description
"externalRefId": "CA_127365123", <-- External Reference ID
"uniqueId": "57", <-- Unique ID
"objectTypeId": 54634,

Field Evaluations:
"evaluations": {
.
.
.
"406255": { <-- An Attachment Field with URLs (Note: attached files are not visible in the evaluation data)
"value": [
{
"url": "https://www.google.com",
"displayName": "Google"
},
{
"url": "https://www.bing.com",
"displayName": "Bing"
}
],
"modified": "2020-02-09T20:39:33.669Z",
"modifiedBy": 3330
},
"479513": { <-- An Image Attachment Field
"value": {
"x": 0,
"y": 0,
"name": "myfile.jpg", <-- image file name
"width": 0,
"height": 0,
"cropped": 0,
"original": 52, <-- internal ID of original image file
"compressed": 53, <-- internal ID of compressed image file
"description": "Image Description" <-- image description
},
"modified": "2020-02-09T20:38:08.627Z",
"modifiedBy": 3330
},
"517463": {
"value": null <-- an empty field evaluation
},
"517464": {
"value": "Some Text", <-- a text field evaluation
"modified": "2020-02-09T20:39:54.239Z",
"modifiedBy": 3330
},
.
.
.
}
.
.
.
"objectLifeCycleStateId": 267663, <-- workflow state internal ID
.
.
.
Role Assignments:
"roles": {
"roleEvaluations": [ <-- array of roles for this object type
{
"roleId": "38535", <-- internal role ID
"users": [ <-- array of users assigned to this role
3330 <-- internal user ID
],
"groups": [] <-- array of groups assigned to this role
}
],
"users": [ <-- details of any users assigned to this object in any role
{
"id": 3330, <-- internal user ID
"first": "Bryan", <-- user's first name
"last": "Thompson", <-- user's last name
"email": "bryan.thompson@resolver.com", <-- user's email address
"modified": "2020-02-09T20:21:46.793Z",
"externalRefId": "551e1cd3-afdf-4187-810c-b6602f380c0b",
"isAdmin": false,
"superAdmin": true,
"acceptedTos": true,
"lastLogin": "2020-02-09T20:21:46.793Z",
"ssoBypass": false,
"lang": "en-US"
}
],
"groups": [] <-- details of any groups assigned to this object in any role
}
}


Response Code

200

 

Retrieve the Objects Related to a Single Object

Retrieve all Objects related to an Object:

mceclip25.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectId path

The internal ID of the object.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/1246/relationships'


Response Body

{
Array of related objects:
"outgoing": { <-- collection of all relationships for this object
"113213": [ <-- internal relationship type ID / array of related objects
{
"id": 53, <-- related object internal ID
"name": "OT2 - 1",
"description": null,
"objectLifeCycleStateId": 279465,
"externalRefId": "3b6158de-51bd-4b88-8995-e169334c8b90", <-- related object external reference ID
"objectTypeId": 56915,
"uniqueId": "7",
"evaluations": {
.
.
.
}
.
.
.
]
.
.
.
},
Array of referenced objects:
"incoming": {}
}


Response Code

200

 

Retrieve the Files attached to a Single Object

Retrieve all files attached to an object:

mceclip26.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectId path

The internal ID of the object.


Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/1246/file'


Response Body

collection of all attachment and image attachment fields for this object:
{
"406255": [ <-- internal field ID / array of attached files
{
"id": 54, <-- internal file id
"displayFileName": "myfile.jpg", <-- internal file id
"fileType": "jpg",
"contentType": "image/jpeg",
"fileUuid": "e9511b9d-d11d-4128-b478-64e2382024bf",
"created": "2020-02-09T20:38:38.775Z",
"createdBy": 3330,
"externalRefId": "81c550bf-bec4-42c5-8878-f1b46d993b98",
"fileUrl": "https://sandbox.resolver.com/file/file/e9511b9d-d11d-41..." <-- file download URL
}
],
"479513": [
{
"id": 52,
"displayFileName": "myfile.jpg",
"fileType": "jpg",
"contentType": "image/jpeg",
"fileUuid": "b3bb9a88-6996-408d-bb5b-0c0dead1ed42",
"created": "2020-02-09T20:37:51.450Z",
"createdBy": 3330,
"externalRefId": "8a41579e-dda7-4fc2-a2ed-3bb2c7eec749",
"fileUrl": "https://sandbox.resolver.com/file/file/b3bb9a88-6996-408d-bb5b-0c0dead1ed42.jpg/displayFileName/myfile.jpg?token=eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJmaWxlIjoiYjNiYjlhODgtNjk5Ni00MDhkLWJiNWItMGMwZGVhZDFlZDQyLmpwZyIsIm9yZyI6OTczLCJfcHVycG9zZSI6ImRvd25sb2FkIiwiZXhwIjoxNTgxMjg3ODcyLCJpYXQiOjE1ODEyODQyNzJ9.AQICAHgPjufvtghndUvcYMwgWWc8i9Bs5NNytmOBXL3Iyn1EwwH2fOzqVgIPww2SPgEp2kBQAAABJjCCASIGCSqGSIb3DQEHBqCCARMwggEPAgEAMIIBCAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAztEc17eyfyDzEv4bQCARCAgdqaZxaavu6HlJBeADYDi4q42CfIAIVTgLpVqLZIBrH5bfDMpfksSEjpMJ7JInoWJvvGHluhJKLIvTEnH3UJAXQS9xFRvIpaPf2hSJcDjOqC0x7jfgwMhU7oqvKT_zHkjG0qDRG581zD4qrzI1wTvtNnD-InTZsqNx9KqcCdzrFMrmPeR16bLVwAGk4a8raEYuKfjGaBDjQU0oaldQ-SkFhzTRM3F0v_yx60BU-Dcpk7BJ8fuo0L9Ksk7MFZwAkSDMV9Pw6OAV6PGZ1DbopCYhQlfs1BqJtgPVpo_g"
},
{
"id": 53,
"displayFileName": "compressed-myfile.jpg",
"fileType": "jpg",
"contentType": "image/jpeg",
"fileUuid": "8e3be781-e58f-4bae-80fd-9d6f76cadf85",
"created": "2020-02-09T20:37:51.754Z",
"createdBy": 3330,
"externalRefId": "da677529-bc18-4538-a8a8-5d83d042a91e",
"fileUrl": "https://sandbox.resolver.com/file/file/8e3be781-e58f-4bae-80fd-9d6f76cadf85.jpg/displayFileName/compressed-myfile.jpg?token=eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJmaWxlIjoiOGUzYmU3ODEtZTU4Zi00YmFlLTgwZmQtOWQ2Zjc2Y2FkZjg1LmpwZyIsIm9yZyI6OTczLCJfcHVycG9zZSI6ImRvd25sb2FkIiwiZXhwIjoxNTgxMjg3ODcyLCJpYXQiOjE1ODEyODQyNzJ9.AQICAHgPjufvtghndUvcYMwgWWc8i9Bs5NNytmOBXL3Iyn1EwwH3cwXJMI8xWR2F-bvmlmWVAAABJjCCASIGCSqGSIb3DQEHBqCCARMwggEPAgEAMIIBCAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAzGUBmClw1QIXBnevoCARCAgdp-FYcxPry3hU7RB0ceoq7UE8vLK0lwGA3-o3EzF34_DT1NNUfN-e12sTucBpnA0uGDzwawoZKYqvkoh6eJZbk3iXqXKjxZ_zDlq2vB-zuQrTgVJ7ZD3TNlmNq9KxF_1Gh9gcyYwe7N-ME8yJYZcBcMnJ7s_HGv5XSF7TJCzJD2O5AcvWlRswT0d5skU6aUXyCTXVPYMr2iOkhKrxQui9_r1WJbr9voEU8rmxgr_6zDY82SoSPktXFV0yoni7ynyvTqYfHtzBNsIkcTRfL2My6JK4HIUNVNR33Q_w"
}
]
}


Response Code

200

 

Retrieving Multiple Objects

Option 1: Retrieving Multiple Objects by Object Type

Use this approach when:

  1. You require a flat list of objects with just their basic properties (e.g. Name and External Reference ID)
  2. Retrieving information about related objects is not required
  3. The objects in question can not be pulled into a report because they are not related to a common anchor object

Examples

  • A large collection of Person objects that represent the company's employees. By default these Person objects are not linked to other objects until they are referenced in an Incident.
  • The defined list of Incident Type objects used to classify Incidents. By default they are not linked to other objects until they are related to an Incident. 

There is no way to retrieve all Person or Incident Type objects in a company-wide report as there is no relationship path from the Company object to a Person or an Incident Type until they are linked to an Incident.

The object service includes a set of endpoints for pulling objects from Core by Object Type:

mceclip2.png

These endpoints take identical parameters and return object data in the same json format. Objects are returned with their properties and fields. If relationships and roles are required, they must be retrieved individually for each object.

Endpoint Description
GET /data/object/created Retrieve all recently created objects.
GET /data/object/deleted Retrieve all recently deleted objects.
GET /data/object/relationships/created Retrieve objects with created relationships.
GET /data/object/relationships/deleted Retrieve objects with recently deleted relationships.
GET /data/object/roleMemberships/created Retrieve objects with recently created user role memberships.
GET /data/object/roleMemberships/deleted Retrieve objects with recently deleted user role memberships.
GET /data/object/updated Retrieve all recently updated objects. This includes the results returned from all other endpoints except for recently deleted objects.

As you can see from the descriptions, the majority of these endpoints return lists of objects for very specific types of changes. Typically, the only required endpoints are GET /data/object/deleted, to retrieve the names and IDs of any objects that were deleted in Core, and GET /data/object/updated to retrieve all objects that have been modified. This includes objects that:

  • have been created
  • have had a field or property modified
  • have been linked to or unlinked from another object
  • have had a user (or user group) assigned to or unassigned from a role

In the following example, we are retrieving all Incident objects that have been modified since February 20, 2020 8:45 am EST (UTC-5).

mceclip1.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
since query

An ISO 8601 date-time string.

Endpoint will return all objects modified since this date and time.

pageSize query The number of objects to return per page. Accepts values between 100 and 1000 (default).
pageNumber query

The page number to retrieve. If there are more than pageSize results, there will be multiple pages to retrieve.

includeCount query If true, results will include a "count" parameter with the number of objects returned for the requested page, and a "totalCount" parameter with the total number of modified objects matching the since date-time.

Request

curl -X GET --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/updated?objectTypeRefId=Incident&since=2020-02-21T08%3A45%3A00.000-05%3A00&pageSize=1000&pageNumber=1&includeCount=true'


Response Body

{
Array of modified objects:
"data": [
{
"id": 3025,
"name": "INC-2020-02-20-112 Availability", <-- object's name
"description": "",
"externalRefId": "75d23ba8-d575-4466-9885-2065f9217a75", <-- object's external reference ID

List of field values:
"evaluations": {
"33489478-b00d-42ea-9d62-8ea4d545dcad": { <-- field's external reference ID
"value": 1582293180, <-- current value
"modified": "2020-02-21T13:54:01.295Z", <-- date-time that field was modified
"modifiedBy": 3330 <-- ID of user who modified the field
},
.
.
.
"488a1f72-5b25-4be1-b4af-62eeb8b8b934": {
"value": null
},
"53cc81f5-c2c3-4fbd-9ee5-16646b374777": {
"value": 1834279,
"modified": "2020-02-20T18:55:22.694Z",
"modifiedBy": 3330
},
.
.
.
"fd449ed5-be37-4550-9d07-d1e85ad2d75c": {
"value": null
}
},
"created": "2020-02-20T18:55:22.311Z",
"modified": "2020-02-21T13:54:01.295Z",
"canWrite": false
},
{
"id": 2079,
"name": "INC-733: 2019 - Unauthorized Activity",
"description": "",
"externalRefId": "Incident110",
"evaluations": {
.
.
.
},
"created": "2020-02-11T22:51:52.143Z",
"modified": "2020-02-21T13:55:26.914Z",
"canWrite": false
},
{
"id": 2050,
"name": "INC-852: 2019 - Impersonation",
"description": "",
"externalRefId": "Incident81",
"evaluations": {
.
.
.
},
"created": "2020-02-11T22:51:52.143Z",
"modified": "2020-02-21T13:56:06.887Z",
"canWrite": false
}
],
"totalCount": 3, <-- total number of objects modified since February 20, 2020 8:45 am EST
"count": 3 <-- number of objects returned on page 1
}


Response Code

200

Notes

To determine which field(s) have been modified, check the modified property for each field. If no fields have been modified, then the modification was to a writable property (name, description or geolocation) or to a relationship or role. Property modifications are not tracked separately from the object itself. Roles and relationships must be retrieved individually as per the above examples.

 

Example Scenario: Retrieve the Company object and all  Business Unit and Incident Type objects

Riverdale Industries needs to retrieve all Business Unit and Incident Type objects so that they can link them to Incidents. They also need to retrieve their single Company object so that they can use it as the anchor for their export report. When pulling flat lists of objects when only a They pull all existing objects for these three object types.

Object Type IDs

Object Type External Reference ID Internal ID
Incident Incident 101362
Involved Person InvolvedPerson 101372
Person Person 101389
Business Unit BusinessUnit 101344
Company Company 101348
Incident Type IncidentType 101364

 

Company

Request 

curl -X GET --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/updated?objectTypeRefId=Company&since=1970-01-01T00%3A00%3A00.000Z&pageSize=1000&pageNumber=1&includeCount=true'

Response Body

{
"data": [
{
"id": 1,
"name": "Riverdale Industries",
"externalRefId": "Company1",
}
],
"totalCount": 1,
"count": 1
}

Company Objects

Name External Reference ID Internal ID
Riverdale Industries Company1 1

 

Business Units

Request 

curl -X GET --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/updated?objectTypeRefId=BusinessUnit&since=1970-01-01T00%3A00%3A00.000Z&pageSize=1000&pageNumber=1&includeCount=true'

Response Body

{
"data": [
{
"id": 5,
"name": "Corporate Security",
"externalRefId": "BusinessUnit4",
},
{
"id": 3,
"name": "Shared Services",
"externalRefId": "BusinessUnit2",
},
{
"id": 4,
"name": "Operations",
"externalRefId": "BusinessUnit3",
},
{
"id": 2,
"name": "Corporate",
"externalRefId": "BusinessUnit1",
}
],
"totalCount": 4,
"count": 4
}

 Business Unit Objects

Name External Reference ID Internal ID
Corporate BusinessUnit1 2
Shared Services BusinessUnit2 3
Operations BusinessUnit3 4
Corporate Security BusinessUnit4 5

 

Incident Types

Request 

curl -X GET --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/updated?objectTypeRefId=IncidentType&since=1970-01-01T00%3A00%3A00.000Z&pageSize=1000&pageNumber=1&includeCount=true'

Response Body

{
"data": [
{
"id": 2202,
"name": "Loss/Theft/Compromise of Classified Information",
"description": "Category: Information Protection Subcategory: Information Protection",
"externalRefId": "IncidentType12",
},
{
"id": 2200,
"name": "Near Miss - Damage",
"description": "Category: Property Incident Subcategory: Suspicious Activity",
"externalRefId": "IncidentType10",
},
{
"id": 2198,
"name": "Employee Fraud",
"description": "Category: Person Incident Subcategory: Fraud",
"externalRefId": "IncidentType8",
},
.
.
.
{
"id": 2195,
"name": "Staff Injury",
"description": "Category: Emergency Subcategory: Medical",
"externalRefId": "IncidentType5",
},
.
.
.
],
"totalCount": 53,
"count": 53
}

Incident Type Objects

Name External Reference ID Internal ID
Security Breach IncidentType1 2191
Facility Damage IncidentType2 2192
Stolen Property IncidentType3 2193
Unauthorized Person IncidentType4 2194
Staff Injury IncidentType5 2195
Suspected Counterfeit IncidentType6 2196
Enforcement/Raid IncidentType7 2197
Employee Fraud IncidentType8 2198
Near Miss - Access IncidentType9 2199
Near Miss - Damage IncidentType10 2200
Near Miss - Injury IncidentType11 2201
Loss/Theft/Compromise of Classified Information IncidentType12 2202
Failure to Protect Classified Matter IncidentType13 2203
Loss/Theft/Compromise of CUI IncidentType14 2204
Failure to Protect CUI Matter IncidentType15 2205
Information Protection IncidentType16 2206
Loss/Theft of Firearm IncidentType17 2207
Loss/Theft of Armored Vehicle IncidentType18 2208
Improper Storage of Firearms IncidentType19 2209
Uninteded Discharge of Firearm IncidentType20 2210
Protective Force IncidentType21 2211
Loss/Theft of Security Keys IncidentType22 2212
Loss/Theft/Destruction of Government Property IncidentType23 2213
Unauthorized Introduction of Prohibited Items IncidentType24 2214
Failed Escort of Uncleared Personnel IncidentType25 2215
Failed Escort of Visitors IncidentType26 2216
Improper Badge Access Level IncidentType27 2302
Theft of Security Badge IncidentType28 2303
Law Enforcement Interaction (Fines) IncidentType29 2304
Criminal Investigation of Employee IncidentType30 2305
Hostile Act against Property IncidentType31 2306
Hostile Act against Personnel IncidentType32 2307
Peaceful Demonstration IncidentType33 2308
Labor Strike IncidentType34 2309
Spam IncidentType35 2310
Harassment IncidentType36 2311
Child/sexual/violence IncidentType37 2312
Malicious Code IncidentType38 2313
Scanning IncidentType43 2314
Sniffing IncidentType44 2315
Social Engineering IncidentType45 2316
Exploiting known vulnerabilities IncidentType46 2317
Login Attempts IncidentType47 2318
New attack signature IncidentType48 2319
Compromised Account IncidentType49 2320
Availability IncidentType52 2321
Unauthorised acess to information IncidentType55 2322
Unauthorised modification of information IncidentType56 2323
Unauthorized use of resources IncidentType57 2324
Digital Copyright IncidentType58 2325
Masquerade IncidentType59 2326
Violation of Security Policies IncidentType60 2327
Physical damage of Property IncidentType61 2328

 

Option 2: Retrieving Values from Multiple Objects using a purpose-built Report

Use this approach when:

  1. You require field, role and relationship details
  2. You require an extract of multiple, related objects (e..g Incidents with all of their linked Person and Location Involvements)
  3. The objects to extract are all related to a single anchor object that can be used as the basis of the report

Examples

  • Run a report on a Compliance Framework with all of it's linked Topics, Sub Topics and Requirements
  • Run a report on a Company with it's linked Business Units, Incidents, Involved Persons and Involved Locations

Reports in Core are executed on a single anchor object, and can pull in data from a subset of linked objects. This approach is therefore possible if the data you wish to retrieve is linked, through a defined path, to an anchor object. For object types that have been created in isolation and are not related to a suitable anchor, this approach will not be possible. 

Reports should either be configured with a date filter or parameter that they can be used to retrieve only the data that has been created or updated since the last time the report was run. If building a report with multiple tables, parameters can be configured on individual tables as well.

  1. Choose or build a report containing a single table with all desired fields, formulas and roles from all desired object types:
    mceclip35.png
    In this example:
    1. The report IM - Incident List Report (External Reference ID 6fef6a1a-c3e3-44c6-849d-793c8a644904)
    2. has been executed for the company Object Riverdale Industries (Internal ID 1).
    3. The report has a date filter configured for Incident Type field Incident Reported DateTime and will pull in any incident Objects with a Incident Reported DateTime between the from and to dates.
    4. The report contains a single table of incident Objects and their related incident type Objects. 
  2. Execute the report, pulling data for the single report table:
    mceclip1.png

    Parameters
    Parameter Type Description
    x-api-key header The API Key used to authorize the request.
    reportId path The internal ID of the report to run.
    tableId path The internal ID of the report table to retrieve.
    objectId path

    The internal ID of the object to run the report against.

    parameters query JSON encapsulated sorting and filtering preferences (see Parameters Syntax below).
    skipCache query

    true = skip report caching and return current data

    false = return cached data if present


    JSON structure for "parameters" Parameter

    {
    Array of applied Report Filters:
    "filters":[
    {
    "id":215852, <-- internal filter ID --> In this case, the filter is using the DateTime field 'Incident Reported DateTime'
    "value":[
    1571191620, <-- start DateTime --> Tuesday, October 15, 2019 10:07:00 PM EST
    -1 <-- end DateTime (now)
    ]
    }
    ]
    }

    Request
    curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/reportData/102514/table/322898/object/1?parameters=%7B%22filters%22%3A%5B%7B%22id%22%3A215852%2C%22value%22%3A%5B1571191620%2C-1%5D%7D%5D%7D&skipCache=true'

    Response Body
    {
    "componentId": 322898, <-- internal ID of table
    "componentType": 1,
    "componentSubType": 2,

    Array of returned table rows:
    "data": [
    {
    First row, containing a collection of columns:
    "1339333": {
    "columnId": 1339333, <-- internal column ID
    "type": 3, <-- column type (3 = formula)
    "subtype": 1,
    "identifier": 314324, <-- internal formula IDserv
    "path": "",
    "ordinal": 0, <-- column order within row
    "objectId": 196,
    "objectUniqueId": "91",
    "objectTypeId": 95308,
    "rawValue": {
    "color": "#7ED321",
    "label": 1,
    "value": 1,
    "rangeId": 988450, <-- internal ID of formula Range
    "rangeNameKey": "app:formulaRange:name:cfab70b0-75f8-4716-b88b-26c0c745263a",
    "formulaNameKey": "app:formula:name:4e13d1a0-ca53-449e-af44-3dbc7c4388f4",
    "lastCalculated": "2020-01-16T22:13:48.122Z"
    },
    "sortValue": 1
    },
    "1339606": {
    "columnId": 1339606, <-- internal column ID
    "type": 5, <-- column type (5 = property)
    "subtype": null,
    "identifier": "name",
    "path": "",
    "ordinal": 1, <-- column order within row
    "objectId": 196,
    "objectUniqueId": "91",
    "objectTypeId": 95308,
    "rawValue": "INC-880: 2019 - To Damage Reputation", <-- object name
    "resolvedValue": "INC-880: 2019 - To Damage Reputation",
    "sortValue": "INC-880: 2019 - To Damage Reputation"
    },
    .
    .
    .
    },
    .
    .
    .
    ],
    "count": 25 <-- count of returned rows
    }

    Response Code
    200

 

Example Scenario: Retrieve all Incidents and related objects using a custom report

Finally all the prep work is done! Riverdale Industries is now ready to use their custom report to pull today's updated Incident data from Core. They pull the data for each of their three report tables, passing in the internal IDs of the report, the report table and their Company object. They then map the internal column IDs to the various data elements using configuration that they retrieved earlier.

Company Objects

Name External Reference ID Internal ID
Riverdale Industries Company1 1

Reports

Report External Reference ID Internal ID
Incident Export b79cd607-9ec8-429c-96b7-b0507f405ab0 106608

Report Tables

Table External Reference ID Internal ID
Incidents (with Business Unit) bcd73696-9942-439e-a862-15c308ec9914 335149
Incidents (with Incident Types) a3d9494b-37b3-434b-aa87-ed3087144118 335151
Incidents (with Involved People) b4db6b70-7090-471f-bab0-7c04ede335e8 335154

 

Incidents (with Business Unit)

Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/reportData/106608/table/335149/object/1?skipCache=true'


Response Body

{
"componentId": 335149,
"componentType": 1,
"componentSubType": 2,
"data": [
{
"1568359": {
"columnId": 1568359,
"type": 5,
"subtype": null,
"identifier": "externalRefId",
"path": "",
"ordinal": 0,
"objectId": 2080,
"objectUniqueId": "111",
"objectTypeId": 101362,
"rawValue": "Incident111",
"resolvedValue": "Incident111",
"sortValue": "Incident111"
},
"1568360": {
"columnId": 1568360,
"type": 5,
"subtype": null,
"identifier": "name",
"path": "",
"ordinal": 1,
"objectId": 2080,
"objectUniqueId": "111",
"objectTypeId": 101362,
"rawValue": "INC-917: 2019 - Unrouteable Traffic",
"resolvedValue": "INC-917: 2019 - Unrouteable Traffic",
"sortValue": "INC-917: 2019 - Unrouteable Traffic"
},
.
.
.
},
{
"1568359": {
"columnId": 1568359,
"type": 5,
"subtype": null,
"identifier": "externalRefId",
"path": "",
"ordinal": 0,
"objectId": 2078,
"objectUniqueId": "109",
"objectTypeId": 101362,
"rawValue": "Incident109",
"resolvedValue": "Incident109",
"sortValue": "Incident109"
},
"1568360": {
"columnId": 1568360,
"type": 5,
"subtype": null,
"identifier": "name",
"path": "",
"ordinal": 1,
"objectId": 2078,
"objectUniqueId": "109",
"objectTypeId": 101362,
"rawValue": "INC-672: 2019 - Phishing",
"resolvedValue": "INC-672: 2019 - Phishing",
"sortValue": "INC-672: 2019 - Phishing"
},
},
.
.
.
],
"count": 26
}


Incidents (with Incident Type)

Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/reportData/106608/table/335151/object/1?skipCache=true'

 

Incidents (with Involved People)

Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/reportData/106608/table/335154/object/1?skipCache=true'

 

Note

They can now map the column values back to their equivalent fields in ExtSys. In many cases (text fields for example), a column's rawValue may be sufficient. For discrete values (e.g. select list options, assigned users) additional mapping may be required using the column configuration and field details pulled previously.

 

Pushing Data to Core

Located under the dataImport service, the JSON version of Resolver's data import endpoint is the best method of pushing data to Core. While it is also possible to create or update objects in the system through object service endpoints, or by using the Excel version of the data import endpoint, these  options are significantly more complicated to implement, and offer few (if any) advantages when building an integration.

Overview

The POST /creation/import/json endpoint is used to upload data to Core. It offers the following functionality:

  1. Used to import new data to Core, or update existing data.
  2. Accepts a request body in json format containing objects, field values, role assignments, relationships and workflow states.
  3. Can be used to import a single object, or perform a bulk import.
  4. Can be executed synchronously (will wait for completion) or asynchronously (will schedule a background job that can be polled for completion).
  5. Can execute formula recalculations and permission regenerations immediately after import (when performing a single import), or defer until all imports have been completed (when performing a series of imports).
  6. File and Image attachments must be uploaded individually.

mceclip0.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
impersonate-user-id header The ID of a user to impersonate. If blank, the request is executed under the ID of the API Key user.
dryRun query Perform a test run only. No data will be changed, but response will be identical. Used to test import date.
useJob query If false, data import will occur immediately, and Core will respond when complete. This option is easiest to implement, but is recommended only for small updates (i.e. of a single Object) as large imports will time out after 60 seconds.

If true, will schedule a background job to perform the import. Core will respond immediately with the Job ID so that it can be polled for completion using GET /object/job/{id}.
deferPostProcessing query If false, all formula and permission recalculations resulting from the import will be executed immediately.

If true, all formula recalculations and permission regenerations resulting from the import will be executed after calling POST /data/postProcess/dataImport/formulas and POST /data/postProcess/dataImport/permissions. Use this option when performing multiple imports that will affect the same formulas or permissions. This will prevent Core from unnecessarily recalculating/regenerating the same data multiple times and improve the speed of the import.

 

Body

The request body takes a nested json structure of objects and relationships. The functionality is identical to performing an Excel data import, without the need to populate a data import template. 

Success in designing a json data import requires a thorough understanding of the resolver Core data import process. Before proceeding, we highly recommend that you:

  1. Read all Data Import help articles, starting with a brief overview. 
  2. Download a data import template, and populate it with sample data, including:
    1. New objects to create (requiring a new, unique External Reference ID)
    2. Existing objects to update (requiring the existing, unique External Reference ID)
    3. New relationships to create (using the External Reference IDs of the two objects to link)
  3. Ensure that you understand what each column does and the values it accepts.
  4. Perform some test imports.

Once the Excel import is working as expected, proceed with building the json equivalent.

Important Information about Data Import Behaviour:

All imported values result in updates or additions. Import does not have the ability to delete objects, clear relationships, roles or fields. The behaviour of each element is as follows:

Element Add vs Overwrite Description
Object Depends If the object exists: updates the existing object, otherwise: creates a new object.
Field Overwrite Overwrites the existing field value on the object.
Role Add Assigns all specified users to the role on the object. Users who are already assigned to the role on the object are not removed.
Workflow State Overwrite Moves the object to specified workflow state. 
Relationship Add Links the specified pair of objects. Existing relationships are not removed.

 

Formatting Requirements:

Properties

Property Format
Name

plain text up to 300 characters

Description

plain text

Workflow State

name of a valid workflow state (text)

Geolocation Coordinates:

geo-latitude
geo-longitude

latitude and longitude (decimal)

Note:

Coordinate data is successfully imported using any number of decimal places; however, for consistency, it's best practice to use 6 decimal places (e.g., 54.123793, -113.127389).

The geo-latitude and geo-longitude columns and respective lat/long coordinates are mandatory for all geolocation imports, including locations with complete addresses. All other columns are optional.

Geolocation Address:

geo-houseNumber
geo-street
geo-city
geo-state
geo-zipcode
geo-country

plain text

Note:

Address information, including partial addresses, are imported into the Location address field (if displayed) as is. Auto-complete is not supported on imported addresses.

The import tool does not validate coordinates or addresses.

 

Fields

Field Type Format
Text (single-line)

plain text within the configured minimum and maximum characters for the field

Text (multi-line)

plain text, Markdown, or RTF-formatted text within the configured minimum and maximum characters for the field

Numeric

integer or decimal number

Date & Time Unix Epoch Timestamp (integer)
Select List (single) name of a valid field option (text)
Select List (multi)

name of one or more valid field options, comma delimited (text)

Note: option names containing commas are not supported.

Attachment

web link: "[Display text](URL)"

file: n/a

Image Attachment n/a

Note: File and Image Attachment fields are not currently supported via JSON import. See the examples below for the steps required to upload a file or image attachment.

Roles

Field Type Format
Role

email address of one or more active users, comma delimited (text)
Note: email addresses are case sensitive.


Json Body Breakdown

The json body is a single data structure, wrapped in braces.
{
In the objects section, enter a list of all object types to create/update.
Each object type is specified using it's External Reference ID.
"objects": {
"External Reference ID of Object Type 1": [

Under each object type, enter an array of objects to import.
Each object is a collection of key-value pairs wrapped in braces.
{
External Reference ID of 1st object to import:
"externalReferenceId": "External Reference ID of Object 1",

Set object's name:
"name": "Name of Object 1",

Set object's description:
"description": "Description of Object 1",

Set field values on the object:
"Field 1 Unique Name": "value of Field 1 on Object 1",
.
.
.
"Field N Unique Name": "value of Field N on Object 1",

Assign user(s) to roles on the object:
"Role 1 Name": "user-1a.email@address.com, ... user-1n.email@address.com",
.
.
.
"Role N Name": "user-na.email@address.com, ... user-nn.email@address.com",

Set the object's workflow state:
"Workflow Name": "Workflow State Name"
},
.
.
.
{
External Reference ID of Nth object to import:
"externalReferenceId": "External Reference ID of Object N",
.
.
.
}
]
},

In the relationships section, enter a list of all relationship types to import.
Each relationship type is specified using it's External Reference ID.
"relationships": {
"External Reference ID of Relationship Type 1": [
Under each relationship type, enter an array of relationships to create.
{
Relationship 1
"source": "External Reference ID of Source Object",
"destination": "External Reference ID of Destination Object"
},
.
.
.
{
Relationship N
"source": "External Reference ID of Source Object",
"destination": "External Reference ID of Destination Object"
}
]
}
}

 

Performing a Json Data Import

Option 1: Synchronous Import

  1. Perform a small import job (recommended for a single object, or a small set of related objects):

    Request
    curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d 'REQUEST_BODY' 'https://sandbox.resolver.com/creation/import/json?dryRun=true&useJob=false&deferPostProcessing=false

    Response Code
    200

 

 

Example Scenario: upload a batch of Incidents and related Data to Core

It's time for Riverdale Industries' daily sync from ExtSys to Core. In ExtSys, 1 new Incident record has been created, along with a new related Person record. An existing Person (employee) is also involved in the Incident, and an unrelated Person record has also been updated. They will now use json data import to add the new Incident and Person Records, link the Incident to the existing Person record and update the other existing Person record in Core.

Object Type IDs

Object Type External Reference ID
Incident Incident
Involved Person InvolvedPerson
Person Person
Business Unit BusinessUnit
Company Company
Incident Type IncidentType

 

Relationships

Object Type Relationship External Reference ID
Incident Primary Incident Type Incident-PrimaryType
Incident Business Unit Incident-BusinessUnit
Incident Involved People Incident-InvolvedPerson
Involved Person Linked Person InvolvedPerson-Person

 

Fields

Object Type Field Unique Name
Incident Incident Start DateTime INCIDENTDA
Incident Incident Reported DateTime INCIDENTRE
Person First Name FIRSTNAME
Person Last Name LASTNAME
Person Photo PHOTO
Involved Person Person Involvement Type PERSONINVO

 

Incidents

Status ExtSys Unique record ID Name Description Incident Start Incident Reported Incident Type ID Incident Type Name Business Unit ID Business Unit Name
new INC_20200302_1 Near Miss - Injury - 2020-03-01 A customer slipped and almost fell on the Ice at HQ front entrance. 2020-03-01 15:30 2020-01-01 15:55 IncidentType11 Near Miss - Injury BusinessUnit3 Operations

 

Persons

Status ExtSys Unique record ID First Name Last Name Photo Person User
new Person99 Bob Thompson Bob_Thompson.jpg  
existing Person1 Tristan Alves    
updated Person3 Rita Welles   rita.hayworth@coreqe.com

 

Person Involvements

Status ExtSys Unique record ID Person Unique ID Person Name Involvement Type Incident ID Incident Name
new PI_20200302_1 Person99 Bob Thompson Victim INC_20200302_1 Near Miss - Injury - 2020-03-01
new PI_20200302_2 Person1 Tristan Alves Reporting Party INC_20200302_1 Near Miss - Injury - 2020-03-01

 

Request

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{
"objects": {
"Incident": [
{
"externalReferenceId": "INC_20200302_1",
"name": "Near Miss - Injury - 2020-03-01",
"description": "A customer slipped and almost fell on the Ice at HQ front entrance.",
"INCIDENTDA": "1583181000",
"INCIDENTRE": "1583182560",
"Incident Status": "Open"
}
],
"Person": [
{
"externalReferenceId": "Person99",
"name": "Bob Thompson",
"FIRSTNAME": "Bob",
"LASTNAME": "Thompson"
},
{
"externalReferenceId": "Person3",
"name": "Rita Welles",
"LASTNAME": "Welles"
}
],
"InvolvedPerson": [
{
"externalReferenceId": "PI_20200302_1",
"name": "Bob Thompson",
"PERSONINVO": "Victim"
},
{
"externalReferenceId": "PI_20200302_2",
"name": "Tristan Alves",
"PERSONINVO": "Reporting Party"
}
]
},
"relationships": {
"Incident-PrimaryType": [
{
"source": "INC_20200302_1",
"destination": "IncidentType11"
}
],
"Incident-BusinessUnit": [
{
"source": "INC_20200302_1",
"destination": "BusinessUnit3"
}
],
"Incident-InvolvedPerson": [
{
"source": "INC_20200302_1",
"destination": "PI_20200302_1"
},
{
"source": "INC_20200302_1",
"destination": "PI_20200302_2"
}
],
"InvolvedPerson-Person": [
{
"source": "PI_20200302_1",
"destination": "Person99"
}
]
}
}' 'https://sandbox.resolver.com/creation/import/json?dryRun=false&useJob=false&deferPostProcessing=false'

 

Response Code

200

 

Except from Results

The new Incident:

mceclip4.png

Victim Involvement:

mceclip3.png

New Person Record:

mceclip2.png

 

 

Option 2: Asynchronous Import

  1. Request a large import job (multiple objects & relationships):

    Request
    curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d 'REQUEST_BODY' 'https://sandbox.resolver.com/creation/import/json?dryRun=true&useJob=true&deferPostProcessing=false'

    Response Body
    {
      "jobId": "125eee06-cf60-4c76-8cd6-ccaafcbb447e" <-- Job ID of the import request
    }

    Response Code
    200
  2. Poll Job Status for successful completion:
    mceclip1.png

    Parameters

    Parameter Type Description
    x-api-key header The API Key used to authorize the request.

    Status Codes

    Status Code Description
    1 in progress
    2 success
    3 failure

    Request
    curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/object/job/125eee06-cf60-4c76-8cd6-ccaafcbb447e'

    Response Body (in progress)
    {
      "id": "125eee06-cf60-4c76-8cd6-ccaafcbb447e",
    "status": 1, <-- In Progress
    "payload": {},
    "started": 1580875009, <-- Job start time (Unix timestamp)
    "finished":
    }

    Response Body (success)
    {
    "id": "125eee06-cf60-4c76-8cd6-ccaafcbb447e",
    "status": 2, <-- Succeeded
    "payload": {},
    "started": 1580875009, <-- Job start time (Unix timestamp)
    "finished": 1580875024 <-- Job finish time (Unix timestamp)
    }

    Response Body (failure)
    {
    "id": "125eee06-cf60-4c76-8cd6-ccaafcbb447e",
    "status": 3, <-- Failed
    "payload": {
    "errors": [
    Error message(s):
    "objectType with reference: external-ref-for-object-type does not exist"
    ],
    "code": 422 <-- http error code
    }
    ,
    "started": 1580875009, <-- Job start time (Unix timestamp)
    "finished": 1580875024 <-- Job finish time (Unix timestamp)
    }

    Response Code
    200

    Note
    :
    1. The response code returned by the GET /object/job/{id} endpoint indicates success or failure for retrieving the job status, NOT the success or failure of the data import job.
    2. If the import job fails, any error messages and response codes are returned in the response body.

Option 3: Multiple Asynchronous Imports with deferred Formula Recalculation and Permission Regeneration

  1. Request a large import job (multiple objects & relationships):

    Perform an asynchronous request as per example 2, and set:
    deferPostProcessing=true
  2. Poll Job Status for successful completion.
  3. Repeat 1 & 2 until all imports have completed.
  4. Request deferred Formula Recalculation:
    mceclip4.png

    Parameters
    Parameter Type Description
    x-api-key header The API Key used to authorize the request.
    org query ID of your sandbox or production org

    Request
    curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/postProcess/dataImport/formulas?org=973'

    Response Code
    200

    Note
    The POST /data/postProcess/dataImport/formulas endpoint will add each invalidated formula to the formula recalculation queue. Each formula will be processed individually. Total completion time will depend on the existing size of the formula recalculation backlog, and the number of higher-priority recalculation requests that arrive before completion. There is currently no way to confirm when the recalculation of all affected formulas has completed. In the GUI, users will see the value of each individual formula update as it is processed.
  5. Request deferred Permission Regeneration:
    mceclip5.png

    Parameters

    Parameter Type Description
    x-api-key header The API Key used to authorize the request.
    org query ID of your sandbox or production org

    Request
    curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/postProcess/dataImport/permissions?org=973'

    Response Body
    2361e35c-f764-40c9-bbb1-68aed8f68130 <-- Job ID of the permission regeneration request

    Response Code
    200

    Note
    1. The POST /data/postProcess/dataImport/permissions endpoint will queue an asynchronous permission regeneration job and return the job ID for tracking. Polling for successful completion of this job is optional.
    2. Unlike the POST /creation/import/json endpoint which returns the job ID wrapped in a json object, the POST /data/postProcess/dataImport/permissions endpoint simply returns the job ID as an unwrapped string.

Upload and Attach a File

Attaching an image is a two-step process:

  1. Upload the file:
    mceclip14.png

    Parameters
    Parameter Type Description
    x-api-key header The API Key used to authorize the request.
    file formData

    Binary file to upload via form Post using field "file".


    Request
    curl --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -F 'file=@myfile.jpg' 'https://sandbox.resolver.com/data/file/file'

    Response Body
    {
    "id": 41, <-- internal id of the uploaded file
    "displayFileName": "myfile.jpg", <-- file name
    "fileType": "jpg",
    "contentType": "image/jpeg",
    "fileUuid": "afa20fbd-49d7-40f9-b4ce-9daa0d11d60a",
    "created": "2020-02-09T02:56:36.028Z",
    "createdBy": 19732,
    "externalRefId": "d2b4d013-a3e8-4119-96b0-eb8f8836d0b3",
    "fileUrl": "https://sandbox.resolver.com/file/file/afa20fbd-49d7-40f9-b4ce-9daa0d11d60a.jpg/displayFileName/cow.jpg?token=eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJmaWxlIjoiYWZhMjBmYmQtNDlkNy00MGY5LWI0Y2UtOWRhYTBkMTFkNjBhLmpwZyIsIm9yZyI6OTczLCJfcHVycG9zZSI6ImRvd25sb2FkIiwiZXhwIjoxNTgxMjIwNTk2LCJpYXQiOjE1ODEyMTY5OTZ9.AQICAHgPjufvtghndUvcYMwgWWc8i9Bs5NNytmOBXL3Iyn1EwwFts5lJe9YHQsoTXgpP6CTCAAABJjCCASIGCSqGSIb3DQEHBqCCARMwggEPAgEAMIIBCAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAxttJEZ7iQ3NJSA2UUCARCAgdryR3A8Y9akrBlzOEZeRHmNLfjfUQ1LvLGYNyHksv5a2mvyYP3VbxcjXxQH3RKZGTYk1reNc3sOynaOeUATyX3c2QJlajc0BNqnB7GFfN5OSo-53gK5FvxNmdqNndEwaZlpuIL9pkAiOAt58eIhYwcJjXRk-oAjyZkRvUrsaZp1OjMWeuOSOp8yp5grC-_3sUSp2sIErhdKg5MgO_u_51Qr__LrvtJRCJKYpJPXNOYRXn910ZU_TOYe0sDCyCKRFEZNMDje3-ALsnNBGkp0OOTxtcvmT9Iqivmgfg"
    }

    Response Code
    200
  2. Attach the uploaded file to an Attachment field on an Object:
    mceclip15.png

    Parameters

    Parameter Type Description
    x-api-key header The API Key used to authorize the request.
    impersonate-user-id header

    The ID of a user to impersonate. If blank, the request is executed under the ID of the API Key user.

    objectId path

    The internal ID of the object.

    fileId path

    The internal ID of the uploaded file.


    Body
    {
    "fieldId": 406255
    }

    Request
    curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{"fieldId": 406255}' 'https://sandbox.resolver.com/data/object/1246/file/41'

    Response Code
    200

Upload and Attach an Image

Attaching an image is a four-step process:

  1. Upload the Image:
    mceclip2.png

    Parameters
    Parameter Type Description
    x-api-key header The API Key used to authorize the request.
    file formData

    Binary image file to upload via form Post using field "file".


    Request
    curl --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -F 'file=@myfile.jpg' 'https://sandbox.resolver.com/data/file/image'

    Response Body
    [
    {
    "id": 60, <-- internal ID of uploaded file
    "displayFileName": "myfile.jpg",
    "fileType": "jpg",
    "contentType": "image/jpeg",
    "fileUuid": "7be9f20d-4e83-4ea1-9b64-56b74f708dfb",
    "created": "2020-02-26T19:48:33.052Z",
    "createdBy": 3330,
    "externalRefId": "4287db73-cf4d-4c9d-ab75-8f80824f65cc",
    "fileUrl": "https://sandbox.resolver.com/file/file/7be9f20d-4e83-4ea1-9b64-56b74f708dfb.jpg/displayFileName/myfile.jpg?token=eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJmaWxlIjoiN2JlOWYyMGQtNGU4My00ZWExLTliNjQtNTZiNzRmNzA4ZGZiLmpwZyIsIm9yZyI6OTczLCJfcHVycG9zZSI6ImRvd25sb2FkIiwiZXhwIjoxNTgyNzUwMTEzLCJpYXQiOjE1ODI3NDY1MTN9.AQICAHgPjufvtghndUvcYMwgWWc8i9Bs5NNytmOBXL3Iyn1EwwG4ePnxryN61Omr_iMbbjffAAABJjCCASIGCSqGSIb3DQEHBqCCARMwggEPAgEAMIIBCAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAwQe7U2SldfTOlbfDcCARCAgdreCFp2VkljrLXMyO5v8SQeHH3jNXumxkEzI53k6fKDr5-7JqnLSMvJDG-nrJbiTw1mccl4NLU2zWyjMhKx6bXHeKvYK-qLedXXrEO9T4PBBADYfdKKFOgwmWN-LqnmfsqfekPf-1hj6-xokfQ4YfJkIyht-sKG5De24pJZuyP6o82ol971_pOfHJRENbdvf85u3vwd7o8cPaT9esvjmUhnkYWX5iUYTc5X1hPhGWTPLXIFbgROKNiVlAUJz2w-vpQjXQfh0uxDZdy8ZHfqiGPEeMde12IN7acYKQ"
    },
    {
    "id": 61, <-- internal ID of compressed file
    "displayFileName": "compressed-myfile.jpg",
    "fileType": "jpg",
    "contentType": "image/jpeg",
    "fileUuid": "6dc86af6-bec9-4143-a614-3956dd3fbca4",
    "created": "2020-02-26T19:48:33.053Z",
    "createdBy": 3330,
    "externalRefId": "b2b5e2a4-28f9-4343-a6a0-83f16c916716",
    "fileUrl": "https://sandbox.resolver.com/file/file/6dc86af6-bec9-4143-a614-3956dd3fbca4.jpg/displayFileName/compressed-myfile.jpg?token=eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJmaWxlIjoiNmRjODZhZjYtYmVjOS00MTQzLWE2MTQtMzk1NmRkM2ZiY2E0LmpwZyIsIm9yZyI6OTczLCJfcHVycG9zZSI6ImRvd25sb2FkIiwiZXhwIjoxNTgyNzUwMTEzLCJpYXQiOjE1ODI3NDY1MTN9.AQICAHgPjufvtghndUvcYMwgWWc8i9Bs5NNytmOBXL3Iyn1EwwF_okWbU-q2VQH-z2HiL0PPAAABJjCCASIGCSqGSIb3DQEHBqCCARMwggEPAgEAMIIBCAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAxH8seFMeQbTpjsHdsCARCAgdrbRitnQsI0ZLfUJr5uB8rww2v_2suOzsSOTcEhs3ZXB-kXvQ2oHCvxxeqc_UY1gMP343PTnpbSJJ_ZW4SYyQNoM4CFPnUsq9mtnAxA3bfgtNj9WU5qo4P9wAhFH5AWDtaeu1UB_47NjRKt03yVAuUq5ISZeTShOv8yL2oWaiY5bzH-KQMDpeZJYW5mZWE00Cu8D-wPcLZIWWzFY9kyjCZcgfYXJJX07t29A44BdrnNctE-WnuYujMBIu344TB6clTGYfJHInacp7BoI_isWW7JpFMp6VlTEWWpWg"
    }
    ]

    Response Code
    200

    Note

    Core will automatically generate a compressed image to use as the image thumbnail on forms. The IDs for both the original and compressed files are returned.
  2. Attach the uploaded image file to an Image Attachment field on an Object:
    mceclip3.png

    Parameters

    Parameter Type Description
    x-api-key header The API Key used to authorize the request.
    objectId path

    The internal ID of the object.

    fileId path

    The internal ID of the uploaded image file - file ID 60 returned from POST date/file/image.


    Body
    {
    "fieldId": 479513
    }

    Request
    curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{"fieldId": 479513}' 'https://sandbox.resolver.com/data/object/1246/file/60'

    Response Code
    200
  3. Attach the compressed image file to the Image Attachment field:
    Repeat step 2, this time supplying the ID of the compressed image file: file ID 61 returned from POST date/file/image.
  4. Add a field evaluation with image display details:
    mceclip7.png

    Parameters

    Parameter Type Description
    x-api-key header The API Key used to authorize the request.
    objectId path

    The internal ID of the object.

    fieldId path

    The internal ID of the image attachment field.


    Body
    {
    "value":{
    "original":60, <-- internal ID of original image
    "compressed":61, <-- internal ID of original image

    Optional display name, description and cropping parameters:
    "name":"",
    "description":"",
    "cropped":0,
    "x":0,
    "y":0,
    "width":0,
    "height":0
    }
    }

    Optional Parameters (Name, Description and Crop):
    mceclip8.png
    Request
    curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{"value":{"original":60, "compressed":61, "name":"", "description":"", "cropped":0, "x":0, "y":0, "width":0, "height":0}}' 'https://sandbox.resolver.com/data/object/1246/evaluation/field/479513'

    Response Code
    200

 

Example Scenario: Upload Victim Photo to Core

In the previous step, Riverdale Industries uploaded a new Incident, including Involvement and Person records for a victim: Bob Thompson. Since Core's JSON Data Import endpoint doesn't (yet) support file and image uploads, they must now upload Bob's photo separately.

Fields

Object Type Field External Reference ID Internal ID Unique Name Options
Person First Name a7f04ab2-15d1-422d-bd15-51561f438829 573395 FIRSTNAME n/a
Person Last Name b5e0365e-474b-401b-af24-fdc5055789cb 573433 LASTNAME n/a
Person Photo 05a64fb4-1382-4950-98f1-8fd4e6c84b74 572923 PHOTO n/a

Persons

Status ExtSys Unique record ID First Name Last Name Photo Person User
new Person99 Bob Thompson Bob_Thompson.jpg  

 

Upload Photo

Request 

curl -X POST --header 'Content-Type: multipart/form-data' --header 'x-api-key: YOUR_API_KEY' -F 'file=@Bob_Thompson.jpg' 'https://sandbox.resolver.com/data/file/image'

Response Body

[
{
"id": 14,
"displayFileName": "Bob_Thompson.jpg",
.
.
.
},
{
"id": 15,
"displayFileName": "compressed-Bob_Thompson.jpg",
.
.
.
}
]

 

Retrieve Bob's Person object

Request

curl -X GET --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/Person99?byRef=true'

Response Body

{
"id": 3027,
"name": "Bob Thompson",
"description": "",
"externalRefId": "Person99",
.
.
.
}

 

Attach original image to Photo field on Bob's Person object

Request

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{"fieldId": 572923}' 'https://sandbox.resolver.com/data/object/3027/file/14'

 

Attach compressed image to Photo field on Bob's Person object

Request

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{"fieldId": 572923}' 'https://sandbox.resolver.com/data/object/3027/file/15'

 

Add a field evaluation with image display details

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{
"value":{
"original":14,
"compressed":15
}
}' 'https://sandbox.resolver.com/data/object/3027/evaluation/field/572923'

 

Results

mceclip5.png
 

 

Deleting Data from Core

Delete an Object

Delete an Object:
mceclip4.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
id path

The internal ID of the object to delete.


Request

curl -X DELETE --header 'Accept: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/1203'


Response Code

204

 

Clear the value of a Field on an Object

The current value of a field is represented by an Evaluation. To clear a field, add an null (empty) evaluation.

Note: Deleting File and Image attachments requires additional steps (see below).

mceclip9.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectId path

The internal ID of the object.

fieldId path

The internal ID of the field to clear.


Body

{
"value": null
}


Request

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{"value": null}' 'https://sandbox.resolver.com/data/object/1246/evaluation/field/517464'


Response Code

200

 

Delete a File Attachment from an Object

mceclip16.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectId path

The internal ID of the object.

fileId path

The internal ID of the file to delete.

fieldId path

The internal ID of the attachment field.


Request

curl -X DELETE --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/1246/file/45/field/406255'


Response Code

200


Note
: Attachment fields do not have an evaluation. No further steps are required.

Delete an Image Attachment from an Object

Deleting an Attached Image is currently a multi-step process. An Image Attachment field is comprised of three pieces of data:

  1. the original image file
  2. the compressed image file (automatically generated when the original file was uploaded)
  3. a field evaluation containing the image preview, name and description.

Steps:

  1. Delete the compressed image file: see the Delete a File Attachment from an Object example above.
  2. Delete the original image file: see the Delete a File Attachment from an Object example above.
  3. Clear the field evaluation: see the Clear the value of a Field on an Object example above.

Clear an Object's Name or Description

Clear the Name or Description property of an Object:

mceclip17.png

Unlike Fields which can be truly empty (null), all Objects must have a Name and Description. To effectively clear a Name or Description, set the value to an empty string. Clearing an Object's name is not recommended, as it will make it much harder to find and identify in Core.

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
id path

The internal ID of the object.

 

Body

{
"name": "",
"description": ""
}


Request

curl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' -d '{"name": "", "description": ""}' 'https://sandbox.resolver.com/data/object/1246'


Response Code

200

 

Clear an Object's Geolocation Data

Clear all Geolocation coordinate and address information on an Object:

mceclip18.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
id path

The internal ID of the object.

 

Request

curl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/1246/clearLocation'


Response Code

200

 

Delete a Role Assignment

Remove a User from a Role on an Object:

mceclip19.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectId path

The internal ID of the object.

roleId path

The internal ID of the role.

userId path

The internal ID of the user.

 

Request

curl -X DELETE --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/1246/roleMembership/38535/user/14474'


Response Code

204

 

Delete a relationship

Delete a Relationship between a pair of Objects:

mceclip20.png

Parameters

Parameter Type Description
x-api-key header The API Key used to authorize the request.
objectId path

The internal or external reference ID of the object.

roleId path

The internal or external reference ID of the role.

userId path

The internal or external reference ID of the user.

byRef path

True = accept external reference IDs.

False = accept internal IDs.

 

Request

curl -X DELETE --header 'Accept: application/json' --header 'x-api-key: YOUR_API_KEY' 'https://sandbox.resolver.com/data/object/2e095789-1528-4907-9c6c-29cd11255db7/relationships/5919c299-15e0-4fce-b0db-2a789eb6e703/relatedObject/3b6158de-51bd-4b88-8995-e169334c8b90?byRef=true'


Response Code

204

 

Follow
Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request
Powered by Zendesk