Журнал змін
Історія змін публічного API SAMO-TRANS.
Нові записи — згори. Кожна зміна публічного контракту потрапляє сюди.
Про принципи сумісності — Версіонування.
v1.1
GET /proposals/searchприймаєstartLocalityCountriesіendLocalityCountries— країна кожного населеного пункту зstartLocalities/endLocalities, у тому самому порядку. Разом із ними у видачу потрапляють і заявки, виставлені на всю цю країну («будь-який напрямок»), а не лише привʼязані до самого міста. Параметри необовʼязкові — без них пошук працює як раніше.GET /employees— перелік працівників компанії.GET /employees/{id}/proposals-count— кількість заявок, де працівник є контактною особою.PATCH /employees/{id}/status— увімкнути або тимчасово вимкнути працівника.PATCH /employees/{id}— змінити роль або відображуване ім'я.- Нові області доступу
employees:readтаemployees:write. Раніше випущені ключі їх не мають — потрібен новий ключ. - Поле
contactPersonIdтепер приймається при створенні та редагуванні заявки (зокрема в пакетному створенні). Допускаються лише власник компанії та працівники зі статусомACTIVE. - Змінено:
GET /localities/searchтепер повертає ще й області (type: "region") — раніше у відповіді були лише країни та населені пункти, тож знайти область за назвою було неможливо. Порядок: країни → області → населені пункти. Нових полів немає, з'явився ще один тип елемента масиву — якщо ви очікуєте в кожному записіosmId, фільтруйте заtype === "locality". - Змінено:
GET /proposals/searchвіддає закриті заявки після всіх відкритих, а всередині кожної групи — від найновіших. Раніше сортування було лише заcreatedAt, тож ізincludeInactive=trueзакриті заявки перемішувалися з відкритими. Склад відповіді не змінився — лише порядок; якщо ви покладалися на суто хронологічний порядок, сортуйте заcreatedAtу себе. - Виправлено:
GET /employeesтепер завжди повертає власника компанії з роллюOWNER. Для компаній, перенесених із попередньої платформи, цього запису не існувало, тож перелік працівників починався з найманих людей. Склад полів не змінився — з'явився ще один елемент масиву. Якщо ви рахуєте працівників за довжиною відповіді, врахуйте власника. - Виправлено:
avatar(у працівників і в контактній особі заявки) завжди повертається абсолютним URL. Раніше для частини записів у полі лежав «голий» ключ сховища (avatars/….jpeg) — такий рядок клієнт розвʼязував відносно власної адреси й отримував 404. Формат поля не змінився, це той самий рядок з URL. - Виправлено:
includeInactiveуGET /proposals/searchраніше сприймав будь-яке непорожнє значення якtrue— зокремаincludeInactive=falseповертав і закриті заявки. Тепер параметр читається як записано:true/1/yes/onвмикають,false/0/no/offвимикають, нерозпізнане значення дорівнює відсутньому. Якщо ваша інтеграція надсилалаfalseі розраховувала на закриті заявки, вона отримає інший набір — надсилайтеtrueявно.
v1.0
Перший публічний випуск API.
Довідники
GET /reference/countries,/reference/regions— географія.GET /reference/car-types,/load-types,/permits,/currencies,/payment-types— словники кодів із назвами п'ятьма мовами.GET /localities/search— пошук населених пунктів, джерелоosmIdдля маршрутів.
Біржа
GET /proposals/search— пошук по всій біржі з фільтрами веб-версії, параметрupdatedSinceдля інкрементальної синхронізації.GET /proposals/{id}— картка заявки.GET /companies/{id},GET /companies/{id}/reviews— картка контрагента й схвалені відгуки.
Власні заявки
POST /proposals/cargo,POST /proposals/transport— створення.POST /proposals/batch— до 25 заявок одним запитом із результатом по кожній позиції.GET /proposals/my— перелік заявок компанії, до якої прив'язаний ключ.PATCH /proposals/{id},POST /proposals/{id}/bump,/archive,/restore,DELETE /proposals/{id}.
Платформа
- Аутентифікація ключами
samo_live_з областями доступуreference:read,proposals:read,proposals:writeта необов'язковим переліком дозволених IP. - Ліміти на ключ із заголовками
X-RateLimit-*і сталими кодамиrate_limited/quota_exceeded. - Заголовок
Idempotency-Keyдля безпечних повторів запитів на запис. - Вебхуки
proposal.created/updated/deletedтаproposal.matchedіз підписомX-Samo-Signature. - Сталий конверт помилки
{ error: { code, message, requestId } }.