Your AI Connector Docs

Team-API

Ditt team är alla som arbetar i ditt konto förutom du själv — administratörer, agenter och läsbehöriga användare — plus de inbjudningar du har skickat och de avdelningar du har organiserat dem i. Team-API:et är den programmatiska versionen av Inställningar → Team: lägg till och ta bort personer, ställ in vad var och en kan se och göra, skicka och påminna om inbjudningar samt hantera avdelningar.

Alla slutpunkter nedan är relativa till bas-URL:en https://api.youraiconnector.com/v1. För dashboard-versionen av allt på denna sida, se Teamhantering.


Autentisering: dessa slutpunkter kräver en inloggad person

Detta är den enda delen av API:et som en API-nyckel inte kan använda. Varje /team-slutpunkt förutom avdelnings-slutpunkterna måste anropas med en Firebase ID-token från en inloggad session:

Authorization: Bearer <Firebase ID token>

Skicka en API-nyckel istället så avvisas begäran med ett 401:

{
  "success": false,
  "error_code": 401,
  "error": "This endpoint requires a Firebase ID token (Authorization: Bearer <token>)."
}

Anledningen är att dessa slutpunkter fattar beslut baserat på vem som är inloggad: din roll, taket för vad du får bevilja någon annan, och om du för närvarande arbetar i ett annat konto. En API-nyckel är en integration, inte en person, så det finns ingen som dessa regler kan tillämpas på.

I praktiken innebär det att Team-API:et är till för en förstapartsapp med en inloggad Your AI Connector-användare (se Autentisering → Firebase ID-token). En server-till-server-integration kan inte hantera teammedlemmar — det finns inget sätt att skapa en av dessa tokens utanför appen.

Undantaget: de fyra avdelnings-slutpunkterna är vanliga API-slutpunkter. De accepterar din API-nyckel precis som resten av API:et, såväl som en inloggad session.

Varje svar på denna sida följer det vanliga kuvertet: success: true plus slutpunktens fält på toppnivå, eller success: false med error och error_code när något går fel.


Roller och behörigheter

Varje teammedlem har en roll, som anger deras standardåtkomst över 12 områden i appen. Du kan sedan åsidosätta enskilda områden.

Roll Värde Sammanfattning
Admin admin Allt utom ägarens faktureringsrelaterade åtgärder.
Editor editor Kan skapa och ändra saker. Visas som Agent i appen.
Viewer viewer Skrivskyddad.

Varje område är inställt på en av fyra nivåer: none (dolt), view (skrivskyddat), edit (skapa och ändra), full (inklusive borttagning).

Område Admin Editor Viewer
campaigns full edit view
contacts full edit view
messages full edit view
appointments full edit view
settings edit view none
billing edit none none
team_management edit none none
analytics full view view
phone_numbers edit none none
integrations edit none none
faqs full edit view
daily_summaries full view view

För att avvika från rollens standardvärden, skicka permission_overrides — en array av { "area": ..., "level": ... }-objekt. Varje post ersätter rollens standardvärde för just det området; allt du inte listar behåller rollens standardvärde.

"permission_overrides": [
  { "area": "analytics", "level": "full" },
  { "area": "billing", "level": "none" }
]

Vem kan anropa dessa slutpunkter

  • Kontoinnehavaren kan alltid göra allt.
  • En teammedlem behöver team_managementview för att läsa medlemslistan och inbjudningslistan, och på edit för att lägga till, ändra, inaktivera, ta bort, bjuda in, avbryta eller skicka om. Administratörer har edit som standard; redigerare och läsare har none, så som standard är det endast administratörer som kan hantera teamet.
  • Ingen kan bevilja högre åtkomst än sin egen. Om du försöker ge någon en nivå som du inte själv innehar — eller redigera, inaktivera eller ta bort någon vars åtkomst redan är bredare än din — nekas begäran med 403 och ett meddelande som anger området.

Teammedlemsobjektet

GET /team/members returnerar ett av dessa per medlem:

Fält Typ Beskrivning
member_uid string Medlemmens eget användar-ID. Detta är {memberUid} i sökvägarna nedan.
account_owner_uid string Kontot de är medlem i.
member_email string Deras e-postadress.
member_display_name string Namnet som visas för dem i appen.
role string admin, editor eller viewer.
permission_overrides array Deras undantag per område. [] när de enbart använder rollstandardvärden.
status string active eller suspended.
auto_assign_enabled boolean | null Huruvida nya kontakter kan tilldelas dem automatiskt. null betyder att det aldrig ändrats, vilket fungerar som true.
created_by string Vem som lade till dem.
created_at string | null ISO 8601-tidsstämpel.
updated_at string | null ISO 8601-tidsstämpel.

Borttagna medlemmar returneras inte — listan innehåller endast aktiva och inaktiverade medlemmar.

Synlighetsbegränsningar är endast skrivbara här. contact_scope, contact_scope_axes och sub_account_access (se Begränsa vad en medlem kan se) kan ställas in vid skapande, uppdatering och inbjudan, men denna slutpunkt returnerar dem inte.


Lista teammedlemmar

GET /team/members

Returnerar medlemslistan plus din plans platsantal, så att du kan visa “3 av 5 platser” och veta när en inbjudan är på väg att nekas.

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 är null när din plan inte har något platsantal. seats_used räknar endast aktiva medlemmar — att inaktivera eller ta bort någon frigör deras plats omedelbart.


Lägg till en teammedlem direkt

POST /team/members

Lägger till någon i ditt team direkt, utan en inbjudan.

Detta skickar inget e-postmeddelande. Ingen meddelas om att de har lagts till, och om de inte redan hade en Your AI Connector-inloggning har kontot som skapats för dem inget lösenord, så de kan inte logga in förrän de återställer det. Använd Skicka en inbjudan såvida du inte har ett eget sätt att informera personen och hjälpa dem att logga in.

Begäransfält

Fält Obligatoriskt Beskrivning
email Ja Lagmedlemmens e-postadress.
display_name Ja Namnet som visas för dem i appen.
role Ja admin, editor eller viewer.
permission_overrides Nej Undantag per område från rollens standardinställningar.
contact_scope Nej all eller assigned — se Begränsa vad en medlem kan se.
contact_scope_unassigned Nej Med assigned, låt dem även se kontakter som ingen äger ännu.
contact_scope_axes Nej Begränsa dem till namngivna agenter, kanaler eller avdelningar.
sub_account_access Nej Endast för byråer — vilka klientunderkonton de får öppna.

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 När
400 email, display_name eller role saknas, rollen är inte en av de tre, eller så försökte du lägga till dig själv.
403 Du har inte behörighet att hantera teamet, eller så försökte du bevilja åtkomst utöver din egen.
409 Personen är redan en aktiv medlem i ditt team.
429 Ditt abonnemangs teamplatser är fulla.

Att lägga till någon som tidigare var avstängd eller borttagen återaktiverar dem istället för att misslyckas.


Uppdatera en teammedlem

PATCH /team/members/{memberUid}

Ändrar en medlems roll, behörigheter, synlighet, klientåtkomst eller om de deltar i automatisk kontakttilldelning. Skicka endast de fält du vill ändra; allt du utelämnar behåller sitt nuvarande värde.

Begäransfält

Fält Beskrivning
role admin, editor eller viewer.
permission_overrides Ersätter hela deras lista med undantag. Skicka [] för att återställa dem till enbart rollens standardinställningar.
status Endast active accepteras för att återaktivera en avstängd medlem. För att stänga av någon, använd avstängnings-endpointen.
auto_assign_enabled true eller false.
contact_scope all eller assigned.
contact_scope_unassigned true eller false.
contact_scope_axes Se Begränsa vad en medlem kan se.
sub_account_access Endast för byråer.

Detta är den enda endpointen där null betyder “rensa”. Att skicka "contact_scope": null, "contact_scope_axes": null eller "sub_account_access": null tar bort den begränsningen helt och återställer medlemmen till att se allt. Vid skapande och inbjudan betyder null helt enkelt “ej 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 När
400 Ett ogiltigt status- eller auto_assign_enabled-värde, eller så försökte du återaktivera en medlem som tagits bort (borttagna medlemmar måste bjudas in på nytt).
403 Du har inte behörighet, eller så skulle ändringen redigera eller skapa åtkomst som är bredare än din egen.
404 Ingen sådan teammedlem.

Stäng av en teammedlem

POST /team/members/{memberUid}/suspend

Stänger av någon: de behåller sin plats i teamet men förlorar åtkomst. Använd detta istället för att ta bort när pausen är tillfällig — ta tillbaka dem med PATCH /team/members/{memberUid} och {"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."
}

En avstängd medlem frigör sin plats, så att du kan bjuda in någon annan i deras ställe. Deras åtkomst upphör när deras nuvarande sessionstoken nästa gång uppdateras, vilket kan ta upp till en timme — ta bort dem istället om du behöver att det sker omedelbart.

Status När
400 Du försökte stänga av kontoägaren, eller en medlem som redan är avstängd eller borttagen.
403 Deras åtkomst är bredare än din.
404 Ingen sådan teammedlem.

Ta bort en teammedlem

DELETE /team/members/{memberUid}

Tar bort en person från ditt team och frigör deras plats. De loggas ut och förlorar åtkomst till ditt konto; deras egen inloggning förblir orörd.

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."
}

Borttagningen är permanent från din sida: en borttagen medlem kan inte återaktiveras via uppdateringsslutpunkten — bjud in dem igen om du ändrar dig. Deras e-postadress tas även bort från kontots aviseringslista.

Status När
400 Du försökte ta bort kontots ägare.
403 Deras åtkomst är bredare än din.
404 Ingen sådan teammedlem finns.

Begränsa vad en medlem kan se

Tre valfria fält, som accepteras vid lägg till, uppdatera och bjuda in, avgör hur mycket av kontot en person ser. De staplas: en medlem som är begränsad på mer än ett sätt begränsas av alla.

contact_scopeall (standard: alla kontakter och konversationer) eller assigned (endast de som tilldelats dem). Med assigned, lägg till "contact_scope_unassigned": true för att även låta dem se kontakter som ingen äger ännu.

contact_scope_axes — begränsar dem till namngivna agenter, kanaler eller avdelningar:

Fält Typ Beskrivning
agents string[] Agent-ID:n. De ser endast chattar som dirigeras till en av dessa agenter. Max 200.
channels string[] Kanalnamn — whatsapp, whatsapp_web, sms, instagram, instagram_private, messenger, facebook, chat_widget, telegram, line, viber, tiktok, imessage, email, linkedin, skool, custom, custom_channel. Max 200.
departments string[] Avdelnings-ID:n (se Avdelningar). De ser endast leads som arkiverats under dessa. Max 200.
include_unrouted boolean Med agents aktiverat, visas även chattar som ingen agent hanterar. Avstängd som standard. Ignoreras när agents är tomt.
include_undepartmented boolean Med departments aktiverat, visas även chattar som inte tillhör någon avdelning. Avstängd som standard. Ignoreras när departments är tomt.

Agent- och avdelnings-ID:n kontrolleras inte när du sparar dem — ett ID som inte existerar matchar helt enkelt ingenting, vilket visas som en tom inkorg istället för ett fel. Kanalnamn kontrolleras: ett okänt namn avvisas med 400.

Inget av dessa tre kan ställas in på kontots ägare — den begäran nekas med 400.


Lista inbjudningar

GET /team/invites

De inbjudningar du har skickat, sorterade med de nyaste först, så att du kan se vem som ännu inte har accepterat.

Frågeparametrar

Parameter Krävs Beskrivning
status Nej Returnera endast inbjudningar i detta tillstånd — 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
    }
  ]
}

Inbjudningstoken returneras aldrig — den finns bara i e-postmeddelandet som skickades.


Skicka en inbjudan

POST /team/invites

Skickar en inbjudan via e-post till någon att gå med i ditt team. Detta är det vanliga sättet att lägga till en teammedlem: de klickar på länken, loggar in som sig själva och accepterar. Om de inte har ett Your AI Connector-konto ännu skapas ett åt dem, och e-postmeddelandet guidar dem genom att ställa in ett lösenord.

Begäransfält

Fält Krävs Beskrivning
email Ja Vart inbjudan ska skickas.
role Ja admin, editor eller viewer.
permission_overrides Nej Undantag per område, tillämpas i samma ögonblick som de accepterar.
contact_scope Nej Tillämpas när de accepterar.
contact_scope_unassigned Nej Tillämpas när de accepterar.
contact_scope_axes Nej Tillämpas när de accepterar.
sub_account_access Nej Endast för byråer. Tillämpas när de accepterar.

Genom att ställa in behörigheter i förväg behöver du inte redigera medlemmen efteråt — allt kopieras till deras medlemskap när de accepterar.

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."
}

Saker att planera för

  • Inbjudningar går ut efter 7 dagar. En utgången inbjudan kan skickas på nytt, vilket startar en ny 7-dagarsperiod.
  • Väntande inbjudningar upptar en plats. Till skillnad från att lägga till en medlem direkt, räknar platskontrollen här aktiva medlemmar plus väntande inbjudningar, så ett konto där alla platser är upptagna nekas innan e-postmeddelandet skickas.
  • 20 inbjudningar per dag, räknat per konto för både utskick och återskick.
Status När
400 email saknas eller rollen är ogiltig.
403 Du har inte behörighet att hantera teamet, eller så försökte du ge åtkomst utöver din egen nivå.
409 En väntande inbjudan för den e-postadressen finns redan, eller så är personen redan med i ditt team.
429 Ditt abonnemangs teamplatser är fulla, eller så har du nått gränsen på 20 inbjudningar per dag. Meddelandet error anger vilket.

Avbryt en inbjudan

DELETE /team/invites/{inviteId}

Drar tillbaka en inbjudan innan den har accepterats. Länken i e-postmeddelandet slutar fungera.

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- och expired-inbjudningar kan avbrytas. En inbjudan som redan har accepterats, avböjts eller avbrutits returnerar 400; en som inte är din returnerar 403; ett okänt ID returnerar 404.


Skicka inbjudan på nytt

POST /team/invites/{inviteId}/resend

Skickar inbjudningsmeddelandet igen — för när det missades eller hamnade i skräpposten. Fungerar på pending- och expired-inbjudningar och återställer utgångstiden till 7 dagar från 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."
}

Det nya e-postmeddelandet innehåller en ny länk, och den gamla länken fortsätter också att fungera, så en person som hittar det första e-postmeddelandet senare blir inte stående utan åtkomst. Att skicka på nytt räknas mot samma gräns på 20 per dag som att skicka, och att återaktivera en utgången inbjudan kontrollerar dina platser på nytt — en full plan nekas med 429.


Acceptera en inbjudan

POST /team/invites/accept

Accepterar en inbjudan med token från inbjudningsmeddelandet och lägger till den inloggade personen i det kontots team.

Detta är en handling som utförs av din egen identitet. Logga in som dig själv — det nekas avsiktligt med 403 medan du arbetar inuti någon annans konto.

Begäransfält

Fält Krävs Beskrivning
invite_token Ja Token från länken i inbjudningsmeddelandet.

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 När
400 invite_token saknas, eller så är inbjudan för ditt eget konto.
403 Sessionen arbetar inuti ett annat konto, eller så skickades inbjudan till en annan e-postadress än den du är inloggad med.
404 Inbjudan finns inte eller har redan använts.
429 Kontots platser fylldes mellan inbjudan och ditt godkännande.
504 Inbjudan har gått ut. Be avsändaren att skicka den på nytt.

Avböj en inbjudan

POST /team/invites/decline

Avböjer en inbjudan med token från e-postmeddelandet. Precis som vid godkännande är detta en handling som utförs av din egen identitet och nekas medan du arbetar inuti ett annat 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."
}

Avdelningar

En avdelning är en namngiven grupp i ditt team — Försäljning, Kundsupport, HR. Den ger en lead ett ägande team, kan själv ta hand om nya konversationer och kan användas för att begränsa vad en medlem ser.

Dessa fyra slutpunkter kräver en API-nyckel. Till skillnad från resten av den här sidan autentiseras de som alla andra slutpunkter i API:et (se Autentisering). En inloggad session fungerar också: läsning kräver contacts vid view, och att skapa, ändra eller ta bort kräver team_management vid edit.

Avdelningsobjektet

Fält Typ Beskrivning
id string Avdelningens ID. Använd det i contact_scope_axes.departments och i sökvägarna nedan.
name string Vad teamet heter. Upp till 60 tecken, unikt för kontot.
color string | null Accentfärg som #rrggbb, eller null.
member_uids string[] Teammedlemmarna i denna avdelning. Kan inkludera kontoägaren.
auto_assign_enabled boolean Om en lead som arkiveras under denna avdelning också tilldelas någon i den. false innebär att avdelningen arbetar från en delad kö.
routing_agents string[] Nya konversationer som hanteras av dessa AI-agenter arkiveras automatiskt under denna avdelning. Tomt innebär ingen agentregel.
routing_channels string[] Nya konversationer i dessa kanaler arkiveras här automatiskt. Tomt innebär ingen kanalregel.
created_by string | null Vem som skapade den.

När både routing_agents och routing_channels är inställda måste en konversation matcha båda för att arkiveras här — det är så du ger ett team “supportagenten, men bara på WhatsApp”.

Ett konto kan ha upp till 50 avdelningar.

Lista avdelningar

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

Skapa en avdelning

POST /team/departments

Begäransfält

Fält Krävs Beskrivning
name Ja Upp till 60 tecken. Får inte matcha en befintlig avdelning.
color Nej #rrggbb hex, eller null.
member_uids Nej Vilka som ingår. Varje UID måste vara kontoägaren eller en aktiv teammedlem.
auto_assign_enabled Nej Standardvärdet är true.
routing_agents Nej Agent-ID:n vars nya chattar hamnar här.
routing_channels Nej Kanalnamn vars nya chattar hamnar här — samma vokabulär 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 När
400 name saknas eller är för lång, color är inte #rrggbb, ett kanalnamn känns inte igen, ett listat UID är inte en aktiv medlem i detta team, eller så har du redan 50 avdelningar.
409 En avdelning med det namnet finns redan.

Uppdatera en avdelning

PATCH /team/departments/{departmentId}

Ändrar en avdelning. Endast de fält du skickar ändras.

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

Om inga kända fält skickas returneras 400; en okänd avdelning returnerar 404; ett namn som krockar med en annan avdelning returnerar 409.

Ta bort en avdelning

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 går inte att ta bort en avdelning som någon är begränsad till. Svaret 400 anger de medlemmar vars synlighet är begränsad till den, så att du kan ändra deras omfattning först. Detta är avsiktligt: att tyst ta bort begränsningen skulle ge dem tillgång till hela din kundbas utan att det märks.

Kontakter som sorterats under en borttagen avdelning skrivs inte om — de slutar helt enkelt visa en avdelning, och nästa gång du sorterar dem kommer det att fungera.


Kontrollera dina egna behörigheter

GET /team/permissions

Returnerar vad den inloggade personen har tillåtelse att göra i det konto de för närvarande arbetar i. Använd detta för att dölja knappar som en medlem inte kan använda, istället för att låta dem upptäcka begränsningen genom ett felmeddelande.

cURL

curl "https://api.youraiconnector.com/v1/team/permissions" \
  -H "Authorization: Bearer FIREBASE_ID_TOKEN"

Svar — kontoinnehavaren

{
  "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 — en teammedlem som arbetar i ett 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 är owner när den inloggade personen är kontoinnehavaren; annars är det deras teamroll. member finns endast i teamläge och innehåller contact_scope, contact_scope_unassigned och contact_scope_axes när deras medlemskap har dessa.


Sessions-tokens

Fem slutpunkter skapar en engångs-inloggningstoken för att växla mellan konton. De svarar alla på samma sätt:

{
  "success": true,
  "customToken": "eyJhbGciOi…"
}

Token byts ut mot en session med Firebase-klientens SDK. Det är inte en API-nyckel och kan inte skickas som en sådan, vilket är anledningen till att dessa slutpunkter endast är användbara i en förstapartsapp.

Slutpunkt Vad den gör Brödtext
POST /team/tokens/team-member Låter en teammedlem börja arbeta i ett konto de tillhör. account_owner_uid (obligatorisk)
POST /team/tokens/return-from-team Tar dem tillbaka till deras eget konto.
POST /team/tokens/assist Låter Your AI Connector-personal öppna en kunds konto för att hjälpa till. Endast för personal. customerUid
POST /team/tokens/return-to-admin Avslutar en assistsession och returnerar personalen till deras eget konto.
POST /team/tokens/agency-assist Låter en byrå öppna ett av sina klientunderkonton — eller, om den anropas utan ett, återgå till byråkontot. subAccountUid (valfri)

Var och en nekar med 403 när sessionen inte har rätt till det: inte medlem i det kontot, inte personal, underkontot tillhör inte din byrå eller har inte beviljats dig, eller så är sessionen för närvarande inte i det läge som slutpunkten kräver.


Tilldela en plattformsroll

POST /team/users/{targetUid}/role

Ställer in en användares plattformsrollUser, Dev, Support eller Agency. Detta är inte ett teammedlemskap: det är vilken typ av Your AI Connector-konto någon har.

Denna slutpunkt är begränsad till Your AI Connector-personal, och den sista kvarvarande Dev kan inte nedgraderas. Listad för fullständighet; den är inte en del av att hantera ditt eget team.

{
  "success": true,
  "targetUid": "uid_sam",
  "role": "Agency",
  "claimUpdated": true
}
Status När
400 role saknas eller är inte en av de fyra, eller detta skulle ta bort den sista Dev.
403 Du är inte personal, eller sessionen arbetar inuti ett annat konto.
404 Ingen sådan användare.

Team API-fel

Team-slutpunkter returnerar standardfel-kuvertet, alltid med error_code tillsammans med HTTP-statusen:

{
  "success": false,
  "error_code": 403,
  "error": "Cannot grant \"full\" access to \"billing\" — exceeds your own permissions."
}
Status När det händer på en team-slutpunkt
400 Ett obligatoriskt fält saknas eller är ogiltigt, eller så är åtgärden inte tillåten i detta tillstånd (återaktivera en borttagen medlem, stänga av ägaren, ta bort en avdelning som någon är begränsad till).
401 Du skickade en API-nyckel till en slutpunkt som kräver en inloggad person — se Autentisering.
403 Du har inte team_management-behörighet, ändringen överskrider din egen åtkomst, eller åtgärden nekas när du arbetar inuti ett annat konto.
404 Ingen sådan medlem, inbjudan, avdelning eller användare.
409 Redan teammedlem, en väntande inbjudan finns redan, eller en avdelning med det namnet finns.
429 Teamplatserna är fulla, gränsen på 20 inbjudningar per dag är nådd, eller så har du nått API-hastighetsgränsen.
504 Inbjudan du försökte acceptera har gått ut.

De delade koderna som varje slutpunkt kan returnera — 429 (hastighetsgräns) och 500 — listas med vägledning för återförsök i Fel & Sidnumrering.


Relaterat

  • Teamhantering — samma funktioner i instrumentpanelen, med skärmdumpar.
  • Autentisering — hur man skickar en Firebase ID-token istället för en API-nyckel.
  • Kontakter API — de kontakter som en medlems synlighetsbegränsningar gäller för.