# 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` | הסטטוס והטקסט שחולץ |

```bash test
curl https://api.notholy.com/v1/cve/CVE-2021-44228 -H "Authorization: Bearer $NOTHOLY_API_KEY"
```

```bash test
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`. זה אותו מאגר שהצ׳אט קורא בעצמו.

```bash test
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`. כל קובץ נשמר מוצפן עם תוקף של שעה. התוקף נרשם, אבל מחיקה אוטומטית עדיין לא פעילה, ולכן הקובץ נשאר עד שמסירים אותו. כדי להסיר קובץ אפשר לכתוב אל legal@notholy.com. זה אחסון שמתבקש במפורש, נפרד מההסקה, שלא שומרת תוכן. הקבצים מפוענחים בתוך ארגז חול (sandbox) מבודד בלי רשת, ושום דבר מתוכם לא מורץ.

```bash test
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.js
```

`web/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`.

## הבא

- [CVE בצ׳אט](/he/chat/cves)
- [MCP](/he/mcp/local)
