Версия 1.5 · 21.07.2026 · роль SELLER
API позволяет создать лот, загрузить фотографии, запустить торги и получить данные своих лотов.
partyid и password у контактного лица Avtoonline.POST /api/login и сохраните JWT-токен.POST /api/graphql-public.Authorization: Bearer <token> в каждом GraphQL-запросе.
| Окружение | Вход | GraphQL |
|---|---|---|
| Production | https://avtoonline.pro/api/login |
https://avtoonline.pro/api/graphql-public |
| Sandbox | https://int-graphql.avtoonline.tech/api/login |
https://int-graphql.avtoonline.tech/api/graphql-public |
curl -X POST https://int-graphql.avtoonline.tech/api/login \
-H "Content-Type: application/json" \
-d '{"partyid":"<PARTY_ID>","password":"<PASSWORD>"}'
{
"token": "<JWT_TOKEN>",
"party": {
"partyId": "<PARTY_ID>",
"roles": [
"SELLER"
]
}
}
createLot.id лота и vehicleId.uploadFile и при необходимости отредактируйте
подписи.
activateLot.getLot или getLots.{
"query": `
mutation CreateLot {
createLot {
id
partyId
vehicleId
}
}
`
}
{
"data": {
"createLot": {
"id": "<LOT_ID>",
"partyId": "<PARTY_ID>",
"vehicleId": "<VEHICLE_ID>"
}
}
}
Обязательны идентификатор лота, vehicle.id, основные характеристики автомобиля,
время завершения торгов и уникальный internalCaseNumber.
{
"query": `
mutation Activate($input:ActivateLotInput!) {
activateLot(lotInput:$input) {
id
status
startTime
endTime
internalCaseNumber
}
}
`,
"variables": {
"input": {
"id": "<LOT_ID>",
"internalCaseNumber": "<CASE_NUMBER>",
"startTime": "2026-07-21T09:00:00Z",
"endTime": "2026-07-22T09:00:00Z",
"vehicle": {
"id": "<VEHICLE_ID>",
"brand": "<BRAND>",
"model": "<MODEL>",
"year": 2022,
"vin": "<VIN>",
"mileage": 50000,
"startingPrice": 1000000,
"vehicleTypeId": "<VEHICLE_TYPE_ID>",
"engineTypeId": "<ENGINE_TYPE_ID>",
"bodyTypeId": "<BODY_TYPE_ID>",
"transmissionTypeId": "<TRANSMISSION_TYPE_ID>",
"regionId": "<REGION_ID>",
"city": "<CITY>"
}
}
}
}
После успешной активации лот получает статус ACTIVE и переходит в
COMPLETED после завершения торгов.
Загрузка использует multipart/form-data. В objId передайте
vehicleId из createLot.
curl -X POST https://int-graphql.avtoonline.tech/api/graphql-public \
-H "Authorization: Bearer <JWT_TOKEN>" \
-F 'operations={"query":"mutation Upload($input:UploadFileInput!){uploadFile(input:$input){fileUrl quotaLeft file{id description tag}}}","variables":{"input":{"objId":"<VEHICLE_ID>","description":"<DESCRIPTION>","tag":"EXTERIOR","file":null}}}' \
-F 'map={"0":["variables.input.file"]}' \
-F '0=@/path/to/photo.jpg'
{
"data": {
"uploadFile": {
"fileUrl": "<TEMPORARY_FILE_URL>",
"quotaLeft": 92.5,
"file": {
"id": "<PHOTO_ID>",
"description": "<DESCRIPTION>",
"tag": "EXTERIOR"
}
}
}
}
Значение fileUrl временное и действует 7 дней.
updateComment(photoID: ID!, comment: String!) — обновить подпись.deletePhotosByIds(ids: [ID!]!) — удалить фотографии.{
"query": `
query Lots($filter:LotFilterInput) {
getLots(filter:$filter) {
lots {
id
status
internalCaseNumber
startTime
endTime
vehicle {
id
brand
model
vin
mileage
photos {
id
description
tag
url
urlValidTill
}
}
}
total
}
}
`,
"variables": {
"filter": {
"limit": 100,
"offset": 0
}
}
}
Максимальное значение limit — 1000. В списке по умолчанию возвращается первое
фото; полный набор запрашивайте через getLot.
{
"query": `
query Lot($id:ID!) {
getLot(lotId:$id) {
id
status
historyStatus
historyStatusUpdatedAt
notes
vehicle {
brand
model
vin
damages {
notes
damageTypeIds
}
photos {
id
description
tag
url
}
}
}
}
`,
"variables": {
"id": "<LOT_ID>"
}
}
Для заполнения автомобиля доступны getVehicleTypes, getEngineTypes,
getBodyTypes, getTransmissionTypes, getRegions и
getDamageTypes.
{
"query": `
query References {
getVehicleTypes {
id
name
}
getEngineTypes {
id
name
}
getBodyTypes {
id
name
}
getTransmissionTypes {
id
name
}
getRegions {
id
name
}
getDamageTypes {
id
name
}
}
`
}
| HTTP/ответ | Что проверить |
|---|---|
| 400 | JSON, GraphQL query и обязательные variables. |
| 401 | Наличие и срок действия Authorization: Bearer <token>. |
| 403 | Наличие роли SELLER и доступ к операции. |
| 413 или ошибка квоты | Размер файла и остаток квоты. |
Массив errors при HTTP 200 |
Сообщение бизнес-ошибки; HTTP 200 сам по себе не означает успех операции. |
| 5xx | Повторить запрос позже. |
