Skip to content

Lists API

Списки — це bring-list 🧺 та wishlist 🎁 для подій.

GET /v1/events/:id/items

Отримати позиції списку події.

Авторизація: опціональна (з токеном — повертає myClaim)

Query параметри

ПараметрТипОпис
kindstringbring або 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
}
ПолеТипОпис
quantitynumberКількість (мін 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"
}
ПолеТипОбов'язковеОпис
titlestringНазва позиції
kindstringbring або wish
quantityNeedednumberПотрібна кількість
descriptionstringДеталі
emojistringEmoji-іконка
linkstringПосилання на товар

Відповідь 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'и на неї без сповіщення учасників.

Peaced — платформа подій