openapi: 3.0.0
info:
contact:
email: supportautoload@avito.ru
description: 'API для взаимодействия с иерархией аккаунтов в Авито
**Авито API для бизнеса предоставляется согласно [Условиям использования](https://www.avito.ru/legal/pro_tools/public-api).**
'
title: Иерархия Аккаунтов Access TerminalManagement API
version: '1'
servers:
- url: https://api.avito.ru/
tags:
- name: TerminalManagement
x-displayName: Управление терминалами
x-subdivName: Управление терминалами
paths:
/delivery-sandbox/areas/custom-schedule:
parameters:
- $ref: '#/components/parameters/authHeader'
post:
description: 'Метод можно использовать для установки расписания отличного от регулярного, например для того, чтобы установить
праздничные дни нерабочими или установить для них расписание отличное от регулярного.
'
operationId: customAreaSchedule
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/customAreaScheduleRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AddTaskReply'
description: OK
'401':
$ref: '#/components/responses/DeliveryUnauthorized'
'500':
$ref: '#/components/responses/DeliveryInternalServerError'
summary: Установка графика работы на определённый день
tags:
- TerminalManagement
/delivery-sandbox/tariffs/{tariff_id}/terminals:
parameters:
- $ref: '#/components/parameters/authHeader'
- description: id тарифа, к которому должны быть прикреплены добавляемые терминалы
in: path
name: tariff_id
required: true
schema:
format: int32
type: integer
post:
description: 'Загрузить новые терминалы
Данные необходимо загружать по мере обновления данных о ПВЗ (как правило это 1-2 раза в сутки)
### Система апрува терминалов
При загрузке терминалов система автоматически сравнивает новые данные с текущими в базе.
Если процент критичных изменений превышает заданный порог — задача переходит в статус `pending_approval`
и требует ручного одобрения.
**Критичные изменения** (хотя бы одно из):
- Добавление нового терминала
- Удаление терминала
- Изменение сервисов (приём/выдача/возврат)
- Изменение ограничений (вес/размеры/стоимость)
- Изменение расписания
- Изменение тега (направления)
- Сдвиг координат более чем на 100 метров
Формула: `критичных / (существующих + добавленных) * 100% > порог`
При срабатывании апрува задача переходит в статус `pending_approval`, а в результате задачи
возвращаются поля с информацией об изменениях (`diff_added`, `diff_deleted`, `diff_modified`, `diff_critical`, `diff_total`).
> Система апрува не затрагивает ABD-терминалы.
### Описание ошибок
| http code | error code | error message |
|-----------|-------------------|-----------------------------------------------------------|
| 200 | URL_PATH_INVALID | Tariff id must be int url path |
| 200 | TERMINALS_INVALID | Failed to convert terminals: {error description} |
| 200 | TERMINALS_INVALID | Failed to get terminals from request: {error decsription} |
'
operationId: AddTerminalsSandbox
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddTerminalsRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AddTerminalsReply'
description: OK
'401':
$ref: '#/components/responses/DeliveryUnauthorized'
'403':
$ref: '#/components/responses/DeliveryForbidden'
'500':
$ref: '#/components/responses/DeliveryInternalServerError'
security:
- ClientCredentials: []
summary: Загрузить терминалы
tags:
- TerminalManagement
/delivery-sandbox/tasks/{task_id}:
parameters:
- $ref: '#/components/parameters/authHeader'
- in: path
name: task_id
required: true
schema:
format: int32
type: integer
get:
description: "Получить информацию о задаче\n\nПримерное время выполнения задачи от 5 до 20 минут\n\n### Возможные статусы задачи\n Задача может быть в одном из следующих статусов:\n * `processing` - задача ждёт очередь на выполнение или уже выполняется\n * `success` - задача успешно выполнена\n * `failed` - задача завершилась с ошибкой или не смогла завершиться по техническим причинам\n * `pending_approval` - загрузка терминалов приостановлена, процент критичных изменений превысил допустимый порог и требуется ручное одобрение\n * `declined` - загрузка терминалов отклонена\n\n### Описание ошибок\n| http code | error code | error message |\n|-----------|--------------------|------------------------------|\n| 200 | URL_PATH_INVALID | Task id must be int url path |\n| 200 | INVALID_ENTITY | Empty provider |\n| 500 | FAILED_TO_GET_TASK | Failed to get task |\n"
operationId: GetTask
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetTaskReply'
description: Successful
'401':
$ref: '#/components/responses/DeliveryUnauthorized'
'403':
$ref: '#/components/responses/DeliveryForbidden'
'500':
$ref: '#/components/responses/DeliveryInternalServerError'
security:
- ClientCredentials: []
summary: Получение информации по задаче
tags:
- TerminalManagement
components:
schemas:
customAreaScheduleRequestObject:
properties:
customSchedule:
description: 'Список доступных интервалов доставки/забора посылки в определенную дату
В случае если доступные интервалы доставки отсутствуют требуется передать пустой список
'
items:
$ref: '#/components/schemas/DeliveryIntervalInDate'
type: array
providerAreaNumber:
description: Список областей, к которым применимо данное расписание.
items:
$ref: '#/components/schemas/DeliveryProviderAreaNumber'
type: array
services:
description: Услуги расписание на которые требуется скорректировать. Забор (intake), доставка (delivery)
items:
enum:
- intake
- delivery
type: string
type: array
useAllAreas:
description: Будет игнорироваться список providerAreaNumber и будут использоваться все области актуального тарифа.
nullable: true
type: boolean
required:
- providerAreaNumber
- services
- customSchedule
type: object
TerminalsTaskResult:
description: 'Результат загрузки терминалов.
При статусе `success` заполняются поля `upserted`, `deleted`, `total`.
При статусе `pending_approval` заполняются поля `diff_added`, `diff_deleted`, `diff_modified`, `diff_critical`, `diff_total`
с информацией об изменениях, которые требуют одобрения.
'
properties:
count:
deprecated: true
description: Количество терминалов, которые были успешно загружены
type: string
deleted:
description: Количество удаленных терминалов
type: string
diff_added:
description: Количество добавленных терминалов (заполняется при статусе pending_approval)
nullable: true
type: string
diff_critical:
description: Количество критичных изменений (заполняется при статусе pending_approval)
nullable: true
type: string
diff_deleted:
description: Количество удалённых терминалов (заполняется при статусе pending_approval)
nullable: true
type: string
diff_modified:
description: Количество изменённых терминалов (заполняется при статусе pending_approval)
nullable: true
type: string
diff_total:
description: Общее количество терминалов (заполняется при статусе pending_approval)
nullable: true
type: string
total:
description: Количество терминалов активных на тарифе
type: string
upserted:
description: Количество добавленных или обновленных терминалов
type: string
title: Загрузка терминалов
type: object
TariffTaskResult:
properties:
tariffId:
description: id добавленного тарифа
type: string
required:
- tariffId
title: Загрузка тарифа
type: object
DeliveryProviderAreaNumber:
description: "id области доставки на стороне службы доставки \n(передается при загрузке областей доставки и будет использоваться при создании заказа \nв качестве идентификатора адресного объекта забора/доставки отправления)\n"
example: 7989jgftyf-jkghtd
maxLength: 128
minLength: 1
type: string
SortingCentersTagsTaskResult:
properties:
count:
description: Количество успешно привязанных тегов к сортировочным центрам
type: string
required:
- count
title: Привязка тегов к сортировочным центрам
type: object
SortingCentersTaskResult:
properties:
count:
description: Количество успешно загруженных сортировочных центров
type: string
required:
- count
title: Загрузка сортировочных центров
type: object
AddTerminalsRequest:
items:
$ref: '#/components/schemas/Terminal'
type: array
GetTaskReply:
properties:
data:
$ref: '#/components/schemas/GetTaskData'
error:
$ref: '#/components/schemas/DeliveryError'
type: object
Terminal:
properties:
address:
$ref: '#/components/schemas/Address'
deliveryProviderId:
description: Уникальный идентификатор ПВЗ на стороне службы доставки (не допускается использование символа двоеточия «:» в идентификаторе)
example: 1234-dffg
maxLength: 64
title: id ПВЗ в службе доставки
type: string
directionTag:
$ref: '#/components/schemas/Delivery-directionTag'
displayName:
description: 'Отображаемое пользователям кастомное наименование пункта самовывоза. Требуется, чтобы отличать разные точки по бренду и виду.
Требования:
1.
Количество слов min: 1, max: 2.
2.Длина 1 слова min: 3 символа, max: 15 символов.
3.Если 2 слова, то суммарно не более 20 символов, включая пробел.
Предупреждение: Терминалы не зальются, если displayName не будет удовлетворять вышеперечисленным условиям ' example: Зелёный постамат title: кастомное наименование пункта type: string itinerary: description: Описание как пройти example: Выход из последнего вагона, сначала прямо потом налево type: string name: description: Человекопонятное название пункта самовывоза (будет использоваться в интефейсной части) example: 1234-dffg title: название пункта самовывоза type: string options: description: "Доступные в точке выдачи опции. Примерка (fitting), проверка электроники (electronics-checking), \nоплата при получении картой (cod-by-card), оплата при получении наличными (cod-by-cash).\nМассовая сдача заказов (multi-drop-off) в процессе разработки.\n" items: enum: - fitting - electronics-checking - cod-by-card - cod-by-cash - multi-drop-off type: string type: array phones: $ref: '#/components/schemas/Delivery-phones' photos: description: 'Список ссылок на фотографии.