दस्तावेज़ पर जाएँ
PHP

फ़ॉर्म

`forms->list`, `listAll`, `iterate`, `get`, `create`, `design`, `redesign`, `update`, `delete`, `publish`, `pause`, `resume`, `duplicate`, `analytics`, `listStarters`, `getStarter`, `listSubmissions`, `getSubmission`, `deleteSubmission`, `deleteSubmissions`, `approveSubmission`, `resendConfirmation` और `subscribe`।

हर मेथड

forms.php
use OpenEmail\Constants\FormStarterSlugs;use OpenEmail\Constants\FormSubmissionStatuses; $form = $client->forms->create([    'name' => 'Newsletter sign-up',    'starter' => FormStarterSlugs::NEWSLETTER,    'settings' => ['audienceIds' => ['aud_4c1b8e2a7d9f05c36b4e8a71']],    'publish' => true,]); echo $form['url'], ' ', $form['subscribeUrl'], PHP_EOL; $saved = $client->forms->update($form['id'], [    'settings' => ['doubleOptIn' => true, 'senderAddress' => '[email protected]'],    'expectedUpdatedAt' => $form['updatedAt'],]); $signup = $client->forms->subscribe($form['id'], [    'email' => '[email protected]',    'first_name' => 'Ann',    'consent' => true,]); foreach ($client->forms->iterateSubmissions($form['id'], status: FormSubmissionStatuses::PENDING) as $submission) {    if ($submission['expired']) {        $client->forms->resendConfirmation($form['id'], $submission['id']);    }} $stats = $client->forms->analytics($form['id'], days: 30);$starters = $client->forms->listStarters(); $client->forms->pause($form['id']);$client->forms->resume($form['id']);$copy = $client->forms->duplicate($form['id']);$client->forms->delete($copy['id']); echo $saved['senderIssue'] ?? 'ready to send', ' ', $signup['outcome'], ' ', $stats['totals']['conversion'] ?? 'no views yet', ' ', count($starters), PHP_EOL;

फ़ॉर्म एक ड्राफ़्ट document और वह publishedDocument रखता है जो visitors देखते हैं। update ड्राफ़्ट और सेटिंग्स बदलता है, और publish ड्राफ़्ट को live करता है। सेटिंग्स तुरंत लागू होती हैं, प्रकाशित हो या नहीं, और expectedUpdatedAt ऐसे save को 409 version_conflict के साथ अस्वीकार करता है जो किसी और का save मिटा देता, जो ConflictException के रूप में throw होता है।

फ़ॉर्म के फ़ील्ड API के camelCase नामों वाले एक array की कुंजियाँ हैं (expectedUpdatedAt, doubleOptIn), जबकि फ़िल्टर और options named आर्ग्युमेंट हैं (listSubmissions पर status:, analytics पर offsetMinutes:)। फ़ॉर्म camelCase कुंजियों वाले array के रूप में लौटता है, इसलिए $form['subscribeUrl'] वह पता पढ़ता है जो sign-up लेता है।

design लिखित brief से एक नया ड्राफ़्ट फ़ॉर्म बनाता है, जैसा Forms पेज पर “AI से बनाएँ” करता है, और redesign किसी फ़ॉर्म के ड्राफ़्ट पर लिखित निर्देश लागू करता है, जैसा form builder में “AI से पूछें” करता है। हर एक एक AI action ख़र्च करता है और सिर्फ़ ड्राफ़्ट लिखता है, इसलिए publish तक visitors को कुछ नया नहीं दिखता।

पढ़ने के लिए forms:read और बदलने के लिए forms:write चाहिए। approveSubmission को contacts:write भी चाहिए, क्योंकि यह एक संपर्क जोड़ता है। resendConfirmation को emails:send भी चाहिए, और उस कॉल को भी जो फ़ॉर्म से मेल भिजवाती है: doubleOptIn चालू करना, senderAddress या पुष्टि ईमेल सेट करना, या double opt-in फ़ॉर्म को प्रकाशित करना या फिर से शुरू करना। delete OAuth access टोकन से सत्यापन कोड माँगता है, और API कुंजी से कभी नहीं। जब तक टोकन के पास कोड न हो, delete ऐसा PermissionException throw करता है जिसका isStepUpRequired() true होता है।

subscribe किसी को वैसे ही sign up करता है जैसे फ़ॉर्म का पेज करता है और कोई क्रेडेंशियल नहीं भेजता, उस क्लाइंट से भी जिसके पास क्रेडेंशियल हो, इसलिए apiKey: को अनदेखा किया जाता है। जवाब इसका दूसरा आर्ग्युमेंट हैं, फ़ॉर्म की फ़ील्ड कुंजियों वाला एक array। एक नेटवर्क से हर sign-up हर दस मिनट में 40 की एक साझा सीमा में आता है, इसलिए कई लोगों के sign-up आगे भेजने वाला सर्वर इस सीमा तक जल्दी पहुँच जाता है: जिन लोगों को आप पहले से जानते हैं उन्हें इसके बजाय audiences->importContacts से जोड़ें। सीमा पार होने पर कॉल RateLimitException throw करती है। फ़ॉर्म जिस पेज पर था उसे oe_source के रूप में पास करें, oe_started छोड़ दें, और oe_website ख़ाली भेजें या बिल्कुल न भेजें।

subscribe से आया 422 invalid_form_submission है, जो ValidationException के रूप में throw होता है, और exception का fields हर ग़ायब या अमान्य जवाब को key और error वाले array के रूप में सूचीबद्ध करता है, required, email और option जैसे कारणों के साथ। OpenEmail\Constants\FormFieldErrors हर कारण का नाम देता है। पैकेज सर्वर पर चलता है। ब्राउज़र जवाब ख़ुद फ़ॉर्म के subscribeUrl पर post करता है, JSON बॉडी के रूप में या Accept: application/json हेडर के साथ, और किसी भी origin से JSON वापस पाता है। इनमें से किसी के बिना उसे hosted पेज पर 303 redirect मिलता है।

जवाब: एक फ़ॉर्म

list फ़ॉर्म का एक OpenEmail\Result\Page लौटाता है, सबसे नया पहले, document और settings के बिना। listAll हर फ़ॉर्म एक array में लौटाता है, और iterate एक Generator लौटाता है जो हर पेज पर एक-एक फ़ॉर्म करके चलता है। get, create, update, publish, pause, resume और duplicate पूरा फ़ॉर्म एक array के रूप में लौटाते हैं, जिसमें document, publishedDocument, settings, audiences, senderIssue और senderProblem जुड़ते हैं।

idstring
टिकाऊ हैंडल, `frm_` के बाद 24 hex अक्षर।
statusstring
पहले प्रकाशन तक `draft`, फिर साइन-अप लेते समय `live` और न लेते समय `paused`। फ़ॉर्म कभी वापस `draft` नहीं होता। `OpenEmail\Constants\FormStatuses` तीनों के नाम बताता है।
urlstring
प्रकाशित फ़ॉर्म का होस्ट किया गया पेज, लिंक के रूप में साझा करने के लिए।
subscribeUrlstring
जहाँ सादा HTML फ़ॉर्म, या ब्राउज़र की कोई स्क्रिप्ट, जवाब भेजती है।
documentarray
ड्राफ़्ट: क्रम में `fields`, उनके आसपास की `copy` और `style`।
publishedDocumentarray or null
visitors अभी जो देखते हैं, या पहले प्रकाशन तक null।
settingsarray
साइन-अप कहाँ जाते हैं और हर साइन-अप के बाद क्या होता है: `audienceIds`, `doubleOptIn`, `senderAddress`, पुष्टि ईमेल, `successAction`, `redirectUrl` और `notifyAddresses`।
hasUnpublishedChangesbool
जब ड्राफ़्ट विज़िटर को दिखने वाली सामग्री से अलग हो, तब true। पहली बार प्रकाशित होने से पहले हमेशा false।
senderIssuestring or null
double opt-in फ़ॉर्म अभी अपनी पुष्टि ईमेल क्यों नहीं भेज सकता: `missing`, `not_sendable` या `not_allowed`। जब भेज सकता हो तो यह null है। `OpenEmail\Constants\FormSenderIssues` तीनों के नाम देता है।
statsarray
`views`, `submissions`, `added`, `pending` और `lastSubmittedAt`, पढ़ने के क्षण पर गिने गए।

सबमिशन

listSubmissions सबसे नया पहले के क्रम में पेज करता है, ईमेल पते खोजने के लिए q: और pending या added के लिए status: के साथ, और listAllSubmissions और iterateSubmissions हर पेज पर चलते हैं। OpenEmail\Constants\FormSubmissionStatuses दोनों status के नाम देता है। हर submission एक array है जो जवाबों को वैसे ही रखता है जैसे वे भेजे गए, लेबल समेत, इसलिए फ़ॉर्म बदलने के बाद भी वह सही पढ़ा जाता है।

resendConfirmation submission को confirmationSent के साथ लौटाता है। जब कुछ न गया हो तो यह false होता है: एक पते को हर फ़ॉर्म के लिए हर दस मिनट में एक पुष्टि मिलती है और पूरे वर्कस्पेस में दिन में पाँच, और जोड़े जा चुके submission को कोई नहीं मिलती। expired ऐसे लंबित साइन-अप को दर्शाता है जिसका नवीनतम लिंक समाप्त हो चुका है।