{{keywords>API Наполеон}} {{description>Формат WEB обмена АСМТ Наполеон }} =====API ФСМТ Наполеон:===== =====Работа через API===== Подключение к серверу происходит по http протоколу через порт сервера. ====Заголовки запроса:==== Content-Type: application/json Authorization: Bearer <ПарольAPI> Пример подключения без пароля //**curl -X GET -H “Content-Type: application/json” –H “Authorization: Bearer ”**// http://127.0.0.1:8888/object/Agents ====Стандартный ответ==== Ответ сервера содержит массив объектов. Объект содержит имя и массив данных. //Answer = [] StdObject = {"name":,"data":[]}// |ObjectName |Имя объекта| |DataObject |JSON объект данных| Поля даты/времени передается в строковом виде 20221113184531 Сервер всегда возвращает объект ServerAnswer //{"response":,"message":}// |Response |1 - операция успешна, 0 - ошибка| |Message |Описание ошибки| ===/object/[?filter] methods GET, DELETE=== Запрос объекта или удаление объекта. **Params** |ObjectName |Имя объекта| |filter |Фильтр для запроса (WHERE для SQL запроса)| **Response** |200 |Стандартный ответ.ServerAnswer для DELETE ServerAnsert + выбранные объекты для GET| **Examples** |//GET /object/Agents//| |//GET /object/Agents?"login"='2' and "password"='2'//| ===/object method PUT=== Замена объектов на сервере. Сначала выполняется удаление, согласно фильтру, затем происходит вставка. **Тело запроса** //[{"name":,"filter":,"data":[]}]// |ObjectName|Имя объекта| |Filter|Фильтр для удаления объектов. Пустой фильтр - удаление всей таблицы.| |DataObject| JSON объекты данных. Если передается пустой объект, происходит только удаление данных| **Response** |200|Стандартный ответ. ServerAnswer| ===/object method POST=== Вставка объектов без удаления **Тело запроса** //[{"name":,"data":[]}]// |ObjectName|Имя объекта| |DataObject|JSON объекты данных.| **Response** |200|Стандартный ответ. ServerAnswer| ===/call/ method POST=== Исполнение модуля PYTHON. Сервер ищет модуль с именем ModuleName.py и запускает метод run(server) |ModuleName|Имя модуля| **Параметры запроса** //{}// |DataObject|JSON объект с параметрами вызова.| **Response** |200|Стандартный ответ.ServerAnswer| ---- =====Объекты обмена===== ====Agents — список ТП==== Мобильные пользователи (Торговые представители) **Поля** ^Название ^Тип ^Описание^ |id|Varchar|Код ТП| |name|Varchar|ФИО| ====ServerConfig — настройки программы==== Настройки работы программ. Настройки для работы берутся по коду торгового представителя, или общие (поле userid пустое). Индивидуальные настройки ТП имеют приоритет над общими. **Поля** ^Название ^Тип ^Описание^ |userid|Varchar|Код ТП или пустое значение для общих настроек| |key|Varchar|Ключ настройки| |value|Varchar|Значение| ====Ключи настроек==== ^Название ^Тип ^Описание^ |МожноИзменятьЦену|0;1|0 — запрет на изменение вида цены в мобильном приложении; 1 — ТП может изменить вид цены| |ДатаДоставки|0;1;2|Установка даты доставки при создании заказа.0 — дата доставки сегодня; 1 — дата доставки завтра; 2 — дата доставки следующий рабочий день| ====Orgs — торговые точки==== Торговые точки ^Название ^Тип ^Описание^ |id|Varchar|Код ТТ. Торговая точка - это адрес доставки когнтрагента, должен содержать уникальный ID, например: <код контрагента>@<код адреса>| |name|Varchar|Наименование| |address|Varchar|Адрес| |contacts|Коллеция|Список контактов торговой точки| |name|Varchar|ФИО контакта| |phone|Varchar|телефон| |dogovors|Коллеция|Список договоров торговой точки| |name|Varchar|Наименование договора| |id|Varchar|Код договора| |orgId|Varchar|Код организации - поставщика| |priceId|Varchar|Код вида цены| ====AgentData — доступные объекты для ТП==== Содержит данные по доступным объектам агента из общего списка. **Поля** ^Название ^Тип ^Описание^ |id|Varchar|Код объекта| |userid|Varchar|Код ТП| |type|Varchar|Тип объекта; Org – торговые точки; Price — товары; PriceType – виды цен| ====AgentStoreData — доступные склады для ТП==== Содержит данные по складам для агентов. Порядок следования складов определяется порядком следования складов при записи коллекции. **Поля** ^Название ^Тип ^Описание^ |id|Varchar|Код объекта (склада)| |userid|Varchar|Код ТП| ====Folder — папки товаров==== Содержит иерархический список папок товаров **Поля** ^Название ^Тип ^Описание^ |id|Varchar|Код товарной группы (папки товара)| |name|Varchar|Наименование| ====Stores — склады==== Содержит список складов. **Поля** ^Название ^Тип ^Описание^ |id|Varchar |Код склада| |name|Varchar |Наименование| ====StoreQty — остатки товаров по складам==== Содержит список остатки товаров на складах. Запись имеет метку версии. Каждый раз при выгрузке данных версию необходимо изменить, а после выгрузки данных, удалить предыдущие версии данных. **Поля** ^Название ^Тип ^Описание^ |id|Varchar|Код склада| |IdItem|Varchar|Код товара| |qty|float|Остаток| |version|int|версия| ====Price — товары==== Список товаров ^Название ^Тип ^Описание^ |id|Varchar|Код товара| |name|Varchar|Наименование| |fid|Varchar|Код папки товара| |weight|float|Вес единицы товара| |units|Коллеция|Список единиц измерения| |id|Varchar|Уникальный идентификатор для единицы измерения. Для базовой единицы — пустая строка| |code|Varchar|ОКЕИ| |name|Varchar|Наименование| |inpack|float|Множитель упаковки| ====PriceCost — цены на товары==== Содержит цены для товаров по разным видам цен. Запись имеет метку версии. Каждый раз при выгрузке данных версию необходимо изменить, а после выгрузки данных, удалить предыдущие версии данных. **Поля** ^Название ^Тип ^Описание^ |id|Varchar|Код вида цены| |IdItem|Varchar|Код товара| |cost|float|Цена| |version|int|версия| ====PriceType — виды цен==== Список видов цен ^Название ^Тип ^Описание^ |id|Varchar|Код вида цены| |name|Varchar|Наименование| ====Firm — организации==== Список организаций от которых идет поставка в торговые точки ^Название ^Тип ^Описание^ |id|Varchar|Код организации-поставщика| |name|Varchar|Наименование| ====Balance — долги торговых точек==== Список долгов по торговым точкам ^Название ^Тип ^Описание^ |id|Varchar|Код точки| |idDog|Varchar|Код договора| |sum|Varchar|Сумма долга точки, если сумма отрицательная, то переплата.| |documents|Коллеция|Список документов с ненулевым сальдо| |date|Date|Дата и время документа| |uid|Varchar|Уникальный идентификатор документа| |sum|float|Сумма долга по документу| |sumDoc|float|Сумма документа| |payDate|Date|Дата оплаты| |number|Varchar|Номер документа| |type|Varchar|Тип документа. Для отгрузок Delivery| |title|Varchar|Заголовок документа в списке долгов| ====Delivery — отгрузки==== Список отгрузок по торговым точкам ^Название ^Тип ^Описание^ |id|Varchar|Код точки| |idDog|Varchar|Код договора| |uid|Varchar|Уникальный идентификатор документа| |date|Date|Дата документа| |number|Varchar|Номер документа| |items|Коллеция|Список товаров| |id|Date|Код товара| |qty|float|Количество| |sum|float|Сумма по строке| ====NewOrders — список новых заказов==== Список заказов. Документ появляется в этом списке если его дата создания не старше 3 дней от текущей даты и его нет в таблице OrderCommitted ^Название ^Тип ^Описание^ |id|Varchar|Код точки| |userid|Varchar|Код торгового представителя| |created|Date|Дата и время создания документа| |whCode|Varchar|Код склада| |remark|Varchar|Примечание| |idDog|Varchar|Код договора| |date|Date|Дата доставки| |prcType|Varchar|Код вида цены| |items|Коллеция|Список товаров| |id|Date|Код товара| |qty|float|Количество| |cost|float|Цена| ====NewIncass — список новых инкассаций==== Список новый инкассаций. Документ появляется в этом списке если его дата создания не старше 3 дней от текущей даты и его нет в таблице OrderCommitted ^Название ^Тип ^Описание^ |id|Varchar|Код точки| |userid|Varchar|Код торгового представителя| |created|Date|Дата и время создания документа| |remark|Varchar|Примечание| |sum|float|Введенная сумма (может не совпадать с сумой по строкам). В этом случае часть суммы не разбита по документам| |idDog|Varchar|Код договора| |items|Коллеция|Список товаров| |number|Varchar|Номер отгрузки| |date|Date|Дата отгрузки| |sum|float|Введенная сумма| |uid|Varchar|Уникальный идентификатор отгрузки| ====OrderCommitted — информация об обработке документа==== Содержит связь между созданным в программе документом и документом в 1с ^Название ^Тип ^Описание^ |created|Date|Дата создания документа| |userid|Varchar|Код торгового представителя| |type|Varchar|Тип документа: **Order** - для заказа; **Incass** - для инкассации| |number|Varchar|Номер документа в 1с| |date|Date|Дата документа в 1с| ====OrderProceeded — инофрмация об обработанных документах для торгового представителя==== Информация передается в мобильную программу и удаляется из этой таблицы. ^Название ^Тип ^Описание^ |created|Date|Дата создания документа| |userid|Varchar|Код торгового представителя| |type|Varchar|Тип документа **Order**- для заказа; **Incass** - для инкассации| |remark|Varchar|Примечание по обработке документа для торгового представителя|