Skip to content

List risk appetite statements

GET
/risk-appetite
curl --request GET \
--url 'https://api.vendorica.com/v1/risk-appetite?page=1&limit=100&sortBy=createdAt&sortOrder=asc&isArchived=true' \
--header 'Authorization: Bearer <token>'

The narrative plus the tolerance band, per category. toleranceMetric names what the band is measured on — mean or worst residual score across the category’s live scenarios, or how many of its indicators are red — so comparing toleranceLimit against anything else is comparing two different scales. toleranceWarning is the optional “approaching” line and always sits at or below the limit. approvalStatus speaks the approvals engine’s vocabulary (not_submitted where a risk scenario would say draft), and a content edit supersedes an approval, so an approved statement is one whose current text a board actually signed. Archived statements are the record of what the appetite USED to be; they are hidden unless asked for.

page
integer
default: 1 >= 1 <= 10000
limit
integer
default: 100 >= 1 <= 500
sortBy
string
Allowed values: createdAt nextReviewAt approvalStatus
sortOrder
string
default: desc
Allowed values: asc desc
search
string
>= 1 characters <= 255 characters
categoryId
string format: uuid
approvalStatus
Array<string> | null
<= 100 items
Allowed values: not_submitted pending_approval approved rejected
isArchived
string | null
Allowed values: true false all

Success

Media typeapplication/json
object
success
required
boolean
data
required
Array<object>
object
id
required
string format: uuid
organizationId
required
string format: uuid
categoryId
required
string format: uuid
statement
required
string
toleranceMetric
required
string
Allowed values: residual_score_avg residual_score_max red_indicator_count
toleranceLimit
required
number
toleranceWarning
required
number | null
ownerUserId
required
string | null format: uuid
reviewCadenceMonths
required
integer | null
nextReviewAt
required
string | null
effectiveFrom
required
string | null
approvalStatus
required
string
Allowed values: not_submitted pending_approval approved rejected
approvalInstanceId
required
string | null format: uuid
approvedAt
required
string | null format: date-time
isArchived
required
boolean
categoryName
required
string | null
ownerEmail
required
string | null
createdBy
required
string | null format: uuid
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
timestamp
required
string format: date-time
requestId
string
message
string
pagination
object
page
required
integer
limit
required
integer
total
required
integer
totalPages
required
integer
Example
{
"success": true,
"data": [
{
"id": "e507f62f-b888-48d7-82ef-65bc46dd20a8",
"organizationId": "37847dde-4192-4154-800a-7bf5b1811c63",
"categoryId": "ec40dfcb-b320-496b-83d3-8eb8e209b1f4",
"statement": "string",
"toleranceMetric": "residual_score_avg",
"toleranceLimit": 1,
"toleranceWarning": 1,
"ownerUserId": "3ac42c25-a9d1-4165-8ace-b392a964b522",
"reviewCadenceMonths": 1,
"nextReviewAt": "string",
"effectiveFrom": "string",
"approvalStatus": "not_submitted",
"approvalInstanceId": "3f90fd83-923f-4213-8949-6f30929a0edc",
"approvedAt": "2026-08-19T09:41:12.004Z",
"isArchived": true,
"categoryName": "string",
"ownerEmail": "string",
"createdBy": "7c7536d1-bf85-4e29-88da-0c1ee9410cee",
"createdAt": "2026-08-19T09:41:12.004Z",
"updatedAt": "2026-08-19T09:41:12.004Z"
}
],
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H",
"message": "string",
"pagination": {
"page": 1,
"limit": 1,
"total": 1,
"totalPages": 1
}
}

Validation error

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Bad request",
"code": "BAD_REQUEST",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Unauthorized

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Unauthorized",
"code": "UNAUTHORIZED",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Forbidden — missing scope

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Forbidden",
"code": "FORBIDDEN",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Not found

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Resource not found",
"code": "NOT_FOUND",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Rate limit exceeded

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Too many requests",
"code": "TOO_MANY_REQUESTS",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}