get_resource_schedule sequence
sequenceDiagram
autonumber
participant User as User
participant API as API
participant DB as DB
User->>API: GET /resources/{resourceId}/schedule
alt Authorization ヘッダのBearer tokenが未指定、または署名・issuer・client・用途・期限を検証できない場合。
API-->>User: HTTP 401 Unauthorized<br/>authentication_required / invalid_token
end
alt Path/Query/Header/Body が型または制約に一致しない場合。
API-->>User: HTTP 422 Unprocessable Content<br/>invalid_input
end
Note over API,DB: DBの直列化競合・一意性競合・OCC競合は、rollback後に新しいsnapshotで処理順を最大12回・8秒まで再実行する。再送安全な処理のため、成否不明の接続断も再実行する。
API->>DB: 予約表の対象資源が存在することを確認して資源IDを取得する。<br/>SQL 001_select_resources.sql<br/>テーブル resources
alt 予約表の対象資源が存在しない場合。
API-->>User: HTTP 404 Not Found<br/>resource_not_found
end
API->>DB: 日本時間の指定日に重なる確定予約を開始日時とIDの順に取得する。<br/>SQL 002_select_reservations.sql<br/>テーブル reservations
alt nextToken が前回レスポンスの継続tokenとして解釈できない場合。
API-->>User: HTTP 422 Unprocessable Content<br/>invalid_page_token
end
API->>API: 取得した予約を上限件数へ切り詰め、次ページの継続tokenを付与する。
API->>API: 本人と管理者以外には予約済み時間帯と表示名だけを返す予約表を組み立てる。
API-->>User: HTTP 200 OK
alt Router で捕捉した例外を error response に変換する場合。
API->>API: Router で捕捉した例外を運用ログと HTTP error response に変換する。
API-->>User: HTTP 500 Internal Server Error<br/>internal server error
end
alt DBの競合や接続障害が再試行上限を超えた場合。
API-->>User: HTTP 503 Service Unavailable<br/>storage_temporarily_unavailable
end