תיעוד API של 1C-Bitrix: OpenAPI ו-Swagger UI

אינטגרציות נשברות בנקודת החיבור כאשר ה-API אינו מתועד וכל שינוי הופך למשא ומתן. אנו מפתחים מפרטי OpenAPI ומגדירים Swagger UI כמעטפת מלאה, כדי שצוותים חיצוניים יתחברו ללא מעורבותכם. אנו מקצרים את זמן התיאום של אינטגרציות ומסירים סוג של כשלים הקשורים לחוזים לא ברורים.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
תיעוד API של 1C-Bitrix: OpenAPI ו-Swagger UI
פשוט
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

OpenAPI 1С-Битрикс: מדוע אינטגרציות נשברות בנקודת החיבור

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

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

השורש הוא שהחוזה אינו מתואר באופן פורמלי. כל עוד המתודות מתועדות בטקסט בוויקי או בהערות בקוד, לאינטגרציה אין מקור אמת единый.

OpenAPI עבור 1С-Битрикс סוגר בדיוק את הפער הזה: תיאור מתודות ה-API הופך למפרט קריא-מכונה, שלפיו נוצרים לקוחות, נבדקות בקשות ותגובות, ופערים נראים לפני העלאה, ולא אחרי.

בהמשך נפרק כיצד לבנות תיאור כזה, כדי שאינטגרציה עם Битрикс תפסיק להיות לוטו ושגיאות אינטגרציה ייתפסו בשלב הבנייה, ולא בקרב.

מה משתנה לאחר תיאור API לפי מפרט

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

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

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

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

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

דרכים לתיאור API: מפרט ידני, יצירה אוטומטית, היברידי

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

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

היכן עובר הגבול

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

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

היברידי בעבודה בפועל

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

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

כיצד אנו מיישמים תיאור API: שלבי העבודה

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

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

  1. ספירת מלאי של מתודות — מתעדים את כל נקודות הכניסה, הבעלים והצרכנים שלהן.
  2. סכימת נתונים — מתארים מודלים, שדות, קודי תגובה ושגיאות בתבנית אחידה.
  3. הרכבת המפרט — מאחדים את המתודות לקובץ תיאור אחד, ומקשרים את המודלים בקישורים.
  4. בדיקה על קווי מתאר לבדיקה — מריצים בקשות לפי המפרט, ומשווים את התגובות בפועל לאלו המתוארות.
  5. הגדרת תיעוד אינטראקטיבי — פורסים עמוד שבו ניתן לקרוא לכל מתודה ישירות מהדפדפן.
  6. תקנון עדכון — קובעים כלל: שינוי חוזה ללא תיקון התיאור אינו עובר בדיקה.
  7. מסירת התיאור — מוסרים לצוות הלקוח הרשאות, מבנה קבצים והוראות תמיכה.

מה נותן סדר עבודה כזה

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

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

מה הלקוח מקבל לידיו

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

  • מפרט API — מסמך אחיד בפורמט OpenAPI, המתאר את כל המתודות, סכמות הנתונים, קודי התגובה והשגיאות. זהו מקור האמת: ממנו נוצרים גם התיעוד וגם ספריות הלקוח, ולכן אי-התאמה בין הקוד לתיאור נראית מיד, ולא בשלב האינטגרציה.
  • תיעוד אינטראקטיבי — Swagger UI מורחב בדומיין שלכם, שבו אפשר לקרוא למתודה ישירות מהדף: להזין טוקן, לשלוח בקשה ולראות תגובה אמיתית. המהנדס בודק את התנהגות המערכת לפני שהוא כותב את שורת הקוד הראשונה.
  • דוגמאות לבקשות — קטעי קוד מוכנים בשפות שבהן משתמשת הקבוצה שלכם, עם אימות, עימוד וטיפול בשגיאות. זה מסיר את סוג הפניות הנפוץ ביותר לתמיכה.
  • כללי גרסאות — סכמה קבועה: איך יוצאת גרסה חדשה, כמה זמן חיה הישנה, באיזה פרק זמן אנחנו מתריעים על שינויים ומה נחשב לא תואם. עדכון מפסיק להיות הפתעה למי שכבר ביצע אינטגרציה.
  • נוהל תמיכה — מי ובאילו מועדים עונה על שאלות בנוגע ל-API, איך נפתחות בקשות למתודות חדשות, ולאן מגיעות התראות על תקלות.
  • סכמת גישה — היכן מונפקים המפתחות, אילו תחומי הרשאה קיימים, ואיך נשללת גישה כאשר עובד עוזב.
  • סדר עדכון התיעוד — כלל שלפיו שינוי בקוד לא נכנס לריליס בלי תיקון המפרט.

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

קייס: תיאור API של חנות אינטרנט ב-1С-Битрикс

חנות אינטרנט ב-1С-Битрикс עם חלון ראווה עצמאי וחילופי נתונים עם מערכת הנה"ח. לחנות התחברו שותפים — מרקטפלייסים, שירותי משלוחים, שירותי נאמנות חיצוניים. כל חיבור עבר דרך התכתבות: השותף שלח שאלות, המפתח ענה בקטעי קוד, והאינטגרציה נמשכה שבועות.

מה היה לפני

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

מה שינו

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

מה נהיה

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

העומס על התמיכה ירד — פניות טיפוסיות לגבי מבנה הבקשות практически פסקו, והזמן שהתפנה הופנה לפיתוח אינטגרציות.

במה שונה OpenAPI מ-Swagger UI ומה לבחור

OpenAPI — זוהי מפרט, כלומר פורמט לתיאור API: קובץ ב-YAML או JSON, שבו מתועדים נקודות קצה, מתודות, סכמות של בקשות ותגובות, קודי שגיאה וכללי הרשאה. כשלעצמו הוא לא מצייר דבר ולא מריץ דבר — זהו חוזה שעל פיו מתאמים צד ה-backend, צד ה-frontend ומשלבים חיצוניים. את המפרט ניתן לתקף ב-CI, לייצר ממנו ספריות לקוח ושלדי שרת, ולהשוות גרסאות בין מהדורות.

Swagger UI — זהו כלי ויזואליזציה: הוא קורא קובץ OpenAPI מוכן והופך אותו לעמוד אינטראקטיבי עם עץ מתודות, דוגמאות וכפתור «בצע בקשה». הבלבול נוצר בגלל ההיסטוריה: בעבר הפורמט נקרא Swagger, מאוחר יותר שונה שמו ל-OpenAPI, והשם Swagger נשאר למשפחת הכלים סביבו. לכן «לעשות Swagger» — זה ניסוח חסר משמעות: לא ברור אם אנו כותבים תיאור או רק מחברים עמוד תיעוד.

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

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

ספקות טכניים נפוצים בנוגע לתיאור API

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

מה עושים עם מתודות שכבר מיושנות אך עדיין נקראות על ידי לקוחות?

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

האם ניתן לפרוס את ממשק התיאור בתוך סביבה סגורה של הלקוח?

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

כיצד לתאר גרסאות API כך שאינטגרציות ישנות לא יישברו?

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

מי מתחזק את התיאור לאחר ההשקה וכיצד זה מאורגן?

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

האם תיאור פומבי חושף יותר מדי על המערכת הפנימית?

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

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

בואו נדון במשימה שלכם לתיעוד API של 1С-Битрикс

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

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

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

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