Team-API
Dit team er alle, der arbejder i din konto udover dig selv — administratorer, agenter og skrivebeskyttede seere — plus de invitationer, du har sendt, og de afdelinger, du organiserer dem i. Team-API’et er den programmatiske version af Indstillinger → Team: tilføj og fjern personer, indstil hvad hver af dem kan se og gøre, send og følg op på invitationer, og administrer afdelinger.
Alle endpoints herunder er relative til basis-URL’en https://api.youraiconnector.com/v1. For dashboard-versionen af alt på denne side, se Teamstyring.
Godkendelse: disse endpoints kræver en indlogget person
Dette er den eneste del af API’et, som en API-nøgle ikke kan bruge. Hvert /team endpoint undtagen afdelings-endpoints skal kaldes med et Firebase ID-token fra en indlogget session:
Authorization: Bearer <Firebase ID token>
Send en API-nøgle i stedet, og anmodningen afvises med en 401:
{
"success": false,
"error_code": 401,
"error": "This endpoint requires a Firebase ID token (Authorization: Bearer <token>)."
}
Årsagen er, at disse endpoints beslutter, hvad der skal gøres, baseret på hvem der er logget ind: din rolle, loftet for hvad du har tilladelse til at give andre, og om du i øjeblikket arbejder i en anden konto. En API-nøgle er en integration, ikke en person, så der er ingen, som disse regler kan gælde for.
I praksis betyder det, at Team-API’et er til en førsteparts-app med en indlogget Your AI Connector bruger (se Godkendelse → Firebase ID-token). En server-til-server-integration kan ikke administrere teammedlemmer — der er ingen måde at oprette et af disse tokens udefra appen.
Undtagelsen: de fire afdelings-endpoints er almindelige API-endpoints. De accepterer din API-nøgle præcis ligesom resten af API’et, såvel som en indlogget session.
Hvert svar på denne side følger den sædvanlige konvolut: success: true plus endpointets felter på øverste niveau, eller success: false med error og error_code, når noget går galt.
Roller og tilladelser
Hvert teammedlem har én rolle, som fastsætter deres standardadgang på tværs af 12 områder i appen. Du kan derefter tilsidesætte individuelle områder.
| Rolle | Værdi | Oversigt |
|---|---|---|
| Admin | admin |
Alt undtagen ejerens faktureringsrelaterede handlinger. |
| Editor | editor |
Kan oprette og ændre ting. Vises som Agent i appen. |
| Viewer | viewer |
Skrivebeskyttet. |
Hvert område er indstillet til et af fire niveauer: none (skjult), view (skrivebeskyttet), edit (opret og ændr), full (inklusive sletning).
| Område | Admin | Editor | Viewer |
|---|---|---|---|
campaigns |
fuld | rediger | vis |
contacts |
fuld | rediger | vis |
messages |
fuld | rediger | vis |
appointments |
fuld | rediger | vis |
settings |
rediger | vis | ingen |
billing |
rediger | ingen | ingen |
team_management |
rediger | ingen | ingen |
analytics |
fuld | vis | vis |
phone_numbers |
rediger | ingen | ingen |
integrations |
rediger | ingen | ingen |
faqs |
fuld | rediger | vis |
daily_summaries |
fuld | vis | vis |
For at afvige fra rollens standardindstillinger, send permission_overrides — et array af { "area": ..., "level": ... }-objekter. Hver post erstatter rollens standardindstilling for det pågældende område; alt, hvad du ikke angiver, beholder rollens standardindstilling.
"permission_overrides": [
{ "area": "analytics", "level": "full" },
{ "area": "billing", "level": "none" }
]
Hvem kan kalde disse slutpunkter
- Kontoejeren kan altid gøre alt.
- Et teammedlem skal have
team_managementpåviewfor at læse medlemslisten og invitationslisten, og påeditfor at tilføje, ændre, suspendere, fjerne, invitere, annullere eller gensende. Administratorer hareditsom standard; redaktører og seere harnone, så som standard er det kun administratorer, der kan administrere teamet. - Ingen kan give adgang, der er højere end deres egen. Hvis du forsøger at give nogen et niveau, du ikke selv har — eller at redigere, suspendere eller fjerne en person, hvis adgang allerede er bredere end din egen — afvises anmodningen med
403og en besked, der navngiver området.
Teammedlem-objektet
GET /team/members returnerer et af disse pr. medlem:
| Felt | Type | Beskrivelse |
|---|---|---|
member_uid |
string | Medlemmets eget bruger-id. Dette er {memberUid} i stierne nedenfor. |
account_owner_uid |
string | Den konto, de er medlem af. |
member_email |
string | Deres e-mailadresse. |
member_display_name |
string | Navnet, der vises for dem i appen. |
role |
string | admin, editor eller viewer. |
permission_overrides |
array | Deres undtagelser pr. område. [] når de udelukkende bruger rollens standardindstillinger. |
status |
string | active eller suspended. |
auto_assign_enabled |
boolean | null | Om nye kontakter automatisk kan tildeles dem. null betyder aldrig ændret, hvilket fungerer som true. |
created_by |
string | Hvem der tilføjede dem. |
created_at |
string | null | ISO 8601-tidsstempel. |
updated_at |
string | null | ISO 8601-tidsstempel. |
Fjernede medlemmer returneres ikke — listen indeholder kun aktive og suspenderede medlemmer.
Synlighedsgrænser er kun skrivebeskyttede her.
contact_scope,contact_scope_axesogsub_account_access(se Begrænsning af hvad et medlem kan se) kan indstilles ved oprettelse, opdatering og invitation, men dette slutpunkt returnerer dem ikke.
List teammedlemmer
GET /team/members
Returnerer medlemslisten plus din plans pladsantal, så du kan vise “3 af 5 pladser” og vide, hvornår en invitation er ved at blive afvist.
cURL
curl "https://api.youraiconnector.com/v1/team/members" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/team/members", {
headers: { Authorization: `Bearer ${idToken}` },
});
const { members, seat_limit, seats_used } = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/team/members",
headers={"Authorization": f"Bearer {id_token}"},
)
data = res.json()
Svar
{
"success": true,
"members": [
{
"account_owner_uid": "owner_uid_123",
"member_uid": "uid_alice",
"member_email": "alice@example.com",
"member_display_name": "Alice Chen",
"role": "admin",
"permission_overrides": [],
"status": "active",
"auto_assign_enabled": true,
"created_by": "owner_uid_123",
"created_at": "2026-05-01T10:00:00.000Z",
"updated_at": "2026-06-02T09:15:00.000Z"
}
],
"seat_limit": 5,
"seats_used": 3
}
seat_limit er null, når din plan ikke har nogen pladsbegrænsning. seats_used tæller kun aktive medlemmer — at suspendere eller fjerne nogen frigør deres plads med det samme.
Tilføj et teammedlem direkte
POST /team/members
Sætter en person direkte på dit team uden en invitation.
Dette sender ingen e-mail. Ingen får besked om, at de er blevet tilføjet, og hvis de ikke allerede havde et Your AI Connector-login, har den konto, der oprettes til dem, intet kodeord, så de kan ikke logge ind, før de nulstiller det. Brug Send en invitation, medmindre du har din egen måde at give personen besked på og få dem logget ind.
Anmodningsfelter
| Felt | Påkrævet | Beskrivelse |
|---|---|---|
email |
Ja | Teammedlemmets e-mailadresse. |
display_name |
Ja | Navnet, der vises for dem i appen. |
role |
Ja | admin, editor eller viewer. |
permission_overrides |
Nej | Undtagelser pr. område til rollens standardindstillinger. |
contact_scope |
Nej | all eller assigned — se Begrænsning af hvad et medlem kan se. |
contact_scope_unassigned |
Nej | Med assigned kan de også se kontakter, som ingen endnu ejer. |
contact_scope_axes |
Nej | Begræns dem til navngivne agenter, kanaler eller afdelinger. |
sub_account_access |
Nej | Kun bureauer — hvilke klient-underkonti de må åbne. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/team/members" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "sam@example.com",
"display_name": "Sam Rivera",
"role": "editor"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/team/members", {
method: "POST",
headers: {
Authorization: `Bearer ${idToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
email: "sam@example.com",
display_name: "Sam Rivera",
role: "editor",
}),
});
const { member_uid } = await res.json();
Svar — 201 Created
{
"success": true,
"team_member_id": "owner_uid_123_uid_sam",
"member_uid": "uid_sam",
"message": "Team member created successfully."
}
| Status | Hvornår |
|---|---|
400 |
email, display_name eller role mangler, rollen er ikke en af de tre, eller du forsøgte at tilføje dig selv. |
403 |
Du har ikke tilladelse til at administrere teamet, eller du forsøgte at give adgang ud over din egen. |
409 |
Den person er allerede et aktivt medlem af dit team. |
429 |
Dit abonnements teampladser er optaget. |
Tilføjelse af en person, der tidligere var suspenderet eller fjernet, genindsætter dem i stedet for at fejle.
Opdater et teammedlem
PATCH /team/members/{memberUid}
Ændrer et medlems rolle, tilladelser, synlighed, klientadgang eller om de deltager i automatisk kontaktallokering. Send kun de felter, du ønsker at ændre; alt, hvad du udelader, beholder sin nuværende værdi.
Anmodningsfelter
| Felt | Beskrivelse |
|---|---|
role |
admin, editor eller viewer. |
permission_overrides |
Erstatter hele deres liste over undtagelser. Send [] for at sætte dem tilbage til rene rollestandarder. |
status |
Kun active accepteres for at bringe et suspenderet medlem tilbage. For at suspendere nogen, brug suspend-endpointet. |
auto_assign_enabled |
true eller false. |
contact_scope |
all eller assigned. |
contact_scope_unassigned |
true eller false. |
contact_scope_axes |
Se Begrænsning af hvad et medlem kan se. |
sub_account_access |
Kun bureauer. |
Dette er det eneste endpoint, hvor
nullbetyder “ryd”. Ved at sende"contact_scope": null,"contact_scope_axes": nulleller"sub_account_access": nullfjernes den begrænsning fuldstændigt, og medlemmet kan igen se alt. Ved oprettelse og invitation betydernullblot “ikke angivet”.
cURL
curl -X PATCH "https://api.youraiconnector.com/v1/team/members/uid_sam" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"role": "admin",
"permission_overrides": [{ "area": "billing", "level": "none" }]
}'
Svar
{
"success": true,
"message": "Team member updated successfully."
}
| Status | Hvornår |
|---|---|
400 |
En ugyldig status- eller auto_assign_enabled-værdi, eller du forsøgte at genaktivere et medlem, der var fjernet (fjernede medlemmer skal geninviteres). |
403 |
Du har ikke tilladelse, eller ændringen ville redigere eller oprette adgang, der er bredere end din egen. |
404 |
Intet sådant teammedlem. |
Suspender et teammedlem
POST /team/members/{memberUid}/suspend
Suspenderer en person: de beholder deres plads på teamet, men mister adgangen. Brug dette i stedet for at fjerne dem, når pausen er midlertidig — bring dem tilbage med PATCH /team/members/{memberUid} og {"status": "active"}.
cURL
curl -X POST "https://api.youraiconnector.com/v1/team/members/uid_sam/suspend" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN"
Svar
{
"success": true,
"message": "Team member suspended successfully."
}
Et suspenderet medlem frigør sin plads, så du kan invitere en anden i deres sted. Deres adgang ophører, når deres nuværende sessionstoken næste gang fornyes, hvilket kan tage op til en time — fjern dem i stedet, hvis det skal ske øjeblikkeligt.
| Status | Hvornår |
|---|---|
400 |
Du forsøgte at suspendere kontoejeren eller et medlem, der allerede er suspenderet eller fjernet. |
403 |
Deres adgang er bredere end din. |
404 |
Intet sådant teammedlem. |
Fjern et teammedlem
DELETE /team/members/{memberUid}
Fjerner en person fra dit team og frigør deres plads. De logges ud og mister adgangen til din konto; deres eget login forbliver uberørt.
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/team/members/uid_sam" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN"
Svar
{
"success": true,
"message": "Team member removed successfully."
}
Fjernelsen er permanent fra din side: et fjernet medlem kan ikke genaktiveres via update-endpointet — inviter dem igen, hvis du ombestemmer dig. Deres e-mail fjernes også fra din kontos notifikationsliste.
| Status | Hvornår |
|---|---|
400 |
Du forsøgte at fjerne kontoejeren. |
403 |
Deres adgang er bredere end din. |
404 |
Intet sådant teammedlem. |
Begrænsning af hvad et medlem kan se
Tre valgfrie felter, som accepteres ved tilføjelse, opdatering og invitation, bestemmer hvor meget af kontoen en person kan se. De stables: et medlem, der er begrænset af mere end én, er begrænset af dem alle.
contact_scope — all (standard: alle kontakter og samtaler) eller assigned (kun dem, der er tildelt dem). Med assigned kan du tilføje "contact_scope_unassigned": true for også at lade dem se kontakter, som ingen ejer endnu.
contact_scope_axes — begrænser dem til navngivne agenter, kanaler eller afdelinger:
| Felt | Type | Beskrivelse |
|---|---|---|
agents |
string[] | Agent-ID’er. De ser kun chats, der er dirigeret til en af disse agenter. Maks. 200. |
channels |
string[] | Kanalnavne — whatsapp, whatsapp_web, sms, instagram, instagram_private, messenger, facebook, chat_widget, telegram, line, viber, tiktok, imessage, email, linkedin, skool, custom, custom_channel. Maks. 200. |
departments |
string[] | Afdelings-ID’er (se Afdelinger). De ser kun leads, der er arkiveret under dem. Maks. 200. |
include_unrouted |
boolean | Med agents angivet, vises også chats, som ingen agent håndterer. Deaktiveret som standard. Ignoreres når agents er tom. |
include_undepartmented |
boolean | Med departments angivet, vises også chats, der ikke er i nogen afdeling. Deaktiveret som standard. Ignoreres når departments er tom. |
Agent- og afdelings-ID’er tjekkes ikke, når du gemmer dem — et ID, der ikke eksisterer, matcher blot ingenting, hvilket vises som en tom indbakke i stedet for en fejl. Kanalnavne bliver tjekket: et ukendt navn afvises med 400.
Ingen af disse tre kan indstilles på kontoejeren — den anmodning afvises med 400.
List invitationer
GET /team/invites
De invitationer, du har sendt, sorteret med de nyeste først, så du kan se, hvem der endnu ikke har accepteret.
Forespørgselsparametre
| Parameter | Påkrævet | Beskrivelse |
|---|---|---|
status |
Nej | Returner kun invitationer i denne tilstand — pending, accepted, declined, cancelled eller expired. |
cURL
curl "https://api.youraiconnector.com/v1/team/invites?status=pending" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN"
Svar
{
"success": true,
"invites": [
{
"id": "inv_abc123",
"account_owner_uid": "owner_uid_123",
"account_owner_display_name": "Acme Ltd",
"invitee_email": "sam@example.com",
"invitee_uid": null,
"role": "editor",
"permission_overrides": [],
"status": "pending",
"created_by": "owner_uid_123",
"created_at": "2026-06-10T12:00:00.000Z",
"expires_at": "2026-06-17T12:00:00.000Z",
"responded_at": null
}
]
}
Invitationstokenet returneres aldrig — det findes kun i den e-mail, der blev sendt.
Send en invitation
POST /team/invites
Sender en e-mail med en invitation til at deltage i dit team. Dette er den sædvanlige måde at tilføje et teammedlem på: de klikker på linket, logger ind som sig selv og accepterer. Hvis de endnu ikke har en Your AI Connector-konto, oprettes der en til dem, og e-mailen guider dem gennem oprettelse af en adgangskode.
Anmodningsfelter
| Felt | Påkrævet | Beskrivelse |
|---|---|---|
email |
Ja | Hvor invitationen skal sendes hen. |
role |
Ja | admin, editor eller viewer. |
permission_overrides |
Nej | Undtagelser pr. område, der anvendes i det øjeblik, de accepterer. |
contact_scope |
Nej | Anvendes, når de accepterer. |
contact_scope_unassigned |
Nej | Anvendes, når de accepterer. |
contact_scope_axes |
Nej | Anvendes, når de accepterer. |
sub_account_access |
Nej | Kun bureauer. Anvendes, når de accepterer. |
Ved at indstille tilladelserne på forhånd behøver du ikke at redigere medlemmet bagefter — alt kopieres til deres medlemskab, når de accepterer.
cURL
curl -X POST "https://api.youraiconnector.com/v1/team/invites" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "email": "sam@example.com", "role": "editor" }'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/team/invites", {
method: "POST",
headers: {
Authorization: `Bearer ${idToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "sam@example.com", role: "editor" }),
});
const { invite_id } = await res.json();
Svar — 201 Created
{
"success": true,
"invite_id": "inv_abc123",
"message": "Team invite sent successfully."
}
Ting at planlægge
- Invitationer udløber efter 7 dage. En udløbet invitation kan gensendes, hvilket starter en ny 7-dages periode.
- Afventende invitationer optager en plads. I modsætning til at tilføje et medlem direkte, tæller pladskontrollen her aktive medlemmer plus afventende invitationer, så en konto, hvor alle pladser er optaget, vil få afvist anmodningen, før e-mailen sendes.
- 20 invitationer pr. dag, talt pr. konto på tværs af både afsendelse og gensendelse.
| Status | Hvornår |
|---|---|
400 |
email mangler, eller rollen er ugyldig. |
403 |
Du har ikke tilladelse til at administrere teamet, eller du forsøgte at give adgang, der overstiger din egen. |
409 |
En afventende invitation til den e-mail findes allerede, eller personen er allerede på dit team. |
429 |
Dit abonnement har ikke flere teampladser, eller du har nået grænsen på 20 invitationer om dagen. error-beskeden angiver hvilken. |
Annuller en invitation
DELETE /team/invites/{inviteId}
Tilbagekalder en invitation, før den accepteres. Linket i e-mailen holder op med at virke.
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/team/invites/inv_abc123" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN"
Svar
{
"success": true,
"message": "Team invite cancelled."
}
Både pending- og expired-invitationer kan annulleres. En invitation, der allerede er accepteret, afvist eller annulleret, returnerer 400; en, der ikke er din, returnerer 403; et ukendt ID returnerer 404.
Gensend en invitation
POST /team/invites/{inviteId}/resend
Sender invitations-e-mailen igen – til når den blev overset eller endte i spam. Virker på pending- og expired-invitationer og nulstiller udløbsdatoen til 7 dage fra nu.
cURL
curl -X POST "https://api.youraiconnector.com/v1/team/invites/inv_abc123/resend" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN"
Svar
{
"success": true,
"message": "Team invite resent successfully."
}
Den nye e-mail indeholder et nyt link, og det gamle link virker stadig, så en person, der finder den første e-mail senere, er ikke blokeret. Gensendelse tæller med i den samme grænse på 20 om dagen som afsendelse, og genaktivering af en udløbet invitation tjekker dine pladser igen – en fuld plan afvises med 429.
Acceptér en invitation
POST /team/invites/accept
Accepterer en invitation med tokenet fra invitations-e-mailen og tilføjer den indloggede person til den pågældende kontos team.
Dette er en handling foretaget af din egen identitet. Log ind som dig selv – det afvises bevidst med
403, mens du arbejder inde i en andens konto.
Anmodningsfelter
| Felt | Påkrævet | Beskrivelse |
|---|---|---|
invite_token |
Ja | Tokenet fra linket i invitations-e-mailen. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/team/invites/accept" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "invite_token": "1f4c…" }'
Svar
{
"success": true,
"team_member_id": "owner_uid_123_uid_sam",
"account_owner_uid": "owner_uid_123",
"message": "Team invite accepted successfully."
}
| Status | Hvornår |
|---|---|
400 |
invite_token mangler, eller invitationen er til din egen konto. |
403 |
Sessionen arbejder inde i en anden konto, eller invitationen blev sendt til en anden e-mailadresse end den, du er logget ind med. |
404 |
Invitationen findes ikke eller er allerede blevet brugt. |
429 |
Kontoens pladser blev fyldt op mellem invitationen og din accept. |
504 |
Invitationen er udløbet. Bed afsenderen om at gensende den. |
Afvis en invitation
POST /team/invites/decline
Afviser en invitation med tokenet fra e-mailen. Ligesom ved accept er dette en handling foretaget af din egen identitet og afvises, mens du arbejder inde i en anden konto.
cURL
curl -X POST "https://api.youraiconnector.com/v1/team/invites/decline" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "invite_token": "1f4c…" }'
Svar
{
"success": true,
"message": "Team invite declined."
}
Afdelinger
En afdeling er en navngiven gruppe i dit team — Salg, Kundesupport, HR. Det giver et lead et ansvarligt team, kan selv gøre krav på nye samtaler og kan bruges til at begrænse, hvad et medlem kan se.
Disse fire slutpunkter kræver en API-nøgle. I modsætning til resten af denne side godkender de sig ligesom alle andre slutpunkter i API’en (se Godkendelse). En logget-ind session virker også: læsning kræver
contactsvedview, og oprettelse, ændring eller sletning kræverteam_managementvededit.
Afdelingsobjektet
| Felt | Type | Beskrivelse |
|---|---|---|
id |
string | Afdelingens ID. Brug det i contact_scope_axes.departments og i stierne nedenfor. |
name |
string | Hvad teamet hedder. Op til 60 tegn, unikt på kontoen. |
color |
string | null | Accentfarve som #rrggbb eller null. |
member_uids |
string[] | Teammedlemmerne i denne afdeling. Kan inkludere kontoejeren. |
auto_assign_enabled |
boolean | Om et lead, der er arkiveret under denne afdeling, også videregives til en person i den. false betyder, at afdelingen arbejder ud fra en delt kø. |
routing_agents |
string[] | Nye samtaler håndteret af disse AI-agenter arkiveres automatisk under denne afdeling. Tom betyder ingen agentregel. |
routing_channels |
string[] | Nye samtaler på disse kanaler arkiveres automatisk her. Tom betyder ingen kanalregel. |
created_by |
string | null | Hvem der oprettede den. |
Når både routing_agents og routing_channels er indstillet, skal en samtale matche begge for at blive arkiveret her — det er sådan, du giver et team “supportagenten, men kun på WhatsApp”.
En konto kan have op til 50 afdelinger.
List afdelinger
GET /team/departments
curl "https://api.youraiconnector.com/v1/team/departments?apiKey=YOUR_API_KEY"
Svar
{
"success": true,
"departments": [
{
"id": "dep_abc123",
"name": "Sales",
"color": "#2f6fed",
"member_uids": ["uid_alice", "uid_bob"],
"auto_assign_enabled": true,
"routing_agents": [],
"routing_channels": ["whatsapp"],
"created_by": "owner_uid_123"
}
]
}
Opret en afdeling
POST /team/departments
Anmodningsfelter
| Felt | Påkrævet | Beskrivelse |
|---|---|---|
name |
Ja | Op til 60 tegn. Må ikke matche en eksisterende afdeling. |
color |
Nej | #rrggbb hex eller null. |
member_uids |
Nej | Hvem der er på den. Hvert UID skal være kontoejeren eller et aktivt teammedlem. |
auto_assign_enabled |
Nej | Standard er true. |
routing_agents |
Nej | Agent-ID’er, hvis nye chats lander her. |
routing_channels |
Nej | Kanalnavne, hvis nye chats lander her — samme ordforråd som contact_scope_axes.channels. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/team/departments?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Sales",
"color": "#2f6fed",
"member_uids": ["uid_alice", "uid_bob"],
"routing_channels": ["whatsapp"]
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/team/departments", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Sales",
color: "#2f6fed",
member_uids: ["uid_alice", "uid_bob"],
routing_channels: ["whatsapp"],
}),
});
const { department } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/team/departments",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"name": "Sales",
"color": "#2f6fed",
"member_uids": ["uid_alice", "uid_bob"],
"routing_channels": ["whatsapp"],
},
)
department = res.json()["department"]
Svar — 201 Created
{
"success": true,
"department": {
"id": "dep_abc123",
"name": "Sales",
"color": "#2f6fed",
"member_uids": ["uid_alice", "uid_bob"],
"auto_assign_enabled": true,
"routing_agents": [],
"routing_channels": ["whatsapp"],
"created_by": "owner_uid_123"
}
}
| Status | Hvornår |
|---|---|
400 |
name mangler eller er for lang, color er ikke #rrggbb, et kanalnavn genkendes ikke, et angivet UID er ikke et aktivt medlem af dette team, eller du har allerede 50 afdelinger. |
409 |
En afdeling med det navn findes allerede. |
Opdater en afdeling
PATCH /team/departments/{departmentId}
Ændrer en afdeling. Kun de felter, du sender, bliver ændret.
curl -X PATCH "https://api.youraiconnector.com/v1/team/departments/dep_abc123?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "member_uids": ["uid_alice"], "auto_assign_enabled": false }'
Svar
{
"success": true,
"department": {
"id": "dep_abc123",
"name": "Sales",
"color": "#2f6fed",
"member_uids": ["uid_alice"],
"auto_assign_enabled": false,
"routing_agents": [],
"routing_channels": ["whatsapp"],
"created_by": "owner_uid_123"
}
}
Hvis der ikke sendes nogen genkendte felter, returneres 400; en ukendt afdeling returnerer 404; et navn, der er i konflikt med en anden afdeling, returnerer 409.
Slet en afdeling
DELETE /team/departments/{departmentId}
curl -X DELETE "https://api.youraiconnector.com/v1/team/departments/dep_abc123?apiKey=YOUR_API_KEY"
Svar
{
"success": true,
"deleted": "dep_abc123"
}
Det afvises at slette en afdeling, som nogen er begrænset til.
400-svaret navngiver de medlemmer, hvis synlighed er begrænset til den, så du først kan ændre deres omfang. Dette er tilsigtet: Hvis man lydløst fjernede begrænsningen, ville de få adgang til hele din kundebase uden nogen indikation af, at det var sket.
Kontakter, der er arkiveret under en slettet afdeling, bliver ikke omskrevet — de holder blot op med at vise en afdeling, og næste gang du arkiverer dem, bliver det gemt.
Tjek dine egne tilladelser
GET /team/permissions
Returnerer, hvad den indloggede person har tilladelse til at gøre i den konto, de i øjeblikket arbejder i. Brug det til at skjule knapper, som et medlem ikke kan bruge, i stedet for at lade dem opdage begrænsningen via en fejl.
cURL
curl "https://api.youraiconnector.com/v1/team/permissions" \
-H "Authorization: Bearer FIREBASE_ID_TOKEN"
Svar — kontoejeren
{
"success": true,
"role": "owner",
"is_team_mode": false,
"permissions": {
"campaigns": "full",
"contacts": "full",
"messages": "full",
"appointments": "full",
"settings": "full",
"billing": "full",
"team_management": "full",
"analytics": "full",
"phone_numbers": "full",
"integrations": "full",
"faqs": "full",
"daily_summaries": "full"
}
}
Svar — et teammedlem, der arbejder i en konto
{
"success": true,
"role": "editor",
"is_team_mode": true,
"permissions": { "campaigns": "edit", "billing": "none", "…": "…" },
"member": {
"uid": "uid_sam",
"email": "sam@example.com",
"display_name": "Sam Rivera",
"account_owner_uid": "owner_uid_123"
}
}
role er owner, når den indloggede person er kontoejeren; ellers er det deres teamrolle. member er kun til stede i team-tilstand og indeholder contact_scope, contact_scope_unassigned og contact_scope_axes, når deres medlemskab har dem.
Sessionstokens
Fem slutpunkter opretter et engangs-login-token til skift mellem konti. De svarer alle på samme måde:
{
"success": true,
"customToken": "eyJhbGciOi…"
}
Tokenet ombyttes til en session med Firebase-klient-SDK’et. Det er ikke en API-nøgle og kan ikke sendes som en, hvilket er grunden til, at disse slutpunkter kun er nyttige i en førsteparts-app.
| Slutpunkt | Hvad det gør | Brødtekst |
|---|---|---|
POST /team/tokens/team-member |
Lader et teammedlem begynde at arbejde i en konto, de tilhører. | account_owner_uid (påkrævet) |
POST /team/tokens/return-from-team |
Tager dem tilbage til deres egen konto. | — |
POST /team/tokens/assist |
Lader Your AI Connector-medarbejdere åbne en kundes konto for at hjælpe. Kun for medarbejdere. | customerUid |
POST /team/tokens/return-to-admin |
Afslutter en hjælpesession og returnerer medarbejderen til deres egen konto. | — |
POST /team/tokens/agency-assist |
Lader et bureau åbne en af sine klient-underkonti — eller, hvis det kaldes uden en, vende tilbage til bureaukontoen. | subAccountUid (valgfri) |
Hver afviser med 403, når sessionen ikke har tilladelse til det: ikke medlem af den konto, ikke personale, den underkonto er ikke en del af dit bureau eller er ikke blevet tildelt dig, eller sessionen er i øjeblikket ikke i den tilstand, som slutpunktet kræver.
Tildel en platformrolle
POST /team/users/{targetUid}/role
Angiver en brugers platformrolle — User, Dev, Support eller Agency. Dette er ikke et teammedlemskab: det er den type Your AI Connector-konto, en person har.
Dette slutpunkt er begrænset til Your AI Connector-personale, og den sidste tilbageværende Dev kan ikke nedgraderes. Opført for fuldstændighedens skyld; det er ikke en del af administrationen af dit eget team.
{
"success": true,
"targetUid": "uid_sam",
"role": "Agency",
"claimUpdated": true
}
| Status | Hvornår |
|---|---|
400 |
role mangler eller er ikke en af de fire, eller dette ville fjerne den sidste Dev. |
403 |
Du er ikke personale, eller sessionen arbejder inde i en anden konto. |
404 |
Brugeren findes ikke. |
Team API-fejl
Team-slutpunkter returnerer standardfejlkonvolutten, altid med error_code sammen med HTTP-status:
{
"success": false,
"error_code": 403,
"error": "Cannot grant \"full\" access to \"billing\" — exceeds your own permissions."
}
| Status | Hvornår det sker på et team-slutpunkt |
|---|---|
400 |
Et påkrævet felt mangler eller er ugyldigt, eller handlingen er ikke tilladt i denne tilstand (genaktivering af et fjernet medlem, suspendering af ejeren, sletning af en afdeling, som nogen er begrænset til). |
401 |
Du sendte en API-nøgle til et slutpunkt, der kræver en logget ind-person — se Godkendelse. |
403 |
Du har ikke team_management-tilladelse, ændringen overstiger din egen adgang, eller handlingen afvises, mens du arbejder inde i en anden konto. |
404 |
Intet sådant medlem, invitation, afdeling eller bruger. |
409 |
Allerede teammedlem, en afventende invitation eksisterer allerede, eller en afdeling med det navn findes. |
429 |
Team-pladser er fulde, grænsen på 20 invitationer om dagen er nået, eller du har ramt API-hastighedsbegrænsningen. |
504 |
Den invitation, du forsøgte at acceptere, er udløbet. |
De delte koder, som ethvert slutpunkt kan returnere — 429 (hastighedsbegrænsning) og 500 — er angivet med vejledning om forsøg igen i Fejl & Sidetal.
Relateret
- Teamadministration — de samme funktioner i dashboardet, med skærmbilleder.
- Godkendelse — hvordan man sender et Firebase ID-token i stedet for en API-nøgle.
- Kontakt-API — de kontakter, som et medlems synlighedsbegrænsninger gælder for.