openapi: 3.0.4
info:
title: Bench AccountActivities ProjectFieldValue 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: ProjectFieldValue
paths:
/rp/api/v1/accounts/{accountId}/projects/{projectId}/project-field-values:
get:
tags:
- ProjectFieldValue
summary: Gets all custom field values for the given project in the given account.
description: '<br/><strong>Permissions</strong><br/>Project: Read<br/>Private: Read<br/>Finance: Read'
operationId: ProjectFieldValue_QueryFieldValues
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: projectId
in: path
description: The project ID the role belongs to
required: true
schema:
type: integer
format: int64
- name: includeEmpty
in: query
description: Returns fields with empty/unset value as well
schema:
type: boolean
default: false
- 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
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:
- ProjectFieldValue
summary: Set project's field values in the given account.
description: 'NOTE: It is mandatory that the fields with isRequired set to true be passed in as part of the request.
Example: Say you have 2 project fields on an account "Budget" and "City" where isRequired is set to true on "Budget".
FieldDefinition Example Response - GET ProjectFields (/api/v{version}/accounts/{id}/project-fields)
<code>[<br/> {<br/> "id": 1394,<br/> "name": "Budget",<br/> "type": "Currency",<br/> "isRequired": true,<br/> "isSystem": false,<br/> "isPrivate": false,<br/> "isFinancials": false,<br/> "isLocked": false<br/> },<br/> {<br/> "id": 1395,<br/> "name": "City",<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/> "Toronto"<br/> ]<br/> }<br/>]</code><h2>Validation</h2><b>Other</b>: Free text. Max length: 2400
<b>Address</b>: Free text. Max length: 250
<b>Project Number</b>: Free text. Max length: 250
<b>Budget</b>: Currency. Starts with 0 to 15 digits of ```0-9``` then optionally followed by ```.``` with 0 to 2 digits of ```0-9```
<b>External ID</b>: Free text. Max length: 250
<b>Labor Hours (Salaried)</b>: Positive integer. Must be greater than 0 and not exceed 2,147,483,647 (Int32.MaxValue). Decimals are not allowed. This is a system field that requires both Project Forecasting and Standard modules to be enabled.
<b>Labor Hours (Hourly)</b>: Positive integer. Must be greater than 0 and not exceed 2,147,483,647 (Int32.MaxValue). Decimals are not allowed. This is a system field that requires both Project Forecasting and Hourly Profile modules to be enabled.
<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>Date selector</b>: Format: dd/MM/yyyy
<b>Checkbox</b>: Accepted values: ```true``` or ```false```
<br/><strong>Permissions</strong><br/>Project: Write<br/>Private: Read<br/>Finance: Read'
operationId: ProjectFieldValue_SetFieldValues
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: projectId
in: path
description: The project ID the role belongs to
required: true
schema:
type: integer
format: int64
requestBody:
description: The request details of field values to be set
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:
'204':
description: No Content - Success
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'422':
description: Validation fail - One more more field IDs might not be valid
patch:
tags:
- ProjectFieldValue
summary: Update field values on a project
description: '<h2>Validation</h2>
<b>Other</b>: Free text. Max length: 2400
<b>Address</b>: Free text. Max length: 250
<b>Project Number</b>: Free text. Max length: 250
<b>Budget</b>: Currency. Starts with 0 to 15 digits of ```0-9``` then optionally followed by ```.``` with 0 to 2 digits of ```0-9```
<b>External ID</b>: Free text. Max length: 250
<b>Labor Hours (Salaried)</b>: Positive integer. Must be greater than 0 and not exceed 2,147,483,647 (Int32.MaxValue). Decimals are not allowed. This is a system field that requires both Project Forecasting and Standard modules to be enabled.
<b>Labor Hours (Hourly)</b>: Positive integer. Must be greater than 0 and not exceed 2,147,483,647 (Int32.MaxValue). Decimals are not allowed. This is a system field that requires both Project Forecasting and Hourly Profile modules to be enabled.
<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>Date selector</b>: Format: dd/MM/yyyy
<b>Checkbox</b>: Accepted values: ```true``` or ```false```
<br/><strong>Permissions</strong><br/>Project: Write<br/>Private: Read<br/>Finance: Read'
operationId: ProjectFieldValue_BulkUpdateFieldValues
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: projectId
in: path
description: The Project 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 project couldn't be found
delete:
tags:
- ProjectFieldValue
summary: Clear project's field values by field IDs in the given account.
description: '<br/><strong>Permissions</strong><br/>Project: Write<br/>Private: Read<br/>Finance: Read'
operationId: ProjectFieldValue_ClearFieldValues
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: projectId
in: path
description: The project ID the role belongs to
required: true
schema:
type: integer
format: int64
requestBody:
description: The field IDs to be cleared
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 - Success
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
/rp/api/v1/accounts/{accountId}/projects/{projectId}/project-field-values/{fieldId}:
patch:
tags:
- ProjectFieldValue
summary: Update a single field's value(s) for project in the given account.
description: '<h2>Validation</h2>
<b>Other</b>: Free text. Max length: 2400
<b>Address</b>: Free text. Max length: 250
<b>Project Number</b>: Free text. Max length: 250
<b>Budget</b>: Currency. Starts with 0 to 15 digits of ```0-9``` then optionally followed by ```.``` with 0 to 2 digits of ```0-9```
<b>External ID</b>: Free text. Max length: 250
<b>Labor Hours (Salaried)</b>: Positive integer. Must be greater than 0 and not exceed 2,147,483,647 (Int32.MaxValue). Decimals are not allowed. This is a system field that requires both Project Forecasting and Standard modules to be enabled.
<b>Labor Hours (Hourly)</b>: Positive integer. Must be greater than 0 and not exceed 2,147,483,647 (Int32.MaxValue). Decimals are not allowed. This is a system field that requires both Project Forecasting and Hourly Profile modules to be enabled.
<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>Date selector</b>: Format: dd/MM/yyyy
<b>Checkbox</b>: Accepted values: ```true``` or ```false```
<br/><strong>Permissions</strong><br/>Project: Write<br/>Private: Read<br/>Finance: Read'
operationId: ProjectFieldValue_UpdateFieldValue
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: projectId
in: path
description: The project ID the role belongs to
required: true
schema:
type: integer
format: int64
- name: fieldId
in: path
description: The field ID that the data can be updated
required: true
schema:
type: integer
format: int64
requestBody:
description: The request details of field values to be set
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:
'204':
description: No Content - Success
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'422':
description: Validation fail - One more more field IDs might not be valid
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