openapi: 3.0.4 info: title: Bench AccountActivities ProjectRoleCategories 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\n

URL 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\n

Authentication

\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\n

Pagination

\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\n

Request 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\n

Errors

\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: ProjectRoleCategories paths: /rp/api/v1/accounts/{accountId}/projects/{projectId}/role-categories: get: tags: - ProjectRoleCategories summary: Gets categories on the given account's project. description: '
Permissions
Role: Read
HourlyRole: Read' operationId: ProjectRoleCategories_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 to get categories from required: true schema: type: integer format: int64 responses: '200': description: Success content: text/plain: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' application/json: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' text/json: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden post: tags: - ProjectRoleCategories summary: Adds a category on the given account's project. description: 'You must be able to manage salaried OR hourly roles.
Permissions
Role: Write
HourlyRole: Write' operationId: ProjectRoleCategories_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 to add the category to required: true schema: type: integer format: int64 requestBody: description: Request object that contains a list of categories. content: application/json-patch+json: schema: minItems: 1 type: array items: $ref: '#/components/schemas/NewRoleCategoryRequest' application/json: schema: minItems: 1 type: array items: $ref: '#/components/schemas/NewRoleCategoryRequest' text/json: schema: minItems: 1 type: array items: $ref: '#/components/schemas/NewRoleCategoryRequest' application/*+json: schema: minItems: 1 type: array items: $ref: '#/components/schemas/NewRoleCategoryRequest' required: true responses: '201': description: Created content: text/plain: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' application/json: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' text/json: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '422': description: Unprocessable Entity - Limit for for number of categories reached, or name is too long. put: tags: - ProjectRoleCategories summary: Bulk update categories on the given account's project. description: 'NOTE: The category name must not be greater than 100 characters.
Permissions
Role: Write
HourlyRole: Write' operationId: ProjectRoleCategories_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 to add the category to required: true schema: type: integer format: int64 requestBody: description: Request object that contains a list of categories. content: application/json-patch+json: schema: minItems: 1 type: array items: $ref: '#/components/schemas/UpdateRoleCategoryRequest' application/json: schema: minItems: 1 type: array items: $ref: '#/components/schemas/UpdateRoleCategoryRequest' text/json: schema: minItems: 1 type: array items: $ref: '#/components/schemas/UpdateRoleCategoryRequest' application/*+json: schema: minItems: 1 type: array items: $ref: '#/components/schemas/UpdateRoleCategoryRequest' required: true responses: '200': description: Success content: text/plain: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' application/json: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' text/json: schema: type: array items: $ref: '#/components/schemas/RoleCategoryResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '422': description: Unprocessable Entity - Limit for for number of categories reached, or name is too long. delete: tags: - ProjectRoleCategories summary: Removes categories on the given account's project. description: 'You must be able to manage salaried OR hourly roles.
Permissions
Role: Write
HourlyRole: Write' operationId: ProjectRoleCategories_Remove parameters: - name: accountId in: path description: The Account ID required: true schema: type: integer format: int32 - name: projectId in: path description: The project ID to delete the categories from required: true schema: type: integer format: int64 requestBody: description: Request object that contains an array of category IDs for removal. 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 components: schemas: UpdateRoleCategoryRequest: required: - id - name type: object properties: id: type: integer format: int64 name: minLength: 1 type: string example: North Tower additionalProperties: false NewRoleCategoryRequest: required: - name type: object properties: name: type: string example: North Tower additionalProperties: false RoleCategoryResponse: type: object properties: id: type: integer format: int64 example: 134 name: type: string nullable: true example: North Tower additionalProperties: false securitySchemes: Bearer: type: http description: Standard Authorization header using the Bearer scheme scheme: bearer bearerFormat: JWT