openapi: 3.0.4
info:
title: Bench AccountActivities 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: AccountActivities
paths:
/rp/api/v1/accounts/{accountId}/activities/_filter:
post:
tags:
- AccountActivities
summary: Retrieves activity logs for the specified account with optional filtering and pagination.
description: 'This endpoint returns a paginated list of activities that occurred within the account. The results can be filtered by:
- Person IDs (maximum 10)
- Project IDs (maximum 10)
- Date range (happenedFrom and happenedTo)
- User IDs who triggered the events (maximum 10)
- Activity types (maximum 25)
Note: Either PersonIds or ProjectIds can be specified, but not both simultaneously.
The response includes a `query-has-more` header indicating whether additional records are available beyond the current page.
Permissions
Private: Read
Finance: Read
Person: Read
HourlyProfile: Read
Project: Read
Communication: Read
Role: Read
HourlyRole: Read
Allocation: Read
HourlyAllocation: Read
Settings: Read'
operationId: AccountActivities_Filter
parameters:
- name: accountId
in: path
description: The account ID (must be greater than zero)
required: true
schema:
type: integer
format: int32
requestBody:
description: "The filter criteria containing:\n- offset: Starting position for pagination (default: 0, must be non-negative)\n- limit: Maximum number of records to return (default: 25, range: 1-50)\n- predicates: Optional filtering predicates including:\n - personIds: Array of person IDs to filter by (max 50 items)\n - projectIds: Array of project IDs to filter by (max 10 items)\n - happenedFrom: Start date for filtering events (optional, range: 1900-01-01 to 2100-01-01)\n - happenedTo: End date for filtering events (optional, range: 1900-01-01 to 2100-01-01, must be after happenedFrom if both provided)\n - triggeredByUserIds: Array of user IDs who triggered the events (max 10 items)\n - activityTypes: Array of activity type strings (max 25 items)\n - triggeredByIntegrations: Boolean to include activities triggered by integrations (default: true)\n - triggeredByUsers: Boolean to include activities triggered by users (default: true)\n - groupingIds: Array of grouping IDs to filter by"
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/ActivitiesFilter'
application/json:
schema:
$ref: '#/components/schemas/ActivitiesFilter'
text/json:
schema:
$ref: '#/components/schemas/ActivitiesFilter'
application/*+json:
schema:
$ref: '#/components/schemas/ActivitiesFilter'
responses:
'200':
description: Successfully retrieved the activity logs. The response includes a `query-has-more` header indicating if more records are available.
headers:
query-has-more:
description: Query has more resources beyond the pagination requested
schema:
type: boolean
description: Query has more resources beyond the pagination requested
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ActivityResponse'
'400':
description: Bad Request - Invalid filter parameters or validation errors (e.g., invalid date range, too many filter values, invalid activity type format)
'401':
description: Unauthorized - Authentication token is missing or invalid
'403':
description: Forbidden - User does not have required permissions or account access
components:
schemas:
ActivitiesFilterPredicates:
type: object
properties:
personIds:
maxItems: 10
type: array
items:
type: integer
format: int64
nullable: true
projectIds:
maxItems: 10
type: array
items:
type: integer
format: int64
nullable: true
happenedFrom:
type: string
format: date-time
nullable: true
happenedTo:
type: string
format: date-time
nullable: true
triggeredByUserIds:
maxItems: 50
type: array
items:
type: integer
format: int32
nullable: true
activityTypes:
maxItems: 25
type: array
items:
type: string
nullable: true
triggeredByIntegrations:
type: boolean
triggeredByUsers:
type: boolean
groupingIds:
type: array
items:
type: integer
format: int64
nullable: true
includeBlankGroupIds:
type: boolean
activityTypeSearch:
maxLength: 100
type: string
nullable: true
additionalProperties: false
ActivityResponse:
type: object
properties:
happenedOn:
type: string
format: date-time
triggeredByUserId:
type: integer
format: int64
triggeredByUserName:
type: string
nullable: true
activityType:
type: string
nullable: true
personId:
type: integer
format: int64
nullable: true
projectId:
type: integer
format: int64
nullable: true
roleId:
type: integer
format: int64
nullable: true
payload:
nullable: true
diff:
nullable: true
triggeredByUserType:
enum:
- Member
- ServiceAccount
type: string
groupingIds:
type: array
items:
type: integer
format: int64
nullable: true
additionalProperties: false
ActivitiesFilter:
type: object
properties:
offset:
type: integer
format: int32
limit:
maximum: 50
minimum: 1
type: integer
format: int32
predicates:
$ref: '#/components/schemas/ActivitiesFilterPredicates'
additionalProperties: false
securitySchemes:
Bearer:
type: http
description: Standard Authorization header using the Bearer scheme
scheme: bearer
bearerFormat: JWT