Skip to content

List policies

GET
/policies
curl --request GET \
--url 'https://api.vendorica.com/v1/policies?page=1&limit=100&sortOrder=asc&lifecycleStatus=draft' \
--header 'Authorization: Bearer <token>'

The organization’s policy register, offset-paginated. Filter by category, ownerUserId, lifecycleStatus (draft | published | archived) or businessUnitId. Without lifecycleStatus, ARCHIVED policies are excluded — archived rows stay on the acknowledgement ledger but are not part of the live register, and a caller asking “what are our policies” means the live ones. Ask for them explicitly with ?lifecycleStatus=archived. The query is strict: an unrecognised parameter is a 422 naming it, never a silently unfiltered 200.

page
integer
default: 1 >= 1 <= 10000
limit
integer
default: 100 >= 1 <= 500
sortBy
string
sortOrder
string
default: desc
Allowed values: asc desc
category
string
>= 1 characters <= 100 characters
ownerUserId
string format: uuid
lifecycleStatus
string
Allowed values: draft published archived
search
string
>= 1 characters <= 255 characters
businessUnitId
string format: uuid

Success

Media typeapplication/json
object
success
required
boolean
data
required
Array<object>
object
id
required
string format: uuid
organizationId
required
string format: uuid
slug
required
string
displayName
required
string
category
required
string
ownerUserId
required
string | null format: uuid
currentVersionId
required
string | null format: uuid
lifecycleStatus
required
string
renewalIntervalDays
required
integer | null
nextRenewalAt
required
string | null format: date-time
businessUnitIds
required
Array<string>
createdAt
required
string | null format: date-time
updatedAt
required
string | null format: date-time
key
additional properties
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": "483c5d95-4e07-44b5-8b8a-5a8230cc80f2",
"organizationId": "ddc1eef0-0a4b-46f6-894e-53afb14db631",
"slug": "string",
"displayName": "string",
"category": "string",
"ownerUserId": "32dc603f-4deb-4007-8dba-864cc4a16358",
"currentVersionId": "922807ac-c304-46ea-8870-10cbb76a75dd",
"lifecycleStatus": "string",
"renewalIntervalDays": 1,
"nextRenewalAt": "2026-08-19T09:41:12.004Z",
"businessUnitIds": [
"1e1a030a-6af2-4598-872d-130120f4f0df"
],
"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"
}