`PATCH /apps/{id}` — update mutable fields. Role writes are gated by [`validate_app_role`] (no admin/owner). Status flip to `"inactive"` here doesn't cascade-revoke keys; that's `DELETE`'s job and the admin-UI distinction.
/apps/{id}Path Parameters
App id
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
PATCH /apps/{id} body. Every field optional — absent
means unchanged. role cannot be moved to admin/owner (rejected
at the handler).
Response Body
application/json
curl -X PATCH "https://example.com/apps/string" \ -H "Content-Type: application/json" \ -d '{}'{ "created_at": "string", "description": "string", "email": "string", "id": "string", "name": "string", "owner_user_id": "string", "published": true, "required_permissions": [ "string" ], "role": null, "status": null, "team_ids": [ "string" ], "updated_at": "string"}`GET /apps` — the apps this caller may see (ADR-0050 §6). GET
⚠️ **No longer the org-wide roster.** A caller receives the published catalog, the apps on their own teams, and the ones their teams installed; a governance principal (owner/admin) still receives the org. The narrowing is real and visible in the console: a non-admin now sees fewer rows on `/admin/apps`.
Artifact_create POST
Next Page