API продавца
Каталог продавца и обратная запись лидов disabled на этом развёртывании. Поиск площадки остаётся выключенным.
Аутентификация и оплата
Отправляйте Authorization: Bearer с токеном seller API. Области grant — read, write и publish. Grant пространства покрывает каталог продавца; отсутствие права — 403 not_entitled, исчерпанный лимит — 429 quota_exceeded. Этот grant не является платежом MPP. Когда машинная поверхность возвращает 402, повторите с тем же bearer-токеном и Payment-Authorization. Оплата никогда не заменяет учётные данные API. Секреты подписи webhook не могут аутентифицировать запросы.
HTTP-контракт
Create, update, delete и publish возвращают 200 с объектом data и ETag. Удаление черновика — 200 с deleted true. Обратная запись лида — POST /api/tenants/{tenant_slug}/leads и возвращает 201. Изменения отправляют If-Match; отсутствие предусловия — 428, устаревшее — 412. Повтор тех же reference_code, content_source и payload возвращает то же объявление. Цены используют целое amount_minor в валюте, которую указывает продавец. Рынки, районы, поля и валюты — GET /api/seller/vocabulary. Загрузка фото возвращает 422 cloudflare_not_configured, пока не настроена доставка медиа. Publish возвращает 422 с seller_clearance_required, пока допуск продавца не актуален, или private_owner_quota, если у частного продавца уже есть активное объявление. Снятие — POST /api/seller/listings/{id}/withdraw; удаление не-черновика возвращает 409 withdraw_instead. Другие перечисленные ошибки: 400, 401 и 404.
| get /api/seller/listings | 200, 400, 401, 403, 404, 429 — disabled |
| post /api/seller/listings | 200, 400, 401, 403, 404, 409, 422, 429 — disabled |
| delete /api/seller/listings/{id} | 200, 400, 401, 403, 404, 409, 412, 422, 428, 429 — disabled |
| get /api/seller/listings/{id} | 200, 400, 401, 403, 404, 429 — disabled |
| patch /api/seller/listings/{id} | 200, 400, 401, 403, 404, 412, 422, 428, 429 — disabled |
| post /api/seller/listings/{id}/photos | 200, 400, 401, 403, 404, 412, 422, 428, 429 — disabled |
| delete /api/seller/listings/{id}/photos/{photo_id} | 200, 400, 401, 403, 404, 412, 422, 428, 429 — disabled |
| patch /api/seller/listings/{id}/photos/{photo_id} | 200, 400, 401, 403, 404, 412, 422, 428, 429 — disabled |
| post /api/seller/listings/{id}/photos/{photo_id}/complete | 200, 400, 401, 403, 404, 412, 422, 428, 429 — disabled |
| post /api/seller/listings/{id}/publish | 200, 400, 401, 403, 404, 412, 422, 428, 429 — disabled |
| post /api/seller/listings/{id}/withdraw | 200, 400, 401, 403, 404, 412, 422, 428, 429 — disabled |
| get /api/seller/published | 200, 400, 401, 403, 404, 429 — disabled |
| get /api/seller/published/{id} | 200, 400, 401, 403, 404, 429 — disabled |
| get /api/seller/vocabulary | 200, 400, 401, 403, 404, 429 — disabled |
| post /api/tenants/{tenant_slug}/leads | 201, 404, 422 — disabled |
Вебхуки
Доставки — JSON с event, listing_id, tenant_id и occurred_at, плюс заголовки x-tapakly-event и x-tapakly-signature: sha256= HMAC-SHA256 сырого тела. Сетевые события: listing_created, listing_updated и listing_deleted. Тестовое событие — integration_test. Проверьте подпись, пометьте объявление как устаревшее и заново запросите текущее состояние API. Не пишите каталог только потому, что пришёл webhook, и игнорируйте дубликаты, неверные подписи и более старые события после повторного запроса.
Два рецепта, один каталог
Каталог, которым управляет Tapakly: читайте GET /api/seller/published и показывайте на своём сайте. Каталог, которым управляет CMS: ваш сервер пишет POST /api/seller/listings и публикует, когда допуск это позволяет. Выберите один авторитетный источник. Другая сторона показывает или принимает; она не перезаписывает обратно.
CLI tapakly
Управляйте каталогом продавца из терминала. Каждая команда ниже есть в clients/cli. Передайте --json для стабильной машинной записи.
tapakly vocabulary
tapakly listings list
tapakly listings show
tapakly listings create
tapakly listings update
tapakly listings publish
tapakly listings withdraw
tapakly listings delete
tapakly photos upload
tapakly published
tapakly auth set
Установить
Публичной загрузки ещё нет. Соберите CLI из этого репозитория:
cd clients/cli
go build -o tapakly .