morning-cli
August 10, 2026 · View on GitHub
כלי שורת פקודה ידידותי-סוכן (agent-native) ל-morning — מערכת הנהלת החשבונות המובילה בישראל.
נבנה על-ידי JangoAI במתודולוגיית cli-anything. גרסה באנגלית: README.md.
למה בניתי את זה
אני מאור, מפתח עצמאי שמנהל את JangoAI — סטודיו קטן לאוטומציה ו-AI בישראל. אני עובד עם ה-API של morning כל יום — בעסק שלי ובפרויקטים של לקוחות — ונמאס לי לכתוב את אותו boilerplate של httpx + JWT בכל פרויקט מחדש.
אז בניתי CLI סדור מסביב לזה, ואין סיבה לשמור אותו לעצמי. אם גם אתם עובדים עם ה-API של morning, הכלי הזה יחסוך לכם זמן. אני משתף אותו עם הקהילה הישראלית כי אני חושב שמגיע לנו כלים טובים יותר לפלטפורמות המקומיות שלנו.
מה זה
morning-cli עוטף את כל ה-API של morning ב-CLI נקי שאפשר להשתמש בו משורת הפקודה, מסקריפטים, או מתוך סוכני AI (Claude Code, Cursor, וכו'). הכלי לא מממש חשבוניות בפייתון — הוא קורא ישר ל-API האמיתי של morning.
מה יש בארסנל:
- ✅ תואם ל-API v2 החדש של morning (developers.morning.co) — 9 קבוצות API (עסקים, לקוחות, ספקים, פריטים, מסמכים, הוצאות, תשלומים, פרטנרים, כלים) + ניהול auth/session מקומי
- ✅ אימות OAuth 2.0 מול ה-IDP החדש, עם fallback אוטומטי ל-endpoint הישן אם צריך
- ✅ העלאת קבצי הוצאות ב-flow החדש (
expense upload receipt.pdf) — presigned S3 - ✅ אשף התחברות אינטראקטיבי (
morning-cli auth init) שמעביר אותך שלב-אחר-שלב ביצירת מפתחות API - ✅ REPL אינטראקטיבי כמצב ברירת מחדל — הרץ
morning-cliבלי פרמטרים - ✅ פלט JSON עקבי (
--json) לצריכה על-ידי AI agents, עם מבנה מתועד - ✅ חידוש טוקן אוטומטי על 401 — לא צריך לחשוב על תוקף טוקנים
- ✅ ברירת מחדל: sandbox — תקלות לא פוגעות בנתונים אמיתיים
- ✅ קובץ session נעול ב-
~/.greeninvoice/session.json(הרשאות 0600) - ✅ 85 טסטים, מתוכם 23 רצים חי מול ה-API האמיתי (sandbox או production)
- ✅ הודעות שגיאה בעברית נשמרות end-to-end (
errorCode+errorMessage)
התקנה
pip install morning-cli
דורש Python 3.10 ומעלה.
התחלה מהירה
# 1. הרץ את אשף ההתחברות האינטראקטיבי
morning-cli auth init
האשף ידריך אותך:
- לבחור בין sandbox ל-production
- לפתוח את העמוד של morning ליצירת מפתח API
- להדביק את ה-
idוה-secret - לאמת את המפתחות מול ה-API האמיתי
- לשמור אותם ב-
~/.greeninvoice/credentials.json(הרשאות 0600)
לאחר מכן:
# REPL אינטראקטיבי (מצב ברירת מחדל)
morning-cli
# או פקודות חד-פעמיות
morning-cli --json business current # פרטי העסק שלך
morning-cli --json document types --lang he # כל סוגי המסמכים הנתמכים
morning-cli --json client search # כל הלקוחות
דוגמה — יצירת חשבון עסקה (Proforma Invoice)
cat > /tmp/proforma.json <<'JSON'
{
"description": "ריטיינר חודשי",
"type": 300,
"lang": "he",
"currency": "ILS",
"vatType": 0,
"client": {"name": "חברת אקמה בע\"מ", "emails": ["ap@acme.co.il"], "country": "IL"},
"income": [
{"description": "שירותי ייעוץ", "quantity": 10, "price": 300, "currency": "ILS", "vatType": 0}
]
}
JSON
# תצוגה מקדימה (לא יוצרת מסמך אמיתי)
morning-cli --json document preview --file /tmp/proforma.json
# יצירה בפועל
morning-cli --json document create --file /tmp/proforma.json
סוגי מסמכים נתמכים
| קוד | סוג |
|---|---|
| 10 | הצעת מחיר |
| 20 | דרישת תשלום / אישור תשלום |
| 100 | הזמנה |
| 200 | תעודת משלוח |
| 300 | חשבון עסקה (עובד לכל סוגי העסקים) |
| 305 | חשבונית מס (לא זמין לעוסק פטור) |
| 320 | חשבונית מס / קבלה |
| 330 | חשבונית זיכוי |
| 400 | קבלה |
| 405 | קבלה לתרומה |
הרשימה המלאה: morning-cli --json document types --lang he
פקודות לפי קבוצה
| קבוצה | endpoints | פקודות עיקריות |
|---|---|---|
auth | מקומי | init (אשף), login, logout, whoami, refresh |
session | מקומי | show, reset, history |
business | 10 (legacy) | list, current, get, update, ניהול מספור ולוגו — הוסר מתיעוד v2, עדיין עובד |
client | 8 | add, get, update, delete, search, merge |
supplier | 6 | כמו client אבל לספקים |
item | 5 | ניהול פריטי קטלוג (מוצרים/שירותים) |
document | 13 | יצירה, חיפוש, הורדת PDF, סגירה/פתיחה |
expense | 13 | הוצאות + upload (העלאת קבלות ב-flow החדש) + drafts-search/draft-delete |
payment | 3 | טפסי תשלום וחיוב כרטיסי אשראי שמורים |
partner | 3 | חיבורי בין-חשבונות של morning (אימות Basic) |
tools | 4 | רשימות עזר: עיסוקים, מדינות, ערים, מטבעות |
שגיאות נפוצות
| קוד | משמעות | מה לעשות |
|---|---|---|
| 401 | טוקן פג | ה-CLI מחדש אוטומטית — אם זה עדיין נכשל, הרץ morning-cli auth init שוב |
| 1003 | אין עסק פעיל בחשבון | צור עסק ב-UI של morning תחילה |
| 1006 | המינוי פג | חדש את המינוי בהגדרות morning |
| 1007 | חסרה הרשאה | מפתח ה-API שלך בסקופ מוגבל מדי |
| 1012 | הפעולה דורשת מסלול גבוה יותר | שדרג את המינוי |
| 1110 | מחיר לא תקין | בדוק את שדה price ב-income[] |
| 2102 | אי-אפשר להוסיף עוד עסקים במסלול הזה | שדרג או מחק עסק קיים |
| 2403 | סוג מסמך לא נתמך עבור סוג העסק | עוסק פטור למשל לא יכול להנפיק חשבונית מס (305) |
משתני סביבה
export MORNING_API_KEY_ID=<ה-id-שלך>
export MORNING_API_KEY_SECRET=<הסוד-שלך>
export MORNING_ENV=sandbox # או production
| משתנה | תפקיד | ברירת מחדל |
|---|---|---|
MORNING_API_KEY_ID / MORNING_API_KEY_SECRET | מפתחות ה-API | — |
MORNING_ENV | sandbox או production | sandbox |
MORNING_BASE_URL | דריסת כתובת ה-REST הראשית (פרוקסי וכו') | אוטומטי |
MORNING_GATEWAY_URL | דריסת ה-hosts של ה-OAuth IDP והעלאת קבצים | אוטומטי |
MORNING_AUTH_MODE | auto (ברירת מחדל) / oauth (בלי fallback) / legacy (בלי IDP) | auto |
איך האימות עובד (מגרסה 0.2.0): ה-CLI מקבל טוקן לשעה דרך OAuth 2.0
(POST /idp/v1/oauth/token על api.morning.co בפרודקשן או
api.sandbox.morning.dev בסנדבוקס), ואם ה-IDP לא זמין לסביבה — נופל
אוטומטית ל-POST /account/token הישן. רענון על 401 אוטומטי בכל מקרה.
נתוני העזר (tools) מגיעים מ-host משותף (cache.greeninvoice.co.il) בלי אימות.
(התחילית הישנה GREENINVOICE_* עדיין נתמכת.)
שאלות נפוצות
איך אני יוצר מפתחות API?
היכנס ל-morning → Settings → Advanced → Developers → "יצירת מפתח API". שים לב: הסוד מוצג פעם אחת בלבד. הרץ morning-cli auth init והאשף יפתח את הדף הנכון בשבילך.
מה ההבדל בין sandbox ל-production? Sandbox הוא סביבת בדיקות עם בסיס נתונים נפרד. מפתחות sandbox לא עובדים ב-production ולהפך. ה-sandbox משתמש בכרטיס אשראי דמו לתשלומים. הרשמה ל-sandbox: lp.sandbox.d.greeninvoice.co.il/join.
האם צריך מסלול מסוים של morning? כן — ה-API נעול מאחורי מסלולים מסוימים (כמו "Best"). אם אתה רואה "ForbiddenException: Product is not included in your subscription" — המסלול שלך לא כולל את מודול ה-API.
אני עוסק פטור — אילו מסמכים אני יכול להנפיק? עוסק פטור יכול להנפיק: הצעות מחיר (10), הזמנות (100), תעודות משלוח (200), חשבונות עסקה (300), קבלות (400). לא ניתן להנפיק חשבוניות מס (305) — זה מוגבל לעוסק מורשה/חברה.
איך אני מוחק חשבונית שיצרתי בטעות?
אי-אפשר — מסמכים שהונפקו לא ניתנים למחיקה מסיבות רגולטוריות. מה שכן: אפשר לבטל ב-document close או להנפיק חשבונית זיכוי (330).
AI Agents
יש לחבילה קובץ SKILL.md שמתגלה אוטומטית על-ידי Claude Code / Cursor. אם אתה סוכן AI שקורא את זה — תתחיל שם, יש שם דוגמאות מוכנות ורשימה מלאה של קודי השגיאה של morning.
תרומה לפרויקט
PRs ברוכים ב-github.com/jango-ai-com/morning-cli. לפני שליחה:
pip install -e ".[test]"
pytest cli_anything/greeninvoice/tests/test_core.py -v
על JangoAI
JangoAI היא סטודיו ישראלי לאוטומציה וכלי AI לעסקים. אנחנו בונים אינטגרציות עם n8n, Monday.com, Supabase, ו-CLIs כמו זה — כולם עם דגש על להיות שימושיים לסוכני AI ולא רק לבני אדם.
היי, אם השתמשת בכלי ועזר לך — בוא נכיר! צור קשר דרך jango-ai.com או פתח issue ב-GitHub.
רישיון
MIT. ראה LICENSE.
נבנה על-ידי JangoAI · jango-ai.com · @jango-ai-com ב-GitHub