Staff teams, memberships and content-domain roles.
List teams
GET/teams
The org's teams with their members.
Responses
200List teams.
401Missing, invalid or revoked API key.
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/teams \
--header 'Authorization: Bearer cr_live_…'
{
"data": [
{
"id": "string",
"logo": "string",
"members": [
{
"email": "learner@example.com",
"name": "string",
"userId": "string"
}
],
"name": "string"
}
]
}
Create a team
POST/teams
Responses
201Create a team.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
403The key's organization does not own this resource.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/teams \
--request POST \
--header 'Authorization: Bearer cr_live_…' \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"logo": "string"
}'
{
"data": {
"id": "string",
"name": "string"
}
}
Get a team
GET/teams/{id}
Responses
200Get a team.
401Missing, invalid or revoked API key.
403The key's organization does not own this resource.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/teams/{id} \
--header 'Authorization: Bearer cr_live_…'
{
"data": {
"id": "string",
"logo": "string",
"members": [
{
"email": "learner@example.com",
"name": "string",
"userId": "string"
}
],
"name": "string"
}
}
Update a team's name, logo or bio
PATCH/teams/{id}
Org-admin only. Every field is optional — send just the ones you want to change; omitted fields are left alone. Send null for logo or bio to clear them.
Responses
200Update a team's name, logo or bio.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
403The key's organization does not own this resource.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/teams/{id} \
--request PATCH \
--header 'Authorization: Bearer cr_live_…' \
--header 'Content-Type: application/json' \
--data '{
"bio": "string",
"logo": "string",
"name": "string"
}'
{
"data": {
"bio": "string",
"id": "string",
"logo": "string",
"name": "string"
}
}
Delete a team
DELETE/teams/{id}
Dissolves the team; its members stay in the org.
Responses
200Delete a team.
401Missing, invalid or revoked API key.
403The key's organization does not own this resource.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/teams/{id} \
--request DELETE \
--header 'Authorization: Bearer cr_live_…'
{
"data": {
"deleted": true,
"id": "string"
}
}
Add a member to a team
POST/teams/{id}/members
Identify the org member by userId or email (one is required). Adding someone grants NOTHING on its own — a member with no roles is just listed on the team. Follow this call with setTeamMemberRoles to give them their responsibilities, otherwise the team is half-configured.
Responses
201Add a member to a team.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
403The key's organization does not own this resource.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/teams/{id}/members \
--request POST \
--header 'Authorization: Bearer cr_live_…' \
--header 'Content-Type: application/json' \
--data '{
"email": "learner@example.com",
"userId": "string"
}'
{
"data": {
"teamId": "string",
"userId": "string"
}
}
Remove a member from a team
DELETE/teams/{id}/members/{userId}
Path parameters
userIdstring
The Cursare user id.
Responses
200Remove a member from a team.
401Missing, invalid or revoked API key.
403The key's organization does not own this resource.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/teams/{id}/members/{userId} \
--request DELETE \
--header 'Authorization: Bearer cr_live_…'
{
"data": {
"removed": true,
"teamId": "string",
"userId": "string"
}
}
Set a team member's roles
PUT/teams/{id}/members/{userId}/roles
Org-admin only. Replaces the member's WHOLE role set on this team — the roles you send become the roles they have, so include the ones you want to keep. Send [] to strip every responsibility (they stay on the team, but authorize nothing). The user must already be on the team: call addTeamMember first. This is what turns a listed member into someone who can actually work on the team's courses, so run it right after adding anyone.
Path parameters
userIdstring
The Cursare user id of the team member.
Request body
rolesenum[]required
editorfinancecohortlearners
Responses
200Set a team member's roles.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
403The key's organization does not own this resource.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/teams/{id}/members/{userId}/roles \
--request PUT \
--header 'Authorization: Bearer cr_live_…' \
--header 'Content-Type: application/json' \
--data '{
"roles": [
"editor"
]
}'
{
"data": {
"roles": [
"editor"
],
"teamId": "string",
"userId": "string"
}
}