@nnyamau
以下は私見となります。
>1. "PENDING"ステータスが返された場合、最終的な処理結果(成功/失敗)を取得するための推奨される方法はありますか?
レスポンスから判断することはできないと思います。
会社が作成されたかを検索APIで探すことになりそうです。
(確実に処理の終了を判断するためには、一括作成(Batch API)ではなく1件ずつ作成(Basic API)するのが良いと思います)
余談:
同じpendingでもhttp status code が201の場合は時間が経てば成功しそうです。
http status codeが207の場合は何らかの理由で一部が失敗となっています。
参考:会社一括作成APIのレスポンス
>2. ポーリングや非同期処理など、どのようなアプローチが最適でしょうか?
確実に全ての会社が作成されていることの保証が必要なのであれば
Basicの「会社レコードを1件ずつ作成」とするのはいかがでしょうか。
>3. 最終結果を取得するためのエンドポイントや推奨されるタイムアウト設定はありますか?
すみません、わかりません。
>“status”: “PENDING” は、各会社レコードごとに返却されるのでしょうか?
一括作成処理全体のステータスだと考えています。
→各会社レコード毎ではない
根拠:
レスポンスを見るとstatusはresults配列の外に1項目だけ存在しています
>もしそうであれば、最終的な登録可否を確認するために >/crm/v3/objects/companies/search を各レコードごとに呼び出す必要があり、効率面で懸念があります。
上に記述しましたが、確実な保証が必要な場合は、
一括作成ではなく1件ずつ作成されるのはいかがでしょうか。
>逆に、PENDINGステータスがバッチ全体に対して返されるものであれば、
>そのバッチに一意なIDなどは付与されているのでしょうか?
>また、そのIDをもとに後からバッチ全体の処理結果を問い合わせる手段はあるのでしょうか?
hubspot apiのエラーレスポンス時によく設定されているcorrelationIdが設定されておらず、すれっぽいパラメータがない為、一意なIDはなさそうです。
前提として
hubspotの一括作成APIではstatus="complete"の場合が多いです。
参考
https://community.hubspot.com/t5/APIs-Integrations/How-to-handle-status-of-PENDING-on-contact-upsert/m-p/1109279
とはいえ後続の処理等の為、全件の完了の保証が必要な場合は
面倒ですが1件ずつ作成(APIの呼び出し制限を考慮しながら)が必要だと思います。
私は、一括作成APIの利用は
夜間のバッチ処理等、後続の処理がなく即時の実行完了を保証する必要がない場合に使用しています。
参考になりましたら幸いです。
@nnyamau
お知らせいただきありがとうございます。