Working with Incidents

Introduction

The Procore API provides a number of endpoints that allow you to work with the Incidents tool to track jobsite hazards, contributing conditions and behavior, person(s) involved, and the paper history associated with each incident throughout the lifecycle of your project. Leverage the insights provided by the Incidents tool to identify common hazards and behavior to help facilitate the creation of a safer jobsite. This guide provides information to help you best utilize the available Incidents tool endpoints in your App or integration. For general information on the Incidents tool, visit the Incidents article on the Procore Support Site.

Available Endpoints

The following Procore API endpoints are available for working with Incidents.

Endpoint Category Available Functionality
Incidents Create, List, Show, Update, and Delete Incidents, as well as access and work with recycled Incidents.
Incident Attachments Create Attachments for Incidents.
Injuries Create, List, Show, Update, and Delete Injuries in a specified project, as well as access and work with recycled Injuries.
Near Misses Create, List, Show, Update, and Delete Near Misses in a specified project, as well as access and work with recycled Near Misses.
Affliction Types List and Show Affliction Types.
Harm Sources List and Show Sources of Harm.
Work Activities List and Show Work Activities.
Incident Picker Options List Affected Body Parts, List Filing Types, and List Incident Statuses.
Incident Filter Options List Incident Filter Options for Contributing Behavior, Contributing Condition, Hazard, Location, and Status.
Injury Filter Options List Injury Filter Options for Affected Company, Affected Persons, Managed Equipment, Harm Sources, Work Activity, Affected Body Part, Affliction Type, and Filing Type.
Near Miss Filter Options List Near Miss Filter Options for Affected Company, Affected Persons, Managed Equipment, Harm Source, and Work Activity.

Important Considerations

Here are some important considerations and caveats to keep in mind when working with the Incidents tool endpoints.

Configurable Field Sets

By default, Incidents tool endpoints do not automatically respect changes made by Procore Admins to the Incident forms via a Configurable Field Set (CFS). To validate against a CFS, you need to include the run_configurable_validations=true parameter when creating or updating an Incident or Injury. In addition, the JSON responses returned do not respect a CFS. For example, if the CFS makes certain fields hidden, they will still appear in the response body.

Event Dates and Times

In order to properly specify the local date and time that an Incident or Injury occurred, you will need to use a combination of the event_date and time_unknown parameters. Keep in mind that the value you specify for event_date must be in Coordinated Universal Time (UTC).

Let's look at an example where we know the local date and exact time of the Incident. If the event occurred on the West Coast of the United States at 1:30pm Pacific Standard Time (PST) on October 31, 2018, we would specify event_date as the UTC value 2018-10-31T17:30:00.000Z and time_unknown=false. This appropriately accounts for the eight-hour time difference between PST and UTC (i.e., PST = UTC-0800)

"event_date": "2018-10-31T17:30:00.000Z", "time_unknown": false

Now let's assume we do not know the exact local time of the event. In this scenario, the value for event_date must be specified as 12:00am (midnight) local time on the date the event occured, converted to UTC. So, using our example, the payload would be as follows:

"event_date": "2018-10-31T08:0:00.000Z", "time_unknown": true

In this case, event_date is set to 8:00am October 31, 2018 UTC to account for the eight-hour time difference between PST and UTC.

Working with Afflictions

When Creating or Updating an Injury, keep in mind that the affliction_type_id attribute is required if you are using the affected_body_part attribute. You cannot set an affected_body_part without having a corresponding affliction_type_id, and you likewise cannot remove an affliction_type_id if affected_body_part is set.

Additionally, the JSON response body from a Create or Update Injury operation includes a single afflictions object that contains the affliction_type_id and affected_body_part combination if they are not null. Though this construct is deprecated, it has not been removed from the response body as our Procore mobile applications continue to rely on it. For your own App designs, simply ignore this object and just work with the top-level affliction_type_id and affected_body_part directly.