Skip to content

Add somebody from the company to one of its projects

POST
/v1/companies/{id}/projects/{projectId}/members
curl --request POST \
--url https://beta-api.plune.ai/v1/companies/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/projects/example/members \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "userId": "6f1c2b3a-0000-4000-8000-0000000000a2" }'

An owner or an admin adds another member of the company to one of its projects, with the role THEIR company role maps to. Only the company’s people: somebody outside it answers 404, the same as an id nobody has — an address from outside is asked in through POST /v1/companies/{id}/members or POST /v1/members.

id
required
string format: uuid
projectId
required
string
Media type application/json
object
userId
required

A member of the company, as GET /v1/companies/{id} lists them

string
Example
{
"userId": "6f1c2b3a-0000-4000-8000-0000000000a2"
}

Added — with this role

Media type application/json
object
projectId
required
string
userId
required
string
role
required

What a member may do (B8-team). owner runs the project — members, roles, its name; member does everything else; reader is refused every write at the boundary, before a handler runs.

string
Allowed values: owner member reader
Example
{
"projectId": "9c4e7d10-0000-4000-8000-0000000000a4",
"userId": "6f1c2b3a-0000-4000-8000-0000000000a2",
"role": "owner"
}

Invalid body — a user id

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}

No / invalid token or session

A member or a reader asked

Media type application/json
object
error
required
string
Example
{
"error": "company owner or admin only"
}

No such company among yours, no such project in it, or nobody of that id in the company

Media type application/json
object
error
required
string
Example
{
"error": "member '6f1c2b3a-0000-4000-8000-0000000000a2' not found"
}

Already in it, or the project is at its member limit

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}

Rate-limited: either the per-route throttle or a tenant quota. Retry-After carries the seconds until the window rolls over.

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}
Retry-After
integer

Seconds until the window rolls over