API — Jangrok

Публичный API Jangrok

Простой REST API для работы со своими заказами, чатами и лотами — например, чтобы автоматически выдавать товар или синхронизировать цены из внешней системы. Примеры ниже — на cURL, JavaScript, Python, PHP и Go, переключаются вкладками.

Базовый URL

https://jangrok.site/api/v1

Авторизация

Каждый запрос — с заголовком Authorization: Bearer <ключ>. Создать ключ можно в разделе API-ключей профиля после входа.

Права доступа (scope)

У каждого ключа — свой набор прав, выбирается при создании. Ключ без нужного права получит 403 на соответствующем эндпоинте.

read_ordersЧитать свои заказы
write_ordersПодтверждать получение заказа
read_chatЧитать сообщения своих чатов
write_chatОтправлять сообщения в свои чаты
edit_listingsРедактировать свои лоты (цена, название, описание)

Ошибки и лимиты

Ошибка — всегда JSON с полем error и соответствующим HTTP-статусом:

{"error": "Invalid or revoked API key"}
401Нет заголовка Authorization, ключ неверный или отозван
403У ключа нет нужного права (scope)
404Ресурс не найден или принадлежит не тебе
400Некорректные данные в запросе
409Заказ не в том статусе для этого действия
429Превышен лимит запросов

Лимит — 60 запросов/мин на ключ по умолчанию, настраивается при создании ключа (до 300/мин).

GET /orders read_orders

Список твоих заказов — и как покупателя, и как продавца, последние 100, новые сначала.

Запрос

curl https://jangrok.site/api/v1/orders \
  -H "Authorization: Bearer pm_твой_ключ"

Ответ 200

{
  "orders": [
    {
      "id": 4821,
      "listing_title": "1000 робуксов",
      "quantity": 1,
      "price_paid_total": "899.00",
      "status": "in_progress",
      "role": "buyer",
      "created_at": "2026-09-15 12:03:44"
    }
  ]
}
GET /orders/{id} read_orders

Детали одного заказа — только если ты покупатель или продавец в нём, иначе 404.

Запрос

curl https://jangrok.site/api/v1/orders/4821 \
  -H "Authorization: Bearer pm_твой_ключ"

Ответ 200

{
  "id": 4821,
  "listing_title": "1000 робуксов",
  "quantity": 1,
  "price_paid_total": "899.00",
  "status": "confirmed_frozen",
  "role": "buyer",
  "created_at": "2026-09-15 12:03:44",
  "confirmed_at": "2026-09-15 12:10:02"
}
POST /orders/{id}/confirm write_orders

Подтвердить получение — только для покупателя, и только пока заказ в статусе in_progress (иначе 409). Деньги продавца переходят в заморозку до автоматической разморозки.

Запрос

curl -X POST https://jangrok.site/api/v1/orders/4821/confirm \
  -H "Authorization: Bearer pm_твой_ключ"

Ответ 200

{
  "status": "confirmed_frozen",
  "frozen_until": "2026-09-17 12:10:02"
}
GET /chats/{id}/messages read_chat

Сообщения чата, в котором ты участник. Параметр ?after=ID — только сообщения новее указанного id, удобно для опроса (polling) без повторной загрузки истории целиком.

Запрос

curl "https://jangrok.site/api/v1/chats/51/messages?after=1200" \
  -H "Authorization: Bearer pm_твой_ключ"

Ответ 200

{
  "messages": [
    {
      "id": 1201,
      "sender_id": 7,
      "content": "Данные отправлены, проверьте почту",
      "created_at": "2026-09-15 12:11:30"
    }
  ]
}
POST /chats/{id}/messages write_chat

Отправить сообщение в чат, в котором ты участник. Текст — до 2000 символов, пустое сообщение не примется.

Запрос

curl -X POST https://jangrok.site/api/v1/chats/51/messages \
  -H "Authorization: Bearer pm_твой_ключ" \
  -H "Content-Type: application/json" \
  -d '{"message": "Данные отправлены, проверьте почту"}'

Ответ 200

{
  "id": 1201,
  "sender_id": 7,
  "content": "Данные отправлены, проверьте почту"
}
PATCH /listings/{id} edit_listings

Изменить свой лот — передавай только те поля, которые хочешь обновить, остальные останутся как были. Хотя бы одно поле обязательно.

Запрос

curl -X PATCH https://jangrok.site/api/v1/listings/930 \
  -H "Authorization: Bearer pm_твой_ключ" \
  -H "Content-Type: application/json" \
  -d '{"price": "849.00"}'

Ответ 200

{
  "status": "updated",
  "listing_id": 930
}