الأوامر
كيف يُقرأ الأمر، والخيارات العامة، وكل أمر مكتوب يدويًا، وكل مساحة أسماء للموارد.
كيف يُقرأ الأمر
openemail <command> [subcommand] [arguments] [flags]- الخيارات تأتي في أي مكان بعد الأمر، قبل الوسائط أو بعدها. ويمكن للخيارات العامة مثل
--profileو--jsonأن تأتي قبله أيضًا، وأي خيار آخر يوضع هناك يتوقف مع تلميح بنقله إلى ما بعد اسم الأمر. - تتبع القيمة خيارها بعد مسافة أو علامة يساوي، فـ
--limit 50و--limit=50سواء. والخيارات القصيرة تأخذ قيمًا أيضًا، كما في-n 50. - القيمة التي تبدأ بشرطة تحتاج إلى علامة المساواة، كما في
--subject=-draft-، لأنها بعد المسافة تُقرأ على أنها الخيار التالي ويُبلَّغ أن الخيار الأول بلا قيمة. والأعداد السالبة تعمل بالطريقتين. والقيمة الفارغة خطأ استخدام لا قيمة افتراضية صامتة. - المفتاح يُشغَّل بـ
--flagويُطفأ بـ--no-flag، و--flag=trueو--flag=falseيعملان أيضًا. - القائمة مفصولة بفواصل أو مكررة:
--to [email protected],[email protected]، أو--toمرتين. - كل ما بعد
--وسيط وليس خيارًا أبدًا، وهكذا يمر البحث عن-from:ada. - الأمر أو الخيار المجهول يتوقف برمز الخروج
2ويقترح أقرب تطابق.
الخيارات العامة
| الخيار | ما تفعله |
|---|---|
| -h, --help | المساعدة للأمر أو المجموعة |
| -v, --version | طباعة إصدار CLI |
| --json | JSON فقط على stdout، والأخطاء بصيغة JSON على stderr، ولا مطالبات أبدًا |
| -y, --yes | تأكيد الإجراءات المدمّرة دون سؤال. لا يتخطى رمز التحقق أبدًا |
| --profile <name> | استخدام هذا الملف الشخصي المحفوظ، مثل OPENEMAIL_PROFILE |
| --api-key <key> | استخدام مفتاح API هذا لهذا الأمر وحده، مع تجاهل الملفات الشخصية |
| --base-url <url> | أصل API لمفتاح API أو لأمر لا يرسل بيانات اعتماد، مثل OPENEMAIL_BASE_URL. وتسجيل الدخول المحفوظ يستخدم أصله دائمًا |
| --no-input | عدم السؤال أبدًا. القيمة الناقصة تتوقف برمز الخروج 2 |
| --no-color | بلا ألوان، مثل NO_COLOR وFORCE_COLOR=0 |
| --debug | طباعة معرّفات الطلبات، والطلب الفاشل، وتتبعات المكدس |
الأوامر المكتوبة يدويًا
هذه مكتوبة للبشر: تسأل عمّا ينقص، وتنسّق ما تطبعه، وتجمع عدة استدعاءات API حين يفيد ذلك.
| الأمر | ما تفعله |
|---|---|
| login | تسجيل الدخول بمتصفحك، أو حفظ مفتاح API |
| whoami | الحساب الذي سجّلت به الدخول، مع مساحة العمل والنطاقات والانتهاء |
| status | ما يعرضه whoami، إضافة إلى عناوين الإرسال لديك وحالة كل نطاق |
| verify | إدخال رمز تحقق الآن، كي تعمل الأوامر الحساسة مدة 60 دقيقة |
| logout | تسجيل الخروج ونسيان ملف شخصي |
| profile list, use, current, remove | عرض عمليات تسجيل الدخول المحفوظة والتبديل بينها وإزالتها |
| send | إرسال بريد، أو جدولته، أو ترجمته وإرساله |
| inbox [folder] | عرض المحادثات في مجلد |
| search <query> | البحث في البريد بالصياغة التي يستخدمها التطبيق |
| read <thread-id> | قراءة محادثة، رسالة بعد رسالة |
| reply <thread-id> | الرد على آخر رسالة في محادثة |
| archive, unarchive, trash, star, unstar | ترتيب محادثة أو أكثر |
| mark read, mark unread | تعليم المحادثات كمقروءة أو غير مقروءة |
| snooze, unsnooze | إخفاء المحادثات حتى وقت لاحق، أو إعادتها الآن |
| label add, label remove | وضع تسميات على المحادثات أو إزالتها |
| temp new, list, read, watch, delete | صناديق وارد مؤقتة، دون تسجيل دخول |
| ai translate, languages, compose, summarize | ترجمة البريد وكتابته وتلخيصه بالذكاء الاصطناعي |
| mcp config, tools, call, serve | ربط عملاء الذكاء الاصطناعي، أو استدعاء أدوات MCP بنفسك |
| docs ask, open, read | سؤال هذا التوثيق وفتحه وقراءته |
| open [page] | فتح صفحة من تطبيق الويب |
| api <method> <path> | استدعاء أي نقطة نهاية REST بتسجيل دخولك |
| update | البحث في npm عن إصدار أحدث |
| completion <shell> | طباعة سكربت إكمال تلقائي لـ bash أو zsh أو fish |
| version | طباعة إصدارات CLI وSDK وبيئة التشغيل |
| help [command] | عرض المساعدة لأي أمر |
أوامر الموارد
كل طريقة في SDK هي أمر أيضًا: openemail <namespace> <verb>. مساحة الأسماء هي مساحة أسماء SDK بصيغة kebab-case، والفعل هو اسم الطريقة بصيغة kebab-case، فيصبح keys.listRequests هو openemail keys list-requests. وهي معًا تغطي REST API كلها.
openemail domains listopenemail domains create --domain acme.comopenemail rules create --data @rule.jsonopenemail keys list-requests 9f2c1a4b7e05d3862c1f0a44 --failed-only --allopenemail files download file_6bb640f5b99e47deb758f1f5 --out report.pdf- المعرّف الذي تأخذه الطريقة وسيط، كما في
openemail domains get <id>. وكل حقل في جسم الطلب خيار يحمل اسمه بصيغة kebab-case:replyToيصبح--reply-to، وcolor.backgroundColorيصبح--color-background-color. - ثلاثة حقول كان خيارها سيتعارض مع خيار عام أُعيدت تسميتها:
--template-versionو--label-colorو--resend-key. - يأخذ
--dataالجسم كله بصيغة JSON، مضمّنًا، أو من ملف عبر@path، أو من stdin عبر-، وأي خيار تمرره إلى جانبه يتجاوز مفتاحه. والخيار الذي يأخذ كائنًا يقرأ JSON بالطريقة نفسها. - تُقرأ الأرقام والمفاتيح على حالها، والقوائم مفصولة بفواصل أو مكررة.
- القيمة المطلوبة الناقصة تُطلب في الطرفية، وهي خطأ استخدام (رمز الخروج
2) في أي مكان آخر. - فعل القائمة يقرأ صفحة واحدة. يحدد
--limitحجمها، ويواصل--cursorمن المؤشر الذي طبعه. ويقرأ--allكل صفحة ويبث العناصر، ويتوقف--max <n>بعد هذا العدد، ويطبع--ndjsonكائن JSON واحدًا في كل سطر. - أي شيء مدمّر، كالحذف أو الإبطال أو التدوير أو الإلغاء أو التفريغ، يطلب منك التأكيد، ما لم تمرّر
--yes. - يُكتب التنزيل في الملف المحدد في
--out، ولا يُكتب على stdout إلا حين لا يكون stdout طرفية.
يعرض openemail <namespace> <verb> --help كل وسيط وخيار بنوعه، والنطاقات التي يحتاجها الاستدعاء، وطريقته ومساره، وما يعيده، والملاحظات من مرجع API.
كل مساحة أسماء
عمود «أيضًا» يسرد الأسماء الأخرى التي تستجيب لها مساحة الأسماء.
| مساحة الأسماء | أيضًا | الأفعال |
|---|---|---|
| me | get, ping, rotate | |
| keys | key | list, get, create, update, delete, rotate, revoke, list-requests, list-activity, list-workspace-requests, list-workspace-activity |
| addresses | address | list |
| languages | language | list |
| emails | email | send, send-batch, translate, list, get, list-events, get-tracking, cancel, reschedule |
| templates | template | list, get, create, update, duplicate, replace-content, delete, list-versions, get-version, publish, restore-version, delete-version, list-starters, get-starter, list-fonts, render, preview, get-analytics, list-sends, send |
| tracking | list, get-stats, get, list-opens, list-clicks | |
| threads | thread | list, get, update, trash, snooze, unsnooze, list-attachments |
| drafts | draft | list, get, create, update, delete |
| labels | list, list-colors, get, create, update, delete | |
| contacts | contact | list, get, create, update, delete, set-audiences, list-people, save, delete-many, set-photo, remove-photo, block, unblock, list-threads, activity |
| audiences | audience | list, growth, get, create, update, delete, empty, list-contacts, add-contact, remove-contact, add-contacts, remove-contacts, import-contacts |
| broadcasts | broadcast | preview, send, list, get, stats, list-recipients, get-recipient, cancel |
| domains | domain | list, get, create, verify, update, delete, list-addresses, create-address, get-address, update-address, delete-address |
| rules | rule | list, get, create, update, delete, reorder, test, list-runs |
| webhooks | webhook | list, get, create, update, delete, rotate-secret, test, list-deliveries, get-delivery, replay-delivery, list-workspace-deliveries, list-activity, list-workspace-activity |
| imports | import | list, get, create, upload-state, upload-chunk, start, cancel, list-failures, delete-upload, import-files |
| provider-imports | provider-import, providerImports | inspect, create, list, get, cancel |
| calendar | list-events, get-event, get-event-ics | |
| settings | setting | get, update |
| roles | role | list, get, create, update, delete, list-permissions |
| members | member | list, get, add, update, remove, grant-address, revoke-address, list-invitations, revoke-invitation, resend-invitation |
| suppressions | suppression | list, get, add, remove |
| files | file | list, get, stats, download, list-links, create-link, revoke-link, upload, delete, delete-many |
| temp-mail | tempMail | list-domains, create, get, extend, delete, list-messages, get-message, delete-message, list-attachments |
الأسماء البديلة
| الاسم البديل | بدلًا من |
|---|---|
| ls | list |
| show, view | get |
| new, add | create |
| edit | update |
| rm, del, remove | delete |
| openemail ls | openemail inbox |
| openemail show | openemail read |
في members وsuppressions، حيث الفعلان add وremove، يقود new وcreate إلى add، ويقود rm وdel وdelete إلى remove. ولبعض الأوامر الفرعية المكتوبة يدويًا أسماء بديلة خاصة بها، تذكرها مساعدتها.
أي استدعاء REST
يرسل openemail api <method> <path> طلبًا واحدًا إلى REST API عبر النقل نفسه الذي يستخدمه كل أمر آخر، فتسري عليه ملفك الشخصي أو مفتاحك، وتجديد الرمز، ورموز التحقق. والمسار وحده يعني GET. ويُطبع رد JSON منسّقًا، والطلب الفاشل يطبع خطأ الـ API ويخرج بالرمز المقابل.
openemail api /keys/selfopenemail api GET /threads --query folder=inbox --query limit=5openemail api POST /labels --data '{"name":"Receipts"}'openemail api PATCH /threads/CAHk7pQ2x9LmZ4 --data @patch.jsonopenemail api GET /files/file_6bb640f5b99e47deb758f1f5/content --out report.pdf- يأخذ
-dو--dataالجسم بصيغة JSON مضمّنة، أو من ملف بـ@path، أو من stdin بـ-. ويأخذ-qو--queryو-Hو--headerالقيمةkey=valueويمكن تكرارها، ويحفظ-oو--outالرد في ملف كما وصل. - المسار نسبي إلى أصل الـ API. والعنوان الكامل، والمسار الذي سيخرج من الأصل، وترويسة
Authorizationتُرفض برمز الخروج2قبل إرسال أي شيء، لأن CLI تضبط بيانات الاعتماد بنفسها.
المساعدة
openemail --helpopenemail help sendopenemail domains --helpopenemail domains create --helpيسرد openemail --help كل أمر بحسب الغرض منه. وتسرد المجموعة أوامرها الفرعية مع أمثلة، ويعرض الأمر كل ما يأخذه. ويفتح openemail docs open cli هذه الصفحات.