APIs
Getting StartedExecution API ReferenceCustom Actions
Getting StartedCustom Actions ReferenceUsing external APIs in Custom ActionsThis API should be used by third party applications to get information about author and admin activity within a BRYTER tenant.
Enable access via API Key
Before you are able to call the Audit Log API, you need to create an API Key with the correct permissions. Only BRYTER admins can create a respective API Key.
- Open the BRYTER admin UI
- In the sidebar click on API Keys
- Do not use the tab within the Environment configuration as you need a tenant-level API Key
- Click Generate API Key
- Enter an API Key name to help you identify the API Key at a later point
- Enter a Contact email of the person building and maintaining the integration
- Ensure the permission Read Audit Log is checked
- Click Generate
- Copy the secret value and store it in a secure location
- Close the dialog
You will use the secret value in the header of each API call as the API key.
List audit log events for a tenant
Use the following API call to obtain a list of audit log events for the tenant:
curl --request GET \
--url https://<tenant>.bryter.io/api/audit-log/tenant \
--header 'Authorization: Bearer <API Key>'
The result is paginated and the call will return the first page of audit log events. The events are ordered by latest event first.
Example response:
{
"entries": [
{
"id": "ikuHfSAAQ5aUW-FsHYV8JQ",
"actorName": "john.doe@example.com",
"actorId": "kl_GDuQxR2C6GhdvfR4GNQ",
"actorType": "user",
"targetEntity": "module",
"targetId": "s7HoQiqxSmeW2Exv_3CpJg",
"targetValue": {
"type": "TEST",
"moduleName": "NDA generator",
"moduleVersion": "36",
"publishedModuleId": "7eaf925c-1b44-45c1-b3b2-3ed2875ec55f",
"publishedModuleVersion": "29"
},
"actionType": "UPDATE",
"eventName": "module.publishing.published",
"description": "john.doe@example.com published module with name \"NDA generator\"(id => b3b1e842-2ab1-4a67-96d8-4c6fff70a926) as (version => 29, publishedModuleId => 7eaf925c-1b44-45c1-b3b2-3ed2875ec55f)",
"version": "e6b0154345ad127ed8dd993e54035929b0673227",
"correlationId": "4018082828963803097",
"timestamp": "2024-07-08T07:14:15.321559Z"
},
{
"id": "nNB_KSm_TxKnOgzme12ziw",
"actorName": "jane.smith@example.com",
"actorId": "X6yLcnm_ReeiVWnGFueXgA",
"actorType": "user",
"targetEntity": "application_permissions",
"targetId": "sBvDRewKQ4qpG6NMd_Mo4w",
"targetValue": {
"applicationId": "b01bc345-ec0a-438a-a91b-a34c77f328e3",
"applicationPermissions": "00000000-0000-0000-0000-000000000002(ENVIRONMENT) on objects:\n 4c8ae5b0-12dd-47c1-ac5d-cb4b1ecc97c0(MODULE)"
},
"actionType": "UPDATE",
"eventName": "application_permissions.updated",
"description": "jane.smith@example.com updated application permissions",
"version": "e6b0154345ad127ed8dd993e54035929b0673227",
"correlationId": "3885733322971434665",
"timestamp": "2024-07-08T07:04:20.389894Z"
}
],
"pageInfo": {
"page": 1,
"totalPages": 1,
"totalElements": 2
}
}
Each event contains the following properties:
Property | Description |
id | Unique ID of the event |
actorName | Email address of the user or Anonymous User or System User |
actorId | Internal ID of the user |
actorType | static type user |
targetEntity | Type of the object the user interacted with (e.g. module or application ) |
targetId | ID of the object the user interacted with |
targetValue | A payload that contains more context information for each event type |
actionType | One of CREATE , UPDATE , DELETE or READ |
eventName | Event type (see table below for more information) |
description | A brief description of the event |
version | Version of the BRYTER platform |
correlationId | ID that correlates several events that happened within the same transaction |
timestamp | ISO 8601 timestamp of the event (UTC timezone) |
Additional filter parameters
By default every page contains maximum 20 events. You can query other pages or increase the amount of events per page with the query parameters page
and entriesPerPage
.
curl --request GET \
--url https://<tenant>.bryter.io/api/audit-log/tenant?page=2&entriesPerPage=100 \
--header 'Authorization: Bearer <API Key>'
You can limit the timeframe of events using the from
and to
query parameters. The parameter value must be an ISO 8601 timestamp including timezone information.
Depending on the format you use, you will have to URL encode the timestamp to work properly
2024-07-01T06:00:00.000000Z
- 1st July 2024 6 AM UTC2024-07-01T08:00:00.000000+02:00
- 1st July 2024 8 AM with timezone +02:00- With URL encoding the value looks like this
2024-07-08T08%3A00%3A00.000000%2B02%3A00
2024-07-01T06:00Z
- 1st July 2024 6 AM UTC
You can obtain all events starting from a specific point in time using from
. For example to query all new events that occurred since the last time you queried the API. You can use the value of the timestamp
property of an event as the input value.
Respectively, you can use to
to let the API return all events that occurred up until a certain timestamp.
You can use both parameters separately or together.
curl --request GET \
--url https://<tenant>.bryter.io/api/audit-log/tenant?from=2024-07-01T06:00:00.000000Z&to=2024-07-07T06:00:00.000000Z \
--header 'Authorization: Bearer <API Key>'
Audit log event types
The BRYTER platform tracks different kinds of events and user interactions. The following list is not exhaustive as it is extended regularly for new features.
Application events
Event type | Description |
application.created | Created a new application |
application.renamed | Renamed the application |
application.summary.updated | Updated the summary of an application |
application.frontend.configuration.updated | Updated the configuration of an application (incl. the sidebar menu and portal card) |
application.deleted | Deleted application |
application.collaborator.added | Added a collaborator to the application |
application.collaborator.group.added | Added a collaborator group to the application |
application.collaborator.removed | Removed a collaborator from the application |
application.collaborator.group.added | Removed a collaborator group from the application |
application.published | Published an application to an environment |
application.updated | Updated a published application |
application.unpublished | Unpublished an application from an environment |
application.link.created | |
application_role.created | Created an application role |
application_role.updated | Updated an application role |
application_role.deleted | Deleted an application role |
application_role.mappings_updated | Updated the mappings of an application role for an environment |
application_permissions.updated | Updated the permissions of an application |
service.created.fromtemplate | Imported application from application template |
Module events
Event type | Description |
module.created | Created a new module |
module.rename | Renamed a module |
module.summary.updated | Updated description of a module |
module.duplicated | Duplicated a module |
module.restored | Restored a previous module version |
module.moved | Moved a module to another application |
module.deleted | Deleted a module |
module.publishing.published | Published a new version of a module to an environment |
module.publishing.unpublished | Unpublished a module from an environment |
module.publishing.settings.updated | Updated published module settings for an environment |
module.collaborator.added | Added a collaborator to the module |
module.collaborator.group.added | Added a collaborator group to the module |
module.collaborator.removed | Removed a collaborator from the module |
module.collaborator.group.removed | Removed a collaborator group from the module |
module.sessions.raw.exported | Exported module session data |
Case database and data view events
Event type | Description |
database.create | Created a case database |
database.move | Moved a case database to another application |
database.deleted | Deleted a case database |
database.migrated | Updated the case database configuration (e.g. added a new field) |
database.access.updated | Granted access to a case database |
database.access.deleted | Deleted access to a case database |
Data view events
Event type | Description |
dataview.create | Created a new data view |
dataview.rename | Renamed a data view |
dataview.update | Updated a data view configuration |
dataview.delete | Deleted a data view |
dataview.duplicate | Duplicated a data view |
Page events
Event type | Description |
page.created | Created a new page |
page.updated | Updated a page |
page.duplicated | Duplicated a page |
page.deleted | Deleted a page |
page.published | Published a page to an environment |
page.published.updated | Updated the published version of a page in an environment |
page.unpublished | Unpublished a page |
Tenant and environment configuration
Event type | Description |
tenant.featureflags.update | Enabled or disabled specific features for a tenant |
tenant.settings.updated | Updated default module publish settings for an environment |
environment.created | Created a new client environment |
environment.renamed | Renamed a client environment |
environment.deactivated | Deactivated a client environment |
data-retention-configuration.updated | Updated data retention configuration for environment or single case database |
data-retention-configuration.deleted | Deleted data retention configuration for enviroment or single case database |
public_api_key.create | Created public API Key for environment |
public_api_key.update | Revoked public API Key for environment |
public_api_key.tenant.create | Created public API Key for tenant |
public_api_key.tenant.revoke | Revoked public API Key for tenant |