Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Bench Person Fields API
description: 'Versioning
The API is currently at version 1.0.'
version: '1.0'
servers:
- url: https://bench.gobridgit.com
description: Bridgit Bench production
security:
- {}
tags:
- name: PersonFields
paths:
/rp/api/v1/accounts/{id}/person-fields:
get:
tags:
- PersonFields
summary: Get all the person field definitions on the given account
description: 'Permissions
Account: Read
Private: Read
Finance: Read
Person: Read
HourlyProfile: Read'
operationId: PersonFields_Query
parameters:
- name: id
in: path
description: The account ID
required: true
schema:
type: integer
format: int32
responses:
'200':
description: 'Success: List of Field Definitions'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
'401':
description: Unauthorized
'403':
description: Forbidden
post:
tags:
- PersonFields
summary: Adds or updates person field definitions on the given account
description: 'If you pass in a FieldDefRequest object without an "id" this endpoint will add a new one to the account if the name isn''t reserved or in use.
If you pass in a FieldDefRequest object with an "id" this endpoint will update an existing one that matches the id.
To add a value or multiple values to a selection list you must pass an array of "definedValues" that contain objects with a "definedValue" property of the value you want to add.
To update a value or multiple values in a selection list you must pass an array of "definedValues" that contain objects with a "valueId" property of the value id to update and a "definedValue" property of the value you want to update it to.
To remove a value or multiple values from a selection list you must pass an array of "definedValues" that contain objects with a "valueId" property of the value id to remove, a "definedValue" property of the value you want to remove, and a "forRemoval" property set to true.
Example: You have a list of "Years" and you want to change "5" to "5-9" and remove values "6" through "9" and add a value of "10+"
[
{
"id": 123,
"name": "Years",
"type": "SingleSelect",
"definedValues": [
{
"valueId": 584,
"definedValue": "5-9",
"forRemoval": false,
"deleteExperienceFieldValues": false
},
{
"valueId": 585,
"definedValue": "6",
"forRemoval": true,
"deleteExperienceFieldValues": false
},
{
"valueId": 586,
"definedValue": "7",
"forRemoval": true,
"deleteExperienceFieldValues": false
},
{
"valueId": 587,
"definedValue": "8",
"forRemoval": true,
"deleteExperienceFieldValues": false
},
{
"valueId": 588,
"definedValue": "9",
"forRemoval": true,
"deleteExperienceFieldValues": false
},
{
"valueId": 0,
"definedValue": "10+",
"forRemoval": false,
"deleteExperienceFieldValues": false
}
],
"isRequired": true,
"isPrivate": false,
"isLocked": false
}
]
NOTE: There are a few reserved field names that cannot be used.
"Person ID","Photo","Name","Title","Next Availability","Current Project","Issues","Email","Hire Date","Termination Date","Allocated People","Next project","Past projects","Next project start","Current project end","Notes","Certifications","Group", "Company Tenure", "Industry Tenure", "Industry Start Date"
Validation
Title: SingleSelect. A list where only 1 value can be selected. When creating the list, each value should be between 1 and 250 non-empty characters.
Title (Hourly): SingleSelect. A list where only 1 value can be selected. When creating the list, each value should be between 1 and 250 non-empty characters.
Skill Set: Multi List Selection. A list where 0 or more values can be selected. When creating the list, each value should be between 1 and 250 non-empty characters
Skill Set (Hourly): Multi List Selection. A list where 0 or more values can be selected. When creating the list, each value should be between 1 and 250 non-empty characters
Other: Free text. Max length: 2400
Home Address: Max length: 250
Cost Rate (hr): Currency. Should be greater or equal to zero, starts with 0 to 15 digits of ```0-9``` then optionally followed by ```.``` with 0 to 2 digits of ```0-9```
Employee ID: Free text. Max length: 250
Date: Format: dd/MM/yyyy
Checkbox: Accepted values: true or false
Permissions
Account: Write
Private: Read
Finance: Read'
operationId: PersonFields_Post
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
requestBody:
content:
application/json-patch+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldDefRequest'
example:
- id: 123
name: Years
type: SingleSelect
definedValues:
- valueId: 584
definedValue: 5-9
forRemoval: false
deleteExperienceFieldValues: false
- valueId: 585
definedValue: '6'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 586
definedValue: '7'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 587
definedValue: '8'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 588
definedValue: '9'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 0
definedValue: 10+
forRemoval: false
deleteExperienceFieldValues: false
isRequired: true
isPrivate: false
isLocked: false
application/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldDefRequest'
example:
- id: 123
name: Years
type: SingleSelect
definedValues:
- valueId: 584
definedValue: 5-9
forRemoval: false
deleteExperienceFieldValues: false
- valueId: 585
definedValue: '6'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 586
definedValue: '7'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 587
definedValue: '8'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 588
definedValue: '9'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 0
definedValue: 10+
forRemoval: false
deleteExperienceFieldValues: false
isRequired: true
isPrivate: false
isLocked: false
text/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldDefRequest'
example:
- id: 123
name: Years
type: SingleSelect
definedValues:
- valueId: 584
definedValue: 5-9
forRemoval: false
deleteExperienceFieldValues: false
- valueId: 585
definedValue: '6'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 586
definedValue: '7'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 587
definedValue: '8'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 588
definedValue: '9'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 0
definedValue: 10+
forRemoval: false
deleteExperienceFieldValues: false
isRequired: true
isPrivate: false
isLocked: false
application/*+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldDefRequest'
example:
- id: 123
name: Years
type: SingleSelect
definedValues:
- valueId: 584
definedValue: 5-9
forRemoval: false
deleteExperienceFieldValues: false
- valueId: 585
definedValue: '6'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 586
definedValue: '7'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 587
definedValue: '8'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 588
definedValue: '9'
forRemoval: true
deleteExperienceFieldValues: false
- valueId: 0
definedValue: 10+
forRemoval: false
deleteExperienceFieldValues: false
isRequired: true
isPrivate: false
isLocked: false
required: true
responses:
'200':
description: 'Success: List of Field Definitions added or updated'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
'400':
description: 'Bad Request: Example when trying to set system fields to private that aren''t allowed to be private:
<code>{<br/> "errors": [<br/> {<br/> "errorType": "CannotBeMadePrivate",<br/> "description": "Fields in request cannot be made private.",<br/> "errorCode": null,<br/> "field": "Id",<br/> "values": [<br/> "5"<br/> ],<br/> "innerException": null,<br/> "hResult": -2146233088<br/> }<br/> ],<br/> "title": "One or more validation errors occurred.",<br/> "status": 400,<br/> "instance": "/api/v1/accounts/2/person-fields",<br/> "requestUid": "3dd10d1b-392f-4d5a-b736-50ea1f072342"<br/>}</code>'
'401':
description: Unauthorized
'403':
description: Forbidden
'409':
description: "Conflict - Field definition with name already exists in the account or trying to add or update a field to a system field.\n\n Example when trying to add a field that has the same name as an existing one:\n<code>{<br/> \"errors\": [<br/> {<br/> \"errorType\": \"Duplicate\",<br/> \"description\": \"A name in the request is already in use.\",<br/> \"errorCode\": null,<br/> \"innerException\": null,<br/> \"hResult\": -2146233088<br/> }<br/> ],<br/> \"title\": \"One or more validation errors occurred.\",<br/> \"status\": 409,<br/> \"instance\": \"/api/v1/accounts/2/person-fields\",<br/> \"requestUid\": \"8ba8f060-858b-46d9-b3cc-fa1c391ebc66\"<br/>}</code>"
'422':
description: "Unprocessable Entity - Couldn't remove all defined values from list.\n\n Example when trying to remove a defined value in use from a required list:\n<code>{<br/> \"errors\": [<br/> {<br/> \"errorType\": \"DefinedValueError\",<br/> \"description\": \"23001: Cannot remove field defined value. It is in use for required field(s)\",<br/> \"errorCode\": null,<br/> \"innerException\": null,<br/> \"hResult\": -2146233088<br/> }<br/> ],<br/> \"title\": \"One or more validation errors occurred.\",<br/> \"status\": 422,<br/> \"instance\": \"/api/v1/accounts/2/person-fields\",<br/> \"requestUid\": \"fb8b2dd9-360f-4a81-852c-e5b70cfa5a85\"<br/>}</code>"
delete:
tags:
- PersonFields
summary: Deletes one or more person field definitions in the given account by ids
description: 'NOTE: system fields cannot be deleted.
Permissions
Account: Write'
operationId: PersonFields_Delete
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
requestBody:
content:
application/json-patch+json:
schema:
minItems: 1
type: array
items:
type: integer
format: int64
application/json:
schema:
minItems: 1
type: array
items:
type: integer
format: int64
text/json:
schema:
minItems: 1
type: array
items:
type: integer
format: int64
application/*+json:
schema:
minItems: 1
type: array
items:
type: integer
format: int64
required: true
responses:
'204':
description: No Content
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'422':
description: "Unprocessable Entity: Attempted to remove system field(s)\n\n Example Response:\n<code>{<br/> \"errors\": [<br/> {<br/> \"errorType\": \"NotAllowed\",<br/> \"description\": \"Cannot delete system field(s)\",<br/> \"errorCode\": null,<br/> \"innerException\": null,<br/> \"hResult\": -2146233088<br/> }<br/> ],<br/> \"title\": \"One or more validation errors occurred.\",<br/> \"status\": 422,<br/> \"instance\": \"/api/v1/accounts/2/person-fields\",<br/> \"requestUid\": \"3b3cbfaa-a809-4529-8870-317654a3311e\"<br/>}</code>"
/rp/api/v1/accounts/{id}/person-fields/_reorder:
put:
tags:
- PersonFields
summary: Update the display order of person field definitions for the given account
description: 'Accepts an array of objects containing fieldId and displayOrder.
System fields cannot be reordered and should not be included in the request.
All custom fields should be included with their new display order values.
Permissions
Account: Write'
operationId: PersonFields_UpdateFieldOrder
parameters:
- name: id
in: path
description: The account ID
required: true
schema:
type: integer
format: int32
requestBody:
description: Array of field order updates
content:
application/json-patch+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldOrderRequest'
application/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldOrderRequest'
text/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldOrderRequest'
application/*+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldOrderRequest'
required: true
responses:
'200':
description: 'Success: Field order updated'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/PersonFieldDefinitionResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
components:
schemas:
PersonFieldDefinitionResponse:
type: object
properties:
personType:
type:
- array
- 'null'
items:
enum:
- Salaried
- Hourly
type: string
example: Salaried
displayOrder:
type:
- integer
- 'null'
format: int32
example: 1
id:
type: integer
format: int64
example: 1394
name:
type:
- string
- 'null'
example: Contact Number
type:
enum:
- Boolean
- Date
- Email
- PhoneNumber
- Image
- Text
- LongText
- SingleSelect
- MultiSelect
- Address
- Currency
- Phone
- Integer
- Number
type: string
example: PhoneNumber
definedValues:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/FieldDefinedValue'
isRequired:
type: boolean
example: false
isSystem:
type: boolean
example: false
isPrivate:
type: boolean
example: false
isFinancials:
type: boolean
example: false
isLocked:
type: boolean
example: false
additionalProperties: false
FieldDefRequest:
type: object
properties:
id:
type: integer
format: int64
example: 1394
name:
type:
- string
- 'null'
example: Contact Number
type:
enum:
- Boolean
- Date
- Email
- PhoneNumber
- Image
- Text
- LongText
- SingleSelect
- MultiSelect
- Address
- Currency
- Phone
- Integer
- Number
type: string
example: PhoneNumber
definedValues:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/FieldDefinedValueRequest'
isRequired:
type: boolean
example: false
isPrivate:
type: boolean
example: false
isLocked:
type: boolean
example: false
additionalProperties: false
FieldDefinedValueRequest:
type: object
properties:
valueId:
type: integer
format: int64
definedValue:
type:
- string
- 'null'
forRemoval:
type: boolean
deleteExperienceFieldValues:
type: boolean
additionalProperties: false
FieldDefinedValue:
type: object
properties:
valueId:
type: integer
format: int64
example: 13
definedValue:
type:
- string
- 'null'
example: Defined Value
inUse:
type:
- array
- 'null'
items:
type: integer
format: int64
additionalProperties: false
FieldOrderRequest:
required:
- displayOrder
- fieldId
type: object
properties:
fieldId:
maximum: 9.223372036854776e+18
minimum: 1
type: integer
description: The field ID to reorder
format: int64
example: 1234
displayOrder:
maximum: 2147483647
minimum: 1
type: integer
description: The new display order position (1-indexed)
format: int32
example: 1
additionalProperties: false
securitySchemes:
Bearer:
type: http
description: Standard Authorization header using the Bearer scheme
scheme: bearer
bearerFormat: JWT