Skip to content
Docs

Change a hire's access to a tool

PATCH
/api/workspaces/{ws}/hires/{id}/tools/{connection}

Only what's given changes: access, the allowlist in values, or approvals: per tool, by its name, "ask" (the hire asks a person before every use) or "auto" (it never asks), replacing the hire's earlier choices; a tool left out follows its own rule. 400 for a tool the hire doesn't have, or "auto" on a tool that always asks (money moving).

Authorization

session
cookiebetter-auth.session_token<token>

Set by POST /api/auth/sign-in/email.

Path Parameters

ws*string

The workspace id (from GET /api/me).

id*string

The id of what the path names: a hire, a connection, a skill, a shared file, a department, a position, a goal or an approval.

connection*string

The connection's id (from GET /api/workspaces/:ws/connections).

Request Body

application/json
  1. body
values?
access?string
Value in"read""write"
approvals?

Response Body

The hire.

application/json
Example Request
curl -X PATCH 'https://app.useroster.work/api/workspaces/string/hires/string/tools/string' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "id": "3f0c2a7e-6b1d-4c55-9a51-2f4d8e9b7a10",  "displayName": "Builder",  "slug": "builder",  "role": "Software engineer",  "instructions": "You own the web app's build and its CI.",  "status": "active",  "autonomy": "ask",  "timezone": "Europe/Berlin",  "workingHours": {    "days": [      1,      2,      3,      4,      5    ],    "start": "09:00",    "end": "18:00"  },  "home": null,  "voice": "",  "reactions": {    "onPickup": false,    "wakeOn": [      "❓",      "❌"    ]  },  "browser": false,  "desktop": false,  "listen": {    "mentions": true,    "threads": true,    "directMessages": true,    "channels": false,    "chattiness": "normal"  },  "allow": {    "humans": "anyone",    "agents": [],    "maxAgentTurns": 4  },  "chat": [],  "tools": [],  "onShift": false,  "onboardedAt": null,  "createdAt": "2026-11-03T09:00:00.000Z"}