Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Импорт водителей


запрос importPerformers

Запрос используется для импорта водителей (Performers) в систему. Для импорта водителей по API используется структура application/xml и HTTP-метод POST.


URL: [account-name].maxoptra.com/rest/2/distribution-api/objects/importPerformers


Все возможные атрибуты для performer:Список поддерживаемых атрибутов:

Название поляТипДлинаОбязательноеПримерыОписание
1performer



Блок информации о водителе
1.1

externalId

Текст255Нет
Идентификатор
Петр УваровВнешний идентификатор водителя.
1.2login Текст255Даdriver03Логин
. По нему ищем водителя при апдейте
водителя для входа в систему. Логин должен быть уникальным для каждого водителя.
1.3password  Текст255Да12345678Пароль
. Обязателен для нового водителя.
пароль для входа в систему
1.4nameТекст255ДаПетр УваровИмя водителя
1.5emailТекст255Даdriver03@gmail.comАдрес электронной почты водителя
1.6phoneТекст255Нет+75554378200Номер телефона водителя
1.7commentsТекст255Нет
КомментарииНаименование поляОбязательныйОписаниеweekDay (

Высокий, носит очки
Дополнительная информация о водителе
1.8priceForOneHourЧисло255Да100Стоимость одного часа работы
1.9breakShiftЧисло
ДаОбязательно, если включены фиксированные обеды. Сдвиг обедаareaOfControlДаРаспределительный центр

allowDailyDrivingLimit

Нет 

dailyDrivingLimit

Нет 

allowDailyWorkingLimit

НетПродолжительность работы в смену

dailyWorkingLimit

НетВремя вождения в смену

scheduleZonesId

НетИдентификатор территории

 

Все возможные атрибуты для availability:

255Да30Величина на которую обед может быть автоматически сдвинут при составлении маршрута. Данный параметр обязателен только если аккаунт настроен на работу со статическими обедами.
1.10areaOfControlТекст255ДаНогинскНаименование распределительного центра, которому принадлежит водитель
1.11

allowDailyDrivingLimit

Логическийtrue / falseНет

Признак использования для данного водителя индивидуальных настроек максимально допустимой длительности вождения, возможные значения:

  • 1 (иcпользуется)
  • 0 (не используется)
1.12

dailyDrivingLimit

Число[1;4320]Нет360Максимально допустимая длительность вождения в минутах
1.13

allowDailyWorkingLimit

Логическийtrue / falseНет

Признак использования для данного водителя индивидуальных настроек максимально допустимой продолжительности работы, возможные значения:

  • 1 (иcпользуется)
  • 0 (не используется )
1.14

dailyWorkingLimit

Число[1;4320]Нет720Максимально допустимая длительность рабочего дня за смену в минутах
1.15

scheduleZonesId

Число255Нет
Идентификатор территории планирования, которую может обслуживать данный водитель
1.16allowRunTimeLimitЛогическийtrue / falseНет

Признак использования для данного водителя индивидуальных настроек максимально допустимой продолжительности рейса, возможные значения:

  • 1 (иcпользуется)
  • 0 (не используется )
1.17runTimeLimitЧисло[1;4320]Нет
Максимально допустимая длительность рейса в минутах
2availability

Да
Блок информации о графике работы водителя
2.1weekDayТекст255ДаmondayДень работы. Возможные значения: sunday, monday, tuesday, wednesday, thursday, friday, saturday
)ДаОбязательный в теге availability. День работыНаименование поляОбязательныйОписаниеname Имя локацииaddress Адрес локацииlatitude  Долготаlongitude  Широта
2.2from
ДаОбязательный в теге availability. Означает: работать с (значения - этот день, предыдущий день)toДаОбязательный в теге availability. Означает: работать до (значения - этот день, следующий, послезавтра)startDayShift Нет

Значение 0 или -1, если не задан - считается что текущий день.

-1: предыдущий день

0:  текущий день

endDayShift Нет

Значение 0 или 1 или 2, если не задан - считается что текущий день

0:  текущий день

1: следующий день

2: плюс два дня

breakFrom   ДаОбязательный при указании breakTo. Означает - Обед сbreakTo     ДаОбязательный при указании breakFrom. Означает - Обед до

fixedDayStart 

НетФиксированное начало рабочего дня

 Значение полей dailyDrivingLimit и dailyDrivingLimit имеют смысл только при наличии включенных полей allowDailyDrivingLimit и allowDailyWorkingLimit соответственно.

Все возможные атрибуты для home location (если home location не используются, не заполнять данный блок)

Время[00:00;23:59]Да
Время начала рабочего дня водителя: с ... часов
2.3toВремя[00:00;23:59]Да
Время окончания рабочего дня водителя: до ... часов
2.4startDayShift Число255Нет08:00

День начала рабочей смены относительно заданного в атрибуте “weekDay” дня недели. Возможные значения:

  • -1 (предыдущий день)
  • 0 (текущий день)
  • если не задан, то считается что выбран текущий день.
2.5endDayShiftЧисло255Нет20:00

День окончания рабочей смены относительно заданного в атрибуте “weekDay” дня недели. Возможные значения:

  • 0 (текущий день)
  • 1 (следующий день)
  • 2 (текущий день + 2)
  • 3 (текущий день + 3)
  • 4 (текущий день + 4)
  • если не задан, то считается что выбран текущий день.
2.6breakFrom   Число[00:00;23:59]Да*10:00Время начала обеда. Данный параметр обязателен только, если аккаунт настроен на работу со статическими обедами. Данный параметр обязателен, если заполнен параметр “breakTo”. Означает - Обед с ...
2.7breakTo     Число[00:00;23:59]Да*10:45Время окончания обеда. Данный параметр обязателен только, если аккаунт настроен на работу со статическими обедами. Данный параметр обязателен, если заполнен параметр “breakFrom”. Означает - Обед до ...
2.8fixedDayStart 
[0;1]Нет
Фиксированное начало рабочего дня
3zone

Нет

Блок, в котором указывается территория, в которой может работать водитель (см.Территории / Группы территорий)

Примечание Данный раздел не обязателен для включения в API запрос. НО если вы все-таки влкючили его в запрос, вы должны заполнить его ОБЯЗАТЕЛЬНО!

3.1nameТекст255НетАНазвание территории
4startLocation
255Нет
Блок информации об адресе начала рабочего дня. Если start location не используются, не заполнять данный блок.
4.1addressТекст255Даул.Панфилова 42, Химки, РоссияАдрес начала рабочего дня.
4.2latitudeЧисло[-90;90]Нет55.896023Долгота
4.3longitude Число[-180;180]Нет37.431775Широта
4.4onlyWithDeliveriesЛогическийtrue/falseНет
False является эквивалентом значения Посетить перед первой Доставкой в форме водителя . False используется по умолчанию.
5homeLocation

Нет
Блок информации об адресе возврата в конце дня. Если home location не используются, не заполнять данный блок.
5.1addressТекст255Даул.Панфилова 42, Химки, РоссияАдрес возврата в конце дня.
5.2latitudeЧисло[-90;90]Нет55.896023Долгота
5.3longitude Число[-180;180]Нет37.431775Широта
5.4onlyWithCollectionsЛогическийtrue/falseНет
False является эквивалентом значения Посетить после последнего сбора в форме водителя . False используется по умолчанию.
5.5endDayOnLastOrderЛогическийtrue/falseНет
Используется, если маршрут заканчивается на последнем заказе. False используется по умолчанию. Если не указан адрес возврата в конце дня (address), маршрут закончится в распределительном центре (areaOfControl).


Метод importPerformers ищет по логину водителя. Если логин найден, то содержание всех полей обновляется. Если нет, то в системе создается новый водитель.

Значение полей dailyDrivingLimit и dailyDrivingLimit имеют смысл только при наличии включенных полей allowDailyDrivingLimit и allowDailyWorkingLimit соответственно


Пример (перечислены все доступные поля):

Code Block
languagexml
<?xml

...

 version="1.0"

...

 encoding="UTF-8

...

"?>

...

    <apiRequest>

        <sessionID>6345e0588e384fc4acc3a2e63e9a4d39</sessionID >

              <performersDetails>

      <units timeZone="Greenwich Mean Time" timeZoneOffset="GMT+0:00" currency="POUND" distanceUnits="MILE" speedUnits="MILES_PER_HOUR" durationUnits="MINUTE" weightUnits="Kg" volumeUnits="m3"/>

           <performers>                   

           <performer name="Driver_API_3782387phone="00000" email="Driver_API_3782387@gmail.com"

...


<apiRequest>
   <sessionID>6345e0588e384fc4acc3a2e63e9a4d39</sessionID>
   <performersDetails>
      <units />
      <performers>
         <performer name="Водитель Иванов" phone="555-437-82" email="ivanov_magenta_voditel@gmail.com" login="Driver_API_3782387121"

...

 password="

...

12345678"

...

 comments

...

=

...

"Высокий, носит очки." priceForOneHour="10.5"

...

 breakShift="30"

...

 dailyDrivingLimit="720"

...

 allowDailyDrivingLimit="1"

...

 dailyWorkingLimit="720"

...

 allowDailyWorkingLimit="1"

...

 areaOfControl="chippenhamzone"

...

 scheduleZonesId="71

...

" externalId="1234567890qwerty">
            <startLocation address="10 Bishops Park Road, London, SW6 6DZ" latitude="" longitude="" onlyWithDeliveries="false" />
            <homeLocation address="Drake Crescent, Chippenham, Wiltshire, SN14, GB"

...

 latitude="51.453891"

...

 longitude="-2.148895"

...

                 <availabilities>

...

 onlyWithCollections="true"/>
            <availabilities>
               <availability weekDay="monday"

...

 from="05:00"

...

 to="19:00"

...

 breakFrom="10:00"

...

 endDayShift="0"

...

 breakTo="10:45" />

...


               <availability weekDay="thursday"

...

 from="04:30"

...

 to="19:00"

...

 breakFrom="10:00"

...

 breakTo="10:45" />

...


               <availability weekDay="friday"

...

 from="06:30"

...

 to="19:00"

...

 breakFrom="10:00"

...

 breakTo="10:45" />

...


               <availability weekDay="saturday"

...

 from="05:00"

...

 to="19:00"

...

 breakFrom="10:00"

...

 breakTo="10:45" />

...


               <availability weekDay="sunday"

...

 from="05:00"

...

 to="19:00"

...

 breakFrom="10:00"

...

 breakTo="10:45" />

...

               </availabilities>

           </performer>           

          </performers>

        </performersDetails>

       </apiRequest>

Ответ, если все прошло хорошо:

 

...


            </availabilities>
            <zones>
               <zone name="Center" />
            </zones>
         </performer>
      </performers>
   </performersDetails>
</apiRequest>


Ответ при успешном импорте:

Code Block
languagexml
<?xml version="1.0" encoding="UTF-8"?>
<apiResponse version="1.0">

...

   <performers>

      <performer>

         <name>Driver_API_3782387</name>

         <login>Driver_API_3782387121</login>

      </performer>

   </performers>

</apiResponse>

 


   <performers>
      <performer>
         <name>Водитель Иванов</name>
         <login>Driver_API_3782387121</login>
      </performer>
   </performers>
</apiResponse>


Возможные ошибки:

...

 

причина

ошибка

1

При указании некорректного sessionID

1009 - "Provided credentials are invalid"

2

При отсутствии обязательного параметра

1230 - "Parameter is required: %name%", name – имя отсуствующего параметра

3

При некорректном вводе email

1232 - "Invalid value for e-mail: %wrongname%"

4

При вводе некорректных значений

1107 - "Field type is incorrect: %name% = %valuename%. Expected %expectedtype% type"

5

При вводе несуществующего DC

1203 - "Area Of Control was not found"

6

При запросе к DC, на которое у

юзера

пользователя нет прав

1019 - "User with provided credentials doesn't have AoC access or AoC doesn't exist"

7

При отсутствии одного из полей breakFrom или breakTo, когда одно из них задано

1231 - "Invalid value for break, both values breakFrom and breakTo are required"

8

Пустое значение password при редактировании водителя

1233 - "The value for password is empty"

 

Экспорт водителей

rest/2/distribution-api/objects/exportPerformers

 

Содержит параметр sessionID

 rest/2/distribution-api/objects/exportPerformers?sessionID=a5fad852a18149468d1b9845bbd8e1a8

 

Возвращает ответ

<apiResponse version="1.0">

   <performersDetails>

      <units timeZone="GMT+01:00" timeZoneOffset="GMT+1:00" currency="POUND" distanceUnits="MILE" speedUnits="MILES_PER_HOUR" durationUnits="MINUTE" weightUnits="units"/>

      <performers>

         <performer name="Andy Marey" externalId="2675d0e99a1047e6bd0ebafc326bb939" email="andy@magenta.com" login="andy" passwordHash="42767516990368493138776584305024125808" maxWorkingHours="40" allowedOvertimePerWeek="0" priceForOneHour="0" dailyDrivingLimit="480" allowDailyDrivingLimit="false" dailyWorkingLimit="660" allowDailyWorkingLimit="false" breakShift="0" areaOfControl="FrogwellZone">

            <homeLocation name="Frogwell" address="Drake Crescent, Chippenham, Wiltshire, SN14, GB" latitude="51.453891" longitude="-2.148895"/>

            <availabilities>

               <availability weekDay="thursday" from="06:00" to="22:00" fixedDayStart="false"/>

            </availabilities>

         </performer>

      <performersDetails>

9Водитель и депо принадлежат разным территориям1217 - "Invalid value for scheduleZonesString"
10В случае не корректного сочетания начальной и конечной точки маршрута1317 - "Invalid parameters in start\end point sections"