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

فرم‌ها

`forms.list`، `get`، `create`، `update`، `delete`، `publish`، `pause`، `resume`، `duplicate`، `analytics`، `listStarters`، `getStarter`، `listSubmissions`، `getSubmission`، `deleteSubmission`، `deleteSubmissions`، `approveSubmission`، `resendConfirmation` و `subscribe`.

همهٔ متدها

forms.ts
const form = await openemail.forms.create({  name: 'Newsletter sign-up',  starter: 'newsletter',  settings: { audienceIds: ['aud_4c1b8e2a7d9f05c36b4e8a71'] },  publish: true,}) console.log(form.url, form.subscribeUrl) const saved = await openemail.forms.update(form.id, {  settings: { doubleOptIn: true, senderAddress: '[email protected]' },  expectedUpdatedAt: form.updatedAt,}) const signup = await openemail.forms.subscribe(form.id, {  email: '[email protected]',  first_name: 'Ann',  consent: true,}) for await (const submission of openemail.forms.iterateSubmissions(form.id, { status: 'pending' })) {  if (submission.expired) await openemail.forms.resendConfirmation(form.id, submission.id)} const stats = await openemail.forms.analytics(form.id, { days: 30 })const starters = await openemail.forms.listStarters() await openemail.forms.pause(form.id)await openemail.forms.resume(form.id)const copy = await openemail.forms.duplicate(form.id)await openemail.forms.delete(copy.id) console.log(saved.senderIssue, signup.outcome, stats.totals.conversion, starters.length)

هر فرم یک document پیش‌نویس و publishedDocument را که بازدیدکنندگان می‌بینند نگه می‌دارد. update پیش‌نویس و تنظیمات را تغییر می‌دهد، و publish پیش‌نویس را فعال می‌کند. تنظیمات بی‌درنگ اعمال می‌شوند، چه فرم منتشر شده باشد چه نه، و expectedUpdatedAt ذخیره‌ای را که روی ذخیرهٔ کس دیگری بنویسد با 409 version_conflict رد می‌کند.

خواندن به forms:read و تغییر دادن به forms:write نیاز دارد. approveSubmission به contacts:write هم نیاز دارد، چون یک مخاطب می‌افزاید. resendConfirmation به emails:send هم نیاز دارد، و فراخوانی‌ای که باعث شود فرم ایمیل بفرستد نیز همین‌طور: روشن کردن doubleOptIn، تنظیم senderAddress یا ایمیل تأیید، یا انتشار یا ادامهٔ یک فرم با تأیید دوگانه. delete از توکن دسترسی OAuth کد تأیید هویت می‌خواهد، و از کلید API هرگز.

subscribe کسی را همان‌گونه ثبت‌نام می‌کند که صفحهٔ فرم می‌کند و هیچ اعتبارنامه‌ای نمی‌فرستد، حتی از کلاینتی که اعتبارنامه دارد. همهٔ ثبت‌نام‌هایی که از یک شبکه می‌آیند سقف 40 بار در هر ده دقیقه را با هم شریک‌اند، پس سروری که ثبت‌نام‌های افراد زیادی را بازارسال می‌کند زود به آن می‌رسد: افرادی را که از پیش می‌شناسید به‌جای آن با audiences.importContacts بیفزایید. صفحه‌ای را که فرم روی آن بود به‌صورت oe_source بدهید، oe_started را کنار بگذارید، و oe_website را خالی بفرستید یا اصلاً نفرستید.

یک 422 از subscribe همان invalid_form_submission است، و fields خطا هر جوابی را که جا افتاده یا معتبر نیست به‌صورت { key, error } فهرست می‌کند، با دلیل‌هایی مانند required، email و option. این کلاینت برای سرورهاست. در مرورگر، جواب‌ها را با fetch به‌صورت بدنهٔ JSON یا با سرآیند Accept: application/json به subscribeUrl فرم ارسال کنید، که از هر مبدئی پاسخ JSON می‌دهد. بدون هیچ‌کدام از این دو، با یک هدایت 303 به صفحهٔ میزبانی‌شده پاسخ می‌دهد.

پاسخ: FormDetailResource

list به یک صفحه از FormResource می‌رسد، تازه‌ترین اول، بدون document و settings، و listAll و iterate همهٔ صفحه‌ها را می‌پیمایند. get، create، update، publish، pause، resume و duplicate به یک FormDetailResource می‌رسند که document، publishedDocument، settings، audiences، senderIssue و senderProblem را هم در بر دارد.

idstring
دستگیرهٔ ماندگار، `frm_` و پس از آن 24 نویسهٔ hex.
status'draft' | 'live' | 'paused'
تا نخستین انتشار `draft`، سپس `live` تا وقتی ثبت‌نام می‌پذیرد و `paused` تا وقتی نمی‌پذیرد. فرم هرگز به `draft` برنمی‌گردد.
urlstring
صفحهٔ میزبانی‌شدهٔ فرم منتشرشده، برای اشتراک‌گذاری به‌صورت پیوند.
subscribeUrlstring
جایی که یک فرم HTML ساده، یا `fetch`، جواب‌ها را به آن ارسال می‌کند.
documentFormDocument
پیش‌نویس: `fields` به ترتیب، `copy` پیرامونشان و `style`.
publishedDocumentFormDocument | null
آنچه بازدیدکنندگان اکنون می‌بینند. تا نخستین انتشار null است.
settingsFormSettings
اینکه ثبت‌نام‌ها کجا می‌روند و پس از هر ثبت‌نام چه رخ می‌دهد: `audienceIds`، `doubleOptIn`، `senderAddress`، ایمیل تأیید، `successAction`، `redirectUrl` و `notifyAddresses`.
hasUnpublishedChangesboolean
وقتی پیش‌نویس با آنچه بازدیدکنندگان می‌بینند فرق دارد true است. پیش از نخستین انتشار همیشه false است.
senderIssue'missing' | 'not_sendable' | 'not_allowed' | null
اینکه چرا یک فرم با تأیید دوگانه اکنون نمی‌تواند ایمیل‌های تأییدش را بفرستد، یا null وقتی می‌تواند.
statsFormStats
`views`، `submissions`، `added`، `pending` و `lastSubmittedAt`، که در همان لحظهٔ خواندن شمرده می‌شوند.

پاسخ‌ها

listSubmissions پاسخ‌ها را صفحه به صفحه، تازه‌ترین اول، برمی‌گرداند، با q برای جست‌وجو در نشانی‌های ایمیل و status برای pending یا added، و listAllSubmissions و iterateSubmissions همهٔ صفحه‌ها را می‌پیمایند. هر FormSubmissionResource جواب‌ها را همان‌طور که فرستاده شدند، همراه با برچسب‌ها، نگه می‌دارد، پس پس از تغییر فرم هم درست خوانده می‌شود.

resendConfirmation به همان پاسخ همراه با confirmationSent می‌رسد. وقتی چیزی نرفته باشد false است: هر نشانی برای هر فرم یک پیام تأیید در هر ده دقیقه و در کل فضای کاری پنج پیام در روز می‌گیرد، و پاسخی که افزوده شده هیچ پیامی نمی‌گیرد. expired ثبت‌نامِ در انتظار تأییدی را نشان می‌دهد که آخرین پیوندش منقضی شده است.

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

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

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