POST /api/admin-reservations-list
POST /api/admin-reservations-list
List reservations with optional filtering.
Request
Method
POST
Headers
| Header | Value |
|---|---|
| Authorization | Bearer {ADMIN_API_TOKEN} |
| Content-Type | application/json |
Body
{
"status": "pending",
"productSlug": "oxi-one-mk2"
}
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
status | string | No | Filter by status: pending, confirmed, fulfilled, cancelled |
productSlug | string | No | Filter by product slug |
All parameters are optional. Omit to return all reservations.
Response
Success (200)
{
"success": true,
"reservations": [
{
"id": "res_1706889600000-a1b2c3",
"name": "山田太郎",
"email": "yamada@example.com",
"productSlug": "oxi-one-mk2",
"status": "pending",
"notes": "",
"createdAt": "2024-02-02T10:00:00.000Z"
},
{
"id": "res_1706889500000-d4e5f6",
"name": "田中花子",
"email": "tanaka@example.com",
"productSlug": "oxi-one-mk2",
"status": "confirmed",
"notes": "電話連絡済み",
"createdAt": "2024-02-01T09:00:00.000Z"
}
]
}
Reservation Object
| Field | Type | Description |
|---|---|---|
id | string | Unique reservation ID |
name | string | Customer’s name |
email | string | Customer’s email address |
productSlug | string | Product identifier |
status | string | Status: pending, confirmed, fulfilled, cancelled |
notes | string | Admin notes (empty string if none) |
createdAt | string | ISO 8601 timestamp of reservation creation |
Unauthorized (401)
{
"success": false,
"error": "Unauthorized"
}
Example
cURL
# Get all reservations
curl -X POST https://takazudomodular.com/api/admin-reservations-list \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
# Filter by status
curl -X POST https://takazudomodular.com/api/admin-reservations-list \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "pending"}'
# Filter by product and status
curl -X POST https://takazudomodular.com/api/admin-reservations-list \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "confirmed", "productSlug": "oxi-one-mk2"}'
JavaScript (fetch)
const response = await fetch('/api/admin-reservations-list', {
method: 'POST',
headers: {
'Authorization': `Bearer ${ADMIN_API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
status: 'pending',
}),
});
const data = await response.json();
if (data.success) {
console.log(`Found ${data.reservations.length} reservations`);
data.reservations.forEach((res) => {
console.log(`${res.name} (${res.email}) - ${res.status}`);
});
}
Implementation Details
Source File
netlify/functions/admin-reservations-list.ts
Behavior
- Validates Bearer token authentication
- Parses optional filter parameters from request body
- Fetches all reservations from Netlify Blobs
- Applies filters (status, productSlug) if provided
- Sorts by createdAt descending (newest first)
- Returns filtered reservation list
Sorting
Results are sorted by createdAt in descending order (newest first).
Status Values
| Status | Description |
|---|---|
pending | New reservation, awaiting confirmation |
confirmed | Reservation confirmed by admin |
fulfilled | Product delivered/picked up |
cancelled | Reservation cancelled |
Related
- POST /api/admin-reservations-status - Update reservation status
- POST /api/admin-stats - Get dashboard statistics