フォーム
`forms.list`、`get`、`create`、`update`、`delete`、`publish`、`pause`、`resume`、`duplicate`、`analytics`、`listStarters`、`getStarter`、`listSubmissions`、`getSubmission`、`deleteSubmission`、`deleteSubmissions`、`approveSubmission`、`resendConfirmation`、`subscribe`。
すべてのメソッド
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 は、フォームのページと同じように人を登録し、資格情報を持つクライアントからであっても資格情報を送りません。1 つのネットワークからの登録はすべて 10 分ごとに 40 回という上限を共有するため、多くの人の登録を中継するサーバーはすぐに上限に達します。すでに知っている人は、代わりに audiences.importContacts で追加してください。フォームが置かれていたページを oe_source として渡し、oe_started は省き、oe_website は空で送るか省いてください。
subscribe からの 422 は invalid_form_submission で、エラーの fields には、欠けているか有効でない回答がそれぞれ { key, error } として、required、email、option などの理由とともに並びます。このクライアントはサーバー用です。ブラウザでは、フォームの subscribeUrl に fetch で回答を送信してください。JSON のボディとして送るか Accept: application/json ヘッダーを付ければ、どのオリジンからでも JSON で応答します。どちらもない場合は、ホストされたページへの 303 リダイレクトで応答します。
レスポンス: FormDetailResource
list は、document と settings を除いた FormResource の 1 ページに新しい順で解決され、listAll と iterate はすべてのページをたどります。get、create、update、publish、pause、resume、duplicate は、document、publishedDocument、settings、audiences、senderIssue、senderProblem を加えた FormDetailResource に解決されます。
idstring- 永続的なハンドル。`frm_` に続く 24 文字の 16 進数です。
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 と、pending か added を指定する status を使って新しい順にページを返し、listAllSubmissions と iterateSubmissions はすべてのページをたどります。各 FormSubmissionResource は回答内容を送信されたとおりにラベルも含めて保持するため、フォームを変更したあとも正しく読めます。
resendConfirmation は confirmationSent 付きの回答に解決されます。何も送られなかった場合は false です。1 つのアドレスに送られる確認メールは、フォームごとに 10 分に 1 通、ワークスペース全体で 1 日 5 通までで、追加済みの回答には送られません。expired は、最新のリンクの有効期限が切れた確認待ちの登録を示します。