Тема
Lists API
Списки — це bring-list 🧺 та wishlist 🎁 для подій.
GET /v1/events/:id/items
Отримати позиції списку події.
Авторизація: опціональна (з токеном — повертає myClaim)
Query параметри
| Параметр | Тип | Опис |
|---|---|---|
kind | string | bring або wish |
Запит
http
GET /v1/events/event-uuid/items?kind=bring
Authorization: Bearer <accessToken>Відповідь 200
json
{
"data": [
{
"id": "item-uuid",
"title": "Лимонад",
"description": "Холодний, 2л",
"emoji": "🍋",
"imageUrl": null,
"link": null,
"quantityNeeded": 3,
"quantityClaimed": 1,
"kind": "bring",
"myClaim": {
"id": "claim-uuid",
"quantity": 1
}
},
{
"id": "item-uuid-2",
"title": "Пляжний м'яч",
"emoji": "⚽",
"quantityNeeded": 1,
"quantityClaimed": 0,
"kind": "bring",
"myClaim": null
}
]
}POST /v1/items/:id/claim
Взяти позицію зі списку.
Авторизація: Bearer <accessToken> (потрібен RSVP going)
Тіло запиту
json
{
"quantity": 1
}| Поле | Тип | Опис |
|---|---|---|
quantity | number | Кількість (мін 1, макс: quantityNeeded - quantityClaimed) |
Відповідь 201
json
{
"id": "claim-uuid",
"itemId": "item-uuid",
"userId": "user-uuid",
"quantity": 1,
"createdAt": "2024-07-01T10:00:00Z"
}Помилки
| Код | Причина |
|---|---|
403 | Немає RSVP going або feature flag вимкнено |
409 | Вже клеймили цю позицію |
422 | Запрошена кількість перевищує доступну |
DELETE /v1/items/:id/claim
Відмовитися від claim'у.
Авторизація: Bearer <accessToken>
Відповідь 200
json
{ "success": true }POST /v1/events/:id/items
Додати позицію до списку (організатор або admin).
Авторизація: Bearer <accessToken> (organizer або admin)
Тіло запиту
json
{
"title": "Лимонад",
"description": "Холодний, 2л",
"emoji": "🍋",
"kind": "bring",
"quantityNeeded": 3,
"link": "https://example.com/product"
}| Поле | Тип | Обов'язкове | Опис |
|---|---|---|---|
title | string | ✅ | Назва позиції |
kind | string | ✅ | bring або wish |
quantityNeeded | number | ✅ | Потрібна кількість |
description | string | — | Деталі |
emoji | string | — | Emoji-іконка |
link | string | — | Посилання на товар |
Відповідь 201
json
{
"id": "item-uuid",
"title": "Лимонад",
"kind": "bring",
"quantityNeeded": 3,
"quantityClaimed": 0
}DELETE /v1/items/:id
Видалити позицію зі списку (організатор або admin).
Авторизація: Bearer <accessToken> (organizer або admin)
Відповідь 200
json
{ "success": true }WARNING
Видалення позиції скасовує всі claim'и на неї без сповіщення учасників.