GET /reservations/{reservationId}
Summary: 予約詳細を取得する
予約者本人または管理者に限り、予約の詳細と作成・取消の履歴を取得します。
Headers
なし
Path Parameters
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
reservationId |
string |
yes | 予約を一意に識別するIDです。 | minLength=1, maxLength=36 |
Query Parameters
なし
Data
なし
Responses
| Status | 説明 | Media type | Body |
|---|---|---|---|
200 |
Successful Response | application/json |
15 field(s) |
401 |
認証情報が未指定、期限切れ、または検証できない場合。 | application/json |
12 field(s) |
403 |
呼び出し元が予約者本人でも管理者でもない場合。 | application/json |
12 field(s) |
404 |
指定された予約が存在しない場合。 | application/json |
12 field(s) |
422 |
pathがOpenAPIスキーマの型や制約に一致しない場合。 | application/json |
12 field(s) |
429 |
呼び出し頻度が許可された上限を超えた場合。 | application/json |
12 field(s) |
500 |
SlotKeeper内部で想定外のエラーが発生した場合。 | application/json |
12 field(s) |
503 |
DBの競合や接続障害が再試行上限を超えた場合。 | application/json |
12 field(s) |
200 Successful Response
Media type: application/json
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
reservation |
ReservationDetailResponse |
yes | 予約詳細の予約情報です。 | - |
reservation.reservationId |
string |
yes | 予約を一意に識別するIDです。 | minLength=1, maxLength=36 |
reservation.resourceId |
string |
yes | 予約対象の資源を一意に識別するIDです。 | minLength=1, maxLength=36 |
reservation.ownerPrincipalId |
string |
yes | 予約者を表す認証主体IDです。 | minLength=1, maxLength=200 |
reservation.startAt |
string |
yes | 予約開始日時です。 | - |
reservation.endAt |
string |
yes | 予約終了日時です。この時刻を含みません。 | - |
reservation.purpose |
string |
yes | 予約目的です。本人と管理者だけに返します。 | minLength=1, maxLength=200 |
reservation.status |
string(confirmed, cancelled) |
yes | 予約の状態を表す列挙値です。 | confirmed=確定済みで重複判定の対象になる予約です。 cancelled=取消済みで重複判定から除く予約です。 |
reservation.version |
integer |
yes | 予約取消の楽観ロックに使う版です。 | minimum=1.0 |
events |
array<ReservationEventResponse> |
yes | 作成と取消の履歴を発生順に並べた一覧です。 | - |
events[].eventId |
string |
yes | 履歴を一意に識別するIDです。 | minLength=1, maxLength=36 |
events[].reservationId |
string |
yes | 履歴の対象予約IDです。 | minLength=1, maxLength=36 |
events[].actorPrincipalId |
string |
yes | 操作した利用者の認証主体IDです。 | minLength=1, maxLength=200 |
events[].action |
string(created, cancelled) |
yes | 予約履歴の操作種別を表す列挙値です。 | created=予約を作成した操作です。 cancelled=予約を取消した操作です。 |
events[].occurredAt |
string |
yes | 操作日時です。 | - |
401 認証情報が未指定、期限切れ、または検証できない場合。
Media type: application/json
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
error |
ErrorBody |
yes | エラーコード、メッセージ、追跡IDを含む共通エラー本文です。 | - |
error.code |
string |
yes | エラー種別を機械的に判定するためのコードです。 | minLength=1, maxLength=100 |
error.message |
string |
yes | 利用者が次に確認・修正・再試行・問い合わせすべき内容を示すメッセージです。 | maxLength=1000 |
error.details |
array<ErrorDetail> |
no | リトライ可否、問い合わせ時に伝える追跡ID、確認対象リソースなどの詳細一覧です。 | - |
error.details[].field |
string | null |
no | 入力検証エラーが発生したリクエスト項目です。 | minLength=1, maxLength=256 |
error.details[].reason |
string | null |
no | 入力検証エラー、再試行判断、または問い合わせ時に確認する具体的な理由です。 | minLength=1 |
error.details[].statusCode |
integer | null |
no | 返却されたHTTPステータスコードです。 | minimum=400.0, maximum=599.0 |
error.details[].retryable |
boolean | null |
no | 同じリクエストを再実行して解消する可能性があるかどうかです。 | - |
error.details[].reference |
string | null |
no | 問い合わせ時に伝える追跡IDまたは相関IDです。 | minLength=1, maxLength=128 |
error.details[].resource |
ErrorResource | null |
no | 再送、状態確認、問い合わせ時に確認する対象リソースです。 | - |
error.details[].resource.reservationId |
string | null |
no | 取得対象予約の存在確認、権限確認、問い合わせに使用する予約IDです。 | minLength=1, maxLength=36 |
error.traceId |
string |
yes | 障害調査でログとレスポンスを対応付ける追跡IDです。 | minLength=1, maxLength=128 |
403 呼び出し元が予約者本人でも管理者でもない場合。
Media type: application/json
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
error |
ErrorBody |
yes | エラーコード、メッセージ、追跡IDを含む共通エラー本文です。 | - |
error.code |
string |
yes | エラー種別を機械的に判定するためのコードです。 | minLength=1, maxLength=100 |
error.message |
string |
yes | 利用者が次に確認・修正・再試行・問い合わせすべき内容を示すメッセージです。 | maxLength=1000 |
error.details |
array<ErrorDetail> |
no | リトライ可否、問い合わせ時に伝える追跡ID、確認対象リソースなどの詳細一覧です。 | - |
error.details[].field |
string | null |
no | 入力検証エラーが発生したリクエスト項目です。 | minLength=1, maxLength=256 |
error.details[].reason |
string | null |
no | 入力検証エラー、再試行判断、または問い合わせ時に確認する具体的な理由です。 | minLength=1 |
error.details[].statusCode |
integer | null |
no | 返却されたHTTPステータスコードです。 | minimum=400.0, maximum=599.0 |
error.details[].retryable |
boolean | null |
no | 同じリクエストを再実行して解消する可能性があるかどうかです。 | - |
error.details[].reference |
string | null |
no | 問い合わせ時に伝える追跡IDまたは相関IDです。 | minLength=1, maxLength=128 |
error.details[].resource |
ErrorResource | null |
no | 再送、状態確認、問い合わせ時に確認する対象リソースです。 | - |
error.details[].resource.reservationId |
string | null |
no | 取得対象予約の存在確認、権限確認、問い合わせに使用する予約IDです。 | minLength=1, maxLength=36 |
error.traceId |
string |
yes | 障害調査でログとレスポンスを対応付ける追跡IDです。 | minLength=1, maxLength=128 |
404 指定された予約が存在しない場合。
Media type: application/json
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
error |
ErrorBody |
yes | エラーコード、メッセージ、追跡IDを含む共通エラー本文です。 | - |
error.code |
string |
yes | エラー種別を機械的に判定するためのコードです。 | minLength=1, maxLength=100 |
error.message |
string |
yes | 利用者が次に確認・修正・再試行・問い合わせすべき内容を示すメッセージです。 | maxLength=1000 |
error.details |
array<ErrorDetail> |
no | リトライ可否、問い合わせ時に伝える追跡ID、確認対象リソースなどの詳細一覧です。 | - |
error.details[].field |
string | null |
no | 入力検証エラーが発生したリクエスト項目です。 | minLength=1, maxLength=256 |
error.details[].reason |
string | null |
no | 入力検証エラー、再試行判断、または問い合わせ時に確認する具体的な理由です。 | minLength=1 |
error.details[].statusCode |
integer | null |
no | 返却されたHTTPステータスコードです。 | minimum=400.0, maximum=599.0 |
error.details[].retryable |
boolean | null |
no | 同じリクエストを再実行して解消する可能性があるかどうかです。 | - |
error.details[].reference |
string | null |
no | 問い合わせ時に伝える追跡IDまたは相関IDです。 | minLength=1, maxLength=128 |
error.details[].resource |
ErrorResource | null |
no | 再送、状態確認、問い合わせ時に確認する対象リソースです。 | - |
error.details[].resource.reservationId |
string | null |
no | 取得対象予約の存在確認、権限確認、問い合わせに使用する予約IDです。 | minLength=1, maxLength=36 |
error.traceId |
string |
yes | 障害調査でログとレスポンスを対応付ける追跡IDです。 | minLength=1, maxLength=128 |
422 pathがOpenAPIスキーマの型や制約に一致しない場合。
Media type: application/json
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
error |
ErrorBody |
yes | エラーコード、メッセージ、追跡IDを含む共通エラー本文です。 | - |
error.code |
string |
yes | エラー種別を機械的に判定するためのコードです。 | minLength=1, maxLength=100 |
error.message |
string |
yes | 利用者が次に確認・修正・再試行・問い合わせすべき内容を示すメッセージです。 | maxLength=1000 |
error.details |
array<ErrorDetail> |
no | リトライ可否、問い合わせ時に伝える追跡ID、確認対象リソースなどの詳細一覧です。 | - |
error.details[].field |
string | null |
no | 入力検証エラーが発生したリクエスト項目です。 | minLength=1, maxLength=256 |
error.details[].reason |
string | null |
no | 入力検証エラー、再試行判断、または問い合わせ時に確認する具体的な理由です。 | minLength=1 |
error.details[].statusCode |
integer | null |
no | 返却されたHTTPステータスコードです。 | minimum=400.0, maximum=599.0 |
error.details[].retryable |
boolean | null |
no | 同じリクエストを再実行して解消する可能性があるかどうかです。 | - |
error.details[].reference |
string | null |
no | 問い合わせ時に伝える追跡IDまたは相関IDです。 | minLength=1, maxLength=128 |
error.details[].resource |
ErrorResource | null |
no | 再送、状態確認、問い合わせ時に確認する対象リソースです。 | - |
error.details[].resource.reservationId |
string | null |
no | 取得対象予約の存在確認、権限確認、問い合わせに使用する予約IDです。 | minLength=1, maxLength=36 |
error.traceId |
string |
yes | 障害調査でログとレスポンスを対応付ける追跡IDです。 | minLength=1, maxLength=128 |
429 呼び出し頻度が許可された上限を超えた場合。
Media type: application/json
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
error |
ErrorBody |
yes | エラーコード、メッセージ、追跡IDを含む共通エラー本文です。 | - |
error.code |
string |
yes | エラー種別を機械的に判定するためのコードです。 | minLength=1, maxLength=100 |
error.message |
string |
yes | 利用者が次に確認・修正・再試行・問い合わせすべき内容を示すメッセージです。 | maxLength=1000 |
error.details |
array<ErrorDetail> |
no | リトライ可否、問い合わせ時に伝える追跡ID、確認対象リソースなどの詳細一覧です。 | - |
error.details[].field |
string | null |
no | 入力検証エラーが発生したリクエスト項目です。 | minLength=1, maxLength=256 |
error.details[].reason |
string | null |
no | 入力検証エラー、再試行判断、または問い合わせ時に確認する具体的な理由です。 | minLength=1 |
error.details[].statusCode |
integer | null |
no | 返却されたHTTPステータスコードです。 | minimum=400.0, maximum=599.0 |
error.details[].retryable |
boolean | null |
no | 同じリクエストを再実行して解消する可能性があるかどうかです。 | - |
error.details[].reference |
string | null |
no | 問い合わせ時に伝える追跡IDまたは相関IDです。 | minLength=1, maxLength=128 |
error.details[].resource |
ErrorResource | null |
no | 再送、状態確認、問い合わせ時に確認する対象リソースです。 | - |
error.details[].resource.reservationId |
string | null |
no | 取得対象予約の存在確認、権限確認、問い合わせに使用する予約IDです。 | minLength=1, maxLength=36 |
error.traceId |
string |
yes | 障害調査でログとレスポンスを対応付ける追跡IDです。 | minLength=1, maxLength=128 |
500 SlotKeeper内部で想定外のエラーが発生した場合。
Media type: application/json
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
error |
ErrorBody |
yes | エラーコード、メッセージ、追跡IDを含む共通エラー本文です。 | - |
error.code |
string |
yes | エラー種別を機械的に判定するためのコードです。 | minLength=1, maxLength=100 |
error.message |
string |
yes | 利用者が次に確認・修正・再試行・問い合わせすべき内容を示すメッセージです。 | maxLength=1000 |
error.details |
array<ErrorDetail> |
no | リトライ可否、問い合わせ時に伝える追跡ID、確認対象リソースなどの詳細一覧です。 | - |
error.details[].field |
string | null |
no | 入力検証エラーが発生したリクエスト項目です。 | minLength=1, maxLength=256 |
error.details[].reason |
string | null |
no | 入力検証エラー、再試行判断、または問い合わせ時に確認する具体的な理由です。 | minLength=1 |
error.details[].statusCode |
integer | null |
no | 返却されたHTTPステータスコードです。 | minimum=400.0, maximum=599.0 |
error.details[].retryable |
boolean | null |
no | 同じリクエストを再実行して解消する可能性があるかどうかです。 | - |
error.details[].reference |
string | null |
no | 問い合わせ時に伝える追跡IDまたは相関IDです。 | minLength=1, maxLength=128 |
error.details[].resource |
ErrorResource | null |
no | 再送、状態確認、問い合わせ時に確認する対象リソースです。 | - |
error.details[].resource.reservationId |
string | null |
no | 取得対象予約の存在確認、権限確認、問い合わせに使用する予約IDです。 | minLength=1, maxLength=36 |
error.traceId |
string |
yes | 障害調査でログとレスポンスを対応付ける追跡IDです。 | minLength=1, maxLength=128 |
503 DBの競合や接続障害が再試行上限を超えた場合。
Media type: application/json
| 項目 | 型 | 必須 | 説明 | 制約 |
|---|---|---|---|---|
error |
ErrorBody |
yes | エラーコード、メッセージ、追跡IDを含む共通エラー本文です。 | - |
error.code |
string |
yes | エラー種別を機械的に判定するためのコードです。 | minLength=1, maxLength=100 |
error.message |
string |
yes | 利用者が次に確認・修正・再試行・問い合わせすべき内容を示すメッセージです。 | maxLength=1000 |
error.details |
array<ErrorDetail> |
no | リトライ可否、問い合わせ時に伝える追跡ID、確認対象リソースなどの詳細一覧です。 | - |
error.details[].field |
string | null |
no | 入力検証エラーが発生したリクエスト項目です。 | minLength=1, maxLength=256 |
error.details[].reason |
string | null |
no | 入力検証エラー、再試行判断、または問い合わせ時に確認する具体的な理由です。 | minLength=1 |
error.details[].statusCode |
integer | null |
no | 返却されたHTTPステータスコードです。 | minimum=400.0, maximum=599.0 |
error.details[].retryable |
boolean | null |
no | 同じリクエストを再実行して解消する可能性があるかどうかです。 | - |
error.details[].reference |
string | null |
no | 問い合わせ時に伝える追跡IDまたは相関IDです。 | minLength=1, maxLength=128 |
error.details[].resource |
ErrorResource | null |
no | 再送、状態確認、問い合わせ時に確認する対象リソースです。 | - |
error.details[].resource.reservationId |
string | null |
no | 取得対象予約の存在確認、権限確認、問い合わせに使用する予約IDです。 | minLength=1, maxLength=36 |
error.traceId |
string |
yes | 障害調査でログとレスポンスを対応付ける追跡IDです。 | minLength=1, maxLength=128 |
Samples
HTTP 200
Request
{
"path": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
},
"headers": {
"Authorization": "Bearer <access-token>"
}
}
Response
{
"reservation": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001",
"resourceId": "00000000-0000-0000-0000-000000000001",
"ownerPrincipalId": "alice",
"startAt": "2026-09-26T01:00:00Z",
"endAt": "2026-09-26T02:00:00Z",
"purpose": "定例会議",
"status": "confirmed",
"version": 1
},
"events": [
{
"eventId": "9a0e1b2c-0000-0000-0000-000000000001",
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001",
"actorPrincipalId": "alice",
"action": "created",
"occurredAt": "2026-09-25T00:00:00Z"
}
]
}
HTTP 401
Request
{
"path": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
},
"headers": {
"Authorization": "Bearer <access-token>"
}
}
Response
{
"error": {
"code": "UNAUTHORIZED",
"message": "認証情報を確認し、有効な認証情報で再送してください。",
"details": [
{
"reason": "認証情報が未指定、期限切れ、または検証できない場合。",
"statusCode": 401,
"retryable": false,
"reference": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S",
"resource": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
}
}
],
"traceId": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S"
}
}
HTTP 403
Request
{
"path": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
},
"headers": {
"Authorization": "Bearer <access-token>"
}
}
Response
{
"error": {
"code": "FORBIDDEN",
"message": "操作権限を確認し、必要な権限を持つ利用者で再送してください。",
"details": [
{
"reason": "呼び出し元が予約者本人でも管理者でもない場合。",
"statusCode": 403,
"retryable": false,
"reference": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S",
"resource": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
}
}
],
"traceId": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S"
}
}
HTTP 404
Request
{
"path": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
},
"headers": {
"Authorization": "Bearer <access-token>"
}
}
Response
{
"error": {
"code": "NOT_FOUND",
"message": "指定したリソースIDが正しいか確認してから再送してください。",
"details": [
{
"reason": "指定された予約が存在しない場合。",
"statusCode": 404,
"retryable": false,
"reference": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S",
"resource": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
}
}
],
"traceId": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S"
}
}
HTTP 422
Request
{
"path": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
},
"headers": {
"Authorization": "Bearer <access-token>"
}
}
Response
{
"error": {
"code": "VALIDATION_ERROR",
"message": "リクエストの型、必須項目、制約をOpenAPI仕様に合わせて修正してください。",
"details": [
{
"reason": "pathがOpenAPIスキーマの型や制約に一致しない場合。",
"statusCode": 422,
"retryable": false,
"reference": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S",
"resource": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
}
}
],
"traceId": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S"
}
}
HTTP 429
Request
{
"path": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
},
"headers": {
"Authorization": "Bearer <access-token>"
}
}
Response
{
"error": {
"code": "TOO_MANY_REQUESTS",
"message": "呼び出し頻度を下げ、時間をおいてから再送してください。",
"details": [
{
"reason": "呼び出し頻度が許可された上限を超えた場合。",
"statusCode": 429,
"retryable": true,
"reference": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S",
"resource": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
}
}
],
"traceId": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S"
}
}
HTTP 500
Request
{
"path": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
},
"headers": {
"Authorization": "Bearer <access-token>"
}
}
Response
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "想定外のエラーが発生しました。追跡IDを添えて問い合わせてください。",
"details": [
{
"reason": "SlotKeeper内部で想定外のエラーが発生した場合。",
"statusCode": 500,
"retryable": false,
"reference": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S",
"resource": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
}
}
],
"traceId": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S"
}
}
HTTP 503
Request
{
"path": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
},
"headers": {
"Authorization": "Bearer <access-token>"
}
}
Response
{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "一時的に処理できません。時間をおいて同じリクエストを再送してください。",
"details": [
{
"reason": "DBの競合や接続障害が再試行上限を超えた場合。",
"statusCode": 503,
"retryable": true,
"reference": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S",
"resource": {
"reservationId": "5d2c7f3e-0000-0000-0000-000000000001"
}
}
],
"traceId": "trc_01HZY6WJ7X4W9A0V7P9N2Q3R4S"
}
}