התחברות

רישיונות

API לאימות רישיונות, הפעלה וניהול מכשירים

ניהול אימות רישיונות, הפעלה ומעקב אחר מכשירים.

הגבלת קצב: נקודות הקצה של הרישיונות מוגבלות בקצב לכל כתובת IP בחלון קבוע של 60 שניות. חריגה מהמגבלה מחזירה 429 Too Many Requests עם הכותרת Retry-After: 60 עד שהחלון מתאפס.

אימות רישיון

אימות והפעלה של מפתח רישיון. נקודת קצה זו מוגבלת ל-5 בקשות לדקה לכל כתובת IP.

נקודת קצה: POST /api/licenses/validate

פרמטרסוגחובהתיאור
license_keystringכןמפתח הרישיון לאימות
device_idstringכןמזהה יציב וייחודי של המכשיר שמופעל. יש לשלוח את אותו ערך בכל פעם עבור מכשיר נתון, באמצעותו המכשיר תופס את העמדה שלו ותופס אותה מחדש
curl -X POST "$BASE_URL/api/licenses/validate" \
  -H "Content-Type: application/json" \
  -d '{"license_key":"XXXX-XXXX-XXXX-XXXX","device_id":"device_abc123"}'

תגובה (הצלחה):

{
  "valid": true,
  "license": {
    "id": "uuid",
    "status": "active",
    "product": { "id": "uuid", "name": "studio", "features": ["client_api", "api_keys"] },
    "activation_date": "2024-01-01T00:00:00Z",
    "expiration_date": "2025-12-31T23:59:59Z",
    "current_activations": 1
  }
}

תגובה (שגיאה):

{
  "statusCode": 400,
  "statusMessage": "Invalid licence key or validation failed"
}
סטטוסמתי
400license_key או device_id חסרים, ריקים או ארוכים מדי, או שהמפתח אינו מוכר, אינו פעיל או שתוקפו פג
409כל העמדות ברישיון כבר תפוסות על ידי מכשירים אחרים, ואף אחד מהם לא היה במצב סרק מספיק זמן כדי שניתן יהיה להשיב את העמדה
429חריגה ממגבלת הקצב, ראו הגבלת קצב
מטעמי אבטחה, כל שגיאות אימות הרישיון מחזירות את אותה הודעה כללית כדי למנוע מתקפות מניה (enumeration). לכן תגובת 400 לעולם אינה מציינת איזה שדה גרם לשגיאה, ויש לוודא ש-license_key וגם device_id קיימים ואינם ריקים לפני ניסיון חוזר.

ביטול הפעלת רישיון

נדרש אימות זהות

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

ביטול הפעלה של רישיון במכשיר מסוים או בכל המכשירים.

נקודת קצה: POST /api/licenses/deactivate

פרמטרסוגחובהתיאור
license_keystringכןמפתח הרישיון לביטול ההפעלה
device_idstringלאמכשיר מסוים לביטול ההפעלה (יש להשמיט כדי לבטל בכל המכשירים)
curl -X POST "$BASE_URL/api/licenses/deactivate" \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{"license_key":"XXXX-XXXX-XXXX-XXXX","device_id":"device_abc123"}'

תגובה:

{
  "success": true,
  "message": "Device deactivated successfully",
  "deactivated_count": 1,
  "remaining_activations": 4
}
למרות שמו, remaining_activations הוא מספר העמדות שעדיין בשימוש לאחר ביטול ההפעלה, כלומר מספר המכשירים הייחודיים שנותרו פעילים ברישיון. זה אינו מספר העמדות הפנויות. לכן ביטול ההפעלה בכל המכשירים מחזיר 0. את מספר העמדות הפנויות יש לחשב כ-activation_limit - remaining_activations, באמצעות activation_limit מתוך GET /api/licenses/status. ללא device_id ההודעה היא "All devices deactivated successfully"; deactivated_count הוא מספר העמדות שקריאה זו שחררה.

סטטוס רישיון

נדרש אימות זהות

נדרשת עוגיית ההתחברות session_token של בעל הרישיון (ראו אימות זהות), וניתן לבדוק רק רישיון שבבעלותכם.

בדיקת הסטטוס הנוכחי של רישיון. מוגבל ל-30 בקשות לדקה לכל כתובת IP.

נקודת קצה: GET /api/licenses/status

פרמטרסוגחובהתיאור
license_keyqueryכןמפתח הרישיון לבדיקה
curl -X GET "$BASE_URL/api/licenses/status?license_key=XXXX-XXXX-XXXX-XXXX" \
  -b cookies.txt

תגובה:

{
  "license": {
    "id": "uuid",
    "license_key": "XXXX-XXXX-XXXX-XXXX",
    "status": "active",
    "purchase_date": "2024-01-01T00:00:00Z",
    "activation_date": "2024-01-01T00:00:00Z",
    "expiration_date": "2025-12-31T23:59:59Z",
    "days_until_expiration": 365,
    "activation_limit": 5,
    "current_activations": 2,
    "available_activations": 3,
    "is_expired": false,
    "is_active": true,
    "product": { "id": "uuid", "name": "Studio 8K", "description": "...", "features": [] },
    "user": { "id": "uuid", "first_name": "Jane", "last_name": "Doe", "email": "user@example.com" }
  },
  "active_devices": [
    {
      "id": "uuid",
      "device_id": "device_abc123",
      "device_name": "Studio Mac",
      "platform": "macos",
      "app_version": "3.1.2",
      "activated_at": "2024-01-01T00:00:00Z",
      "last_seen_at": "2024-01-02T09:00:00Z",
      "ip_address": "192.168.1.1"
    }
  ]
}

מחזור החיים של רישיון

הגבלת קצב

נקודות הקצה של הרישיונות מוגבלות בקצב לכל כתובת IP בחלון קבוע של 60 שניות. בתגובת 429 מוחזרת כותרת אחת:

כותרתתיאור
Retry-Afterמספר השניות עד שהחלון מתאפס (תמיד 60)

מגבלות קצב לפי נקודת קצה

נקודת קצהבקשות / 60 שניותרמה
/api/licenses/validate5מחמירה
/api/licenses/status30רגילה
/api/licenses/deactivate30רגילה

POST /api/licenses/validate מחילה את המגבלה המחמירה פעמיים: פעם אחת לכל כתובת IP, ופעם נוספת לפי ה-license_key שנשלח, כך שלא ניתן להפציץ מפתח יחיד מכתובות IP רבות.

חריגה ממגבלה מחזירה 429 Too Many Requests למשך יתרת חלון 60 השניות. אין משך חסימה מדורג או הולך ומחמיר.

סוגי רישיונות

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

רמהלמי היא מיועדתתוספות בולטות לעומת הרמה שמתחתיה
freeתוכנית חינמית קבועה, ללא כרטיס אשראי, ללא תפוגהשלט למצגות פשוט: חדר אחד, מציג אחד, שיתוף מסך עם סימן מים ו-Stream Deck; כל שאר התכונות נעולות
presenterמציגיםTimer Pro, צ'אט, ציור, ריבוי מארחים ו-NDI
pro (Studio HD)מפיקים עצמאייםמשתתפים מתקשרים, חדרים מותאמים אישית, שיתוף וידאו וכלי הבסיס של Studio
ultra (Studio 4K)משתמשים מתקדמים ומשדריםחדרים ללא הגבלה, ערכות צבעי מותג שמורות, שכבות, הקלטת ISO, שידור חוזר ומערך הכלים הרחב של Studio
studio (Studio 8K)צוותי הפקהמעצב פריסת חדרים, מיתוג white label, ה-Client API, מפתחות API, דומיינים מותאמים אישית, רישיונות צוות משותפים לפי עמדה
enterpriseארגונים גדולים ומחלקות רכשSSO, SCIM ותפקידי צוות מותאמים אישית, חוזים שנתיים לפי עמדה
רישיונות ישנים עשויים עדיין לשאת שמות מוצר מדור קודם. הם שומרים על הזכאויות שאיתן נרכשו, וה-API ממפה אותם לרמות שלעיל.