openapi: 3.0.4
info:
title: Bench AccountActivities HourlyRoleNames 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: HourlyRoleNames
paths:
/rp/api/v1/accounts/{id}/hourly-role-names:
get:
tags:
- HourlyRoleNames
summary: Get hourly role names in the account
description: '
Permissions
Account: Read
Finance: Read
HourlyRole: Read'
operationId: HourlyRoleNames_Get
parameters:
- name: id
in: path
description: The account ID
required: true
schema:
type: integer
format: int32
responses:
'200':
description: Success
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden - User doesn't have permissions on this resource, or the project couldn't be found
post:
tags:
- HourlyRoleNames
summary: Add/Update hourly role name(s) in the account
description: 'If "alphabetize" parameter flag is true, the role names should be alphabetically ordered by caller, otherwise in the order of the request.
To add or update role names you must have permissions to manage account properties.
Permissions
Account: Write
HourlyRole: Write'
operationId: HourlyRoleNames_Post
parameters:
- name: id
in: path
description: The account ID
required: true
schema:
type: integer
format: int32
- name: alphabetize
in: query
description: Optional flag to set whether role names should be alphabetically ordered by the caller
schema:
type: boolean
default: false
requestBody:
description: The role name detail
content:
application/json-patch+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameRequest'
application/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameRequest'
text/json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameRequest'
application/*+json:
schema:
minItems: 1
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameRequest'
required: true
responses:
'200':
description: Success
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameResponse'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameResponse'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/HourlyRoleNameResponse'
'400':
description: Bad Request - Request has missing or invalid values
'401':
description: Unauthorized
'403':
description: Forbidden - User doesn't have permissions on this resource, or the project couldn't be found
delete:
tags:
- HourlyRoleNames
summary: Remove hourly role name(s) by ID in the account
description: 'To remove hourly role names you must have permissions to manage account properties.
NOTE: The account must contain at least 1 role name.
Permissions
Account: Write
HourlyRole: Write'
operationId: HourlyRoleNames_Delete
parameters:
- name: id
in: path
description: The account ID
required: true
schema:
type: integer
format: int32
requestBody:
description: The IDs of the role name to be removed
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
'401':
description: Unauthorized
'403':
description: Forbidden - User doesn't have permissions on this resource, or the project couldn't be found
'422':
description: Validation failed - if the role name is being used by any role, the name cannot be removed
components:
schemas:
HourlyRoleNameResponse:
type: object
properties:
id:
type: integer
format: int64
example: 1
name:
type: string
nullable: true
example: Project Engineer
type:
enum:
- Salaried
- Hourly
- All
type: string
example: Salaried
hourlyCost:
type: number
format: double
nullable: true
example: 123.45
inUse:
type: boolean
readOnly: true
projectIds:
type: array
items:
type: integer
format: int64
nullable: true
example:
- 1
alphabetize:
type: boolean
additionalProperties: false
HourlyRoleNameRequest:
type: object
properties:
id:
type: integer
format: int64
example: 1
name:
type: string
nullable: true
example: Project Engineer
hourlyCost:
type: number
format: double
nullable: true
example: 123.45
additionalProperties: false
securitySchemes:
Bearer:
type: http
description: Standard Authorization header using the Bearer scheme
scheme: bearer
bearerFormat: JWT