openapi: 3.0.4
info:
title: Bench AccountActivities Accounts API
description: "
Versioning
\n\n The API is currently at version 1.0. All API endpoints (other than\n authentication) require you to specify the API version as part of the path.\n
\n\nURL Paths
\n\n Authentication requests should be made to /auth/signin,\n as documented below. All other API requests should be made to\n sub-paths of /rp/api/1.0/....\n
\n\nAuthentication
\n\n API requests are authenticated using an OAuth Bearer token.\n You can get a token by authenticating your user by sending a\n POST request to /auth/signin, with \"username and \"password\"\n parameters form-encoded in the body of the request.\n\n POST /auth/signin HTTP/1.1\n Content-Type: application/x-www-form-urlencoded\n\n username=user@example.com&password=some-secret-password\n
\n\n The response will be a JSON object including both\n \"access_token\" and \"refresh_token\" property.\n All other requests against the Bench API should include an\n authorization header: Authorization: Bearer xxxYYYzzz,\n where xxxYYYzzz is the value of \"access_token\" in the response.\n
\n For example:\n\n $ curl https://bench.gobridgit.com/auth/signin -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'username=someone@example.com' --data-urlencode 'password=[...snip...]'\n {\n \"access_token\": \"...snip...\",\n \"token_type\": \"Bearer\",\n \"refresh_token\": \"...snip...\"\n \"expiry\": \"2020-01-01T00:00:00.413440849Z\"\n }\n\n
\n\n\n The refresh token can be used to generate new session by request with /auth/token endpoint:\n\n POST /auth/token HTTP/1.1\n Content-Type: application/x-www-form-urlencoded\n\n grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA\n
\n\n Note that once the refresh token is used, the previous access and refresh token is no longer valid.\n
\n For example:\n\n $ curl https://bench.gobridgit.com/auth/token -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'grant_type=refresh_token' --data-urlencode 'refresh_token=[...snip...]'\n {\n \"access_token\": \"...snip...\",\n \"token_type\": \"Bearer\",\n \"refresh_token\": \"...snip...\"\n \"expiry\": \"2020-01-01T00:00:00.413440849Z\"\n }\n
\n\nPagination
\n\n Several of the API endpoints are paginated. These are denoted by\n including the offset (zero-based offset) and limit query\n parameters. For example, to request the 10 items,\n set the offset=0 to limit=10.\n
\n NOTE: the result set contains items with index of 0-9\n
\n To request the next 10 items (starting at index 10),\n set the offset=10 to limit=10\n
\n\n Responses to paginated API endpoints return a JSON array of objects.\n If there are results beyond the page you have requested, the server\n will set a query-has-more: true header in the response.\n
\n\nRequest Encoding
\n\n GET and DELETE requests should have parameters encoded as URL query\n parameters. Boolean values should be encoded as true and\n false, not as 1 and 0.\n
\n\nErrors
\n\n Errors are returned for some response codes such as 400 Bad Request in the\n following format:\n\n {\n \"errors\": [\n {\n \"errorType\": \"ValidationError\",\n \"description\": \"The value of Name must be a string with a minimum length of 1 and a maximum length of 8 and not whitespace.\",\n \"field\": \"Name\",\n \"values\": [\n null\n ]\n }\n ],\n \"title\": \"One or more validation errors occurred.\",\n \"status\": 400,\n \"instance\": \"api/v1/accounts/0/persons\",\n \"requestUid\": \"123e4567-e89b-12d3-a456-426614174000\"\n }\n
\n"
version: '1.0'
servers:
- url: https://bench.gobridgit.com
description: Bridgit Bench production
security:
- {}
tags:
- name: Accounts
paths:
/rp/api/v1/Accounts:
get:
tags:
- Accounts
summary: Get all accounts that the user has access to.
operationId: Accounts_Query
parameters:
- name: offset
in: query
description: Offset for pagination
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Maximum number of results in this page
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 1000
responses:
'200':
description: 'Success: All account models the user has access to'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/AccountResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountResponse'
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/_filter:
post:
tags:
- Accounts
summary: 'Get all accounts that the user has access to, filter by name (contains), account ids, organization ids, and/or account states (0 = Active, 1 = Deactivated, 2 = All).
Sort options include: name = 0, numProjects = 1, numPeople = 2, numMembers = 3 and organizationId = 4
Sort order options include: asc = 0, desc = 1'
description: NOTE: Paging limit defaults to 50, and is maximized at 100 items per request. If there are more accounts than were returned, there will be a "query-has-more" header that will be set to true.
operationId: Accounts_QueryFilter
requestBody:
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/AccountFilterPredicatesAccountSortSortedFilter'
application/json:
schema:
$ref: '#/components/schemas/AccountFilterPredicatesAccountSortSortedFilter'
text/json:
schema:
$ref: '#/components/schemas/AccountFilterPredicatesAccountSortSortedFilter'
application/*+json:
schema:
$ref: '#/components/schemas/AccountFilterPredicatesAccountSortSortedFilter'
required: true
responses:
'200':
description: 'Success: All account models the user has access to'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/AccountResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountResponse'
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}:
get:
tags:
- Accounts
summary: Gets details for the given account
description: '
Permissions
Account: Read'
operationId: Accounts_Get
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
responses:
'200':
description: 'Success: Account model'
content:
text/plain:
schema:
$ref: '#/components/schemas/AccountResponse'
application/json:
schema:
$ref: '#/components/schemas/AccountResponse'
text/json:
schema:
$ref: '#/components/schemas/AccountResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/person-field-values:
get:
tags:
- Accounts
summary: Get all custom field values for all people for the given account
description: '
Permissions
HourlyProfile: Read
Person: Read
Private: Read
Finance: Read'
operationId: Accounts_QueryProfiles
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: includeEmpty
in: query
description: If true, the response will include all person field values, even if no value is set for a given field. If false, field values that are empty are not included in the response.
schema:
type: boolean
default: false
- name: state
in: query
description: 'If specified and non-zero, only include field vlaues for people matching the given state. The available values are defined as follows:
- active: include only Active people
- deactivated: include only Deactivated people
- all: include all people, regardless of state'
schema:
enum:
- Active
- Deactivated
- All
type: string
default: Active
- name: personIds
in: query
description: Optional paramater of comma delimited ids for filtering results based on the person IDs provided
schema:
type: array
items:
type: integer
format: int64
- name: offset
in: query
description: The offset of the result to begin with
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Optional - The number of items return by result set. If no limit given, return all results
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 1000
- name: employeeId
in: query
description: Optional - for filtering result by system field "Employee ID"
schema:
type: string
responses:
'200':
description: 'Success: All person field values by person Id on the account'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ProfileResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProfileResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProfileResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/project-field-values:
get:
tags:
- Accounts
summary: Get all custom field values for all projects for the given account
description: '
Permissions
Project: Read
Private: Read
Finance: Read'
operationId: Accounts_QueryProjectFieldValues
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: includeEmpty
in: query
description: If true, the response will include all project field values, even if no value is set for a given field. If false, field values that are empty are not included in the response.
schema:
type: boolean
default: false
- name: projectIds
in: query
description: Optional paramater of comma delimited ids for filtering results based on the project IDs provided
schema:
type: array
items:
type: integer
format: int64
- name: offset
in: query
description: The offset of the result to begin with
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Optional - The number of items return by result set. If no limit given, return all results
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 1000
- name: projectNumber
in: query
description: Optional - for filtering result by system field "Project Number"
schema:
type: string
- name: externalId
in: query
description: Optional - for filtering result by system field "External ID"
schema:
type: string
- name: classification
in: query
description: 'Optional - for filtering result by classification: All or Experience"'
schema:
enum:
- All
- Experience
type: string
default: All
responses:
'200':
description: 'Success: All project field values by person id on the account'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectFieldValuesResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectFieldValuesResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectFieldValuesResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/tasks:
get:
tags:
- Accounts
summary: Get all Tasks for all projects in the given account
description: '
Permissions
Project: Read
Person: Read
Role: Read
Allocation: Read'
operationId: Accounts_QueryTasks
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: relativeDate
in: query
description: Optional paramater used to calculate date based properties. If not provided, it is set to today's date in UTC.
schema:
type: string
format: date-time
example: '2021-01-01'
example: '2021-01-01'
- name: offset
in: query
description: Offset for pagination
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Maximum number of results in this page
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 5000
- name: projectIds
in: query
description: (Optional) Filter task(s) to contain tasks that match the projectIds passed in.
schema:
type: array
items:
type: integer
format: int64
- name: projectState
in: query
description: (Optional) Filters the result by the state of the project the role is on
schema:
enum:
- Canceled
- Upcoming
- Active
- Complete
- Pursuit
- Lost
- All
type: string
default: All
- name: taskIds
in: query
description: (Optional) Filters the result to contain tasks that match the taskIds passed in. Works as an AND with filledState and roleNameIds
schema:
type: array
items:
type: string
format: uuid
- name: filledState
in: query
description: (Optional) Filters the result by the filled state of the roles
schema:
enum:
- 0
- 1
- 2
type: integer
format: int32
default: 2
- name: roleIds
in: query
description: (Optional) Filters the result to contain roles that match the ids passed in. Works as an AND with filledState and roleNameIds
schema:
type: array
items:
type: integer
format: int64
- name: roleNameIds
in: query
description: (Optional) Filters the result to contain roles that match the ids passed in. Works as an AND with filledState and roleIds
schema:
type: array
items:
type: integer
format: int64
- name: roleState
in: query
description: '(Optional) Filters the result by the state of the role dates: Current, Upcoming, Past, or All'
schema:
enum:
- Past
- Current
- Upcoming
- All
type: string
default: All
responses:
'200':
description: 'Success: All tasks on projects in the given account with some project information, role requirements and allocations'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectTaskDetail'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectTaskDetail'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectTaskDetail'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/role-categories:
get:
tags:
- Accounts
summary: Get all categories for all projects in the given account
description: '
Permissions
Project: Read
Role: Read
HourlyRole: Read'
operationId: Accounts_QueryRoleCategories
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: offset
in: query
description: Offset for pagination
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Maximum number of results in this page
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 5000
responses:
'200':
description: 'Success: All categories on projects in the given account'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/AccountRoleCategoryResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountRoleCategoryResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountRoleCategoryResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/roles:
get:
tags:
- Accounts
summary: Get all Salaried roles for all projects in the given account
description: '
Permissions
Role: Read
Finance: Read'
operationId: Accounts_QueryRoles
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: relativeDate
in: query
description: Optional paramater used to calculate date based properties. If not provided, it is set to today's date in UTC.
schema:
type: string
format: date-time
example: '2021-01-01'
example: '2021-01-01'
- name: unfilled
in: query
description: If true, limits the results to include only roles that are unfilled; that is, they don't have any allocations. If false, the results include all roles in the account, both filled and unfilled.
schema:
type: boolean
default: false
- name: offset
in: query
description: Offset for pagination
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Maximum number of results in this page
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 5000
- name: projectId
in: query
description: (Optional) Filter role(s) for specified project ID
schema:
type: integer
format: int64
- name: filledState
in: query
description: (Optional) Filters the result by the filled state of the roles
schema:
enum:
- 0
- 1
- 2
type: integer
format: int32
default: 2
- name: roleIds
in: query
description: (Optional) Filters the result to contain roles that match the ids passed in. Works as an AND with filledState and roleNameIds
schema:
type: array
items:
type: integer
format: int64
- name: roleNameIds
in: query
description: (Optional) Filters the result to contain roles that match the ids passed in. Works as an AND with filledState and roleIds
schema:
type: array
items:
type: integer
format: int64
- name: projectState
in: query
description: (Optional) Filters the result by the state of the project the role is on
schema:
enum:
- Canceled
- Upcoming
- Active
- Complete
- Pursuit
- Lost
- All
type: string
default: All
- name: roleState
in: query
description: '(Optional) Filters the result by the state of the role dates: Current, Upcoming, Past, or All'
schema:
enum:
- Past
- Current
- Upcoming
- All
type: string
default: All
- name: type
in: query
description: (Optional)Salaried role type to filter results by (Defaults to Operations)
schema:
enum:
- Operations
- Preconstruction
- All
type: string
default: Operations
responses:
'200':
description: 'Success: All roles on projects in the given account with some project information, role requirements and allocations'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectRoleDetail'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectRoleDetail'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectRoleDetail'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/hourly-roles:
get:
tags:
- Accounts
summary: Get all Hourly roles for all projects in the given account
description: '
Permissions
HourlyRole: Read
Finance: Read'
operationId: Accounts_QueryHourlyRoles
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: relativeDate
in: query
description: Optional paramater used to calculate date based properties. If not provided, it is set to today's date in UTC.
schema:
type: string
format: date-time
example: '2021-01-01'
example: '2021-01-01'
- name: offset
in: query
description: Offset for pagination
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Maximum number of results in this page
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 5000
- name: projectId
in: query
description: (Optional) Filter role(s) for specified project ID
schema:
type: integer
format: int64
- name: filledState
in: query
description: (Optional) Filters the result by the filled state of the roles
schema:
enum:
- 0
- 1
- 2
type: integer
format: int32
default: 2
- name: roleIds
in: query
description: (Optional) Filters the result to contain roles that match the ids passed in. Works as an AND with filledState and roleNameIds
schema:
type: array
items:
type: integer
format: int64
- name: roleNameIds
in: query
description: (Optional) Filters the result to contain roles that match the ids passed in. Works as an AND with filledState and roleIds
schema:
type: array
items:
type: integer
format: int64
- name: projectState
in: query
description: (Optional) Filters the result by the state of the project the role is on
schema:
enum:
- Canceled
- Upcoming
- Active
- Complete
- Pursuit
- Lost
- All
type: string
default: All
- name: roleState
in: query
description: '(Optional) Filters the result by the state of the role dates: Current, Upcoming, Past, or All'
schema:
enum:
- Past
- Current
- Upcoming
- All
type: string
default: All
responses:
'200':
description: 'Success: All roles on projects in the given account with some project information, role requirements and allocations'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectHourlyRoleDetail'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectHourlyRoleDetail'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectHourlyRoleDetail'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/person-certifications:
get:
tags:
- Accounts
summary: Gets the persons certifications for the given account
description: '
Permissions
HourlyProfile: Read
Person: Read
Private: Read'
operationId: Accounts_QueryPersonCertifications
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: personIds
in: query
description: Optional paramater of comma delimited ids for filtering results based on the person IDs provided
schema:
type: array
items:
type: integer
format: int64
- name: offset
in: query
description: Offset for pagination
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Maximum number of results in this page
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 1000
responses:
'200':
description: 'Success: Lists of person certifications on the account grouped by person ID'
content:
application/json:
schema:
type: object
additionalProperties:
type: array
items:
$ref: '#/components/schemas/PersonCertificationResponse'
example:
'1':
- id: 123
name: Transportation of Dangerous Goods
abbreviation: TDG
expiryDate: '2020-01-23'
daysWarnBeforeExpire: 7
certificationDate: null
certificationDescription: null
hasAttachment: false
state: Expired
'2':
- id: 456
name: CPR Training
abbreviation: CPR
expiryDate: '2020-12-30'
daysWarnBeforeExpire: 9
certificationDate: null
certificationDescription: null
hasAttachment: false
state: Expired
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/user-profiles:
get:
tags:
- Accounts
summary: Gets the user profiles for the given account
description: '
Permissions
Account: Read'
operationId: Accounts_QueryUserProfiles
parameters:
- name: id
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: offset
in: query
description: Offset for pagination
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: Maximum number of results in this page
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
default: 1000
- name: ids
in: query
description: (Optional) Filters the result to contain account users that match the ids passed in.
schema:
type: array
items:
type: integer
format: int32
responses:
'200':
description: 'Success: List of users on the account'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/UserProfilesResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserProfilesResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserProfilesResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/Accounts/{id}/collaboration-matrix/_filter:
post:
tags:
- Accounts
summary: Query the account for instances where two or more persons have collaborated on the same project
description: 'When a project ID is supplied, the results will be constrained to the persons within that project.
If the project ID is omitted, the results will pull for the entire account and can be filtered by person IDs.
Permissions
Role: Read
Allocation: Read
Person: Read
HourlyRole: Read
HourlyAllocation: Read'
operationId: Accounts_QueryCollaborationMatrix
parameters:
- name: id
in: path
description: The account ID
required: true
schema:
type: integer
format: int32
requestBody:
description: filter object including personIds, projectId, roleType, salariedRoleType, and roleNameIds
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/CollaborationMatrixPredicatesFilter'
application/json:
schema:
$ref: '#/components/schemas/CollaborationMatrixPredicatesFilter'
text/json:
schema:
$ref: '#/components/schemas/CollaborationMatrixPredicatesFilter'
application/*+json:
schema:
$ref: '#/components/schemas/CollaborationMatrixPredicatesFilter'
required: true
responses:
'200':
description: 'Success: List of projects with person IDs where two or more persons have collaborated'
content:
text/plain:
schema:
$ref: '#/components/schemas/CollaborationMatrixResponse'
application/json:
schema:
$ref: '#/components/schemas/CollaborationMatrixResponse'
text/json:
schema:
$ref: '#/components/schemas/CollaborationMatrixResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
components:
schemas:
CollaborationMatrixProject:
type: object
properties:
name:
type: string
nullable: true
personIds:
type: array
items:
type: integer
format: int64
nullable: true
id:
type: integer
format: int64
nullable: true
hcopId:
type: string
format: uuid
nullable: true
additionalProperties: false
RoleNotificationData:
type: object
properties:
notifiedOn:
type: string
format: date-time
recipientIds:
type: array
items:
type: integer
format: int64
nullable: true
additionalProperties: false
AccountResponse:
type: object
properties:
id:
type: integer
format: int32
example: 45
name:
type: string
nullable: true
example: A Great Account
logoUrl:
type: string
nullable: true
example: http://www.example.com/logo.png
status:
enum:
- Active
- Deactivated
- All
type: string
example: Active
numProjects:
type: integer
format: int32
example: 14
numPeople:
type: integer
format: int32
example: 68
numMembers:
type: integer
format: int32
example: 7
expiryDate:
type: string
format: date-time
nullable: true
example: '2030-12-31'
totalPeopleAttachmentBytes:
type: integer
format: int64
example: 512
useMetricUnits:
type: boolean
description: The account level flag on whether units should be displayed using metric or U.S. imperial by caller.
example: true
organizationId:
type: string
format: uuid
nullable: true
oktaOrganizationId:
type: string
nullable: true
example: org_fdfjhsdflsdfsd
isDemo:
type: boolean
example: true
companyType:
type: string
nullable: true
example: General Contractor
marketSegment:
type: string
nullable: true
example: SMB
oktaOrgName:
type: string
nullable: true
example: Okta Organization Name
crmAccountId:
type: string
nullable: true
crmOpportunityId:
type: string
nullable: true
additionalProperties: false
AccountRoleCategoryResponse:
type: object
properties:
projectId:
type: integer
format: int64
example: 213
id:
type: integer
format: int64
example: 134
name:
type: string
nullable: true
example: North Tower
additionalProperties: false
AccountFilterPredicates:
type: object
properties:
accountIds:
type: array
items:
type: integer
format: int32
nullable: true
state:
enum:
- Active
- Deactivated
- All
type: string
name:
type: string
nullable: true
organizationId:
type: string
format: uuid
nullable: true
isDemo:
type: boolean
nullable: true
additionalProperties: false
BaseRoleResult:
type: object
properties:
id:
type: integer
format: int64
nameId:
type: integer
format: int64
name:
type: string
nullable: true
roleCost:
type: number
format: double
nullable: true
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
type:
enum:
- Salaried
- Hourly
- All
type: string
skillSet:
type: array
items:
type: integer
format: int64
nullable: true
isFilled:
type: boolean
billable:
type: boolean
requirements:
uniqueItems: true
type: array
items:
$ref: '#/components/schemas/RoleRequirement'
nullable: true
unfilledRanges:
uniqueItems: true
type: array
items:
$ref: '#/components/schemas/RoleUnfilled'
nullable: true
note:
type: string
nullable: true
sortOrder:
type: integer
format: int32
notification:
$ref: '#/components/schemas/RoleNotificationData'
relatedTitles:
type: array
items:
type: string
nullable: true
allocations:
uniqueItems: true
type: array
items:
$ref: '#/components/schemas/RoleAllocation'
nullable: true
hire:
$ref: '#/components/schemas/RoleHire'
additionalProperties: false
CollaborationMatrixPredicatesFilter:
type: object
properties:
offset:
type: integer
format: int32
limit:
type: integer
format: int32
predicates:
$ref: '#/components/schemas/CollaborationMatrixPredicates'
additionalProperties: false
ProfileResponse:
type: object
properties:
personId:
type: integer
format: int64
example: 1280
fields:
type: array
items:
$ref: '#/components/schemas/FieldValuesResponse'
nullable: true
additionalProperties: false
HourlyRoleAllocation:
type: object
properties:
personId:
type: integer
format: int64
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
allocatedPercent:
maximum: 100
minimum: 1
type: integer
description: An integer between 1 and 100 representing the % of time this role is allocated to the project.
format: int32
example: 100
personHourlyCost:
type: number
format: double
nullable: true
additionalProperties: false
ProjectExperienceFieldValuesResponse:
type: object
properties:
experienceFieldId:
type: string
format: uuid
nullable: true
experienceFieldValueIds:
type: array
items:
type: string
format: uuid
nullable: true
fieldId:
type: integer
format: int64
example: 1394
name:
type: string
nullable: true
example: Contact Number
type:
enum:
- Boolean
- Date
- Email
- PhoneNumber
- Image
- Text
- LongText
- SingleSelect
- MultiSelect
- Address
- Currency
- Phone
- Integer
- Number
type: string
example: PhoneNumber
values:
type: array
items:
type: string
nullable: true
example:
- '5195555555'
isRequired:
type: boolean
isSystem:
type: boolean
example: false
isPrivate:
type: boolean
example: true
isFinancials:
type: boolean
example: true
lastModifiedOn:
type: string
format: date-time
nullable: true
example: '2021-05-27T10:58:23.530Z'
additionalProperties: false
HourlyRoleRequirement:
type: object
properties:
startDate:
type: string
format: date-time
example: '2019-01-01'
endDate:
type: string
format: date-time
example: '2020-12-31'
additionalProperties: false
RoleRequirement:
type: object
properties:
startDate:
type: string
format: date-time
example: '2019-01-01'
endDate:
type: string
format: date-time
example: '2020-12-31'
allocatedPercent:
maximum: 100
minimum: 0
type: integer
format: int32
example: 100
additionalProperties: false
ProjectHourlyRoleDetail:
type: object
properties:
projectId:
type: integer
format: int64
example: 9381
projectName:
type: string
nullable: true
example: Ahrens Lofts
projectColour:
type: string
description: 'The color associated with the project, expressed as a web color string: a ''#'' character, followed by a six-digit hexadecimal number.'
nullable: true
example: '#4B6BAA'
projectStatus:
enum:
- Canceled
- Upcoming
- Active
- Complete
- Pursuit
- Lost
type: string
projectType:
enum:
- Awarded
- Opportunity
type: string
roleId:
type: integer
format: int64
example: 3817
roleName:
type: string
nullable: true
example: Project Manager
roleHourlyCost:
type: number
format: double
nullable: true
example: 123.45
roleType:
enum:
- Salaried
- Hourly
- All
type: string
example: Hourly
sortOrder:
type: integer
format: int32
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
startTime:
type: string
format: date-span
example: 09:00:00
endTime:
type: string
format: date-span
example: '17:00:00'
workDays:
type: array
items:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
type: integer
format: int32
nullable: true
example:
- 1
- 2
- 3
- 4
- 5
skillSet:
type: array
items:
type: integer
format: int64
nullable: true
roleNote:
type: string
nullable: true
categoryId:
type: integer
format: int64
nullable: true
isFilled:
type: boolean
billable:
type: boolean
requirements:
type: array
items:
$ref: '#/components/schemas/HourlyRoleRequirement'
description: 'A requirement is a slot of time marked with an allocation %, which
represents times that the role is required on the project. Requirements
are fulfilled by allocations, which are an assignment of a person to
a role over a certain amount of time and with its own allocation %.'
nullable: true
allocations:
type: array
items:
$ref: '#/components/schemas/HourlyRoleAllocation'
description: 'An allocation is an assignment of a person to a role over a certain
time and with an associated allocation %.'
nullable: true
unfilledRanges:
type: array
items:
$ref: '#/components/schemas/HourlyRoleUnfilled'
nullable: true
notification:
$ref: '#/components/schemas/RoleNotificationData'
isCommunicated:
type: boolean
hire:
$ref: '#/components/schemas/RoleHire'
createdBy:
type: integer
format: int32
createdOn:
type: string
format: date-time
roleTags:
type: array
items:
$ref: '#/components/schemas/ProjectRoleTagEntity'
nullable: true
additionalProperties: false
HourlyRoleUnfilled:
type: object
properties:
startDate:
type: string
format: date-time
example: '2019-01-01'
endDate:
type: string
format: date-time
example: '2020-12-31'
additionalProperties: false
AccountSort:
type: object
properties:
sortBy:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
format: int32
direction:
enum:
- Asc
- Desc
type: string
additionalProperties: false
RoleAllocation:
type: object
properties:
personId:
type: integer
format: int64
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
allocatedPercent:
maximum: 100
minimum: 1
type: integer
description: An integer between 1 and 100 representing the % of time this role is allocated to the project.
format: int32
example: 100
personCost:
type: number
format: double
nullable: true
id:
type: string
format: uuid
additionalProperties: false
ProjectRoleDetail:
type: object
properties:
projectId:
type: integer
format: int64
example: 9381
projectName:
type: string
nullable: true
example: Ahrens Lofts
projectColour:
type: string
description: 'The color associated with the project, expressed as a web color string: a ''#'' character, followed by a six-digit hexadecimal number.'
nullable: true
example: '#4B6BAA'
projectStatus:
enum:
- Canceled
- Upcoming
- Active
- Complete
- Pursuit
- Lost
type: string
projectType:
enum:
- Awarded
- Opportunity
type: string
taskId:
type: string
format: uuid
nullable: true
example: 00000000-0000-0000-0000-000000000000
roleId:
type: integer
format: int64
example: 3817
roleName:
type: string
nullable: true
example: Project Manager
roleCost:
type: number
format: double
nullable: true
example: 123.45
roleType:
enum:
- Salaried
- Hourly
- All
type: string
example: Salaried
sortOrder:
type: integer
format: int32
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
skillSet:
type: array
items:
type: integer
format: int64
nullable: true
roleNote:
type: string
nullable: true
categoryId:
type: integer
format: int64
nullable: true
isFilled:
type: boolean
billable:
type: boolean
roleTags:
type: array
items:
$ref: '#/components/schemas/ProjectRoleTagEntity'
nullable: true
requirements:
type: array
items:
$ref: '#/components/schemas/RoleRequirement'
description: 'A requirement is a slot of time marked with an allocation %, which
represents times that the role is required on the project. Requirements
are fulfilled by allocations, which are an assignment of a person to
a role over a certain amount of time and with its own allocation %.'
nullable: true
allocations:
type: array
items:
$ref: '#/components/schemas/RoleAllocation'
description: 'An allocation is an assignment of a person to a role over a certain
time and with an associated allocation %.'
nullable: true
unfilledRanges:
type: array
items:
$ref: '#/components/schemas/RoleUnfilled'
nullable: true
externalId:
type: string
nullable: true
notification:
$ref: '#/components/schemas/RoleNotificationData'
isCommunicated:
type: boolean
hire:
$ref: '#/components/schemas/RoleHire'
createdBy:
type: integer
format: int32
createdOn:
type: string
format: date-time
additionalProperties: false
FieldValuesResponse:
type: object
properties:
fieldId:
type: integer
format: int64
example: 1394
name:
type: string
nullable: true
example: Contact Number
type:
enum:
- Boolean
- Date
- Email
- PhoneNumber
- Image
- Text
- LongText
- SingleSelect
- MultiSelect
- Address
- Currency
- Phone
- Integer
- Number
type: string
example: PhoneNumber
values:
type: array
items:
type: string
nullable: true
example:
- '5195555555'
isRequired:
type: boolean
isSystem:
type: boolean
example: false
isPrivate:
type: boolean
example: true
isFinancials:
type: boolean
example: true
lastModifiedOn:
type: string
format: date-time
nullable: true
example: '2021-05-27T10:58:23.530Z'
additionalProperties: false
CollaborationMatrixPredicates:
type: object
properties:
personIds:
type: array
items:
type: integer
format: int64
nullable: true
projectId:
type: integer
format: int64
nullable: true
roleType:
enum:
- Salaried
- Hourly
- All
type: string
salariedRoleType:
enum:
- Operations
- Preconstruction
- All
type: string
roleNameIds:
type: array
items:
type: integer
format: int64
nullable: true
additionalProperties: false
UserProfilesResponse:
type: object
properties:
id:
type: integer
format: int32
example: 2313
name:
type: string
nullable: true
example: John Smith
title:
type: string
nullable: true
example: Human Resources Manager
state:
enum:
- Inactive
- Enabled
- Disabled
- PendingEmailChange
type: string
example: Active
additionalProperties: false
ProjectFieldValuesResponse:
type: object
properties:
projectId:
type: integer
format: int64
example: 8391
fields:
type: array
items:
$ref: '#/components/schemas/ProjectExperienceFieldValuesResponse'
nullable: true
additionalProperties: false
AccountFilterPredicatesAccountSortSortedFilter:
type: object
properties:
offset:
type: integer
format: int32
limit:
type: integer
format: int32
predicates:
$ref: '#/components/schemas/AccountFilterPredicates'
sort:
$ref: '#/components/schemas/AccountSort'
additionalProperties: false
PersonCertificationResponse:
type: object
properties:
id:
type: integer
format: int64
example: 1234
name:
type: string
nullable: true
example: CPR Training
abbreviation:
type: string
nullable: true
example: CPR
expiryDate:
type: string
format: date-time
nullable: true
example: '2021-01-01'
daysWarnBeforeExpire:
type: integer
format: int32
nullable: true
example: 9
certificationDate:
type: string
format: date-time
nullable: true
example: '2021-12-20'
certificationDescription:
type: string
description: Must be no greater than 255 characters.
nullable: true
example: '"Certification for fall arrest"'
hasAttachment:
type: boolean
state:
enum:
- Info
- Warning
- Expired
- All
type: string
readOnly: true
example: Info
additionalProperties: false
RoleHire:
type: object
properties:
isHireRequired:
type: boolean
hireDescription:
type: string
nullable: true
previousIsHireRequired:
type: boolean
hireStatus:
enum:
- Hire
- Hired
type: string
nullable: true
previousHireStatus:
enum:
- Hire
- Hired
type: string
nullable: true
taggedByUserId:
type: integer
format: int32
nullable: true
taggedAt:
type: string
format: date-time
nullable: true
hiredAt:
type: string
format: date-time
nullable: true
additionalProperties: false
ProjectRoleTagEntity:
type: object
properties:
id:
type: integer
format: int64
collectionId:
type: integer
format: int64
name:
type: string
nullable: true
collectionName:
type: string
nullable: true
collectionColor:
type: string
nullable: true
additionalProperties: false
description: Represents a role tag with its collection metadata
ProjectTaskDetail:
type: object
properties:
projectId:
type: integer
format: int64
example: 9381
taskId:
type: string
format: uuid
example: 00000000-0000-0000-0000-000000000000
name:
type: string
nullable: true
example: Design Plan
startDate:
type: string
format: date-time
example: '2019-01-01'
endDate:
type: string
format: date-time
example: '2020-12-31'
roles:
uniqueItems: true
type: array
items:
$ref: '#/components/schemas/BaseRoleResult'
nullable: true
createdOn:
type: string
format: date-time
example: '2021-05-27T10:47:23.530Z'
lastModifiedOn:
type: string
format: date-time
example: '2021-05-27T10:58:23.530Z'
additionalProperties: false
RoleUnfilled:
type: object
properties:
startDate:
type: string
format: date-time
example: '2019-01-01'
endDate:
type: string
format: date-time
example: '2020-12-31'
additionalProperties: false
CollaborationMatrixResponse:
type: object
properties:
projects:
type: array
items:
$ref: '#/components/schemas/CollaborationMatrixProject'
nullable: true
personIds:
type: array
items:
type: integer
format: int64
nullable: true
additionalProperties: false
securitySchemes:
Bearer:
type: http
description: Standard Authorization header using the Bearer scheme
scheme: bearer
bearerFormat: JWT