openapi: 3.0.4
info:
title: Bench AccountActivities PersonFieldValue API
description: "<h2>Versioning</h2>\n<p>\n The API is currently at version <code>1.0</code>. All API endpoints (other than\n authentication) require you to specify the API version as part of the path.\n</p>\n\n<h2>URL Paths</h2>\n<p>\n Authentication requests should be made to <code>/auth/signin</code>,\n as documented below. All other API requests should be made to\n sub-paths of <code>/rp/api/1.0/...</code>.\n</p>\n\n<h2>Authentication</h2>\n<p>\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 <code>/auth/signin</code>, 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</p>\n<p>\n The response will be a JSON object including both\n <b>\"access_token\"</b> and <b>\"refresh_token\"</b> property.\n All other requests against the Bench API should include an\n authorization header: <code>Authorization: Bearer xxxYYYzzz</code>,\n where <b>xxxYYYzzz</b> is the value of <b>\"access_token\"</b> in the response.\n <br><br>\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</p>\n\n<p>\n The refresh token can be used to generate new session by request with <code>/auth/token</code> 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</p>\n<p>\n Note that once the refresh token is used, the previous access and refresh token is no longer valid.\n <br><br>\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</p>\n\n<h2>Pagination</h2>\n<p>\n Several of the API endpoints are paginated. These are denoted by\n including the <code>offset</code> (zero-based offset) and <code>limit</code> query\n parameters. For example, to request the <code>10</code> items,\n set the <code>offset=0</code> to <code>limit=10</code>.\n <br>\n NOTE: the result set contains items with index of 0-9\n <br>\n To request the next 10 items (starting at index 10),\n set the <code>offset=10</code> to <code>limit=10</code>\n</p>\n<p>\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 <code>query-has-more: true</code> header in the response.\n</p>\n\n<h2>Request Encoding</h2>\n<p>\n <code>GET</code> and <code>DELETE</code> requests should have parameters encoded as URL query\n parameters. Boolean values should be encoded as <code>true</code> and\n <code>false</code>, not as <code>1</code> and <code>0</code>.\n</p>\n\n<h2>Errors</h2>\n<p>\n Errors are returned for some response codes such as <code>400 Bad Request</code> 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</p>\n"
version: '1.0'
servers:
- url: https://bench.gobridgit.com
description: Bridgit Bench production
security:
- {}
tags:
- name: PersonFieldValue
paths:
/rp/api/v1/accounts/{accountId}/persons/{personId}/person-field-values:
get:
tags:
- PersonFieldValue
summary: Gets all custom field values for the given person.
description: '<br/><strong>Permissions</strong><br/>Person: Read<br/>HourlyProfile: Read<br/>Private: Read<br/>Finance: Read'
operationId: PersonFieldValue_QueryFieldValues
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The Person ID
required: true
schema:
type: integer
format: int64
- 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
responses:
'200':
description: Success
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/FieldValuesResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FieldValuesResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/FieldValuesResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
post:
tags:
- PersonFieldValue
summary: Add or update one or more custom field values on a person
description: 'It is mandatory that the fields with isRequired set to true be passed in as part of the request.
Example: Say you have 2 person fields on an account "Contact Number" and "Certifications" where isRequired is set to true on "Contact Number".
FieldDefinition Example Response - GET PersonFields (/api/v{version}/accounts/{id}/person-fields)
<code>[<br/> {<br/> "id": 1394,<br/> "name": "Contact Number",<br/> "type": "PhoneNumber",<br/> "isRequired": true,<br/> "isSystem": false,<br/> "isPrivate": false,<br/> "isFinancials": false,<br/> "isLocked": false<br/> },<br/> {<br/> "id": 1395,<br/> "name": "Certifications",<br/> "type": "Text",<br/> "isRequired": false,<br/> "isSystem": false,<br/> "isPrivate": false,<br/> "isFinancials": false,<br/> "isLocked": false<br/> }<br/>]</code>
If you only send in the following your request will result in a 400.
<code>[<br/> {<br/> "fieldId": 1395,<br/> "values": [<br/> "First Aid"<br/> ]<br/> }<br/>]</code>
<h2>Validation</h2><b>Single List Selection</b>: A list where only 1 value can be selected. When creating the list, each value should be between 1 and 250 non-empty characters.
<b>Multi List Selection</b>: 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.
<b>Text</b>: Min length: 0. Max length: 250
<b>Date selector</b>: Format: dd/MM/yyyy
<b>Other</b>: Max length: 2400
<b>Checkbox</b>: Accepted values: ```true``` or ```false```
<b>Currency</b>: <code>^[0-9]{0,15}(\\.[0-9]{0,2})?$</code>
<i>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```</i>
<b>Phone</b>: <code>^\\+[1-9]\d{10,14}$</code>
<i>Phone starts with a ```+``` followed by 11 to 15 digits of ```0-9``` where the first digit is not ```0```</i>
<br/><strong>Permissions</strong><br/>Person: Write<br/>HourlyProfile: Write<br/>Private: Read<br/>Finance: Read'
operationId: PersonFieldValue_SetFieldValues
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The Person ID
required: true
schema:
type: integer
format: int64
requestBody:
description: ''
content:
application/json-patch+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldValuesPair'
application/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldValuesPair'
text/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldValuesPair'
application/*+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldValuesPair'
required: true
responses:
'200':
description: OK
'204':
description: No Content (success)
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden - User doesn't have permissions on this resource, or the account or person couldn't be found
'422':
description: Unprocessable Entity
patch:
tags:
- PersonFieldValue
summary: Update field values on a person
description: '<h2>Validation</h2>
<b>Single List Selection</b>: A list where only 1 value can be selected. When creating the list, each value should be between 1 and 250 non-empty characters.
<b>Multi List Selection</b>: 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.
<b>Text</b>: Min length: 0. Max length: 250
<b>Date selector</b>: Format: dd/MM/yyyy
<b>Other</b>: Max length: 2400
<b>Checkbox</b>: Accepted values: ```true``` or ```false```
<b>Currency</b>: <code>^[0-9]{0,15}(\\.[0-9]{0,2})?$</code>
<i>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```</i>
<b>Phone</b>: <code>^\\+[1-9]\d{10,14}$</code>
<i>Phone starts with a ```+``` followed by 11 to 15 digits of ```0-9``` where the first digit is not ```0```</i>
<br/><strong>Permissions</strong><br/>Person: Write<br/>HourlyProfile: Write<br/>Private: Read<br/>Finance: Read'
operationId: PersonFieldValue_BulkUpdateFieldValues
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The Person ID
required: true
schema:
type: integer
format: int64
requestBody:
description: ''
content:
application/json-patch+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldValuesPair'
application/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldValuesPair'
text/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldValuesPair'
application/*+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/FieldValuesPair'
required: true
responses:
'200':
description: OK
'204':
description: No Content (success)
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden - User doesn't have permissions on this resource, or the account or person couldn't be found
delete:
tags:
- PersonFieldValue
summary: Delete one or more custom field values for a person
description: '<br/><strong>Permissions</strong><br/>Person: Write<br/>HourlyProfile: Write<br/>Private: Read<br/>Finance: Read'
operationId: PersonFieldValue_ClearFieldValues
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The Person ID
required: true
schema:
type: integer
format: int64
requestBody:
description: The field IDs for which the custom values should be deleted
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:
'200':
description: OK
'204':
description: No Content (success)
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden - User doesn't have permissions on this resource, or the account or person couldn't be found
/rp/api/v1/accounts/{accountId}/persons/{personId}/person-field-values/{fieldId}:
patch:
tags:
- PersonFieldValue
summary: Update a single field's value(s) for person in the given account.
description: '<h2>Validation</h2>
<b>Single List Selection</b>: A list where only 1 value can be selected. When creating the list, each value should be between 1 and 250 non-empty characters.
<b>Multi List Selection</b>: 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.
<b>Text</b>: Min length: 0. Max length: 250
<b>Date selector</b>: Format: dd/MM/yyyy
<b>Other</b>: Max length: 2400
<b>Checkbox</b>: Accepted values: ```true``` or ```false```
<b>Currency</b>: <code>^[0-9]{0,15}(\\.[0-9]{0,2})?$</code>
<i>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```</i>
<b>Phone</b>: <code>^\\+[1-9]\d{10,14}$</code>
<i>Phone starts with a ```+``` followed by 11 to 15 digits of ```0-9``` where the first digit is not ```0```</i>
<br/><strong>Permissions</strong><br/>Person: Write<br/>HourlyProfile: Write<br/>Private: Read<br/>Finance: Read'
operationId: PersonFieldValue_UpdateFieldValue
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: personId
in: path
description: The Person ID
required: true
schema:
type: integer
format: int64
- name: fieldId
in: path
description: The field ID
required: true
schema:
type: integer
format: int64
requestBody:
description: ''
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/FieldValuesRequest'
application/json:
schema:
$ref: '#/components/schemas/FieldValuesRequest'
text/json:
schema:
$ref: '#/components/schemas/FieldValuesRequest'
application/*+json:
schema:
$ref: '#/components/schemas/FieldValuesRequest'
required: true
responses:
'200':
description: OK
'204':
description: No Content (success)
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden - User doesn't have permissions on this resource, or the account or person couldn't be found
'422':
description: Unprocessable Entity
components:
schemas:
FieldValuesPair:
type: object
properties:
fieldId:
type: integer
format: int64
example: 1394
values:
type: array
items:
type: string
nullable: true
example:
- '5195555555'
additionalProperties: false
FieldValuesRequest:
type: object
properties:
values:
type: array
items:
type: string
nullable: true
example:
- '5195555555'
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
securitySchemes:
Bearer:
type: http
description: Standard Authorization header using the Bearer scheme
scheme: bearer
bearerFormat: JWT