Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Procore REST Work Activities API
version: v1.0/v2.0
description: Merged from the per-resource OpenAPI documents Procore publishes through its developer portal (https://developers.procore.com/api/v1/resource_groups). Originals are kept verbatim in openapi/_original/resources/.
x-source: https://developers.procore.com/api/v1/resource_groups
servers:
- url: https://api.procore.com
description: Production
security:
- bearerAuth: []
tags:
- name: Work Activities
paths:
/rest/v1.0/companies/{company_id}/incidents/work_activities:
parameters:
- name: Procore-Company-Id
in: header
description: Unique company identifier associated with the Procore User Account.
required: true
schema:
type: integer
- name: company_id
in: path
description: Unique identifier for the company.
required: true
schema:
type: integer
x-compliance-level: full
get:
x-doc:
visibility: public
stage: ga
exposure: public
summary: List Work Activities
description: Return a list of all Work Activities associated with a Company.
tags:
- Work Activities
parameters:
- name: page
in: query
description: Page
schema:
type: integer
- name: per_page
in: query
description: Elements per page
schema:
type: integer
- name: filters[active]
in: query
description: If true, returns item(s) with a status of 'active'.
schema:
type: boolean
- name: filters[id]
in: query
description: Return item(s) with the specified IDs.
required: false
style: form
explode: false
schema:
type: array
items:
type: integer
- name: filters[updated_at]
in: query
description: 'Return item(s) last updated within the specified ISO 8601 datetime range.
Formats:
`YYYY-MM-DD`...`YYYY-MM-DD` - Date
`YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset
`YYYY-MM-DDTHH:MM:SS+XX:00`...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset'
required: false
schema:
type: string
format: date
- name: sort
in: query
schema:
type: string
enum:
- name
responses:
'200':
description: OK
headers:
Per-Page:
description: Number of items retrieved per page
schema:
type: integer
Total:
description: Total number of items to be retrieved
schema:
type: integer
Link:
description: Link headers for the first, prev, next, and last link
schema:
type: string
content:
application/json:
schema:
type: array
description: Array of Work Activities
items:
type: object
title: Work Activity
properties:
id:
type: integer
description: Work Activity ID
example: 999
name:
type: string
description: Work Activity Name
example: Earthwork
active:
type: boolean
description: Represents whether a Work Activity is available for use.
example: true
global:
type: boolean
description: Represents whether a Work Activity has been provided by Procore.
example: true
created_at:
type: string
description: Timestamp of creation
format: date-time
example: '2016-10-25T17:53:35Z'
updated_at:
type: string
format: date-time
description: Date the work activity was updated
example: '2015-11-12T21:26:28Z'
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
x-code-samples:
- id: node_request
title: Node.js
content: "const request = require('request');\n\nconst options = {\n method: 'GET',\n url: 'https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities',\n qs: {\n page: 'SOME_INTEGER_VALUE',\n per_page: 'SOME_INTEGER_VALUE',\n 'filters[active]': 'SOME_BOOLEAN_VALUE',\n 'filters[id]': 'SOME_ARRAY_VALUE',\n 'filters[updated_at]': 'SOME_STRING_VALUE',\n sort: 'SOME_STRING_VALUE'\n },\n headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- id: python_python3
title: Python3
content: 'import http.client
conn = http.client.HTTPSConnection("api.procore.com")
headers = { ''Authorization'': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities?page=SOME_INTEGER_VALUE&per_page=SOME_INTEGER_VALUE&filters%5Bactive%5D=SOME_BOOLEAN_VALUE&filters%5Bid%5D=SOME_ARRAY_VALUE&filters%5Bupdated_at%5D=SOME_STRING_VALUE&sort=SOME_STRING_VALUE", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))'
- id: shell_curl
title: Curl
content: "curl --request GET \\\n --url 'https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities?page=SOME_INTEGER_VALUE&per_page=SOME_INTEGER_VALUE&filters%5Bactive%5D=SOME_BOOLEAN_VALUE&filters%5Bid%5D=SOME_ARRAY_VALUE&filters%5Bupdated_at%5D=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \\\n --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
- id: csharp_httpclient
title: C#
content: "var client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Get,\n RequestUri = new Uri(\"https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities?page=SOME_INTEGER_VALUE&per_page=SOME_INTEGER_VALUE&filters%5Bactive%5D=SOME_BOOLEAN_VALUE&filters%5Bid%5D=SOME_ARRAY_VALUE&filters%5Bupdated_at%5D=SOME_STRING_VALUE&sort=SOME_STRING_VALUE\"),\n Headers =\n {\n { \"Authorization\", \"Bearer REPLACE_BEARER_TOKEN\" },\n },\n};\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}"
x-rate-limit-enabled: true
x-procore-kong-tags:
- rate-limit:enabled
x-changelog:
- summary: Return I18n localized name
description: 'The index endpoint is now able to leverage the `Accept-Language` header to return its closest language match for `name` in the response.
To localize, use header `HTTP_ACCEPT_LANGUAGE=''fr''`, `HTTP_ACCEPT_LANGUAGE=''fr-ca''`, `HTTP_ACCEPT_LANGUAGE=''fr-CA''`.'
endpoint: GET /companies/{company_id}/incidents/work_activities
type: refinement
breaking: false
datestamp: '2024-02-28'
versions:
- '1.0'
x-doc:
visibility: public
stage: ga
exposure: public
link: work-activities?version=1.0#list-work-activities
operationId: listWorkActivities
post:
x-doc:
visibility: public
stage: ga
exposure: public
summary: Create Work Activity
description: Creates a Work Activity with the specified name.
tags:
- Work Activities
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- work_activity
properties:
work_activity:
type: object
description: Work Activity object
required:
- name
properties:
name:
type: string
description: The Name of the Work Activity
active:
type: boolean
description: Flag that denotes if the Work Activity is available for use
example:
work_activity:
name: Typing
active: true
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
title: Work Activity
properties:
id:
type: integer
description: Work Activity ID
example: 999
name:
type: string
description: Work Activity Name
example: Earthwork
active:
type: boolean
description: Represents whether a Work Activity is available for use.
example: true
global:
type: boolean
description: Represents whether a Work Activity has been provided by Procore.
example: true
created_at:
type: string
description: Timestamp of creation
format: date-time
example: '2016-10-25T17:53:35Z'
updated_at:
type: string
format: date-time
description: Date the work activity was updated
example: '2015-11-12T21:26:28Z'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
'422':
description: Unprocessable Entity
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
default:
description: Unexpected error
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
x-code-samples:
- id: node_request
mimeType: application/json
title: Node.js
content: "const request = require('request');\n\nconst options = {\n method: 'POST',\n url: 'https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities',\n headers: {\n Authorization: 'Bearer REPLACE_BEARER_TOKEN',\n 'content-type': 'application/json'\n },\n body: {work_activity: {name: 'Typing', active: true}},\n json: true\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- id: python_python3
mimeType: application/json
title: Python3
content: "import http.client\n\nconn = http.client.HTTPSConnection(\"api.procore.com\")\n\npayload = \"{\\\"work_activity\\\":{\\\"name\\\":\\\"Typing\\\",\\\"active\\\":true}}\"\n\nheaders = {\n 'Authorization': \"Bearer REPLACE_BEARER_TOKEN\",\n 'content-type': \"application/json\"\n }\n\nconn.request(\"POST\", \"/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
- id: shell_curl
mimeType: application/json
title: Curl
content: "curl --request POST \\\n --url https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities \\\n --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n --header 'content-type: application/json' \\\n --data '{\"work_activity\":{\"name\":\"Typing\",\"active\":true}}'"
- id: csharp_httpclient
mimeType: application/json
title: C#
content: "var client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Post,\n RequestUri = new Uri(\"https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities\"),\n Headers =\n {\n { \"Authorization\", \"Bearer REPLACE_BEARER_TOKEN\" },\n },\n Content = new StringContent(\"{\\\"work_activity\\\":{\\\"name\\\":\\\"Typing\\\",\\\"active\\\":true}}\")\n {\n Headers =\n {\n ContentType = new MediaTypeHeaderValue(\"application/json\")\n }\n }\n};\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}"
x-rate-limit-enabled: true
x-procore-kong-tags:
- rate-limit:enabled
operationId: createWorkActivity
/rest/v1.0/companies/{company_id}/incidents/work_activities/{id}:
parameters:
- name: Procore-Company-Id
in: header
description: Unique company identifier associated with the Procore User Account.
required: true
schema:
type: integer
- name: company_id
in: path
description: Unique identifier for the company.
required: true
schema:
type: integer
- name: id
in: path
description: Work Activity ID
required: true
schema:
type: integer
x-compliance-level: full
get:
x-doc:
visibility: public
stage: ga
exposure: public
summary: Show Work Activity
description: Returns the specified Work Activity.
tags:
- Work Activities
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
title: Work Activity
properties:
id:
type: integer
description: Work Activity ID
example: 999
name:
type: string
description: Work Activity Name
example: Earthwork
active:
type: boolean
description: Represents whether a Work Activity is available for use.
example: true
global:
type: boolean
description: Represents whether a Work Activity has been provided by Procore.
example: true
created_at:
type: string
description: Timestamp of creation
format: date-time
example: '2016-10-25T17:53:35Z'
updated_at:
type: string
format: date-time
description: Date the work activity was updated
example: '2015-11-12T21:26:28Z'
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
x-code-samples:
- id: node_request
title: Node.js
content: "const request = require('request');\n\nconst options = {\n method: 'GET',\n url: 'https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities/%7Bid%7D',\n headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- id: python_python3
title: Python3
content: 'import http.client
conn = http.client.HTTPSConnection("api.procore.com")
headers = { ''Authorization'': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities/%7Bid%7D", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))'
- id: shell_curl
title: Curl
content: "curl --request GET \\\n --url https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities/%7Bid%7D \\\n --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'"
- id: csharp_httpclient
title: C#
content: "var client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Get,\n RequestUri = new Uri(\"https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities/%7Bid%7D\"),\n Headers =\n {\n { \"Authorization\", \"Bearer REPLACE_BEARER_TOKEN\" },\n },\n};\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}"
x-rate-limit-enabled: true
x-procore-kong-tags:
- rate-limit:enabled
operationId: showWorkActivity
patch:
x-doc:
visibility: public
stage: ga
exposure: public
summary: Update Work Activity
description: Updates a specified Work Activity. Note that Procore provided Work Activities' names cannot be changed.
tags:
- Work Activities
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- work_activity
properties:
work_activity:
type: object
description: Work Activity object
required:
- name
properties:
name:
type: string
description: The Name of the Work Activity
active:
type: boolean
description: Flag that denotes if the Work Activity is available for use
example:
work_activity:
name: Typing
active: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
title: Work Activity
properties:
id:
type: integer
description: Work Activity ID
example: 999
name:
type: string
description: Work Activity Name
example: Earthwork
active:
type: boolean
description: Represents whether a Work Activity is available for use.
example: true
global:
type: boolean
description: Represents whether a Work Activity has been provided by Procore.
example: true
created_at:
type: string
description: Timestamp of creation
format: date-time
example: '2016-10-25T17:53:35Z'
updated_at:
type: string
format: date-time
description: Date the work activity was updated
example: '2015-11-12T21:26:28Z'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
'422':
description: Unprocessable Entity
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
default:
description: Unexpected error
content:
application/json:
schema:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
fields:
type: string
reason:
description: A human-readable code providing additional detail on the cause of the error.
type: string
error:
description: Description of the error thrown.
type:
- string
- 'null'
example: Invalid Token
x-code-samples:
- id: node_request
mimeType: application/json
title: Node.js
content: "const request = require('request');\n\nconst options = {\n method: 'PATCH',\n url: 'https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities/%7Bid%7D',\n headers: {\n Authorization: 'Bearer REPLACE_BEARER_TOKEN',\n 'content-type': 'application/json'\n },\n body: {work_activity: {name: 'Typing', active: true}},\n json: true\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- id: python_python3
mimeType: application/json
title: Python3
content: "import http.client\n\nconn = http.client.HTTPSConnection(\"api.procore.com\")\n\npayload = \"{\\\"work_activity\\\":{\\\"name\\\":\\\"Typing\\\",\\\"active\\\":true}}\"\n\nheaders = {\n 'Authorization': \"Bearer REPLACE_BEARER_TOKEN\",\n 'content-type': \"application/json\"\n }\n\nconn.request(\"PATCH\", \"/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities/%7Bid%7D\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
- id: shell_curl
mimeType: application/json
title: Curl
content: "curl --request PATCH \\\n --url https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities/%7Bid%7D \\\n --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n --header 'content-type: application/json' \\\n --data '{\"work_activity\":{\"name\":\"Typing\",\"active\":true}}'"
- id: csharp_httpclient
mimeType: application/json
title: C#
content: "var client = new HttpClient();\nvar request = new HttpRequestMessage\n{\n Method = HttpMethod.Patch,\n RequestUri = new Uri(\"https://api.procore.com/rest/v1.0/companies/%7Bcompany_id%7D/incidents/work_activities/%7Bid%7D\"),\n Headers =\n {\n { \"Authorization\", \"Bearer REPLACE_BEARER_TOKEN\" },\n },\n Content = new StringContent(\"{\\\"work_activity\\\":{\\\"name\\\":\\\"Typing\\\",\\\"active\\\":true}}\")\n {\n Headers =\n {\n ContentType = new MediaTypeHeaderValue(\"application/json\")\n }\n }\n};\nusing (var response = await client.SendAsync(request))\n{\n response.EnsureSuccessStatusCode();\n var body = await response.Content.ReadAsStringAsync();\n Console.WriteLine(body);\n}"
x-rate-limit-enabled: true
x-procore-kong-tags:
- rate-limit:enabled
operationId: updateWorkActivity
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer