送信の挙動
送るタイミング、まとめ方、再送、順序と重複についての決まりです。
送るタイミング
| 項目 | 決まり |
|---|---|
| タイミング | 操作の保存が終わった後に送ります。画面は送信の完了を待ちません。document.sent は受け付けた直後に送り、ほかのイベントはまとめてから送ります |
| 待ち時間 | 同じ案件や予定への最後の変更から30秒、次の変更がなければ送ります。変更が続いても、最初の変更から5分で送ります。送信の処理の間隔により、さらに1分ほど遅れることがあります |
| まとめる単位 | ワークスペースの中の、案件1件、予定1件ごとです。操作した人には関係なくまとめます |
| 送信データ | 送る時点の最新の内容で作ります。schedule_entry.deleted は削除する直前の内容です |
| 設定の確認 | イベントを送るかどうかは、まとめた後のイベントで、送る直前に確かめます。たとえば、案件の作成を送る設定で、案件のキャンセルを送らない設定のとき、作成の直後にキャンセルした案件はキャンセルにまとまり、何も送りません。送る直前に Webhook URL とプランも確かめ直します |
| ワークスペースの停止中 | ワークスペースが停止中や解約済みの間は送りません。送る前の変更は捨てずに残し、再開した後に、ふだんと同じ決まり(まとめ方、再送)で送ります。再開したときは、そのときの最新の内容で送ります |
まとめ方
案件と予定で同じ決まりです。changes は合わせたもの、actor は最後に変更した人、occurredAt は最後の変更の時刻になります。
| 同じ案件や予定に続いたイベント | 送るイベント |
|---|---|
*.updated が続いた | *.updated を1回 |
*.created の後に *.updated | *.created |
*.created や *.updated の後に project.cancelled か schedule_entry.deleted | project.cancelled か schedule_entry.deleted |
応答と再送
| 項目 | 決まり |
|---|---|
| 打ち切り | 約10秒で打ち切ります。受信する側は速やかに 2xx を返してください |
| 受け付けの判定 | 2xx と 3xx を受け付けたものとします。リダイレクトは追いません |
| 再送 | document.sent 以外の送信が失敗したときは、1分後、5分後、30分後の3回まで再送します。失敗は、2xx と 3xx 以外の応答、打ち切り、接続の失敗、CrewGear 側の一時的な失敗です。再送は新しい id で、その時点の最新の内容で送ります。再送を待つ間に同じ案件や予定が変わったときは、その変更も合わせて送ります |
| 再送しないもの | 送信先の条件を満たさないとき、送信データを作れなかったとき、document.sent |
| 応答の本文 | 読みません |
| 送信の結果 | 送信ごとの結果は、代表者と管理者が操作ログの画面で確かめられます |
順序と重複
- 同じ案件や予定への送信は、1件ずつ順に送ります。別の案件や予定をまたいだ順序は保証しません。
- 送信が途中で止まったときなどに、同じ変更がまれに重ねて届くことがあります。
idは送信ごとに異なります。 - 受信する側でまだ受け取っていない案件や予定の
*.updatedが届くことがあります。Webhook URL を登録する前に作った案件や予定がその後に変わったとき、*.createdが再送しても届かなかったとき、*.createdを送らない設定にしているときです。送信データは、どのイベントでも対象の全体の最新の内容を持っています。