GET /api/v1/bookings/{bookingId}/reassignment-candidates
List every active closer of the team who can take over this call, using the current permissions of the key holder. The school comes from the verified key. MCP equivalent: list_booking_reassignment_candidates.
Candidates are the whole sales team, not only the closers of the booking link: every active closer of the school's sales availability who holds the closer role, except the closer who holds the call today. Each one says whether they are free at the call's current time. Free candidates come first, then the others in the team's order.
| Role in the organization | This endpoint |
|---|---|
| OWNER | Allowed |
| ADMIN | Allowed |
| MEMBER | Head of Sales only — otherwise 403 |
Only an owner, an administrator or a Head of Sales in this school can perform this operation; setter and closer roles do not grant it. A Head of Sales member creates no API key: they reach this operation through an MCP OAuth connection.
| Requirement | Rule |
|---|---|
| Business role | Head of Sales, for a member |
| Resource scope | Current school and the permitted resource scope |
| Participation | None |
| Resource state | No additional state restriction |
| Parameter | Type | Required | Description |
|---|---|---|---|
bookingId | UUID | yes | Resource in the permitted school and scope. |
curl -X GET "$COHORTE_API_BASE_URL/api/v1/bookings/00000000-0000-4000-8000-000000000001/reassignment-candidates" \
-H "x-api-key: $COHORTE_API_KEY"| Field | Type | Nullable | Description |
|---|---|---|---|
success | boolean | no | True on success. |
data | array | no | Team closers who can take over the call. |
data[].userId | UUID | no | Closer to send as closerUserId to the reassign endpoint. |
data[].name | string | no | Display name of the closer. |
data[].availableAtCurrentTime | boolean | no | true: free at the call's current time — reassign without startsAt. false: busy at that time — read their reassignment slots and reassign with one of them as startsAt. |
{
"success": true,
"data": [
{
"userId": "00000000-0000-4000-8000-000000000001",
"name": "Sam",
"availableAtCurrentTime": true
},
{
"userId": "00000000-0000-4000-8000-000000000002",
"name": "Inès",
"availableAtCurrentTime": false
}
]
}Availability is a reading at the time of the request; the reassign command checks it again under lock. An empty list means no other active closer can take over the call.