REST API reference

Notifications

What the app told people, and their delivery preferences.

List notifications

GET/api/v1/notifications

Query parameters

filterstring
A FiltrQL expression, url-encoded. Combine with AND / OR and parentheses. See the Filtering page for the full operator list, or call /filter-reference for the live one.
status = 'PASSED' AND executedAt > now-7d
sortstring
Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,name
page[number]integer
Which page to return, starting at 1.
2
page[size]integer
Results per page. Defaults to 25, and the maximum is 100.
50
includestring
Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folder
fields[type]string
Return only these attributes for the named resource type - a sparse fieldset. Cuts payload size sharply on wide entities.
fields[test_cases]=name,status

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned19

actorUserIduuid | null
createdAtdate-time
createdByuuid | null
iduuid
isReadboolean
messagestring | null
organizationIduuid
projectExternalIdstring | null
Show the remaining 11
projectIduuid
readAtdate-time | null
recipientUserIduuid
relatedEntityIduuid | null
relatedEntityKeystring | null
relatedEntityNamestring | null
relatedEntityTypestring | null
TEST_CASETEST_CYCLETEST_CASE_EXECUTIONREQUIREMENTTEST_COLLECTIONTEST_CAMPAIGNTEST_CASE_REVIEW
titlestring
typestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notifications?page%5Bsize%5D=25" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "notifications",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "actorUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "isRead": true,
        "message": "string",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectExternalId": "string"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/notifications?page[number]=1",
    "next": "/api/v1/notifications?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Create a notification

POST/api/v1/notifications

Needs a read-and-write token. A read-only token gets 403.

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json
Content-Typestringrequired
Must be application/vnd.api+json on any request with a body. Any other value returns 415 Unsupported Media Type.
application/vnd.api+json

Attributes you can send19

organizationIduuidrequired
projectIduuidrequired
recipientUserIduuidrequired
titlestringrequired
typestringrequired
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
actorUserIduuid | null
createdAtdate-time
createdByuuid | null
iduuid
isReadboolean
messagestring | null
projectExternalIdstring | null
readAtdate-time | null
relatedEntityIduuid | null
relatedEntityKeystring | null
relatedEntityNamestring | null
relatedEntityTypestring | null
TEST_CASETEST_CYCLETEST_CASE_EXECUTIONREQUIREMENTTEST_COLLECTIONTEST_CAMPAIGNTEST_CASE_REVIEW
updatedAtdate-time
updatedByuuid | null

Attributes returned19

actorUserIduuid | null
createdAtdate-time
createdByuuid | null
iduuid
isReadboolean
messagestring | null
organizationIduuid
projectExternalIdstring | null
Show the remaining 11
projectIduuid
readAtdate-time | null
recipientUserIduuid
relatedEntityIduuid | null
relatedEntityKeystring | null
relatedEntityNamestring | null
relatedEntityTypestring | null
TEST_CASETEST_CYCLETEST_CASE_EXECUTIONREQUIREMENTTEST_COLLECTIONTEST_CAMPAIGNTEST_CASE_REVIEW
titlestring
typestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
updatedAtdate-time
updatedByuuid | null

Responses

  • 201Created.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notifications" \
  -X POST \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
  "data": {
    "type": "notifications",
    "attributes": {
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "recipientUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "title": "Checkout rejects an expired card",
      "type": "REVIEW_REQUESTED",
      "createdAt": "2026-08-18T09:30:00Z"
    }
  }
}'
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "notifications",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "actorUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "isRead": true,
        "message": "string",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectExternalId": "string"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/notifications?page[number]=1",
    "next": "/api/v1/notifications?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Get a notification

GET/api/v1/notifications/{id}

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned19

actorUserIduuid | null
createdAtdate-time
createdByuuid | null
iduuid
isReadboolean
messagestring | null
organizationIduuid
projectExternalIdstring | null
Show the remaining 11
projectIduuid
readAtdate-time | null
recipientUserIduuid
relatedEntityIduuid | null
relatedEntityKeystring | null
relatedEntityNamestring | null
relatedEntityTypestring | null
TEST_CASETEST_CYCLETEST_CASE_EXECUTIONREQUIREMENTTEST_COLLECTIONTEST_CAMPAIGNTEST_CASE_REVIEW
titlestring
typestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notifications/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "notifications",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "actorUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "isRead": true,
      "message": "string",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectExternalId": "string"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Update a notification

PATCH/api/v1/notifications/{id}

Needs a read-and-write token. A read-only token gets 403.

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json
Content-Typestringrequired
Must be application/vnd.api+json on any request with a body. Any other value returns 415 Unsupported Media Type.
application/vnd.api+json

Attributes you can send19

actorUserIduuid | null
createdAtdate-time
createdByuuid | null
iduuid
isReadboolean
messagestring | null
organizationIduuid
projectExternalIdstring | null
projectIduuid
readAtdate-time | null
recipientUserIduuid
relatedEntityIduuid | null
relatedEntityKeystring | null
relatedEntityNamestring | null
relatedEntityTypestring | null
TEST_CASETEST_CYCLETEST_CASE_EXECUTIONREQUIREMENTTEST_COLLECTIONTEST_CAMPAIGNTEST_CASE_REVIEW
titlestring
typestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
updatedAtdate-time
updatedByuuid | null

Attributes returned19

actorUserIduuid | null
createdAtdate-time
createdByuuid | null
iduuid
isReadboolean
messagestring | null
organizationIduuid
projectExternalIdstring | null
Show the remaining 11
projectIduuid
readAtdate-time | null
recipientUserIduuid
relatedEntityIduuid | null
relatedEntityKeystring | null
relatedEntityNamestring | null
relatedEntityTypestring | null
TEST_CASETEST_CYCLETEST_CASE_EXECUTIONREQUIREMENTTEST_COLLECTIONTEST_CAMPAIGNTEST_CASE_REVIEW
titlestring
typestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
updatedAtdate-time
updatedByuuid | null

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notifications/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -X PATCH \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
  "data": {
    "type": "notifications",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "actorUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "isRead": true,
      "message": "string"
    }
  }
}'
Response

application/vnd.api+json

{
  "data": {
    "type": "notifications",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "actorUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "isRead": true,
      "message": "string",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectExternalId": "string"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Delete a notification

DEL/api/v1/notifications/{id}

Needs a read-and-write token. A read-only token gets 403.

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json
Content-Typestringrequired
Must be application/vnd.api+json on any request with a body. Any other value returns 415 Unsupported Media Type.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notifications/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -X DELETE \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "notifications",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {}
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Aggregate notifications

GET/api/v1/notifications/aggregate

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notifications/aggregate" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "meta": {
    "count": 128
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

List notification preferences

GET/api/v1/notification_preferences

Query parameters

filterstring
A FiltrQL expression, url-encoded. Combine with AND / OR and parentheses. See the Filtering page for the full operator list, or call /filter-reference for the live one.
status = 'PASSED' AND executedAt > now-7d
sortstring
Comma-separated field list. Prefix a field with a minus for descending order.
-createdAt,name
page[number]integer
Which page to return, starting at 1.
2
page[size]integer
Results per page. Defaults to 25, and the maximum is 100.
50
includestring
Comma-separated relationships to side-load into the response, saving a second request. Chains up to 3 deep.
requirement,folder
fields[type]string
Return only these attributes for the named resource type - a sparse fieldset. Cuts payload size sharply on wide entities.
fields[test_cases]=name,status

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned10

createdAtdate-time
createdByuuid | null
iduuid
inAppEnabledboolean
notificationTypestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
organizationIduuid
projectIduuid | null
updatedAtdate-time
Show the remaining 2
updatedByuuid | null
userIduuid

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notification_preferences?page%5Bsize%5D=25" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "notification_preferences",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "inAppEnabled": true,
        "notificationType": "REVIEW_REQUESTED",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/notification_preferences?page[number]=1",
    "next": "/api/v1/notification_preferences?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Create a notification preference

POST/api/v1/notification_preferences

Needs a read-and-write token. A read-only token gets 403.

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json
Content-Typestringrequired
Must be application/vnd.api+json on any request with a body. Any other value returns 415 Unsupported Media Type.
application/vnd.api+json

Attributes you can send10

notificationTypestringrequired
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
organizationIduuidrequired
userIduuidrequired
createdAtdate-time
createdByuuid | null
iduuid
inAppEnabledboolean
projectIduuid | null
updatedAtdate-time
updatedByuuid | null

Attributes returned10

createdAtdate-time
createdByuuid | null
iduuid
inAppEnabledboolean
notificationTypestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
organizationIduuid
projectIduuid | null
updatedAtdate-time
Show the remaining 2
updatedByuuid | null
userIduuid

Responses

  • 201Created.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notification_preferences" \
  -X POST \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
  "data": {
    "type": "notification_preferences",
    "attributes": {
      "notificationType": "REVIEW_REQUESTED",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "userId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}'
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "notification_preferences",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "inAppEnabled": true,
        "notificationType": "REVIEW_REQUESTED",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/notification_preferences?page[number]=1",
    "next": "/api/v1/notification_preferences?page[number]=2"
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Get a notification preference

GET/api/v1/notification_preferences/{id}

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Attributes returned10

createdAtdate-time
createdByuuid | null
iduuid
inAppEnabledboolean
notificationTypestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
organizationIduuid
projectIduuid | null
updatedAtdate-time
Show the remaining 2
updatedByuuid | null
userIduuid

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notification_preferences/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "notification_preferences",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "inAppEnabled": true,
      "notificationType": "REVIEW_REQUESTED",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Update a notification preference

PATCH/api/v1/notification_preferences/{id}

Needs a read-and-write token. A read-only token gets 403.

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json
Content-Typestringrequired
Must be application/vnd.api+json on any request with a body. Any other value returns 415 Unsupported Media Type.
application/vnd.api+json

Attributes you can send10

createdAtdate-time
createdByuuid | null
iduuid
inAppEnabledboolean
notificationTypestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
organizationIduuid
projectIduuid | null
updatedAtdate-time
updatedByuuid | null
userIduuid

Attributes returned10

createdAtdate-time
createdByuuid | null
iduuid
inAppEnabledboolean
notificationTypestring
REVIEW_REQUESTEDREVIEW_COMPLETEDTEST_CYCLE_ASSIGNEDEXECUTION_ASSIGNEDEXECUTION_COMPLETEDTEST_CASE_STATUS_CHANGEDMENTIONSYSTEM
organizationIduuid
projectIduuid | null
updatedAtdate-time
Show the remaining 2
updatedByuuid | null
userIduuid

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notification_preferences/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -X PATCH \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
  "data": {
    "type": "notification_preferences",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "inAppEnabled": true,
      "notificationType": "REVIEW_REQUESTED",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}'
Response

application/vnd.api+json

{
  "data": {
    "type": "notification_preferences",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "inAppEnabled": true,
      "notificationType": "REVIEW_REQUESTED",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "updatedBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Delete a notification preference

DEL/api/v1/notification_preferences/{id}

Needs a read-and-write token. A read-only token gets 403.

Path parameters

idstringrequired
The resource id (a UUID).

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json
Content-Typestringrequired
Must be application/vnd.api+json on any request with a body. Any other value returns 415 Unsupported Media Type.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notification_preferences/3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33" \
  -X DELETE \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "data": {
    "type": "notification_preferences",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {}
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Aggregate notification preferences

GET/api/v1/notification_preferences/aggregate

Headers

Authorizationstringrequired
Your API token as a bearer credential.
Bearer bst_pat_YOUR_TOKEN_HERE
Acceptstringrequired
Must be application/vnd.api+json. Any other value returns 406 Not Acceptable.
application/vnd.api+json

Responses

  • 200OK.
  • 403The token is missing, expired, revoked, aimed at another Space, or lacks write access.
  • 404No such resource, or it is outside the Space your token reaches.
  • 406The Accept header did not include application/vnd.api+json.
  • 429Rate limit exceeded: 100 requests a minute per token, shared with MCP.
Request

curl

curl "https://prod-eu.getbestest.com/api/v1/notification_preferences/aggregate" \
  -H "Authorization: Bearer bst_pat_YOUR_TOKEN_HERE" \
  -H "Accept: application/vnd.api+json"
Response

application/vnd.api+json

{
  "meta": {
    "count": 128
  }
}
Show an error response
Error

any 4xx

{
  "errors": [
    {
      "status": "403",
      "title": "Forbidden",
      "code": "FORBIDDEN",
      "detail": "Access denied.",
      "source": {
        "pointer": "/data"
      }
    }
  ]
}

Relationship endpoints

JSON:API exposes each relationship at its own URL. They take the same headers and return the same envelope as everything above, so they are listed rather than documented one by one. In most cases ?include= on the parent request is the better tool: one round trip instead of two.

Show all 22
  • GET/api/v1/notifications/{id}/fkNotificationsActorUser
  • GET/api/v1/notifications/{id}/fkNotificationsCreatedByUser
  • GET/api/v1/notifications/{id}/fkNotificationsRecipientUser
  • GET/api/v1/notifications/{id}/fkNotificationsUpdatedByUser
  • GET/api/v1/notifications/{id}/organization
  • GET/api/v1/notifications/{id}/project
  • GET/api/v1/notifications/{id}/relationships/fkNotificationsActorUser
  • GET/api/v1/notifications/{id}/relationships/fkNotificationsCreatedByUser
  • GET/api/v1/notifications/{id}/relationships/fkNotificationsRecipientUser
  • GET/api/v1/notifications/{id}/relationships/fkNotificationsUpdatedByUser
  • GET/api/v1/notifications/{id}/relationships/organization
  • GET/api/v1/notifications/{id}/relationships/project
  • GET/api/v1/notification_preferences/{id}/fkNotificationPrefsCreatedByUser
  • GET/api/v1/notification_preferences/{id}/fkNotificationPrefsUpdatedByUser
  • GET/api/v1/notification_preferences/{id}/fkNotificationPrefsUserUser
  • GET/api/v1/notification_preferences/{id}/organization
  • GET/api/v1/notification_preferences/{id}/project
  • GET/api/v1/notification_preferences/{id}/relationships/fkNotificationPrefsCreatedByUser
  • GET/api/v1/notification_preferences/{id}/relationships/fkNotificationPrefsUpdatedByUser
  • GET/api/v1/notification_preferences/{id}/relationships/fkNotificationPrefsUserUser
  • GET/api/v1/notification_preferences/{id}/relationships/organization
  • GET/api/v1/notification_preferences/{id}/relationships/project