openapi: 3.0.4
info:
title: Bench AccountActivities Phases 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: Phases
paths:
/rp/api/v1/accounts/{accountId}/Phases:
get:
tags:
- Phases
summary: Gets the list of phases in the given account
description: '
Permissions
Account: Read'
operationId: Phases_Query
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
responses:
'200':
description: 'Success: List of phases'
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
post:
tags:
- Phases
summary: Adds a new phase to the given account
description: "You must specify \"name\" for this endpoint.\n\n \nIf the \"includeOnNewProjects\" property is true, then the phase is included by default on new projects.\n\n \nAn account can have a maximum of 20 phases.
Permissions
Account: Write"
operationId: Phases_Add
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
requestBody:
description: Object with the name of the phase and whether to include it by default on new projects
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/PhaseAddRequest'
application/json:
schema:
$ref: '#/components/schemas/PhaseAddRequest'
text/json:
schema:
$ref: '#/components/schemas/PhaseAddRequest'
application/*+json:
schema:
$ref: '#/components/schemas/PhaseAddRequest'
required: true
responses:
'201':
description: 'Success: Newly created phase model'
content:
text/plain:
schema:
$ref: '#/components/schemas/PhaseResponse'
application/json:
schema:
$ref: '#/components/schemas/PhaseResponse'
text/json:
schema:
$ref: '#/components/schemas/PhaseResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'409':
description: Conflict - Phase with name already exists in the account
'422':
description: Unprocessable Entity - Limit for number of phases on the account has been reached
put:
tags:
- Phases
summary: Updates and re-orders the list of phases on an account
description: 'This endpoint will update the order of the phases in the account by the order that is sent in
NOTE: This endpoint does not require all of the phases to be sent in.
HOWEVER, if you do not pass in all of the phases on the account, the order may not come back in an expected order.
Permissions
Account: Write'
operationId: Phases_Update
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
requestBody:
description: Array of objects with the id of the phase, the name and whether to include it by default on new projects
content:
application/json-patch+json:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseUpdateRequest'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseUpdateRequest'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseUpdateRequest'
application/*+json:
schema:
type: array
items:
$ref: '#/components/schemas/PhaseUpdateRequest'
required: true
responses:
'204':
description: No Content
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'409':
description: Conflict - Phase with name already exists in the account
delete:
tags:
- Phases
summary: Removes phases from the given account
description: '
Permissions
Account: Write'
operationId: Phases_Delete
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
requestBody:
description: The Phase IDs to be removed
content:
application/json-patch+json:
schema:
type: array
items:
type: integer
format: int64
application/json:
schema:
type: array
items:
type: integer
format: int64
text/json:
schema:
type: array
items:
type: integer
format: int64
application/*+json:
schema:
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}/Phases/{id}:
get:
tags:
- Phases
summary: Gets the phase by id in the given account
description: '
Permissions
Account: Read'
operationId: Phases_Get
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: id
in: path
description: The Phase ID
required: true
schema:
type: integer
format: int64
responses:
'200':
description: 'Success: Phase'
content:
text/plain:
schema:
$ref: '#/components/schemas/PhaseResponse'
application/json:
schema:
$ref: '#/components/schemas/PhaseResponse'
text/json:
schema:
$ref: '#/components/schemas/PhaseResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
put:
tags:
- Phases
summary: Updates a single phase on an account
description: '
Permissions
Account: Write'
operationId: Phases_UpdateSingle
parameters:
- name: accountId
in: path
description: The Account ID
required: true
schema:
type: integer
format: int32
- name: id
in: path
description: The Phase ID
required: true
schema:
type: integer
format: int64
requestBody:
description: Object with the name and whether to include it by default on new projects
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/PhaseFromRouteUpdateRequest'
application/json:
schema:
$ref: '#/components/schemas/PhaseFromRouteUpdateRequest'
text/json:
schema:
$ref: '#/components/schemas/PhaseFromRouteUpdateRequest'
application/*+json:
schema:
$ref: '#/components/schemas/PhaseFromRouteUpdateRequest'
required: true
responses:
'204':
description: No Content
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'409':
description: Conflict - Phase with name already exists in the account
components:
schemas:
PhaseAddRequest:
type: object
properties:
name:
type: string
nullable: true
example: Pre-Construction
includeOnNewProjects:
type: boolean
additionalProperties: false
PhaseFromRouteUpdateRequest:
type: object
properties:
name:
type: string
nullable: true
example: Pre-Construction
includeOnNewProjects:
type: boolean
additionalProperties: false
PhaseResponse:
type: object
properties:
id:
type: integer
format: int64
example: 1234
name:
type: string
nullable: true
example: Pre-Construction
includeOnNewProjects:
type: boolean
projects:
type: array
items:
type: integer
format: int64
nullable: true
example:
- 1
- 12
- 123
- 1234
additionalProperties: false
PhaseUpdateRequest:
type: object
properties:
id:
type: integer
format: int64
example: 1234
name:
type: string
nullable: true
example: Pre-Construction
includeOnNewProjects:
type: boolean
additionalProperties: false
securitySchemes:
Bearer:
type: http
description: Standard Authorization header using the Bearer scheme
scheme: bearer
bearerFormat: JWT