מדריך API
API מחקר
רשומות CVE, שאילתות על התרעות אבטחה, חיפוש ברשת, קריאת דפים וניתוח קבצים. אותם נתונים שהצ׳אט משתמש בהם.
הנתיבים האלה נותנים ל-CLI, לתוסף ולקוד שלך את הנתונים שהצ׳אט משתמש בהם. כל ארגון יכול לשלוח אליהם 120 בקשות לדקה. הם לא צורכים טוקנים, ולכן אין עליהם חיוב לפי טוקן.
| נתיב | מה הוא עושה |
|---|---|
GET /v1/cve/{id} | CVE אחד עם התיאור מ-NVD, CVSS, CWE, EPSS, הסטטוס ב-CISA KEV ומקורות |
GET /v1/cve/search?q=&vendor=&cwe=&kev=true&min_cvss=&min_epss=&limit= | חיפוש בעותק המקומי (mirror) |
GET /v1/kb/search?q=&domain=&source=&tool=&limit= | חיפוש במאגר הידע לאבטחה, שמקורותיו נבחרו ידנית |
GET /v1/kb/{id} | קריאת מסמך אחד ממאגר הידע, בחלוקה לעמודים לפי סעיף |
POST /v1/advisories/query | התרעות אבטחה (advisories) לחבילה ולגרסה |
POST /v1/web/search | תוצאות חיפוש ברשת עם כותרת, URL ותקציר |
POST /v1/web/read | הטקסט של דף ציבורי, שנשלף דרך נתיב יציאה מוגן |
POST /v1/files | העלאת קובץ לניתוח סטטי |
GET /v1/files/{id}, GET /v1/files/{id}/content | הסטטוס והטקסט שחולץ |
curl https://api.notholy.com/v1/cve/CVE-2021-44228 -H "Authorization: Bearer $NOTHOLY_API_KEY"curl -X POST https://api.notholy.com/v1/advisories/query \
-H "Authorization: Bearer $NOTHOLY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ecosystem": "npm", "name": "lodash", "version": "4.17.15"}'מאגר ידע
GET /v1/kb/search מחזיר קטעים ממאגר ידע לאבטחה שמקורותיו נבחרו ידנית ומותרים לשימוש, כל קטע עם המקור, הרישיון והייחוס שלו. אפשר לסנן לפי domain (web, api, mobile, offensive, tools, cloud, ir, attack), source או tool. את המסמך המלא קוראים עם GET /v1/kb/{id}, בחלוקה לעמודים עם הפרמטרים from וגם limit. זה אותו מאגר שהצ׳אט קורא בעצמו.
curl "https://api.notholy.com/v1/kb/search?q=ssrf+prevention&domain=web" -H "Authorization: Bearer $NOTHOLY_API_KEY"קבצים
POST /v1/files מקבל את הבייטים הגולמיים כגוף הבקשה, עד 32 MB, ואת השם בכותרת x-file-name, בקידוד URL כשיש בו תווים שאינם ASCII. כדי לחכות לתוצאת הניתוח מוסיפים ?wait=1. כל קובץ נשמר מוצפן עם תוקף של שעה. התוקף נרשם, אבל מחיקה אוטומטית עדיין לא פעילה, ולכן הקובץ נשאר עד שמסירים אותו. כדי להסיר קובץ אפשר לכתוב אל [email protected]. זה אחסון שמתבקש במפורש, נפרד מההסקה, שלא שומרת תוכן. הקבצים מפוענחים בתוך ארגז חול (sandbox) מבודד בלי רשת, ושום דבר מתוכם לא מורץ.
printf 'const q = "SELECT * FROM users WHERE id = " + req.query.id;\n' > handler.js
curl -X POST "https://api.notholy.com/v1/files?wait=1" \
-H "Authorization: Bearer $NOTHOLY_API_KEY" \
-H "x-file-name: handler.js" \
--data-binary @handler.jsweb/read קורא רק דפים ציבוריים. הוא מסרב לכתובות פרטיות ואף פעם לא שולח תעבורה למטרות בשמך. כל מה שכתוב בדף מטופל כנתונים, אף פעם לא כהוראה.
שגיאות בנתיבים האלה הן בצורה {"error": {"code", "message"}}; שגיאות מפתח ומגבלת קצב הן בפורמט של OpenAI. קודים ייחודיים: search_failed וגם read_failed (502), 422 עם הסיבה כשהנתיב web/read מסרב לדף, וגם file_too_large (413) מעל 200 MB. העלאה של 32 עד 200 MB נכשלת עם 502 upstream_error.