Projects

Set or clear a project's Site Manager

Sets or clears the per-project Site Manager flag for an assigned **Site Crew** member. The caller must be an Admin or the project's existing Site Manager, and the user must already be on the roster. The target's account role must be Site Crew: an admin already manages every project, so the flag is meaningless for them and setting it is rejected with `422`.

POST
/projects/{id}/crew/{userId}/site-manager

Sets or clears the per-project Site Manager flag for an assigned Site Crew member. The caller must be an Admin or the project's existing Site Manager, and the user must already be on the roster.

The target's account role must be Site Crew: an admin already manages every project, so the flag is meaningless for them and setting it is rejected with 422.

Authorization

x-api-key<token>

The per-tenant API key, copied from Settings → API & integrations. Sent as the x-api-key request header. The key is tenant-scoped and acts with Admin-equivalent, tenant-wide access.

In: header

Path Parameters

id*string

Resource id.

userId*string

The assigned crew member's user id.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/crew/497f6eca-6276-4993-bfeb-53cbbbba6f08/site-manager" \  -H "Content-Type: application/json" \  -d '{    "isSiteManager": true  }'
{  "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",  "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",  "isSiteManager": true}
{  "error": {    "code": "unauthorized",    "message": "Missing or invalid API key."  }}
{  "error": {    "code": "read_only",    "message": "Your subscription is inactive. This action is read-only."  }}
{  "error": {    "code": "not_found",    "message": "Not found."  }}
{  "error": {    "code": "validation",    "message": "One or more inputs are invalid.",    "fields": {      "fieldName": "A message explaining what's wrong with this field."    }  }}