Update App
PATCH /clients/{client_id}/apps/{app_id}
Partial update of client-specific fields on an app. Only send the fields you want to change. Catalog data (name, logo, vendor, categories) is managed through the catalog and cannot be updated here.
For bulk approval operations, use Approve Apps / Reject Apps.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
client_id | string (uuid) | Unique identifier for the client organization |
app_id | string (uuid) | Unique identifier for the app |
Request Body
All fields are optional. Only include fields you want to change.
| Field | Type | Description |
|---|---|---|
is_favorite | boolean | Mark app as favorite (true) or unfavorite (false) |
is_approved | boolean | Mark app as approved (true) or unapproved (false) |
license_count | integer | null | Update tracked license count. Set to null to clear. |
Fields NOT updatable via this endpoint
These fields are managed by the system or the catalog:
id— Immutable identifiercatalog_app— Managed through the Catalog Apps domaincreated_at— System-managed timestamp
Response
Returns the updated App object with status 200 OK.
Example Requests
Toggle favorite status
curl -X PATCH "https://api.example.com/v2/clients/aa7cf840-9ca9-46a3-9778-9015d6580d50/apps/f1a2b3c4-d5e6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"is_favorite": true
}'
Set license count
curl -X PATCH "https://api.example.com/v2/clients/aa7cf840-9ca9-46a3-9778-9015d6580d50/apps/f1a2b3c4-d5e6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"license_count": 50
}'
Clear license count
curl -X PATCH "https://api.example.com/v2/clients/aa7cf840-9ca9-46a3-9778-9015d6580d50/apps/f1a2b3c4-d5e6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"license_count": null
}'
Approve an app
curl -X PATCH "https://api.example.com/v2/clients/aa7cf840-9ca9-46a3-9778-9015d6580d50/apps/f1a2b3c4-d5e6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"is_approved": true
}'
Update multiple fields
curl -X PATCH "https://api.example.com/v2/clients/aa7cf840-9ca9-46a3-9778-9015d6580d50/apps/f1a2b3c4-d5e6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"is_favorite": true,
"is_approved": true,
"license_count": 50
}'
Example Response
{
"id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
"catalog_app": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"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"
},
"is_favorite": true,
"is_approved": true,
"license_count": 50,
"created_at": "2026-01-15T10:00:00.000Z",
"updated_at": "2026-02-24T15:00:00.000Z"
}
Error Responses
| Status | Description |
|---|---|
| 400 | Invalid request (e.g. wrong field type, attempting to update read-only field) |
| 401 | Authentication required |
| 403 | Insufficient permissions for this client |
| 404 | App or client not found |
| 500 | Server error |
Example Error Responses
Invalid field type:
{
"error": {
"code": "invalid_request",
"message": "is_favorite must be a boolean value"
}
}
Attempting to update read-only field:
{
"error": {
"code": "invalid_request",
"message": "Field 'catalog_app' cannot be updated via this endpoint",
"details": {
"field": "catalog_app",
"reason": "Managed through the Catalog Apps domain"
}
}
}
Notes
Idempotency
This endpoint is idempotent. Setting the same values multiple times produces the same result.
Partial updates
Only specified fields are updated. Unmentioned fields remain unchanged.
When to use this vs bulk favorites
Use this endpoint for single-app updates (e.g. toggling a favorite star, setting license count). Use the Add Favorites / Remove Favorites endpoints for multi-select bulk operations.
Related Endpoints
- Get App — View current field values
- List Apps — Filter by
is_favoritestatus - Add Favorites — Bulk add favorites
- Remove Favorites — Bulk remove favorites
- Approve Apps — Bulk approve apps
- Reject Apps — Bulk reject apps