{"openapi":"3.1.0","info":{"title":"TikTak API","version":"2026-08-01","summary":"ניהול משלוחים, מסלולים ומעקב — לשילוב עם המערכות שלכם.","description":"## התחלה מהירה\n\nכל בקשה נושאת מפתח API בכותרת `Authorization`:\n\n```\ncurl https://tiktak.apps4all.net/api/v1 \\\n  -H \"Authorization: Bearer tk_live_...\"\n```\n\nמפתחות נוצרים במסך ההגדרות של הארגון. המפתח מוצג פעם אחת בלבד.\n\n## מצב בדיקה\n\nמפתח `tk_test_` כותב וקורא נתוני בדיקה בלבד. הם חיים באותו ארגון ועוברים את\nאותן בדיקות תקינות ואת אותה מכונת מצבים — אבל אינם נספרים במכסה החודשית,\nאינם מחויבים, ואינם מופיעים בלוח המשלוחים. מפתח `tk_live_` לא רואה אותם כלל.\n\n## אידמפוטנטיות\n\nכל בקשת כתיבה מקבלת כותרת `Idempotency-Key`. שליחה חוזרת עם אותו מפתח מחזירה\nאת אותה תשובה במקום לבצע את הפעולה שוב — זה מה שמונע משלוח כפול כשהחיבור\nנופל אחרי שהבקשה כבר הגיעה אלינו. מפתח שנשלח שוב עם תוכן שונה נדחה ב-409.\n\n## עימוד\n\nעימוד מבוסס סמן, לא דילוג. כל רשימה מחזירה `has_more` ו-`next_cursor`;\nהעבירו את הסמן כדי לקבל את העמוד הבא. הסמן אטום — אל תנתחו אותו.\n\n## שגיאות\n\nכל שגיאה מוחזרת באותו מבנה, עם `type` לסיווג גס, `code` יציב למכונה,\nו-`request_id` שכדאי לשמור בלוג — הוא מה שמאפשר לנו לאתר את הבקשה.","contact":{"name":"TikTak","url":"https://tiktak.apps4all.net/developers"}},"servers":[{"url":"https://tiktak.apps4all.net","description":"Production"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Shipments","description":"משלוחים — נקודת הכניסה של כל שילוב"},{"name":"Routes","description":"מסלולים (קריאה בלבד)"},{"name":"Drivers","description":"נהגים (קריאה בלבד)"},{"name":"Customers","description":"לקוחות"},{"name":"Webhooks","description":"התראות יזומות מאיתנו אליכם"}],"paths":{"/api/v1":{"get":{"summary":"בדיקת מפתח","description":"מחזיר את מצב המפתח, ההרשאות שלו והמסלול שהוא פועל בו. אינו דורש הרשאה.","operationId":"getApiStatus","responses":{"200":{"description":"תקין"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/shipments":{"get":{"tags":["Shipments"],"summary":"רשימת משלוחים","operationId":"listShipments","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"ה-`next_cursor` מהתשובה הקודמת."},{"name":"status","in":"query","schema":{"type":"string"},"description":"רשימה מופרדת בפסיקים, למשל `pending,assigned`."},{"name":"service_date","in":"query","schema":{"type":"string","format":"date"}},{"name":"external_id","in":"query","schema":{"type":"string"}},{"name":"reference","in":"query","schema":{"type":"string"}},{"name":"barcode","in":"query","schema":{"type":"string"}},{"name":"driver_id","in":"query","schema":{"type":"string"}},{"name":"route_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"רשימה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShipmentList"}}}},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Shipments"],"summary":"יצירת משלוח","operationId":"createShipment","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShipmentCreate"}}}},"responses":{"201":{"description":"נוצר","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shipment"}}}},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/shipments/{id}":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"tags":["Shipments"],"summary":"משלוח בודד","operationId":"getShipment","responses":{"200":{"description":"המשלוח","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shipment"}}}},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"tags":["Shipments"],"summary":"עדכון משלוח","description":"כתובת ומועד ניתנים לשינוי עד שהנהג אוסף את המשלוח. אחרי זה רק שדות שאינם משנים לאן הוא נוסע.","operationId":"updateShipment","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShipmentUpdate"}}}},"responses":{"200":{"description":"עודכן","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shipment"}}}},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Shipments"],"summary":"ביטול משלוח","description":"ביטול, לא מחיקה. משלוח שנמסר הוא רשומה עסקית ולא ניתן להסרה דרך ה-API.","operationId":"cancelShipment","responses":{"200":{"description":"בוטל","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shipment"}}}},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/shipments/{id}/events":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"tags":["Shipments"],"summary":"היסטוריית המשלוח","operationId":"listShipmentEvents","responses":{"200":{"description":"ציר זמן"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/routes":{"get":{"tags":["Routes"],"summary":"רשימת מסלולים","operationId":"listRoutes","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"ה-`next_cursor` מהתשובה הקודמת."},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"service_date","in":"query","schema":{"type":"string","format":"date"}},{"name":"driver_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"רשימה"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/routes/{id}":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"tags":["Routes"],"summary":"מסלול בודד","operationId":"getRoute","responses":{"200":{"description":"המסלול"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/drivers":{"get":{"tags":["Drivers"],"summary":"רשימת נהגים","operationId":"listDrivers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"ה-`next_cursor` מהתשובה הקודמת."}],"responses":{"200":{"description":"רשימה"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/customers":{"get":{"tags":["Customers"],"summary":"רשימת לקוחות","operationId":"listCustomers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"ה-`next_cursor` מהתשובה הקודמת."},{"name":"external_id","in":"query","schema":{"type":"string"}},{"name":"phone","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"רשימה"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Customers"],"summary":"יצירת לקוח","operationId":"createCustomer","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerCreate"}}}},"responses":{"201":{"description":"נוצר"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhooks":{"get":{"tags":["Webhooks"],"summary":"רשימת כתובות webhook","operationId":"listWebhooks","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"ה-`next_cursor` מהתשובה הקודמת."}],"responses":{"200":{"description":"רשימה"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Webhooks"],"summary":"הוספת כתובת webhook","description":"ה-`secret` מוחזר פעם אחת בלבד, בתשובה הזו. שמרו אותו.","operationId":"createWebhook","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"נוצר"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhooks/{id}":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"tags":["Webhooks"],"summary":"כתובת webhook בודדת","operationId":"getWebhook","responses":{"200":{"description":"הכתובת"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"tags":["Webhooks"],"summary":"עדכון כתובת webhook","operationId":"updateWebhook","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"עודכן"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Webhooks"],"summary":"מחיקת כתובת webhook","operationId":"deleteWebhook","responses":{"200":{"description":"נמחק"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhooks/{id}/deliveries":{"parameters":[{"$ref":"#/components/parameters/Id"}],"get":{"tags":["Webhooks"],"summary":"יומן משלוחי ה-webhook","description":"מה נשלח, מתי, כמה ניסיונות, ומה השרת שלכם החזיר — כולל גוף התשובה.","operationId":"listWebhookDeliveries","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"ה-`next_cursor` מהתשובה הקודמת."},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"event","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"רשימה"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhooks/{id}/test":{"parameters":[{"$ref":"#/components/parameters/Id"}],"post":{"tags":["Webhooks"],"summary":"שליחת אירוע בדיקה","description":"נשלח באותה חתימה ובאותו מבנה כמו אירוע אמיתי, כדי שתוכלו לאמת את הצד שלכם לפני שמשלוח אמיתי תלוי בזה.","operationId":"testWebhook","responses":{"200":{"description":"נשלח (כולל תשובה שאינה 2xx)"},"400":{"description":"בקשה לא תקינה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"מפתח API חסר או לא תקף","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"למפתח אין את ההרשאה הנדרשת","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"לא נמצא","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"התנגשות — כפילות או מצב שאינו מאפשר את הפעולה","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"חריגה מקצב הבקשות","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"מפתח API: `tk_live_...` או `tk_test_...`"}},"parameters":{"Id":{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":200},"description":"מזהה ייחודי לפעולה. שליחה חוזרת עם אותו מפתח מחזירה את התשובה המקורית במקום לבצע שוב. נשמר 24 שעות."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","permission_error","not_found_error","conflict_error","rate_limit_error","api_error"]},"code":{"type":"string","example":"validation_failed"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"type":"string"},"request_id":{"type":"string"}},"required":["type","code","message"]}}},"Address":{"type":"object","properties":{"raw":{"type":"string","example":"דיזנגוף 99, תל אביב"},"street":{"type":["string","null"]},"house_number":{"type":["string","null"]},"city":{"type":["string","null"]},"postal_code":{"type":["string","null"]},"country":{"type":"string","default":"IL"},"notes":{"type":["string","null"]},"lat":{"type":["number","null"]},"lng":{"type":["number","null"]},"needs_review":{"type":"boolean","description":"true כשה-geocoding לא היה חד-משמעי וכדאי שאדם יבדוק."}}},"TimeWindow":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"Item":{"type":"object","properties":{"description":{"type":["string","null"]},"quantity":{"type":"integer","default":1},"barcode":{"type":["string","null"]},"weight_kg":{"type":["number","null"]}}},"Cod":{"type":"object","description":"גבייה במזומן. הנהג לא יוכל לסמן מסירה לפני שסימן גבייה.","properties":{"required":{"type":"boolean"},"amount_agorot":{"type":"integer","description":"באגורות. 12000 = ₪120"},"collected_agorot":{"type":"integer"},"collected_at":{"type":["string","null"],"format":"date-time"}}},"Shipment":{"type":"object","properties":{"object":{"type":"string","const":"shipment"},"id":{"type":"string","example":"66c1f2a4e5b7c8d9e0f1a2b3"},"reference":{"type":"string","example":"TT-1042","description":"מספר המשלוח אצלנו"},"external_id":{"type":["string","null"],"description":"המזהה שלכם. ייחודי לכל ארגון, ומונע יצירה כפולה."},"barcode":{"type":["string","null"]},"type":{"type":"string","enum":["delivery","pickup","pickup_delivery"]},"status":{"type":"string","enum":["draft","pending","assigned","picked_up","in_transit","delivered","failed","returned","cancelled"]},"livemode":{"type":"boolean","description":"false עבור נתונים שנוצרו במפתח בדיקה"},"recipient":{"type":"object","properties":{"name":{"type":"string"},"phone":{"type":["string","null"],"example":"+972521234567"},"email":{"type":["string","null"]}}},"delivery_address":{"$ref":"#/components/schemas/Address"},"pickup_address":{"oneOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}]},"delivery_window":{"oneOf":[{"$ref":"#/components/schemas/TimeWindow"},{"type":"null"}]},"service_date":{"type":["string","null"],"format":"date","example":"2026-08-21"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Item"}},"cod":{"$ref":"#/components/schemas/Cod"},"route_id":{"type":["string","null"]},"driver_id":{"type":["string","null"]},"stop_sequence":{"type":["integer","null"]},"eta":{"type":["string","null"],"format":"date-time"},"delivered_at":{"type":["string","null"],"format":"date-time"},"attempt_count":{"type":"integer"},"failure_reason":{"type":["string","null"]},"tracking_url":{"type":["string","null"],"description":"הדף שהנמען רואה. אפשר לשלוח אותו ללקוח כמו שהוא."},"notes":{"type":["string","null"]},"driver_instructions":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"ShipmentList":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Shipment"}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"העבירו כ-`cursor` כדי לקבל את העמוד הבא."},"url":{"type":"string"}}},"ShipmentCreate":{"type":"object","required":["recipient","delivery_address"],"properties":{"external_id":{"type":"string","description":"המזהה שלכם להזמנה. שליחה חוזרת של אותו מזהה נדחית ב-409 — הגנה שנייה מפני כפילות, מעבר ל-Idempotency-Key."},"reference":{"type":"string","description":"ברירת מחדל: מספר רץ שאנחנו מקצים."},"barcode":{"type":"string"},"type":{"type":"string","enum":["delivery","pickup","pickup_delivery"]},"recipient":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"phone":{"type":"string","example":"052-123-4567"},"email":{"type":"string","format":"email"}}},"delivery_address":{"type":"object","required":["raw"],"properties":{"raw":{"type":"string"},"city":{"type":"string"},"postal_code":{"type":"string"},"notes":{"type":"string"},"lat":{"type":"number","description":"אם תשלחו lat ו-lng נדלג על ה-geocoding ונשתמש בהם."},"lng":{"type":"number"}}},"delivery_window":{"$ref":"#/components/schemas/TimeWindow"},"service_date":{"type":"string","format":"date"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Item"}},"cod":{"type":"object","properties":{"required":{"type":"boolean"},"amount_agorot":{"type":"integer"}}},"required_pod_methods":{"type":"array","items":{"type":"string","enum":["signature","photo","barcode","pin","none"]}},"notes":{"type":"string"},"driver_instructions":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}},"ShipmentUpdate":{"type":"object","properties":{"external_id":{"type":"string"},"barcode":{"type":"string"},"recipient":{"type":"object"},"delivery_address":{"type":"object"},"delivery_window":{"oneOf":[{"$ref":"#/components/schemas/TimeWindow"},{"type":"null"}]},"service_date":{"type":"string","format":"date"},"notes":{"type":"string"},"driver_instructions":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}},"CustomerCreate":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string","format":"email"},"external_id":{"type":"string"},"kind":{"type":"string","enum":["person","business"]},"address":{"type":"object","properties":{"raw":{"type":"string"},"city":{"type":"string"}}},"opt_in":{"type":"object","description":"הסכמה לקבלת הודעות, לפי ערוץ. ברירת המחדל ל-WhatsApp ולדוא\"ל היא false — ייצוא מ-CRM אינו הסכמה.","properties":{"sms":{"type":"boolean","default":true},"whatsapp":{"type":"boolean","default":false},"email":{"type":"boolean","default":false}}}}},"WebhookCreate":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","format":"uri","description":"חייב להיות https."},"events":{"type":"array","items":{"type":"string","enum":["shipment.created","shipment.updated","shipment.assigned","shipment.picked_up","shipment.in_transit","shipment.delivered","shipment.failed","shipment.cancelled","shipment.eta_updated","route.published","route.started","route.completed","pod.captured","review.submitted"]},"minItems":1},"description":{"type":"string"},"active":{"type":"boolean","default":true}}},"WebhookUpdate":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["shipment.created","shipment.updated","shipment.assigned","shipment.picked_up","shipment.in_transit","shipment.delivered","shipment.failed","shipment.cancelled","shipment.eta_updated","route.published","route.started","route.completed","pod.captured","review.submitted"]}},"description":{"type":"string"},"active":{"type":"boolean"},"rotate_secret":{"type":"boolean","description":"מנפיק secret חדש ומחזיר אותו פעם אחת. הישן מפסיק לאמת מיידית."}}}}},"webhooks":{"shipment.created":{"post":{"summary":"משלוח חדש נוצר","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.created"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"shipment.updated":{"post":{"summary":"פרטי משלוח עודכנו","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.updated"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"shipment.assigned":{"post":{"summary":"המשלוח שויך לנהג","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.assigned"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"shipment.picked_up":{"post":{"summary":"המשלוח נאסף","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.picked_up"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"shipment.in_transit":{"post":{"summary":"הנהג יצא לדרך עם המשלוח","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.in_transit"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"shipment.delivered":{"post":{"summary":"המשלוח נמסר","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.delivered"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"shipment.failed":{"post":{"summary":"ניסיון מסירה נכשל","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.failed"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"shipment.cancelled":{"post":{"summary":"המשלוח בוטל","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.cancelled"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"shipment.eta_updated":{"post":{"summary":"זמן ההגעה המשוער עודכן","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"shipment.eta_updated"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"route.published":{"post":{"summary":"מסלול פורסם לנהג","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"route.published"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"route.started":{"post":{"summary":"הנהג התחיל מסלול","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"route.started"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"route.completed":{"post":{"summary":"מסלול הושלם","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"route.completed"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"pod.captured":{"post":{"summary":"נקלטה הוכחת מסירה","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"pod.captured"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}},"review.submitted":{"post":{"summary":"לקוח דירג את המסירה","description":"נשלח אל כתובת ה-webhook שלכם עם הכותרות:\n\n- `TikTak-Signature: t=<unix>,v1=<hmac-sha256>` — חתימה על `${t}.${body}` עם ה-secret של הכתובת\n- `TikTak-Event-Id` — יציב בין ניסיונות חוזרים, השתמשו בו לדה-דופליקציה\n- `TikTak-Attempt` — מספר הניסיון\n\nהחזירו 2xx. כל תשובה אחרת גוררת ניסיון חוזר לפי 10ש׳, 1ד׳, 5ד׳, 30ד׳, 2ש׳, 6ש׳, 24ש׳.\nאנחנו לא עוקבים אחרי הפניות (3xx) — הן נחשבות כישלון.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"evt_9f2c..."},"object":{"type":"string","const":"event"},"type":{"type":"string","const":"review.submitted"},"occurred_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"התקבל"}}}}}}