# 予約とカレンダー

> scheduledForとタイムゾーンを使った投稿の予約、日時の変更やキャンセル、Botdoorのカレンダーでの一覧表示について説明します。

Source: https://docs.botdoor.co/ja/concepts/scheduling/

`scheduledFor`には、**オフセット付き**のISO 8601形式の時刻を指定します（例：`2026-10-12T15:00:00-04:00`、`2026-10-12T19:00:00Z`）。

## ルール

| 入力 | 結果 |
|---|---|
| オフセットなし（`2026-10-12T15:00:00`） | `400 validation_failed` |
| 存在しない日付（2月31日、`T24:00`）、または-12:00..+14:00の範囲外のオフセット | `400 invalid_date` |
| 過去の日時 | `400 scheduled_in_past`。何も公開されません |
| 1年以上先 | `400 scheduled_too_far` |

レスポンスでは、`scheduledFor`はUTCの時刻で返されます。

## 承認がある場合

承認待ちの投稿はBotdoor内で保持され、予約日時より前に人間のユーザーが承認した時点で、初めてSNS側で予約されます。詳しくは[承認](https://docs.botdoor.co/ja/concepts/approvals/)をご覧ください。

## 日時の変更とキャンセル

- 新しい`scheduledFor`を指定して`POST /api/v1/posts/{id}/reschedule`を呼び出します。承認待ちの投稿はBotdoor内で変更され、予約済みの投稿はSNS側で更新されます。
- 承認制のキーで承認済みの投稿の日時を変更すると、その投稿は*承認待ち*に戻ります。
- `POST /api/v1/posts/{id}/cancel`は、まだ公開されていない投稿（承認待ちまたは予約済み）を停止します。

## カレンダー

**カレンダー**には、承認待ち、予約済み、公開済み、失敗の投稿が、月単位または週単位で表示されます。時刻はブラウザのタイムゾーン（上部に表示）で表示されます。

![公開済み、失敗、予約済み、承認待ちの投稿が表示された月表示のカレンダー](https://docs.botdoor.co/screenshots/calendar.png)

ボットは`/agent/calendar`で同じ内容を読み取れます（`?span=week`、`?at=YYYY-MM-DD`、`?tz=Area/City`、`?format=json`）。

## よくある質問

### Botdoorはどのタイムゾーンを使いますか？

scheduledForで送信したオフセットを使います。アプリでは、ブラウザのタイムゾーンでラベル付きで時刻を表示します。

### サーバーが混み合っていた場合、Botdoorは遅れて投稿しますか？

いいえ。承認待ちの投稿が予約日時を過ぎてから承認された場合、Botdoorは「今すぐ公開」するか新しい日時を選ぶかを確認します。

### どのくらい先まで予約できますか？

最大1年先までです。

### 公開済みの投稿の日時を変更できますか？

いいえ。日時の変更やキャンセルができるのは、まだ公開されていない投稿のみです。
