---
title: "Grant (or update) a principal's access level on a node"
method: POST
path: "/api/v1/nodes/{nodeId}/principals"
tags: ["Nodes", "Permissions"]
---

# Grant (or update) a principal's access level on a node

`POST /api/v1/nodes/{nodeId}/principals`

## Request

- Base URL: `https://api-docs.busabase.com`
- URL: `https://api-docs.busabase.com/api/v1/nodes/{nodeId}/principals`
- Auth: none declared

## Path parameters

- `nodeId` string, required

## Request body

- object
  - `principalType` 'user' | 'space', required
  - `principalId` string, required
  - `role` 'read' | 'changeRequest' | 'write' | 'manage', required

## Response `200`

Upserted one direct grant (same principal twice updates its level) and re-materialized inherited copies down the subtree. Requires `manage` level on the node.

- object
  - `granted` boolean, required

---

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