---
title: "Change an existing share’s role by grantee"
method: PATCH
path: "/api/v1/apps/{appId}/shares"
tags: ["AppShares"]
---

# Change an existing share’s role by grantee

`PATCH /api/v1/apps/{appId}/shares`

## Request

- Base URL: `https://charm.ing`
- URL: `https://charm.ing/api/v1/apps/{appId}/shares`
- Auth: HTTP bearer

User-gated (`chrm_user_*` or session); owner only (`app:share`). Re-roles an existing grant or outstanding email invitation; never creates one.

## Path parameters

- `appId` string, uuid, required

## Request body

- object
  - `grantee` string, required: Handle or email of the grantee.
  - `role` 'collaborator' | 'end-user' | 'viewer', required

## Response `200`

Role changed.

- ShareRoleResponse
  - `ok` true, required
  - `role` 'collaborator' | 'end-user' | 'viewer', required

## Other responses

- `400`: Invalid body, app id, or missing role.
- `401`: Sign-in required.
- `403`: Only the owner can manage shares.
- `404`: App not found, or no share for the grantee.
- `409`: Unshareable state (unclaimed app).
- `429`: Share-lookup rate limit.

---

[API](https://skmtc.dev/charm/apis/charming-api.md) · [All operations](https://skmtc.dev/charm/apis/charming-api/llms.txt) · [OpenAPI document](https://skmtc.dev/charm/apis/charming-api/revisions/a9d06c419b3a?raw)
