Your AI Connector Docs

Team API

הצוות שלך הוא כל מי שעובד בתוך החשבון שלך מלבדך — מנהלים, נציגים וצופים בעלי הרשאת קריאה בלבד — בתוספת ההזמנות ששלחת והמחלקות שאליהן ארגנת אותם. ה-Team API הוא הגרסה התכנותית של הגדרות ← צוות: הוספה והסרה של אנשים, הגדרה של מה כל אחד מהם יכול לראות ולעשות, שליחה ומעקב אחר הזמנות, וניהול מחלקות.

כל נקודות הקצה להלן יחסיות לכתובת ה-URL הבסיסית https://api.youraiconnector.com/v1. עבור גרסת לוח הבקרה של כל מה שמופיע בדף זה, ראה ניהול צוות.


אימות: נקודות קצה אלו דורשות אדם מחובר

זהו החלק היחיד ב-API שמפתח API אינו יכול להשתמש בו. כל נקודת קצה של /team, למעט אלו של מחלקות, חייבת להיקרא עם אסימון Firebase ID מתוך הפעלה מחוברת:

Authorization: Bearer <Firebase ID token>

שלח מפתח API במקום זאת והבקשה תידחה עם 401:

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

הסיבה לכך היא שנקודות קצה אלו מחליטות מה לעשות בהתבסס על מי שמחובר: התפקיד שלך, התקרה של מה שמותר לך להעניק למישהו אחר, והאם אתה עובד כרגע בתוך חשבון אחר. מפתח API הוא אינטגרציה, לא אדם, לכן אין אף אחד שעליו הכללים הללו יכולים לחול.

בפועל, המשמעות היא ש-Team API מיועד לאפליקציה של צד ראשון עם משתמש Your AI Connector מחובר (ראה אימות ← אסימון Firebase ID). אינטגרציית שרת-לשרת אינה יכולה לנהל חברי צוות — אין דרך להנפיק אחד מהאסימונים הללו מחוץ לאפליקציה.

החריג: ארבע נקודות הקצה של מחלקות הן נקודות קצה רגילות של API. הן מקבלות את מפתח ה-API שלך בדיוק כמו שאר ה-API, וכן הפעלה מחוברת.

כל תגובה בדף זה עוקבת אחר המעטפת הרגילה: success: true בתוספת השדות של נקודת הקצה ברמה העליונה, או success: false עם error ו-error_code כאשר משהו משתבש.


תפקידים והרשאות

לכל חבר צוות יש תפקיד אחד, שקובע את ברירת המחדל של הגישה שלו ב-12 אזורים באפליקציה. לאחר מכן ניתן לעקוף אזורים בודדים.

תפקיד ערך סיכום
מנהל (Admin) admin הכל מלבד פעולות ברמת החיוב של בעל החשבון.
עורך (Editor) editor יכול ליצור ולשנות דברים. מוצג כנציג באפליקציה.
צופה (Viewer) viewer קריאה בלבד.

כל אזור מוגדר לאחת מארבע רמות: none (מוסתר), view (קריאה בלבד), edit (יצירה ושינוי), full (כולל מחיקה).

אזור מנהל עורך צופה
campaigns מלא עריכה צפייה
contacts מלא עריכה צפייה
messages מלא עריכה צפייה
appointments מלא עריכה צפייה
settings עריכה צפייה ללא
billing עריכה ללא ללא
team_management עריכה ללא ללא
analytics מלא צפייה צפייה
phone_numbers עריכה ללא ללא
integrations עריכה ללא ללא
faqs מלא עריכה צפייה
daily_summaries מלא צפייה צפייה

כדי לחרוג מברירות המחדל של התפקיד, שלח permission_overrides — מערך של אובייקטי { "area": ..., "level": ... }. כל רשומה מחליפה את ברירת המחדל של התפקיד עבור אותו אזור ספציפי; כל מה שלא תפרט ישמור על ברירת המחדל של התפקיד.

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

מי יכול לקרוא לנקודות קצה אלו

  • בעל החשבון תמיד יכול לעשות הכל.
  • חבר צוות זקוק ל-team_management ב-view כדי לקרוא את רשימת הצוות ואת רשימת ההזמנות, ול-edit כדי להוסיף, לשנות, להשעות, להסיר, להזמין, לבטל או לשלוח מחדש. למנהלי מערכת יש edit כברירת מחדל; לעורכים ולצופים יש none, לכן כברירת מחדל רק מנהלי מערכת יכולים לנהל את הצוות.
  • אף אחד לא יכול להעניק גישה ברמה גבוהה משלו. אם תנסה לתת למישהו רמה שאין לך בעצמך — או לערוך, להשעות או להסיר מישהו שהגישה שלו כבר רחבה משלך — הבקשה תידחה עם 403 והודעה המציינת את האזור.

אובייקט חבר הצוות

GET /team/members מחזיר אחד מאלה עבור כל חבר:

שדה סוג תיאור
member_uid string מזהה המשתמש של החבר עצמו. זהו ה-{memberUid} בנתיבים להלן.
account_owner_uid string החשבון שבו הוא חבר.
member_email string כתובת האימייל שלו.
member_display_name string השם שמוצג עבורו באפליקציה.
role string admin, editor או viewer.
permission_overrides array החריגים שלו לכל אזור. [] כאשר הוא מסתמך אך ורק על ברירות המחדל של התפקיד.
status string active או suspended.
auto_assign_enabled boolean | null האם ניתן להקצות לו אנשי קשר חדשים באופן אוטומטי. null אומר שזה מעולם לא שונה, מה שמתנהג כ-true.
created_by string מי הוסיף אותו.
created_at string | null חותמת זמן בפורמט ISO 8601.
updated_at string | null חותמת זמן בפורמט ISO 8601.

חברים שהוסרו לא מוחזרים — הרשימה כוללת חברים פעילים ומושעים בלבד.

מגבלות נראות הן לכתיבה בלבד כאן. contact_scope, contact_scope_axes ו-sub_account_access (ראה הגבלת מה שחבר יכול לראות) ניתנים להגדרה בעת יצירה, עדכון והזמנה, אך נקודת קצה זו אינה מחזירה אותם.


רשימת חברי צוות

GET /team/members

מחזיר את רשימת הצוות בתוספת ספירת המושבים של התוכנית שלך, כך שתוכל להציג “3 מתוך 5 מושבים” ולדעת מתי הזמנה עומדת להידחות.

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()

תגובה

{
  "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 הוא null כאשר לתוכנית שלך אין מכסת מושבים. seats_used סופר חברים פעילים בלבד — השעיה או הסרה של מישהו מפנה את המושב שלו באופן מיידי.


הוספת חבר צוות ישירות

POST /team/members

מצרף מישהו לצוות שלך באופן מיידי, ללא צורך בהזמנה.

פעולה זו אינה שולחת דוא"ל. איש אינו מקבל הודעה על כך שנוסף, ואם לא היה להם חשבון Your AI Connector קיים, לחשבון שנוצר עבורם אין סיסמה, לכן הם לא יוכלו להיכנס עד שיאפסו אותה. השתמש ב-שלח הזמנה אלא אם כן יש לך דרך משלך להודיע לאדם ולדאוג לכך שייכנס.

שדות הבקשה

שדה נדרש תיאור
email כן כתובת הדוא"ל של חבר הצוות.
display_name כן השם שיוצג עבורו באפליקציה.
role כן admin, editor או viewer.
permission_overrides לא חריגות לפי אזור מברירת המחדל של התפקיד.
contact_scope לא all או assigned — ראה הגבלת מה שחבר יכול לראות.
contact_scope_unassigned לא עם assigned, אפשר להם גם לראות אנשי קשר שעדיין לא שייכים לאיש.
contact_scope_axes לא הגבל אותם לסוכנים, ערוצים או מחלקות בעלי שם.
sub_account_access לא סוכנויות בלבד — אילו תת-חשבונות לקוח הם רשאים לפתוח.

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();

תגובה201 Created

{
  "success": true,
  "team_member_id": "owner_uid_123_uid_sam",
  "member_uid": "uid_sam",
  "message": "Team member created successfully."
}
סטטוס מתי
400 email, display_name או role חסרים, התפקיד אינו אחד משלושת התפקידים, או שניסית להוסיף את עצמך.
403 אין לך הרשאה לנהל את הצוות, או שניסית להעניק גישה רחבה יותר משלך.
409 אותו אדם כבר חבר פעיל בצוות שלך.
429 מכסת המושבים בצוות של התוכנית שלך מלאה.

הוספת אדם שהיה בעבר מושעה או הוסר מחזירה אותו לפעילות במקום להיכשל.


עדכון חבר צוות

PATCH /team/members/{memberUid}

משנה את התפקיד, ההרשאות, הנראות, גישת הלקוח של חבר, או האם הוא לוקח חלק בהקצאת אנשי קשר אוטומטית. שלח רק את השדות שברצונך לשנות; כל מה שתשמיט ישמור על ערכו הנוכחי.

שדות הבקשה

שדה תיאור
role admin, editor או viewer.
permission_overrides מחליף את כל רשימת החריגות שלו. שלח [] כדי להחזיר אותו לברירות המחדל של התפקיד.
status רק active מתקבל, כדי להחזיר חבר מושעה. כדי להשעות מישהו, השתמש ב-נקודת הקצה להשעיה.
auto_assign_enabled true או false.
contact_scope all או assigned.
contact_scope_unassigned true או false.
contact_scope_axes ראה הגבלת מה שחבר יכול לראות.
sub_account_access סוכנויות בלבד.

זוהי נקודת הקצה היחידה שבה null פירושו “נקה”. שליחת "contact_scope": null, "contact_scope_axes": null או "sub_account_access": null מסירה את ההגבלה לחלוטין ומחזירה את החבר למצב שבו הוא רואה הכל. בעת יצירה והזמנה, null פשוט אומר “לא סופק”.

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

תגובה

{
  "success": true,
  "message": "Team member updated successfully."
}
סטטוס מתי
400 ערך status או auto_assign_enabled לא תקין, או שניסית להפעיל מחדש חבר שהוסר (חברים שהוסרו חייבים לקבל הזמנה מחדש).
403 אין לך הרשאה, או שהשינוי יצור או יערוך גישה רחבה יותר משלך.
404 אין חבר צוות כזה.

השעיית חבר צוות

POST /team/members/{memberUid}/suspend

משעה מישהו: הוא שומר על מקומו בצוות אך מאבד את הגישה. השתמש בזה במקום בהסרה כאשר ההפסקה זמנית — החזר אותם עם PATCH /team/members/{memberUid} ו-{"status": "active"}.

cURL

curl -X POST "https://api.youraiconnector.com/v1/team/members/uid_sam/suspend" \
  -H "Authorization: Bearer FIREBASE_ID_TOKEN"

תגובה

{
  "success": true,
  "message": "Team member suspended successfully."
}

חבר מושעה מפנה את המושב שלו, כך שתוכל להזמין מישהו אחר במקומו. הגישה שלו מסתיימת כאשר אסימון ההפעלה הנוכחי שלו מתרענן בפעם הבאה, מה שיכול לקחת עד שעה — הסר אותם במקום אם אתה זקוק לכך שזה יהיה מיידי.

סטטוס מתי
400 ניסית להשעות את בעל החשבון, או חבר שכבר מושעה או הוסר.
403 הגישה שלהם רחבה יותר משלך.
404 אין חבר צוות כזה.

הסרת חבר צוות

DELETE /team/members/{memberUid}

מסיר אדם מהצוות שלך ומפנה את המושב שלו. הוא מנותק מהמערכת ומאבד גישה לחשבון שלך; פרטי ההתחברות שלו נשארים ללא שינוי.

cURL

curl -X DELETE "https://api.youraiconnector.com/v1/team/members/uid_sam" \
  -H "Authorization: Bearer FIREBASE_ID_TOKEN"

תגובה

{
  "success": true,
  "message": "Team member removed successfully."
}

ההסרה היא קבועה מצדך: לא ניתן להפעיל מחדש חבר שהוסר באמצעות נקודת הקצה של העדכון — הזמן אותו שוב אם שינית את דעתך. כתובת האימייל שלו מוסרת גם מרשימת ההתראות של החשבון שלך.

סטטוס מתי
400 ניסית להסיר את בעל החשבון.
403 הגישה שלו רחבה יותר משלך.
404 אין חבר צוות כזה.

הגבלת מה שחבר יכול לראות

שלושה שדות אופציונליים, המתקבלים ב-הוספה, עדכון ו-הזמנה, קובעים כמה מהחשבון אדם יכול לראות. הם מצטברים: חבר שמוגבל ביותר מאחד מהם, מוגבל על ידי כולם.

contact_scopeall (ברירת המחדל: כל איש קשר ושיחה) או assigned (רק אלו שהוקצו לו). עם assigned, הוסף את "contact_scope_unassigned": true כדי לאפשר לו לראות גם אנשי קשר שעדיין לא שייכים לאף אחד.

contact_scope_axes — מגביל אותו לסוכנים, ערוצים או מחלקות בשמם:

שדה סוג תיאור
agents string[] מזהי סוכנים. הם רואים רק צ’אטים שניתבו לאחד מהסוכנים הללו. מקסימום 200.
channels string[] שמות ערוצים — whatsapp, whatsapp_web, sms, instagram, instagram_private, messenger, facebook, chat_widget, telegram, line, viber, tiktok, imessage, email, linkedin, skool, custom, custom_channel. מקסימום 200.
departments string[] מזהי מחלקות (ראה מחלקות). הם רואים רק לידים שסווגו תחתיהם. מקסימום 200.
include_unrouted boolean כאשר agents מוגדר, הצג גם צ’אטים שאף סוכן לא מטפל בהם. כבוי כברירת מחדל. מתעלמים מכך כאשר agents ריק.
include_undepartmented boolean כאשר departments מוגדר, הצג גם צ’אטים שאינם באף מחלקה. כבוי כברירת מחדל. מתעלמים מכך כאשר departments ריק.

מזהי סוכנים ומחלקות לא נבדקים בעת השמירה — מזהה שלא קיים פשוט לא תואם לכלום, מה שמופיע כתיבת דואר נכנס ריקה במקום כשגיאה. שמות ערוצים כן נבדקים: שם לא מזוהה נדחה עם 400.

לא ניתן להגדיר אף אחד משלושת אלו עבור בעל החשבון — בקשה כזו נדחית עם 400.


רשימת הזמנות

GET /team/invites

ההזמנות ששלחת, מהחדשה ביותר לישנה ביותר, כדי שתוכל לראות מי טרם אישר את ההזמנה.

פרמטרים של שאילתה

פרמטר נדרש תיאור
status לא החזר רק הזמנות במצב זה — pending, accepted, declined, cancelled או expired.

cURL

curl "https://api.youraiconnector.com/v1/team/invites?status=pending" \
  -H "Authorization: Bearer FIREBASE_ID_TOKEN"

תגובה

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

אסימון ההזמנה (token) לעולם אינו מוחזר — הוא קיים רק בהודעת האימייל שנשלחה.


שליחת הזמנה

POST /team/invites

שולח למישהו הזמנה להצטרף לצוות שלך באמצעות אימייל. זו הדרך הרגילה להוסיף חבר צוות: הוא לוחץ על הקישור, נכנס לחשבון שלו ומאשר. אם אין לו עדיין חשבון Your AI Connector, נוצר עבורו חשבון והאימייל ידריך אותו בתהליך הגדרת סיסמה.

שדות הבקשה

שדה נדרש תיאור
email כן לאן לשלוח את ההזמנה.
role כן admin, editor או viewer.
permission_overrides לא חריגים לפי אזור, מיושמים ברגע שהם מאשרים.
contact_scope לא מיושם כאשר הם מאשרים.
contact_scope_unassigned לא מיושם כאשר הם מאשרים.
contact_scope_axes לא מיושם כאשר הם מאשרים.
sub_account_access לא לסוכנויות בלבד. מיושם כאשר הם מאשרים.

הגדרת ההרשאות מראש חוסכת את הצורך לערוך את החבר לאחר מכן — הכל מועתק לחברות שלהם ברגע שהם מאשרים.

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();

תגובה201 Created

{
  "success": true,
  "invite_id": "inv_abc123",
  "message": "Team invite sent successfully."
}

דברים שיש לתכנן

  • הזמנות פוקעות לאחר 7 ימים. ניתן לשלוח מחדש הזמנה שפגה, מה שמתחיל תקופה חדשה של 7 ימים.
  • הזמנות ממתינות תופסות מקום. בניגוד להוספת חבר ישירות, בדיקת המקומות כאן סופרת חברים פעילים בתוספת הזמנות ממתינות, לכן חשבון שכל המקומות בו תפוסים יקבל סירוב לפני שהאימייל יישלח.
  • 20 הזמנות ביום, נספרות לכל חשבון עבור שליחה ושליחה מחדש כאחד.
סטטוס מתי
400 email חסר או שהתפקיד אינו תקין.
403 אין לך הרשאה לנהל את הצוות, או שניסית להעניק גישה ברמה גבוהה משלך.
409 קיימת כבר הזמנה ממתינה עבור אימייל זה, או שהאדם כבר נמצא בצוות שלך.
429 המקומות בצוות בתוכנית שלך מלאים, או שהגעת למגבלה של 20 הזמנות ביום. ההודעה error תציין מה מהם.

ביטול הזמנה

DELETE /team/invites/{inviteId}

מבטל הזמנה לפני שהיא התקבלה. הקישור במייל מפסיק לעבוד.

cURL

curl -X DELETE "https://api.youraiconnector.com/v1/team/invites/inv_abc123" \
  -H "Authorization: Bearer FIREBASE_ID_TOKEN"

תגובה

{
  "success": true,
  "message": "Team invite cancelled."
}

ניתן לבטל הזמנות מסוג pending ו-expired. הזמנה שכבר התקבלה, נדחתה או בוטלה תחזיר 400; הזמנה שאינה שלך תחזיר 403; מזהה לא ידוע יחזיר 404.


שליחה מחדש של הזמנה

POST /team/invites/{inviteId}/resend

שולח את מייל ההזמנה שוב — למקרה שהוא אבד או הגיע לספאם. עובד על הזמנות מסוג pending ו-expired, ומאפס את תוקף ההזמנה ל-7 ימים מהיום.

cURL

curl -X POST "https://api.youraiconnector.com/v1/team/invites/inv_abc123/resend" \
  -H "Authorization: Bearer FIREBASE_ID_TOKEN"

תגובה

{
  "success": true,
  "message": "Team invite resent successfully."
}

המייל החדש מכיל קישור חדש, ו-הקישור הישן ממשיך לעבוד גם הוא, כך שאדם שמוצא את המייל הראשון מאוחר יותר לא נתקע. שליחה מחדש נספרת כחלק ממכסת 20 ההזמנות היומית, והחייאת הזמנה שפג תוקפה בודקת מחדש את המקומות הפנויים שלך — תוכנית מלאה תידחה עם 429.


קבלת הזמנה

POST /team/invites/accept

מקבל הזמנה באמצעות האסימון (token) מתוך מייל ההזמנה, ומצרף את המשתמש המחובר לצוות של אותו חשבון.

זוהי פעולה המבוצעת תחת הזהות האישית שלך. התחבר כעצמך — הפעולה תידחה במכוון עם 403 בזמן שאתה עובד בתוך חשבון של מישהו אחר.

שדות הבקשה

שדה נדרש תיאור
invite_token כן האסימון מתוך קישור מייל ההזמנה.

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

תגובה

{
  "success": true,
  "team_member_id": "owner_uid_123_uid_sam",
  "account_owner_uid": "owner_uid_123",
  "message": "Team invite accepted successfully."
}
סטטוס מתי
400 invite_token חסר, או שההזמנה מיועדת לחשבון שלך.
403 הסשן פעיל בתוך חשבון אחר, או שההזמנה נשלחה לכתובת אימייל שונה מזו שאיתה אתה מחובר.
404 ההזמנה אינה קיימת או שכבר נעשה בה שימוש.
429 המקומות בחשבון התמלאו בין מועד ההזמנה לבין מועד הקבלה שלך.
504 תוקף ההזמנה פג. בקש מהשולח לשלוח אותה מחדש.

דחיית הזמנה

POST /team/invites/decline

דוחה הזמנה באמצעות האסימון מתוך המייל. בדומה לקבלה, זוהי פעולה המבוצעת תחת הזהות האישית שלך והיא תידחה בזמן שאתה עובד בתוך חשבון אחר.

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

תגובה

{
  "success": true,
  "message": "Team invite declined."
}

מחלקות

מחלקה היא קבוצה בעלת שם בצוות שלך — מכירות, תמיכת לקוחות, משאבי אנוש. היא מעניקה לליד צוות בעלים, יכולה לתבוע שיחות חדשות בעצמה, וניתן להשתמש בה כדי להגביל את מה שחבר צוות רואה.

ארבע נקודות קצה אלו דורשות מפתח API. בניגוד לשאר הדף הזה, הן מבצעות אימות כמו כל נקודת קצה אחרת ב-API (ראו אימות). הפעלה מחוברת עובדת גם היא: קריאה דורשת contacts ב-view, ויצירה, שינוי או מחיקה דורשים team_management ב-edit.

אובייקט המחלקה

שדה סוג תיאור
id string מזהה המחלקה. השתמש בו ב-contact_scope_axes.departments ובנתיבים להלן.
name string שם הצוות. עד 60 תווים, ייחודי בחשבון.
color string | null צבע דגש כ-#rrggbb, או null.
member_uids string[] חברי הצוות במחלקה זו. עשוי לכלול את בעל החשבון.
auto_assign_enabled boolean האם ליד שסווג תחת מחלקה זו מועבר גם למישהו בה. false אומר שהמחלקה עובדת מתור משותף.
routing_agents string[] שיחות חדשות המטופלות על ידי סוכני AI אלו מסווגות תחת מחלקה זו באופן אוטומטי. ריק אומר שאין כלל סוכן.
routing_channels string[] שיחות חדשות בערוצים אלו מסווגות כאן באופן אוטומטי. ריק אומר שאין כלל ערוץ.
created_by string | null מי יצר אותה.

כאשר גם routing_agents וגם routing_channels מוגדרים, שיחה חייבת להתאים לשניהם כדי להיות מסווגת כאן — כך אתה נותן לצוות אחד “את סוכן התמיכה, אבל רק ב-WhatsApp”.

חשבון יכול לכלול עד 50 מחלקות.

רשימת מחלקות

GET /team/departments

curl "https://api.youraiconnector.com/v1/team/departments?apiKey=YOUR_API_KEY"

תגובה

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

יצירת מחלקה

POST /team/departments

שדות הבקשה

שדה נדרש תיאור
name כן עד 60 תווים. אסור שיהיה זהה למחלקה קיימת.
color לא #rrggbb הקסדצימלי, או null.
member_uids לא מי נמצא בו. כל UID חייב להיות בעל החשבון או חבר צוות פעיל.
auto_assign_enabled לא ברירת המחדל היא true.
routing_agents לא מזהי סוכנים שצ’אטים חדשים שלהם מגיעים לכאן.
routing_channels לא שמות ערוצים שצ’אטים חדשים שלהם מגיעים לכאן — אותה אוצר מילים כמו 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"]

תגובה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"
  }
}
סטטוס מתי
400 name חסר או ארוך מדי, color אינו #rrggbb, שם ערוץ אינו מזוהה, UID ברשימה אינו חבר פעיל בצוות זה, או שכבר יש לך 50 מחלקות.
409 מחלקה בשם זה כבר קיימת.

עדכון מחלקה

PATCH /team/departments/{departmentId}

משנה מחלקה. רק השדות שאתה שולח ישונו.

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

תגובה

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

שליחת שדות שאינם מזוהים מחזירה 400; מחלקה לא ידועה מחזירה 404; שם שמתנגש עם מחלקה אחרת מחזיר 409.

מחיקת מחלקה

DELETE /team/departments/{departmentId}

curl -X DELETE "https://api.youraiconnector.com/v1/team/departments/dep_abc123?apiKey=YOUR_API_KEY"

תגובה

{
  "success": true,
  "deleted": "dep_abc123"
}

מחיקת מחלקה שמישהו מוגבל אליה מסורבת. התגובה 400 מציינת את שמות החברים שהנראות שלהם מצומצמת אליה, כדי שתוכל לשנות את היקף ההרשאות שלהם תחילה. זה מכוון: הסרת ההגבלה בשקט הייתה מעניקה להם גישה לכל בסיס הלקוחות שלך מבלי שיהיה לכך תיעוד.

אנשי קשר שתויקו תחת מחלקה שנמחקה לא עוברים עדכון — הם פשוט מפסיקים להציג מחלקה, ובפעם הבאה שתתייק אותם, זה יישמר.


בדוק את ההרשאות שלך

GET /team/permissions

מחזיר מה מותר לאדם המחובר לעשות בחשבון שבו הוא עובד כרגע. השתמש בזה כדי להסתיר כפתורים שחבר אינו יכול להשתמש בהם, במקום לתת לו לגלות את המגבלה דרך שגיאה.

cURL

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

תגובה — בעל החשבון

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

תגובה — חבר צוות העובד בתוך חשבון

{
  "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 הוא owner כאשר האדם המחובר הוא בעל החשבון; אחרת, זהו תפקיד הצוות שלו. member קיים רק במצב צוות, ונושא את contact_scope, contact_scope_unassigned ו-contact_scope_axes כאשר החברות שלהם כוללת אותם.


אסימוני הפעלה (Session tokens)

חמישה נקודות קצה מנפיקות אסימון כניסה חד-פעמי למעבר בין חשבונות. כולם עונים באותה דרך:

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

האסימון מוחלף בהפעלה (session) עם ה-SDK של לקוח Firebase. זה אינו מפתח API ולא ניתן לשלוח אותו ככזה, וזו הסיבה שנקודות קצה אלו שימושיות רק בתוך אפליקציה של צד ראשון.

נקודת קצה מה היא עושה גוף
POST /team/tokens/team-member מאפשרת לחבר צוות להתחיל לעבוד בתוך חשבון שהוא שייך אליו. account_owner_uid (נדרש)
POST /team/tokens/return-from-team מחזירה אותם החוצה, לחשבון שלהם.
POST /team/tokens/assist מאפשרת לצוות Your AI Connector לפתוח חשבון של לקוח כדי לעזור. צוות בלבד. customerUid
POST /team/tokens/return-to-admin מסיימת הפעלת סיוע ומחזירה את הצוות לחשבון שלהם.
POST /team/tokens/agency-assist מאפשרת לסוכנות לפתוח אחד מחשבונות המשנה של לקוחותיה — או, אם נקראת ללא אחד, לחזור לחשבון הסוכנות. subAccountUid (אופציונלי)

כל אחד מהם מסרב עם 403 כאשר הסשן אינו זכאי לכך: אינו חבר בחשבון זה, אינו צוות, חשבון המשנה אינו שייך לסוכנות שלך או שלא הוענקה לך גישה אליו, או שהסשן אינו נמצא כרגע במצב שבו נקודת הקצה פועלת.


הקצאת תפקיד פלטפורמה

POST /team/users/{targetUid}/role

מגדיר את תפקיד הפלטפורמה של משתמש — User, Dev, Support או Agency. זו אינה חברות בצוות: זהו סוג חשבון ה-Your AI Connector שיש לאדם מסוים.

נקודת קצה זו מוגבלת לצוות Your AI Connector, ולא ניתן להוריד בדרגה את ה-Dev האחרון שנותר. מופיע כאן לשם השלמות; זה אינו חלק מניהול הצוות שלך.

{
  "success": true,
  "targetUid": "uid_sam",
  "role": "Agency",
  "claimUpdated": true
}
סטטוס מתי
400 role חסר או אינו אחד מארבעת הערכים, או שפעולה זו תסיר את ה-Dev האחרון.
403 אינך חלק מהצוות, או שהסשן פועל בתוך חשבון אחר.
404 אין משתמש כזה.

שגיאות API של צוות

נקודות קצה של צוות מחזירות את מעטפת השגיאה הסטנדרטית, תמיד עם error_code לצד סטטוס ה-HTTP:

{
  "success": false,
  "error_code": 403,
  "error": "Cannot grant \"full\" access to \"billing\" — exceeds your own permissions."
}
סטטוס מתי זה קורה בנקודת קצה של צוות
400 שדה נדרש חסר או לא תקין, או שהפעולה אינה מותרת במצב זה (הפעלה מחדש של חבר שהוסר, השעיית הבעלים, מחיקת מחלקה שמישהו מוגבל אליה).
401 שלחת מפתח API לנקודת קצה הדורשת אדם מחובר — ראה אימות.
403 אין לך הרשאת team_management, השינוי חורג מהגישה שלך, או שהפעולה מסורבת בזמן עבודה בתוך חשבון אחר.
404 אין חבר, הזמנה, מחלקה או משתמש כזה.
409 כבר חבר צוות, קיימת הזמנה ממתינה, או שקיימת מחלקה בשם זה.
429 מכסות הצוות מלאות, הגיעה מגבלת 20 ההזמנות ביום, או שהגעת למגבלת קצב ה-API.
504 ההזמנה שניסית לקבל פגה.

הקודים המשותפים שכל נקודת קצה יכולה להחזיר — 429 (מגבלת קצב) ו-500 — מפורטים עם הנחיות לניסיון חוזר ב-שגיאות ועימוד.


קשור

  • ניהול צוות — אותן תכונות בלוח הבקרה, עם צילומי מסך.
  • אימות — כיצד לשלוח אסימון Firebase ID במקום מפתח API.
  • API של אנשי קשר — אנשי הקשר שמגבלות הנראות של חבר חלות עליהם.