Your AI Connector Docs

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_managementview for at læse medlemslisten og invitationslisten, og på edit for at tilføje, ændre, suspendere, fjerne, invitere, annullere eller gensende. Administratorer har edit som standard; redaktører og seere har none, 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 403 og 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_axes og sub_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();

Svar201 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 null betyder “ryd”. Ved at sende "contact_scope": null, "contact_scope_axes": null eller "sub_account_access": null fjernes den begrænsning fuldstændigt, og medlemmet kan igen se alt. Ved oprettelse og invitation betyder null blot “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_scopeall (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();

Svar201 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 contacts ved view, og oprettelse, ændring eller sletning kræver team_management ved edit.

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"]

Svar201 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 platformrolleUser, 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.