フォーム
`forms.list`、`get`、`create`、`update`、`delete`、`publish`、`pause`、`resume`、`duplicate`、`analytics`、`list_starters`、`get_starter`、`list_submissions`、`get_submission`、`delete_submission`、`delete_submissions`、`approve_submission`、`resend_confirmation`、`subscribe`。
すべてのメソッド
from openemail import openemail form = openemail.forms.create({ 'name': 'Newsletter sign-up', 'starter': 'newsletter', 'settings': {'audienceIds': ['aud_4c1b8e2a7d9f05c36b4e8a71']}, 'publish': True,}) print(form['url'], form['subscribeUrl']) saved = openemail.forms.update(form['id'], { 'settings': {'doubleOptIn': True, 'senderAddress': '[email protected]'}, 'expectedUpdatedAt': form['updatedAt'],}) signup = openemail.forms.subscribe(form['id'], { 'email': '[email protected]', 'first_name': 'Ann', 'consent': True,}) for submission in openemail.forms.iterate_submissions(form['id'], status='pending'): if submission['expired']: openemail.forms.resend_confirmation(form['id'], submission['id']) stats = openemail.forms.analytics(form['id'], days=30)starters = openemail.forms.list_starters() openemail.forms.pause(form['id'])openemail.forms.resume(form['id'])copy = openemail.forms.duplicate(form['id'])openemail.forms.delete(copy['id']) print(saved['senderIssue'], signup['outcome'], stats['totals']['conversion'], len(starters))フォームは、下書きの document と、訪問者に見える publishedDocument を保持します。update は下書きと設定を変更し、publish は下書きを公開します。設定は公開の有無にかかわらずすぐに有効になり、expectedUpdatedAt は、他の人の保存を上書きしてしまう保存を 409 version_conflict で拒否します。
読み取りには forms:read、変更には forms:write が必要です。approve_submission は連絡先を追加するため、contacts:write も必要です。resend_confirmation には emails:send も必要で、フォームにメールを送信させる呼び出しにも同じく必要です。doubleOptIn をオンにすること、senderAddress や確認メールを設定すること、ダブルオプトインのフォームを公開または再開することがこれにあたります。delete は OAuth アクセストークンには確認コードを求めますが、API キーには求めません。
subscribe は、フォームのページと同じように人を登録し、資格情報を持つクライアントからであっても資格情報を送りません。1 つのネットワークからの登録はすべて 10 分ごとに 40 回という上限を共有するため、多くの人の登録を中継するサーバーはすぐに上限に達します。すでに知っている人は、代わりに audiences.import_contacts で追加してください。フォームが置かれていたページを 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 ページを新しい順で返し、list_all と iterate はすべてのページをたどります。get、create、update、publish、pause、resume、duplicate は、document、publishedDocument、settings、audiences、senderIssue、senderProblem を加えた FormDetailResource を返します。
idstr- 永続的なハンドル。`frm_` に続く 24 文字の 16 進数です。
statusLiteral['draft', 'live', 'paused']- 最初の公開までは `draft`、その後は登録を受け付けている間は `live`、受け付けていない間は `paused` です。フォームが `draft` に戻ることはありません。
urlstr- 公開済みのフォームのホストされたページで、リンクとして共有できます。
subscribeUrlstr- プレーンな HTML フォームや `fetch` が回答を送信する先です。
documentFormDocument- 下書き。順に並んだ `fields`、その周りの `copy`、そして `style` です。
publishedDocumentFormDocument | None- 訪問者に今見えている内容です。最初の公開までは `None` です。
settingsFormSettings- 登録の追加先と、登録後に起きること。`audienceIds`、`doubleOptIn`、`senderAddress`、確認メール、`successAction`、`redirectUrl`、`notifyAddresses` です。
hasUnpublishedChangesbool- 下書きが訪問者に見える内容と異なる場合に `True` です。最初の公開までは常に `False` です。
senderIssueLiteral['missing', 'not_sendable', 'not_allowed'] | None- ダブルオプトインのフォームが今は確認メールを送れない理由です。送れる場合は `None` です。
statsFormStats- `views`、`submissions`、`added`、`pending`、`lastSubmittedAt`。読み取った時点で数えられます。
回答
list_submissions は、メールアドレスを検索する q と、pending か added を指定する status を使って新しい順にページを返し、list_all_submissions と iterate_submissions はすべてのページをたどります。各 FormSubmissionResource は回答内容を送信されたとおりにラベルも含めて保持するため、フォームを変更したあとも正しく読めます。
resend_confirmation は confirmationSent 付きの回答を返します。何も送られなかった場合は False です。1 つのアドレスに送られる確認メールは、フォームごとに 10 分に 1 通、ワークスペース全体で 1 日 5 通までで、追加済みの回答には送られません。expired は、最新のリンクの有効期限が切れた確認待ちの登録を示します。
リファレンス
forms.list()完全なリファレンスforms.list_all()完全なリファレンスforms.iterate()完全なリファレンスforms.get()完全なリファレンスforms.create()完全なリファレンスforms.update()完全なリファレンスforms.delete()完全なリファレンスforms.publish()完全なリファレンスforms.pause()完全なリファレンスforms.resume()完全なリファレンスforms.duplicate()完全なリファレンスforms.analytics()完全なリファレンスforms.list_starters()完全なリファレンスforms.get_starter()完全なリファレンスforms.list_submissions()完全なリファレンスforms.list_all_submissions()完全なリファレンスforms.iterate_submissions()完全なリファレンスforms.get_submission()完全なリファレンスforms.delete_submission()完全なリファレンスforms.delete_submissions()完全なリファレンスforms.approve_submission()完全なリファレンスforms.resend_confirmation()完全なリファレンスforms.subscribe()完全なリファレンス