# שגיאות API

מדריך עיון לשגיאות ה-API של Pristo: קודי הסטטוס וההודעות בטקסט פשוט שמחזירות תשובות 400, 401, 404 ו-500, ואיך לתקן כל שגיאה.

בדף הזה מופיעות כל השגיאות שמחזירות נקודות הקצה `POST /v1/events/send` ו-`POST /v1/links/generate/{prjId}` של ה-API של Pristo, עם ההודעה שבגוף התשובה ועם הדרך לתקן כל שגיאה.

## איך נראות השגיאות

- לרוב שגיאות ה-`400` וה-`404` יש גוף בטקסט פשוט, למשל `contact is required`. הגוף הזה לא JSON, ולכן קראו אותו כטקסט.
- לשגיאות `401` ו-`415`, לחלק משגיאות ה-`400` ולרוב שגיאות ה-`500` יש גוף JSON מסוג problem (`Content-Type: application/problem+json`) עם `title` ו-`status`. בשגיאת `500` עשויה להופיע גם הודעת `detail`.
- ה-API בודק את הבקשה בסדר הזה: הנתיב, הגוף, מפתח ה-API, ואז הנתונים. בקשה עם כמה בעיות מחזירה רק את הראשונה.

## שגיאות בשתי נקודות הקצה

| סטטוס | גוף | סיבה | תיקון |
|---|---|---|---|
| `400` | גוף JSON מסוג problem, עם `title` שערכו `Bad Request` | הגוף חסר או שהוא לא JSON תקין, או ששדה מסוים הוא מסוג JSON שגוי, למשל `"isReusable": "true"` | שלחו אובייקט JSON. כשאין לכם שדות להגדיר, שלחו `{}` |
| `400` | `Payload size exceeds the maximum allowed size of 10000 bytes` | הגוף גדול מ-10,000 בייטים | שלחו פחות שדות מותאמים אישית, או שדות קצרים יותר |
| `400` | `Value is invalid` | הערך של `X-API-Key` קצר מ-24 תווים. באירועים, `type` או `contact.id` מכילים רק רווחים. בקישורים, `language` הוא לא קוד ISO 639-1 | העתיקו את המפתח המלא. תקנו את השדה |
| `401` | גוף JSON מסוג problem, עם `title` שערכו `Unauthorized` | הכותרת `X-API-Key` חסרה או ריקה, או שהמפתח שגוי, מושבת או נמחק | שלחו מפתח פעיל. ראו [אימות באמצעות מפתח API](https://docs.pristo.io/he/cx/api/authentication) |
| `405` | ריק | הבקשה לא נשלחה ב-`POST` | שלחו `POST` |
| `415` | גוף JSON מסוג problem, עם `title` שערכו `Unsupported Media Type` | הכותרת `Content-Type` היא לא `application/json` | הוסיפו `Content-Type: application/json` |
| `500` | `Internal server error`, או גוף JSON מסוג problem | משהו נכשל בצד של Pristo | המתינו ונסו שוב. אם הבעיה נמשכת, פנו לתמיכה של Pristo |

## שליחת אירוע

| סטטוס | גוף | סיבה | תיקון |
|---|---|---|---|
| `400` | `contact is required` | בגוף אין אובייקט `contact` | הוסיפו `contact` עם `id` לפחות |
| `400` | `type is required and must be between 1 and 50 characters long` | `type` חסר, ריק או ארוך מ-50 תווים | שלחו את הערך בשדה **מזהה יחודי** של סוג האירוע |
| `400` | `contact.id is required and must be between 1 and 50 characters long` | `contact.id` חסר, ריק או ארוך מ-50 תווים | שלחו את המזהה שלכם לאיש הקשר |
| `404` | `no population is associated with this api key` | לתוכנית של מפתח ה-API אין אוכלוסייה | צרו את האוכלוסייה של התוכנית, או השתמשו במפתח של תוכנית שיש לה אוכלוסייה |
| `404` | `Population with id not found` | האוכלוסייה של התוכנית לא נמצאה בזמן שמירת האירוע | בדקו את האוכלוסייה ב-Pristo CX ונסו שוב |

## יצירת קישור לסקר

| סטטוס | גוף | סיבה | תיקון |
|---|---|---|---|
| `400` | `provided surveyId is not valid` | ה-`prjId` בנתיב הוא לא מזהה שאלון בן 22 תווים. גם UUID מלא נכשל | העתיקו את המזהה מהלשונית **שיתוף** של השאלון |
| `400` | `expiresInMinutes must be between 1 and 1576800` | `expiresInMinutes` קטן מ-1 או גדול מ-1,576,800 | שלחו ערך בין 1 ל-1,576,800, או השמיטו את השדה כדי שלקישור לא תהיה תפוגה |
| `400` | `language must be exactly 2 characters long (iso 639-1)` | האורך של `language` הוא לא 2 תווים | שלחו קוד כמו `en` או `he` |
| `400` | `title must be at most 50 characters long` | `title` ארוך מ-50 תווים | קצרו את הכותרת |
| `400` | `customField values must be strings` | ערך ב-`customFields` הוא מספר, ערך בוליאני, אובייקט או מערך | שלחו כל ערך כמחרוזת |
| `400` | `customField keys and values must be at most 50 characters long` | מפתח או ערך ב-`customFields` ארוך מ-50 תווים | קצרו אותו |
| `404` | `project with id <UUID> not found` | בחשבון של מפתח ה-API אין שאלון עם המזהה הזה, או שהשאלון נמחק | בדקו את המזהה ואת החשבון של המפתח |
| `500` | גוף JSON מסוג problem, עם `detail` שערכו `project does not have a form associated` | לשאלון אין טופס | פנו לתמיכה של Pristo עם מזהה השאלון |
| `500` | גוף JSON מסוג problem, עם `detail` שערכו `a problem occurred, please try again later` | לא ניתן היה לטעון את השאלון | המתינו ונסו שוב |

## ראו גם

- [סקירה כללית של ה-API של Pristo](https://docs.pristo.io/he/cx/api)
- [שליחת אירוע](https://docs.pristo.io/he/cx/api/send-an-event)
- [יצירת קישור לסקר](https://docs.pristo.io/he/cx/api/generate-a-survey-link)
- [תיעוד ה-API (באנגלית)](https://docs.pristo.io/cx/api/reference)
