Skip to main content

List Catalog Apps

GET /catalog-apps

Returns a paginated list of catalog apps. Use this endpoint for browsing the application catalog, powering search/filter UIs, and populating dropdowns.

Query Parameters

ParameterTypeDefaultDescription
qstring-Search filter against canonical_name (case-insensitive, partial match)
vendor_idstring (uuid)-Filter to apps from a specific vendor
category_idstring (uuid)-Filter to apps in a specific category
typestring-Filter by application type
sort_bystringcanonical_nameSort field: canonical_name, created_at, updated_at
sort_orderstringascSort direction: asc, desc
page_sizeinteger50Items per page. Max: 500
cursorstring-Pagination cursor from a previous response

Response

FieldTypeDescription
dataCatalogApp[]Array of catalog app objects
total_countintegerTotal number of catalog apps matching the current filters
next_cursorstring | nullCursor to pass as cursor for the next page. null when on the last page.

Example Requests

List all catalog apps

curl -X GET "https://api.example.com/v2/catalog-apps" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Search by name

curl -X GET "https://api.example.com/v2/catalog-apps?q=chrome" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Filter by vendor

curl -X GET "https://api.example.com/v2/catalog-apps?vendor_id=b2c3d4e5-f6a7-8901-bcde-f12345678901" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Filter by category

curl -X GET "https://api.example.com/v2/catalog-apps?category_id=c3d4e5f6-a7b8-9012-cdef-123456789012" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Example Response

{
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"canonical_name": "Google Chrome",
"description": "A cross-platform web browser developed by Google",
"display_colour": "#4285F4",
"logo": "https://cdn.example.com/logos/chrome.png",
"type": "browser",
"vendor": {
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "Google LLC",
"url": "https://about.google"
},
"categories": [
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"name": "Productivity"
},
{
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"name": "Browser"
}
],
"created_at": "2025-06-15T10:00:00.000Z",
"updated_at": "2026-01-20T14:30:00.000Z"
},
{
"id": "e5f6a7b8-c9d0-1234-efab-567890123456",
"canonical_name": "Slack",
"description": "A messaging and collaboration platform for teams",
"display_colour": "#4A154B",
"logo": "https://cdn.example.com/logos/slack.png",
"type": "desktop",
"vendor": {
"id": "f6a7b8c9-d0e1-2345-fabc-678901234567",
"name": "Salesforce, Inc.",
"url": "https://www.salesforce.com"
},
"categories": [
{
"id": "a7b8c9d0-e1f2-3456-abcd-789012345678",
"name": "Communication"
}
],
"created_at": "2025-06-15T10:00:00.000Z",
"updated_at": "2026-02-10T09:15:00.000Z"
}
],
"total_count": 312,
"next_cursor": "eyJsYXN0X2lkIjoiZTVmNmE3YjgifQ"
}

Empty Result

{
"data": [],
"total_count": 0,
"next_cursor": null
}

Pagination

This endpoint uses cursor-based pagination.

  1. Omit cursor on the first request
  2. If next_cursor is not null, pass its value as cursor on the next request
  3. Repeat until next_cursor is null

Error Responses

StatusDescription
400Invalid query parameters (e.g. unknown sort_by value)
401Authentication required
403Insufficient permissions
500Server error