מאגרי הרכב הפתוחים ב-data.gov.il מפוצלים לפי סוג רכב וסטטוס. מדריך לתכנון אימות מדורג: שכבות ודאות, פערי כיסוי, נתון מתיישן ומה מותר לכל שכבה להכריע.
עיקרי הדברים
- אין מאגר אחד של כל כלי הרכב. יש כמה מאגרים נפרדים, ולכל אחד היקף מוצהר משלו.
- המאגר הפרטי והמסחרי מכיל כלי רכב פרטיים פעילים משנת ייצור 1996 ומעלה, ומסחריים עד 3,500 ק"ג משנת ייצור 1998 ומעלה. רכב מחוץ לחתך הזה אינו חסר, הוא פשוט לא שם.
- דפי המאגר ב-HTML מחזירים 404 ללקוח שאינו דפדפן. נתיב ה-API של CKAN עובד ומחזיר 200.
- מספר רישוי שלא נמצא במאגר הפעילים עשוי להימצא במאגר הלא פעילים, שמוגדר כרכב ללא תוקף רישיון 13 חודשים אחורה.
- אימות צריך להחזיר שכבת ודאות עם מקור ותאריך שליפה, ולעולם לא לחסום פעולה עסקית על סמך היעדר התאמה.
מאגר רכב פתוח הוא ראיה, לא פסק דין. הוא מפוצל לפי סוג רכב וסטטוס, נחתך בשנות ייצור, ומתעדכן במחזור משלו. אימות שנשען עליו צריך להחזיר דרגת ודאות ולא ערך בוליאני, ולהמשיך לתפקד במלואו גם כשהתשובה החוזרת היא שהרכב הזה לא נמצא באף מאגר שנבדק.
זהו תיאור טכני של מאגרי מידע ציבוריים ושל תכנון אימות, ולא ייעוץ משפטי בנוגע לשימוש בנתונים.
מה המאגר באמת מכיל, ומה הוא לא
המאגר private-and-commercial-vehicles באתר data.gov.il נקרא "מספרי רישוי של כלי רכב פרטיים ומסחריים". ההיקף מוצהר בתיאור שלו: כלי רכב פרטיים פעילים משנת ייצור 1996 ומעלה, וכלי רכב מסחריים פעילים במשקל עד 3,500 ק"ג משנת ייצור 1998 ומעלה.
שתי מסקנות תכנוניות נובעות מהמשפט הזה. הראשונה, "לא נמצא" אינו ממצא על הרכב אלא ממצא על ההיקף. השנייה, המאגר מחולק לשני משאבי CSV נפרדים, ומשאב אחד מהם מחזיק כ-4.17 מיליון שורות. מי שבודק רק את המשאב הראשון יראה חוסרים שאינם קיימים.
השדות בשורה הם קונקרטיים וניתנים לבדיקה: mispar_rechev, misgeret למספר שלדה, tozeret_nm ו-degem_nm, kinuy_mishari לשם המסחרי, shnat_yitzur, sug_delek_nm, baalut לסוג בעלות, וכן mivchan_acharon_dt ו-tokef_dt לתאריכי מבחן רישוי ותוקף.
איזה מאגר מחזיק איזה רכב?
| שם המאגר | מה הוא מכסה לפי ההגדרה שלו |
|---|---|
private-and-commercial-vehicles | פרטיים פעילים מ-1996, מסחריים פעילים עד 3,500 ק"ג מ-1998 |
rechev_le_pail_with_degem | רכב עם קוד דגם, ללא תוקף 13 חודשים אחורה, לא גנוב וללא ביטול סופי |
rechev_le_pail_without-degem | אותה הגדרה, לרכב שאין לו קוד דגם |
motorcycle | כלי רכב דו גלגליים פעילים |
heavy-truck | כלי רכב מעל 3.5 טון וכלי רכב חסרי קוד דגם: גרור נתמך, טרקטור, רכב עבודה, משא, אוטובוס |
kli_rechev_ciburiim | כלי רכב ציבוריים פעילים: מוניות, זוטובוסים ואוטובוסים להסעות בתשלום |
personal_import_vehicles | כלי רכב פעילים ביבוא אישי |
recall | הודעות קריאה חוזרת של יצרני רכב |
אופנוע, משאית או מונית לא יימצאו במאגר הפרטי והמסחרי, ולא בגלל תקלה. מערכת שבודקת מאגר אחד ומסיקה שהרכב אינו קיים תייצר שגיאה שקטה בכל אחת מהקטגוריות האלה.
איך שולפים מהמאגר בלי דפדפן?
דרך ממשק CKAN, ולא דרך דף המאגר. שלוש הנקודות הבאות נבדקו והחזירו 200:
https://data.gov.il/api/3/action/package_search?q=<מונח>מחזיר את רשימת המאגרים התואמים עם השם הטכני של כל אחד.https://data.gov.il/api/3/action/package_show?id=<שם המאגר>מחזיר את התיאור, את זמן העדכון האחרון ואת מזהי המשאבים.https://data.gov.il/api/3/action/datastore_search?resource_id=<מזהה>&limit=1מחזיר את רשימת השדות ואת מספר השורות הכולל במשאב.
לעומת זאת, פנייה לדף המאגר ב-HTML החזירה 404 גם עם כותרת דפדפן, ונתיב datastore_search_sql החזיר 404 בבדיקה בספטמבר 2026. לכן ההנחה שדף שנפתח בדפדפן יהיה נגיש גם לשרת אינה מתקיימת כאן, וזו בדיוק הסיבה שמדריך ה-API של data.gov.il מתחיל בממשק ולא בדף.
הערה על אופן החיפוש: הפרמטר q הוא חיפוש טקסט חופשי על כל השורה ומחזיר גם שדה rank, ולכן ערך מספרי עלול להתאים לשדה אחר. לזיהוי מדויק עדיף filters עם השדה המפורש, למשל סינון על mispar_rechev.
שכבת ודאות במקום ערך בוליאני
התוצר של האימות אינו "קיים" או "לא קיים", אלא רשומה עם שכבה, מקור ותאריך שליפה:
| שכבה | מה נמצא | מה מותר לה לקבוע | מה אסור לה |
|---|---|---|---|
| מאושר | התאמה מדויקת במאגר הפעילים, כולל התאמת יצרן ודגם | למלא שדות אוטומטית | להיחשב ראיה על מצב הרכב היום |
| מאושר חלקית | התאמה במספר הרישוי, אך יצרן או דגם שונים ממה שהוזן | להציג התראה למשתמש | לדרוס את מה שהמשתמש הזין |
| נמצא כלא פעיל | התאמה במאגר הלא פעילים בלבד | לסמן את הרשומה לבדיקה אנושית | להסיק שהרכב אינו קיים |
| מחוץ להיקף | סוג הרכב או שנת הייצור מחוץ להגדרת המאגר שנבדק | להמשיך בלי אימות | להיספר כשגיאה |
| לא נמצא | אין התאמה באף מאגר שנבדק | לפתוח שורת בדיקה | לחסום את המשך התהליך |
| מקור לא זמין | הממשק לא ענה או החזיר שגיאה | להשתמש בתשובה שמורה מהזיכרון | להציג נתון ישן בלי לסמן את גילו |
השורה האחרונה היא זו שמפילה מערכות. כשמקור חיצוני לא עונה, ברירת המחדל צריכה להיות המשך עם סימון, ולא מסך שגיאה שעוצר עובד מול לקוח.
למה מספר רישוי חוזר כלא קיים כשהרכב נמצא בחוץ?
ארבע סיבות מסבירות כמעט את כל המקרים, ולכל אחת תגובה שונה:
- הרכב אינו בקטגוריה שנבדקה. אופנוע, משאית מעל 3.5 טון או מונית יושבים במאגר אחר לגמרי.
- הרכב יצא ממאגר הפעילים. רישיון שאיבד תוקף מעביר את הרכב, לפי ההגדרה של המאגר, לרשימת הלא פעילים אחרי 13 חודשים.
- שנת הייצור מוקדמת מההיקף. רכב פרטי משנת 1994 אינו נכלל בהגדרת המאגר.
- נבדק משאב אחד מתוך שניים. המאגר הפרטי והמסחרי מפוצל לשני קבצים, ובדיקה חלקית מדלגת על חלק מהשורות.
חמישית, טכנית לגמרי: מספר רישוי הוא שדה מספרי במאגר, ולכן אפסים מובילים נעלמים בייצוא לגיליון. השוואת מחרוזות בין מקורות שונים תיכשל עוד לפני שהתשובה חוזרת.
התיישנות, ומה שומרים בצד שלכם
לכל שליפה יש רגע. ההבדל בין מערכת שאפשר לתחזק לבין מערכת שמתפוצצת אחרי חצי שנה הוא מה נשמר לצד התשובה:
- תאריך שליפה לכל שדה שנשלף, ולא רק לרשומה כולה.
- מזהה המשאב שממנו נשלף הנתון, כי מזהי משאבים משתנים בין גרסאות מאגר.
- זמן העדכון של המאגר כפי שהוחזר בקריאת
package_show, כדי לדעת אם הנתון עצמו התיישן במקור. - תשובת המקור כפי שהיא בשדה נפרד, כדי שאפשר יהיה להסביר החלטה ישנה גם אחרי שהמאגר השתנה.
- מדיניות תוקף: כמה זמן תשובה שמורה נחשבת תקפה לפני שליפה חוזרת.
מאגרים ציבוריים משנים שמות שדות ומזהי משאבים בלי הודעה מוקדמת, וזו אותה משפחת תקלות שמתוארת בלמה מגרדי אתרים נשברים ואיך מתחזקים אותם. מי שמאמת פרטי רכב במסך קבלה במוסך יראה את זה מהר, ולכן שרשרת הנתונים במוסך בנויה כך שהשליפה היא עזר ולא תנאי.
מקורות
שאלות נפוצות
כמה שורות יש במאגר הרכב הפרטי והמסחרי?
בבדיקה שנעשתה מול הממשק, המשאב הראשי של המאגר החזיר מספר שורות כולל של כ-4.17 מיליון, ולצידו קיים משאב המשך נוסף. את המספר המדויק יש לקרוא בכל פעם מחדש משדה הסך הכולל בתשובת `datastore_search`, כי הוא משתנה.
האם היעדר מספר רישוי מהמאגר אומר שהרכב לא קיים?
לא. הוא אומר שהרכב אינו בהיקף המוצהר של המאגר שנבדק. אופנועים, כלי רכב מעל 3.5 טון, רכב ציבורי ורכב שאיבד תוקף רישיון יושבים במאגרים אחרים, ולכל אחד מהם הגדרת הכללה משלו.
באיזו תדירות מתעדכנים המאגרים?
חלק מהמאגרים מצהירים בתיאור שלהם על עדכון יומי, ולכל מאגר יש שדה זמן עדכון שמוחזר בקריאת `package_show`. הדרך הנכונה היא לקרוא את השדה הזה בכל שליפה ולשמור אותו, במקום להניח קצב עדכון קבוע.
למה עדיף `filters` על פני חיפוש `q`?
כי `q` הוא חיפוש טקסט חופשי על השורה כולה ומחזיר דירוג רלוונטיות, ולכן מספר יכול להתאים לשדה שלא התכוונתם אליו. `filters` עם שם השדה המפורש מחזיר התאמה מדויקת, וזו ההתנהגות שרוצים באימות.
להמשך קריאה
שירות רלוונטי
אוטומציה לעסקים
אני בונה אוטומציות מותאמות שמורידות עבודה חוזרת מקצה לקצה.
על הכותב
יהונתן סעדיה
מפתח פרילנסר לאוטומציה, אתרים ו-MVP
אני יהונתן סעדיה, מפתח בכיר שבונה אוטומציה עסקית, אתרים מותאמים ומוצרי MVP לעסקים קטנים ובינוניים בארה"ב, אירופה וישראל. המדריכים האלה נכתבים מתוך עבודה אמיתית עם לקוחות, לא מתיאוריה.
בוא נעבוד יחדיש לך פרויקט דומה?
ספר לי מה אתה רוצה לבנות או איזה תהליך להפוך לאוטומטי. אני חוזר תוך 24 שעות עסקים עם כמה שאלות ממוקדות, ואז עוברים על זה יחד בשיחת היכרות חינמית של 30 דקות, בלי התחייבות. בסוף יש לך היקף עבודה, לוח זמנים ומחיר קבוע - או תשובה כנה שלא שווה לבנות את זה.
