REST API reference

Review and approval

Requirements and test cases can go through review before they count as agreed. These resources expose the request, who was assigned, and what they decided.

List review requests

GET/api/v1/review_requests

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 returned18

contentHashstring | null
createdAtdate-time
createdByuuid | null
dueAtdate-time | null
entityVersioninteger
iduuid
minApprovalsinteger
notesstring | null
Show the remaining 10
organizationIduuid
outcomestring
PENDINGAPPROVEDREJECTEDCANCELLED
projectIduuid
requestedAtdate-time
requestedByuuid | null
requirementIduuid | null
resolvedAtdate-time | null
testCaseIduuid | null
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/review_requests?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": "review_requests",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "contentHash": "string",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "dueAt": "2026-08-18T09:30:00Z",
        "entityVersion": 1,
        "minApprovals": 1,
        "notes": "string"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/review_requests?page[number]=1",
    "next": "/api/v1/review_requests?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 review request

POST/api/v1/review_requests

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 send18

entityVersionintegerrequired
minApprovalsintegerrequired
organizationIduuidrequired
projectIduuidrequired
contentHashstring | null
createdAtdate-time
createdByuuid | null
dueAtdate-time | null
iduuid
notesstring | null
outcomestring
PENDINGAPPROVEDREJECTEDCANCELLED
requestedAtdate-time
requestedByuuid | null
requirementIduuid | null
resolvedAtdate-time | null
testCaseIduuid | null
updatedAtdate-time
updatedByuuid | null

Attributes returned18

contentHashstring | null
createdAtdate-time
createdByuuid | null
dueAtdate-time | null
entityVersioninteger
iduuid
minApprovalsinteger
notesstring | null
Show the remaining 10
organizationIduuid
outcomestring
PENDINGAPPROVEDREJECTEDCANCELLED
projectIduuid
requestedAtdate-time
requestedByuuid | null
requirementIduuid | null
resolvedAtdate-time | null
testCaseIduuid | null
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/review_requests" \
  -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": "review_requests",
    "attributes": {
      "entityVersion": 1,
      "minApprovals": 1,
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z"
    }
  }
}'
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "review_requests",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "contentHash": "string",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "dueAt": "2026-08-18T09:30:00Z",
        "entityVersion": 1,
        "minApprovals": 1,
        "notes": "string"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/review_requests?page[number]=1",
    "next": "/api/v1/review_requests?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 review request

GET/api/v1/review_requests/{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 returned18

contentHashstring | null
createdAtdate-time
createdByuuid | null
dueAtdate-time | null
entityVersioninteger
iduuid
minApprovalsinteger
notesstring | null
Show the remaining 10
organizationIduuid
outcomestring
PENDINGAPPROVEDREJECTEDCANCELLED
projectIduuid
requestedAtdate-time
requestedByuuid | null
requirementIduuid | null
resolvedAtdate-time | null
testCaseIduuid | null
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/review_requests/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": "review_requests",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "contentHash": "string",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "dueAt": "2026-08-18T09:30:00Z",
      "entityVersion": 1,
      "minApprovals": 1,
      "notes": "string"
    }
  }
}
Show an error response
Error

any 4xx

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

Update a review request

PATCH/api/v1/review_requests/{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 send18

contentHashstring | null
createdAtdate-time
createdByuuid | null
dueAtdate-time | null
entityVersioninteger
iduuid
minApprovalsinteger
notesstring | null
organizationIduuid
outcomestring
PENDINGAPPROVEDREJECTEDCANCELLED
projectIduuid
requestedAtdate-time
requestedByuuid | null
requirementIduuid | null
resolvedAtdate-time | null
testCaseIduuid | null
updatedAtdate-time
updatedByuuid | null

Attributes returned18

contentHashstring | null
createdAtdate-time
createdByuuid | null
dueAtdate-time | null
entityVersioninteger
iduuid
minApprovalsinteger
notesstring | null
Show the remaining 10
organizationIduuid
outcomestring
PENDINGAPPROVEDREJECTEDCANCELLED
projectIduuid
requestedAtdate-time
requestedByuuid | null
requirementIduuid | null
resolvedAtdate-time | null
testCaseIduuid | null
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/review_requests/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": "review_requests",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "contentHash": "string",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "dueAt": "2026-08-18T09:30:00Z",
      "entityVersion": 1
    }
  }
}'
Response

application/vnd.api+json

{
  "data": {
    "type": "review_requests",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "contentHash": "string",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "dueAt": "2026-08-18T09:30:00Z",
      "entityVersion": 1,
      "minApprovals": 1,
      "notes": "string"
    }
  }
}
Show an error response
Error

any 4xx

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

Delete a review request

DEL/api/v1/review_requests/{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/review_requests/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": "review_requests",
    "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 review requests

GET/api/v1/review_requests/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/review_requests/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 review assignments

GET/api/v1/review_assignments

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 returned13

commentsstring | null
createdAtdate-time
createdByuuid | null
iduuid
organizationIduuid
projectIduuid
requestedByUserIduuid | null
resultstring | null
ACCEPTEDREJECTED
Show the remaining 5
reviewedAtdate-time | null
reviewerIduuid
reviewRequestIduuid
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/review_assignments?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": "review_assignments",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "comments": "string",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "requestedByUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "result": "ACCEPTED"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/review_assignments?page[number]=1",
    "next": "/api/v1/review_assignments?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 review assignment

POST/api/v1/review_assignments

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 send13

organizationIduuidrequired
projectIduuidrequired
reviewerIduuidrequired
reviewRequestIduuidrequired
commentsstring | null
createdAtdate-time
createdByuuid | null
iduuid
requestedByUserIduuid | null
resultstring | null
ACCEPTEDREJECTED
reviewedAtdate-time | null
updatedAtdate-time
updatedByuuid | null

Attributes returned13

commentsstring | null
createdAtdate-time
createdByuuid | null
iduuid
organizationIduuid
projectIduuid
requestedByUserIduuid | null
resultstring | null
ACCEPTEDREJECTED
Show the remaining 5
reviewedAtdate-time | null
reviewerIduuid
reviewRequestIduuid
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/review_assignments" \
  -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": "review_assignments",
    "attributes": {
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "reviewerId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "reviewRequestId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z"
    }
  }
}'
Response

application/vnd.api+json

{
  "data": [
    {
      "type": "review_assignments",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "comments": "string",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "requestedByUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "result": "ACCEPTED"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/review_assignments?page[number]=1",
    "next": "/api/v1/review_assignments?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 review assignment

GET/api/v1/review_assignments/{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 returned13

commentsstring | null
createdAtdate-time
createdByuuid | null
iduuid
organizationIduuid
projectIduuid
requestedByUserIduuid | null
resultstring | null
ACCEPTEDREJECTED
Show the remaining 5
reviewedAtdate-time | null
reviewerIduuid
reviewRequestIduuid
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/review_assignments/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": "review_assignments",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "comments": "string",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "requestedByUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "result": "ACCEPTED"
    }
  }
}
Show an error response
Error

any 4xx

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

Update a review assignment

PATCH/api/v1/review_assignments/{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 send13

commentsstring | null
createdAtdate-time
createdByuuid | null
iduuid
organizationIduuid
projectIduuid
requestedByUserIduuid | null
resultstring | null
ACCEPTEDREJECTED
reviewedAtdate-time | null
reviewerIduuid
reviewRequestIduuid
updatedAtdate-time
updatedByuuid | null

Attributes returned13

commentsstring | null
createdAtdate-time
createdByuuid | null
iduuid
organizationIduuid
projectIduuid
requestedByUserIduuid | null
resultstring | null
ACCEPTEDREJECTED
Show the remaining 5
reviewedAtdate-time | null
reviewerIduuid
reviewRequestIduuid
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/review_assignments/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": "review_assignments",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "comments": "string",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
    }
  }
}'
Response

application/vnd.api+json

{
  "data": {
    "type": "review_assignments",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "comments": "string",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "projectId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "requestedByUserId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "result": "ACCEPTED"
    }
  }
}
Show an error response
Error

any 4xx

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

Delete a review assignment

DEL/api/v1/review_assignments/{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/review_assignments/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": "review_assignments",
    "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 review assignments

GET/api/v1/review_assignments/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/review_assignments/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 test case reviews

GET/api/v1/test_case_reviews

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 returned16

assignedAtdate-time
assignedByIduuid | null
commentsstring | null
createdAtdate-time
createdByuuid | null
iduuid
notesstring | null
organizationIduuid
Show the remaining 8
projectIduuid
resultstring | null
ACCEPTEDREJECTED
reviewedAtdate-time | null
reviewerIduuid
testCaseIduuid
testCaseVersioninteger
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/test_case_reviews?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": "test_case_reviews",
      "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "attributes": {
        "createdAt": "2026-08-18T09:30:00Z",
        "updatedAt": "2026-08-18T09:30:00Z",
        "assignedAt": "2026-08-18T09:30:00Z",
        "assignedById": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "comments": "string",
        "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
        "notes": "string",
        "organizationId": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33"
      }
    }
  ],
  "meta": {
    "totalCount": 128
  },
  "links": {
    "first": "/api/v1/test_case_reviews?page[number]=1",
    "next": "/api/v1/test_case_reviews?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 test case review

GET/api/v1/test_case_reviews/{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 returned16

assignedAtdate-time
assignedByIduuid | null
commentsstring | null
createdAtdate-time
createdByuuid | null
iduuid
notesstring | null
organizationIduuid
Show the remaining 8
projectIduuid
resultstring | null
ACCEPTEDREJECTED
reviewedAtdate-time | null
reviewerIduuid
testCaseIduuid
testCaseVersioninteger
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/test_case_reviews/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": "test_case_reviews",
    "id": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
    "attributes": {
      "createdAt": "2026-08-18T09:30:00Z",
      "updatedAt": "2026-08-18T09:30:00Z",
      "assignedAt": "2026-08-18T09:30:00Z",
      "assignedById": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "comments": "string",
      "createdBy": "3f2b9c14-8d5e-4a71-9f60-2c1e7b4a8d33",
      "notes": "string",
      "organizationId": "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"
      }
    }
  ]
}

Aggregate test case reviews

GET/api/v1/test_case_reviews/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/test_case_reviews/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 42
  • GET/api/v1/review_requests/{id}/fkReviewRequestsCreatedByUser
  • GET/api/v1/review_requests/{id}/fkReviewRequestsRequestedByUser
  • GET/api/v1/review_requests/{id}/fkReviewRequestsUpdatedByUser
  • GET/api/v1/review_requests/{id}/organization
  • GET/api/v1/review_requests/{id}/project
  • GET/api/v1/review_requests/{id}/requirement
  • GET/api/v1/review_requests/{id}/testCase
  • GET/api/v1/review_requests/{id}/relationships/fkReviewRequestsCreatedByUser
  • GET/api/v1/review_requests/{id}/relationships/fkReviewRequestsRequestedByUser
  • GET/api/v1/review_requests/{id}/relationships/fkReviewRequestsUpdatedByUser
  • GET/api/v1/review_requests/{id}/relationships/organization
  • GET/api/v1/review_requests/{id}/relationships/project
  • GET/api/v1/review_requests/{id}/relationships/requirement
  • GET/api/v1/review_requests/{id}/relationships/testCase
  • GET/api/v1/review_assignments/{id}/fkReviewAssignmentsCreatedByUser
  • GET/api/v1/review_assignments/{id}/fkReviewAssignmentsRequestedByUserUser
  • GET/api/v1/review_assignments/{id}/fkReviewAssignmentsReviewerUser
  • GET/api/v1/review_assignments/{id}/fkReviewAssignmentsUpdatedByUser
  • GET/api/v1/review_assignments/{id}/organization
  • GET/api/v1/review_assignments/{id}/project
  • GET/api/v1/review_assignments/{id}/reviewRequest
  • GET/api/v1/review_assignments/{id}/relationships/fkReviewAssignmentsCreatedByUser
  • GET/api/v1/review_assignments/{id}/relationships/fkReviewAssignmentsRequestedByUserUser
  • GET/api/v1/review_assignments/{id}/relationships/fkReviewAssignmentsReviewerUser
  • GET/api/v1/review_assignments/{id}/relationships/fkReviewAssignmentsUpdatedByUser
  • GET/api/v1/review_assignments/{id}/relationships/organization
  • GET/api/v1/review_assignments/{id}/relationships/project
  • GET/api/v1/review_assignments/{id}/relationships/reviewRequest
  • GET/api/v1/test_case_reviews/{id}/fkTestCaseReviewsAssignedByUser
  • GET/api/v1/test_case_reviews/{id}/fkTestCaseReviewsCreatedByUser
  • GET/api/v1/test_case_reviews/{id}/fkTestCaseReviewsReviewerUser
  • GET/api/v1/test_case_reviews/{id}/fkTestCaseReviewsUpdatedByUser
  • GET/api/v1/test_case_reviews/{id}/organization
  • GET/api/v1/test_case_reviews/{id}/project
  • GET/api/v1/test_case_reviews/{id}/testCase
  • GET/api/v1/test_case_reviews/{id}/relationships/fkTestCaseReviewsAssignedByUser
  • GET/api/v1/test_case_reviews/{id}/relationships/fkTestCaseReviewsCreatedByUser
  • GET/api/v1/test_case_reviews/{id}/relationships/fkTestCaseReviewsReviewerUser
  • GET/api/v1/test_case_reviews/{id}/relationships/fkTestCaseReviewsUpdatedByUser
  • GET/api/v1/test_case_reviews/{id}/relationships/organization
  • GET/api/v1/test_case_reviews/{id}/relationships/project
  • GET/api/v1/test_case_reviews/{id}/relationships/testCase