openapi: 3.0.4
info:
title: Bench AccountActivities ProjectsPhases 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: ProjectsPhases
paths:
/rp/api/v1/accounts/{accountId}/projects/{projectId}/phases:
get:
tags:
- ProjectsPhases
summary: Gets all phases on the given project
description: '
Permissions
Project: Read'
operationId: ProjectsPhases_Query
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
responses:
'200':
description: Success
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
post:
tags:
- ProjectsPhases
summary: Adds a phase to the given project
description: 'You must specify "id", "startDate" and "endDate" of any phase for this endpoint.
Permissions
Project: Write'
operationId: ProjectsPhases_Add
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: Phases to be added to the account
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/ProjectPhaseRequest'
application/json:
schema:
$ref: '#/components/schemas/ProjectPhaseRequest'
text/json:
schema:
$ref: '#/components/schemas/ProjectPhaseRequest'
application/*+json:
schema:
$ref: '#/components/schemas/ProjectPhaseRequest'
required: true
responses:
'201':
description: Created
content:
text/plain:
schema:
$ref: '#/components/schemas/ProjectPhaseResponse'
application/json:
schema:
$ref: '#/components/schemas/ProjectPhaseResponse'
text/json:
schema:
$ref: '#/components/schemas/ProjectPhaseResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'409':
description: Conflict - Phase already exists on the project
'422':
description: Unprocessable Entity - Phase start or end dates outside of project start or end date
delete:
tags:
- ProjectsPhases
summary: Deletes phases from the given project
operationId: ProjectsPhases_BulkDelete
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: The Phase IDs
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
/rp/api/v1/accounts/{accountId}/projects/{projectId}/phases/bulk:
post:
tags:
- ProjectsPhases
summary: Adds phases to the given project
description: 'You must specify "id", "startDate" and "endDate" of any phase for this endpoint.
Permissions
Project: Write'
operationId: ProjectsPhases_BulkAdd
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: Array of phases to be added to the account
content:
application/json-patch+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/ProjectPhaseRequest'
application/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/ProjectPhaseRequest'
text/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/ProjectPhaseRequest'
application/*+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/ProjectPhaseRequest'
required: true
responses:
'201':
description: Created
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'409':
description: Conflict - Phase already exists on the project
'422':
description: Unprocessable Entity - Phase start or end dates outside of project start or end date
put:
tags:
- ProjectsPhases
summary: Updates multiple phases on the given project
description: "This endpoint will only update the fields that are present in the request.\n\nYou must specify \"id\", \"startDate\" and/or \"endDate\" of the phases for this endpoint.\n\n \nIf the \"shiftDates\" property is true and you specify a changed phase start or end date in this request,\nthen the phase's start and end dates will be adjusted by the same amount.\nIf this property is set to true, then you must only send EITHER startDate OR endDate - only startDate is considered when both dates are set.\n
Permissions
Project: Write"
operationId: ProjectsPhases_BulkUpdate
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: New start and end date for the phase from the request body
content:
application/json-patch+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/ProjectPhaseUpdateRequest'
application/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/ProjectPhaseUpdateRequest'
text/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/ProjectPhaseUpdateRequest'
application/*+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/ProjectPhaseUpdateRequest'
required: true
responses:
'200':
description: Success
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProjectPhaseResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'422':
description: Unprocessable Entity - Phase start or end dates outside of project start or end date
/rp/api/v1/accounts/{accountId}/projects/{projectId}/phases/{phaseId}:
put:
tags:
- ProjectsPhases
summary: Updates a phase on the given project
description: "This endpoint will only update the fields that are present in the request.\n\nYou must specify \"startDate\" and/or \"endDate\" for this endpoint.\n\n \nIf the \"shiftDates\" property is true and you specify a changed phase start or end date in this request,\nthen the phase's start and end dates will be adjusted by the same amount.\n\nIf this property is set to true, then you must only send EITHER startDate OR endDate - only startDate is considered when both dates are set.\n
Permissions
Project: Write"
operationId: ProjectsPhases_Update
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
- name: phaseId
in: path
description: The Phase ID
required: true
schema:
type: integer
format: int64
requestBody:
description: New start and end date for the phase from the request body
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/ProjectPhaseFromRouteRequest'
application/json:
schema:
$ref: '#/components/schemas/ProjectPhaseFromRouteRequest'
text/json:
schema:
$ref: '#/components/schemas/ProjectPhaseFromRouteRequest'
application/*+json:
schema:
$ref: '#/components/schemas/ProjectPhaseFromRouteRequest'
required: true
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/ProjectPhaseResponse'
application/json:
schema:
$ref: '#/components/schemas/ProjectPhaseResponse'
text/json:
schema:
$ref: '#/components/schemas/ProjectPhaseResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'422':
description: Unprocessable Entity - Phase start or end dates outside of project start or end date
delete:
tags:
- ProjectsPhases
summary: Deletes a phase from the given project
operationId: ProjectsPhases_Delete
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
- name: phaseId
in: path
description: The Phase ID
required: true
schema:
type: integer
format: int64
responses:
'204':
description: No Content
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
components:
schemas:
ProjectPhaseRequest:
type: object
properties:
id:
type: integer
format: int64
example: 1234
startDate:
type: string
format: date-time
example: '2020-01-01'
endDate:
type: string
format: date-time
example: '2020-12-31'
additionalProperties: false
ProjectPhaseFromRouteRequest:
type: object
properties:
startDate:
type: string
format: date-time
nullable: true
example: '2020-01-01'
endDate:
type: string
format: date-time
nullable: true
example: '2020-12-31'
shiftDates:
type: boolean
additionalProperties: false
ProjectPhaseUpdateRequest:
type: object
properties:
id:
type: integer
format: int64
example: 1234
startDate:
type: string
format: date-time
nullable: true
example: '2020-01-01'
endDate:
type: string
format: date-time
nullable: true
example: '2020-12-31'
shiftDates:
type: boolean
additionalProperties: false
ProjectPhaseResponse:
type: object
properties:
id:
type: integer
format: int64
example: 1234
name:
type: string
nullable: true
example: Pre-Construction
startDate:
type: string
format: date-time
example: '2020-01-01'
endDate:
type: string
format: date-time
example: '2020-12-31'
lastModifiedOn:
type: string
format: date-time
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