openapi: 3.0.4
info:
title: Bench AccountActivities ProjectFieldValue 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: 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: '
Permissions
Project: Read
Private: Read
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)
[
{
"id": 1394,
"name": "Budget",
"type": "Currency",
"isRequired": true,
"isSystem": false,
"isPrivate": false,
"isFinancials": false,
"isLocked": false
},
{
"id": 1395,
"name": "City",
"type": "Text",
"isRequired": false,
"isSystem": false,
"isPrivate": false,
"isFinancials": false,
"isLocked": false
}
]
If you only send in the following your request will result in a 400.
[
{
"fieldId": 1395,
"values": [
"Toronto"
]
}
]Validation
Other: Free text. Max length: 2400
Address: Free text. Max length: 250
Project Number: Free text. Max length: 250
Budget: Currency. Starts with 0 to 15 digits of ```0-9``` then optionally followed by ```.``` with 0 to 2 digits of ```0-9```
External ID: Free text. Max length: 250
Labor Hours (Salaried): 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.
Labor Hours (Hourly): 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.
Single List Selection: A list where only 1 value can be selected. When creating the list, each value should be between 1 and 250 non-empty characters.
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.
Date selector: Format: dd/MM/yyyy
Checkbox: Accepted values: ```true``` or ```false```
Permissions
Project: Write
Private: Read
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: 'Validation
Other: Free text. Max length: 2400
Address: Free text. Max length: 250
Project Number: Free text. Max length: 250
Budget: Currency. Starts with 0 to 15 digits of ```0-9``` then optionally followed by ```.``` with 0 to 2 digits of ```0-9```
External ID: Free text. Max length: 250
Labor Hours (Salaried): 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.
Labor Hours (Hourly): 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.
Single List Selection: A list where only 1 value can be selected. When creating the list, each value should be between 1 and 250 non-empty characters.
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.
Date selector: Format: dd/MM/yyyy
Checkbox: Accepted values: ```true``` or ```false```
Permissions
Project: Write
Private: Read
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: '
Permissions
Project: Write
Private: Read
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: 'Validation
Other: Free text. Max length: 2400
Address: Free text. Max length: 250
Project Number: Free text. Max length: 250
Budget: Currency. Starts with 0 to 15 digits of ```0-9``` then optionally followed by ```.``` with 0 to 2 digits of ```0-9```
External ID: Free text. Max length: 250
Labor Hours (Salaried): 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.
Labor Hours (Hourly): 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.
Single List Selection: A list where only 1 value can be selected. When creating the list, each value should be between 1 and 250 non-empty characters.
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.
Date selector: Format: dd/MM/yyyy
Checkbox: Accepted values: ```true``` or ```false```
Permissions
Project: Write
Private: Read
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