پرش به مستندات
CLI

اسکریپت‌نویسی

خروجی JSON، جریان‌ها، کدهای خروج، متغیرهای محیطی و اجرای بدون نظارت یا در CI.

خروجی JSON

با --json، stdout فقط JSON با تورفتگی دو فاصله دارد، یادداشت‌ها و پیشرفت روی stderr می‌مانند و هیچ چیز پرسیده نمی‌شود. یک فهرست { items, hasMore, nextCursor } را چاپ می‌کند، یک شیء API همان‌طور که API برگردانده چاپ می‌شود و یک فرمان دست‌نوشته شیئی را چاپ می‌کند که راهنمایش توصیف کرده است.

ترمینال
openemail whoami --json | jq -r .workspaceIdopenemail emails list --status failed --json | jq -r ".items[].id"

خطا به‌صورت یک سطر JSON به stderr می‌رود و کد خروج همان است که یک انسان می‌گرفت:

stderr
{"error":{"type":"permission_error","code":"insufficient_scope","message":"This API key does not have the domains:write scope.","hint":"The credential is missing a scope this call needs. Use a key that has it, or sign in again with openemail login.","next":null,"status":403,"requestId":"req_7Hc2kQ","param":null,"docUrl":"https://openemail.uk/docs/api/errors#insufficient_scope","exitCode":4}}
فیلدمحتوای آن
typeنوع خطای API، یا cli_error، network_error یا internal_error برای شکستی درون CLI
codeکدی پایدار مثل insufficient_scope، not_signed_in یا unknown_flag
messageچه چیزی خراب شد، در یک جمله
hint, nextچه چیزی را امتحان کنید، و فرمانی که باید بعد اجرا شود، یا null
status, requestId, param, docUrlاز API وقتی خطا از آن آمده، وگرنه null
exitCodeکد خروجی که فرایند با آن پایان می‌یابد

جریان‌ها

برخی خروجی‌ها جریانی از شیءهای JSON‌اند، یکی در هر سطر، تا یک خط لوله هر مورد را همان لحظه که می‌رسد پردازش کند:

  • یک فهرست منابع با --all وقتی stdout ترمینال نیست، یا با --ndjson. --max <n> پس از همان تعداد مورد می‌ایستد.
  • openemail temp watch --json، یک سطر برای هر پیام تازه.
  • openemail mcp serve، یک پیام JSON-RPC در هر سطر در هر دو جهت.
ترمینال
openemail contacts list --all > contacts.ndjsonopenemail emails list --status failed --all --max 500 | jq -r .id

کدهای خروج

کدمعنا
0انجام شد
1شکستی غیرمنتظره، خطای سرور، یا ارسالی که شکست خورد
2خطای کاربرد: آرگومان نادرست، فرمان یا پرچم ناشناخته، مقدار یا تأییدی که نمی‌شد پرسید، یا مبدأ یا مسیری که CLI اعتبارنامه‌ای به آن نمی‌فرستد
3وارد نشده‌اید، یا ورود رد شده، منقضی شده یا در حین اجرای فرمان از آن خارج شده‌اید
4مجاز نیست: دامنهٔ مجوز یا اجازه‌ای کم است، کد تأیید هویتی که نمی‌شد پرسید یا متوقف شده است، یا کلید API جایی که ورود با مرورگر لازم است
5پیدا نشد
6تعارض با وضعیت فعلی
7ورودی نامعتبر بود
8محدودیت نرخ، یا سهمیهٔ هوش مصنوعی تمام شده است
9شبکه شکست خورد یا زمانش سر آمد
10لغو شد: یک تأیید یا پرسش را رد کردید
130, 143با Ctrl+C یا با SIGTERM متوقف شد

متغیرهای محیطی

متغیرچه می‌کند
OPENEMAIL_API_KEYکلید API‌ای که به جای هر نمایهٔ ذخیره‌شده به کار می‌رود
OPENEMAIL_PROFILEنمایهٔ ذخیره‌شده‌ای که به کار می‌رود
OPENEMAIL_BASE_URLمبدأ API برای OPENEMAIL_API_KEY، --api-key و فرمان‌هایی که اعتبارنامه‌ای نمی‌فرستند. ورود ذخیره‌شده فقط به API‌ای می‌رود که در آن وارد شده است
OPENEMAIL_APP_URLمبدأ برنامهٔ وب، برای ورود، open و پیوندهای مستندات
OPENEMAIL_CONFIG_DIRجای نگهداری نمایه‌ها و توکن‌های صندوق، اگر تنظیم نشده باشد ~/.openemail
OPENEMAIL_NO_UPDATE_CHECKهرگز npm را برای انتشار جدیدتر بررسی نکن. OPENEMAIL_DISABLE_UPDATE_NOTICE هم همین کار را می‌کند
NO_COLOR, FORCE_COLOR=0بدون رنگ
CIهرگز نپرس، هرگز مرورگر باز نکن، هرگز به‌روزرسانی را بررسی نکن. بیشتر سرویس‌های CI بدون آن هم شناخته می‌شوند
VISUAL, EDITORویرایشگری که send و reply برای بدنه باز می‌کنند

اجرای بدون نظارت

CLI فقط وقتی پرسش می‌کند که stdin و stdout هر دو ترمینال باشند و هیچ‌کدام از --json، --no-input یا CI برقرار نباشد. در غیر این صورت:

  • مقدار الزامیِ گمشده با کد خروج 2 متوقف می‌شود و پرچمی را که باید بدهید نام می‌برد.
  • فرمان ویرانگر با Refusing to run unattended. Pass --yes to confirm. و کد خروج 2 متوقف می‌شود، مگر اینکه --yes بدهید.
  • تغییری که کد تأیید هویت لازم دارد با کد خروج 4 متوقف می‌شود، چون کسی نمی‌تواند آن را تایپ کند. از کلید API استفاده کنید، یا نخست openemail verify را اجرا کنید.

در CI

به کار یک کلید API فقط با دامنه‌های مجوز لازم بدهید، آن را در یک راز نگه دارید و بگذارید OPENEMAIL_API_KEY آن را برساند. چیزی ذخیره نمی‌شود، چیزی پرسیده نمی‌شود و هیچ بررسی به‌روزرسانی‌ای اجرا نمی‌شود.

.github/workflows/deploy.yml
- name: Tell the team  env:    OPENEMAIL_API_KEY: ${{ secrets.OPENEMAIL_API_KEY }}  run: |    npx -y @openemail/[email protected] send \      --from [email protected] \      --to [email protected] \      --subject "Deployed ${{ github.sha }}" \      --text "Build ${{ github.run_number }} is live." \      --idempotency-key "deploy-${{ github.run_id }}"
منتظر ماندن برای ایمیل ثبت‌نام
ADDRESS=$(npx -y @openemail/[email protected] temp new --ttl 15)./signup-test.sh "$ADDRESS"npx -y @openemail/[email protected] temp watch --first --json | jq -r .snippetnpx -y @openemail/[email protected] temp delete --yes
شکست در صورت ارسال‌های ناموفق
failed=$(openemail emails list --status failed --json | jq ".items | length")test "$failed" -eq 0

در ارسالی که ممکن است یک خط لوله دوباره امتحانش کند --idempotency-key بدهید و آن را از چیزی بسازید که ارسال را لازم کرده، مثل شناسهٔ اجرا. اجرای دوبارهٔ گام آن‌وقت همان ارسال نخست را برمی‌گرداند به جای اینکه دو بار نامه بفرستد.

صندوق ورودی شما،
با شرایط خودتان.

زیرساخت ایمیل برای کسب‌وکارها، هوش مصنوعی، عامل‌ها و ایمیل شخصی. ساخته‌شده برای مقیاس، حریم خصوصی و کنترل. هر چه ایمیل باید از روز نخست می‌داشت.

OpenEmail

زیرساخت ایمیل برای کسب‌وکارها، هوش مصنوعی، عامل‌ها و ایمیل شخصی. ساخته‌شده برای مقیاس، حریم خصوصی و کنترل. هر چه ایمیل باید از روز نخست می‌داشت.

© 2026 OpenEmail. همه حقوق محفوظ است.