curl --request POST \
--url https://api.aireserve.com/v1/admin/bulk_assign_users_to_team \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"userIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"clientId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.aireserve.com/v1/admin/bulk_assign_users_to_team"
payload = {
"userIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"clientId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
userIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
teamId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
clientId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.aireserve.com/v1/admin/bulk_assign_users_to_team', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": "executed",
"ok": true,
"summary": "<string>",
"message": "<string>",
"data": "<unknown>",
"secret": "<string>",
"sensitive": true
}{
"status": "refused",
"code": "unknown_op",
"error": "<string>"
}{
"error": "<string>",
"error_description": "<string>"
}{
"status": "refused",
"code": "unknown_op",
"error": "<string>"
}{
"status": "refused",
"code": "unknown_op",
"error": "<string>"
}{
"status": "refused",
"code": "unknown_op",
"error": "<string>"
}{
"status": "executed",
"ok": true,
"summary": "<string>",
"message": "<string>",
"data": "<unknown>",
"secret": "<string>",
"sensitive": true
}{
"error": "<string>",
"error_description": "<string>"
}Move several members to one team (or Unassigned) atomically (admins)
Move several members to one team (or Unassigned) atomically (admins). High stakes: Previous team assignments are not recorded — a wrong move must be undone person by person. Interactive clients should confirm with the user first. Runs as the token’s owner within their role; the portal’s own authorization and audit log apply.
curl --request POST \
--url https://api.aireserve.com/v1/admin/bulk_assign_users_to_team \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"userIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"clientId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.aireserve.com/v1/admin/bulk_assign_users_to_team"
payload = {
"userIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"clientId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
userIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
teamId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
clientId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.aireserve.com/v1/admin/bulk_assign_users_to_team', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"status": "executed",
"ok": true,
"summary": "<string>",
"message": "<string>",
"data": "<unknown>",
"secret": "<string>",
"sensitive": true
}{
"status": "refused",
"code": "unknown_op",
"error": "<string>"
}{
"error": "<string>",
"error_description": "<string>"
}{
"status": "refused",
"code": "unknown_op",
"error": "<string>"
}{
"status": "refused",
"code": "unknown_op",
"error": "<string>"
}{
"status": "refused",
"code": "unknown_op",
"error": "<string>"
}{
"status": "executed",
"ok": true,
"summary": "<string>",
"message": "<string>",
"data": "<unknown>",
"secret": "<string>",
"sensitive": true
}{
"error": "<string>",
"error_description": "<string>"
}Authorizations
A management token: minted by the OAuth flow (aireserve login, or an MCP client's Authenticate step) or on the portal Keys page under Management Keys. Inference API keys are refused.
Body
User ids from get-org-directory
1 - 25 elements^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Destination team id, or null for Unassigned
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Target organization id — platform admins only; omit otherwise
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Response
Executed successfully (ok: true).
executed Whether the operation succeeded.
The consent line describing what was done, built from resolved labels.
Human-readable result line.
Operation payload (reads) or detail worth relaying (writes).
A one-time secret the operation minted (API key, credential). Shown once; store it now.
Present exactly when secret is: redact this response from logs.
true