openapi: 3.0.4 info: title: Bench AccountActivities ProjectNotes 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: ProjectNotes paths: /rp/api/v1/accounts/{accountId}/projects/{projectId}/notes: get: tags: - ProjectNotes summary: Gets all notes on the given account's project. description: '
Permissions
Project: Read
Private: Read' operationId: ProjectNotes_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 the note belongs to required: true schema: type: integer format: int64 - name: offset in: query description: Offset for pagination schema: maximum: 2147483647 minimum: 0 type: integer format: int32 default: 0 - name: limit in: query description: Maximum number of results per page schema: maximum: 2147483647 minimum: 1 type: integer format: int32 default: 100 responses: '200': description: Success content: text/plain: schema: type: array items: $ref: '#/components/schemas/NoteResponse' application/json: schema: type: array items: $ref: '#/components/schemas/NoteResponse' text/json: schema: type: array items: $ref: '#/components/schemas/NoteResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden post: tags: - ProjectNotes summary: Adds a note on the given account's project. description: "When trying to create a private note you must have permissions to manage private values in the account. \n\nWhen trying to mention a user, you must provide their userID in the following pattern [[mention:userID#123]].
Permissions
Project: Read
Private: Write" operationId: ProjectNotes_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 note to required: true schema: type: integer format: int64 requestBody: description: Request object that contains the message and whether or not the note is private content: application/json-patch+json: schema: $ref: '#/components/schemas/NewNoteRequest' application/json: schema: $ref: '#/components/schemas/NewNoteRequest' text/json: schema: $ref: '#/components/schemas/NewNoteRequest' application/*+json: schema: $ref: '#/components/schemas/NewNoteRequest' required: true responses: '201': description: Success content: text/plain: schema: $ref: '#/components/schemas/NewNoteResponse' example: id: 213 message: This is a note about something on the project. isPrivate: false creatorId: 453 creatorName: John Smith createdOn: '2021-05-27T10:47:23.53' lastModifiedOn: '2021-05-27T10:47:23.53' application/json: schema: $ref: '#/components/schemas/NewNoteResponse' example: id: 213 message: This is a note about something on the project. isPrivate: false creatorId: 453 creatorName: John Smith createdOn: '2021-05-27T10:47:23.53' lastModifiedOn: '2021-05-27T10:47:23.53' text/json: schema: $ref: '#/components/schemas/NewNoteResponse' example: id: 213 message: This is a note about something on the project. isPrivate: false creatorId: 453 creatorName: John Smith createdOn: '2021-05-27T10:47:23.53' lastModifiedOn: '2021-05-27T10:47:23.53' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '422': description: Unprocessable Entity - Limit for for number of notes reached /rp/api/v1/accounts/{accountId}/projects/{projectId}/notes/{id}: get: tags: - ProjectNotes summary: Gets a note on the given account's project by id. description: '
Permissions
Project: Read
Private: Read' operationId: ProjectNotes_Get 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 note belongs to required: true schema: type: integer format: int64 - name: id in: path description: The ID of the note required: true schema: type: integer format: int64 responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/NoteResponse' application/json: schema: $ref: '#/components/schemas/NoteResponse' text/json: schema: $ref: '#/components/schemas/NoteResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden patch: tags: - ProjectNotes summary: Updates a note on the given account's project. description: 'When trying to update a note''s privacy you must have permissions to manage private values in the account. Only the creator of a note can edit it. When trying to mention a user, you must provide their userID in the following pattern [[mention:userID#123]].
Permissions
Project: Read
Private: Write' operationId: ProjectNotes_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 the note is on required: true schema: type: integer format: int64 - name: id in: path description: The ID of the note to update required: true schema: type: integer format: int64 requestBody: description: Request object that contains the message and whether or not the note is private content: application/json-patch+json: schema: $ref: '#/components/schemas/UpdateNoteRequest' application/json: schema: $ref: '#/components/schemas/UpdateNoteRequest' text/json: schema: $ref: '#/components/schemas/UpdateNoteRequest' application/*+json: schema: $ref: '#/components/schemas/UpdateNoteRequest' required: true responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/NoteResponse' application/json: schema: $ref: '#/components/schemas/NoteResponse' text/json: schema: $ref: '#/components/schemas/NoteResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden delete: tags: - ProjectNotes summary: Deletes a note from the given account's project. description: 'Only the creator or an account admin can delete it.
Permissions
Project: Read
Account: Write' operationId: ProjectNotes_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 the note is on required: true schema: type: integer format: int64 - name: id in: path description: The ID of the note to update required: true schema: type: integer format: int64 responses: '204': description: Success '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden components: schemas: NewNoteResponse: type: object properties: id: type: integer format: int64 example: 213 message: type: string nullable: true example: This is an updated message on a note. isPrivate: type: boolean example: false creatorId: type: integer format: int32 example: 453 creatorName: type: string nullable: true example: John Smith createdOn: type: string format: date-time example: '2021-05-27T10:47:23.530Z' lastModifiedOn: type: string format: date-time example: '2021-05-27T10:58:23.530Z' additionalProperties: false NewNoteRequest: type: object properties: message: type: string nullable: true example: This is a note about something on the project. This is mentioning [[mention:userID#123]] to notify them. isPrivate: type: boolean example: false additionalProperties: false UpdateNoteRequest: type: object properties: message: type: string nullable: true example: This is an updated message on a note, this is mentioning [[mention:userID#123]] to notify them. isPrivate: type: boolean nullable: true example: false additionalProperties: false NoteResponse: type: object properties: id: type: integer format: int64 example: 213 message: type: string nullable: true example: This is an updated message on a note. isPrivate: type: boolean example: false creatorId: type: integer format: int32 example: 453 creatorName: type: string nullable: true example: John Smith createdOn: type: string format: date-time example: '2021-05-27T10:47:23.530Z' 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