Открыть главное меню

Модуль "Автосервис" имеет необходимый набор API-методов для интеграции с вашей собственной учетной системой, в частности, для синхронизации резервов.

Сервис представляет из себя обычный RESTfull сервис поверх HTTP. Вызовы на модификацию принимаются через POST, на получение - через GET. Все ответы приходят в формате JSON. Обмен осуществляется в кодировке UTF-8.

При использовании метода POST в HTTP-заголовке Content-Type необходимо передать медиа-тип данных запроса application/x-www-form-urlencoded и соответственно с данным типом сформировать тело HTTP-запроса.

Для отладки вы можете воспользоваться расширением Advanced REST Client для обозревателя Google Chrome.

Базовым URI для веб-службы является:

http://car-care.abcp.ru

Строки от веб-службы, содержащие русские символы, возвращаются в виде escape unicode.

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

  • sitelogin - логин сайта с которого производится запрос
  • sitepsw - пароль сайта, закодированный алгоритмом md5

Результат, возвращаемый веб-сервисом, может иметь один из следующих статусов:

  • 200 - ОК
  • 500 - Internal Server Error

Если выставлен статус 500, значит в процессе работы веб-сервиса произошла ошибка. В этом случае ответ веб-сервиса должен содержать объект с двумя полями errorCode и errorMessage.

   {
      "errorCode":2,
      "errorMessage":"Недостаточно параметров"
   }

Сущности

Объект CarCare

  • carCareId - integer - глобальный идентификатор автосервиса
  • url - string - сайт сервиса
  • name - string - название сервиса
  • workingTime - object WorkingTime - данные о рабочем времени
  • address - объект Address
  • timeZone - string - временная зона нахождения автосервиса [Пример: Europe/Moscow] (полный список поддерживаемых временных зон)
  • phones - array of string - телефоны
  • reservationStepInMinutes - integer - шаг резервирования в минутах
  • status - integer - состояние модерации автосервиса (1 - в работе, 2 - на проверке модератора, 3 - подтверждён)
  • conditions - string - условия работы
  • departmentCount - integer - количество боксов
  • departments - array of Department - массив боксов
  • notificationsPhone - string - телефон для SMS-оповещений
  • inNetwork - bool - признак "входит в сеть"
  • informerSite - string - хост сайта, где расположен информер рейтинга автосервиса
  • logo - string - имя файла логотипа, загруженного в image.api
  • photos - array - массив фотографий
  • notificationEmails - array of string - список email для уведомлений
  • disableForMyCarReservation - bool - флаг отключения онлайн-записи на 4mycar

Объект WorkingTime

Содержит массив с ассоциативными ключами от "1" до "7", соответствующими дням недели от ПН до ВС, а также "holiday", соответствующего праздничным дням. В качестве значений объект со свойствами "start" и "stop", соответствующими началу и окончанию рабочего времени в текстовом формате "09:00". Пустой объект {} - означает выходной.

Пример:

 [
   {
      "1": {},
      "2": {"start":"09:00","stop":"18:00"},
      ...
      "7": {"start":"10:00","stop":"22:00"},
      "holiday": {"start":"10:00","stop":"22:00"}
   }
 ]

Объект Address

  • countryId - integer - код страны
  • regionCode - string - код региона
  • cityCode - string - код города
  • city - string - название города
  • street - string - улица
  • building - string - дом, строение
  • apartment - string - № офиса
  • subwayStation - string - название станции метро
  • subwayStationId - integer - идентификатор станции метро
  • subwayLine - string - название ветки метро
  • subwayLineId - integer - идентификатор ветки метро
  • gps - string - GPS координаты автосервиса (Например: 55.739276,37.508265)

Объект Department

  • departmentId - integer - глобальный идентификатор бокса
  • name - string - название бокса
  • workingTime - object WorkingTime - данные о рабочем времени
  • phones - array of string - телефоны
  • reservationStepInMinutes - integer - шаг резервирования в минутах
  • workplaceCount - integer - количество подъёмников (рабочих мест)
  • availableWorks - array of Work - данные о видах работ и их продолжительности
  • isHidden - boolean - видимость бокса

Объект Work

  • workId - integer - глобальный идентификатор работы
  • name - string - название (описание) вида работы
  • duration - integer - длительность работы (не используется)
  • manufacturers - array - массив марок автомобилей для которых выполняется эта работа конкретным боксом
  • isDelete - признак "Удалена"

Пример:

 [ 
   {
     "workId": 1,
     "name": "Мойка",
     "duration": 20,
     "isDelete": 0,
     "manufacturers": [
       {
         "code": "HYUND", 
         "name": "HYUNDAI"
       }
     ]
   },
   {
     "workId": 2,
     "name": "Вулканизация",
     "duration": 50,
     "isDelete": 0,
     "manufacturers": [ ]
   },
   ...
 ]

Объект ReservationWork

  • reservationWorkId - integer - глобальный идентификатор зарезервированной работы
  • carCareId - integer - глобальный идентификатор автосервиса
  • carCareName - string - название автосервиса
  • departmentId - integer - глобальный идентификатор бокса
  • departmentName - string - название бокса
  • works - array of Work - массив объектов Work
  • date - string - формат: ДД-ММ-ГГГГ - дата резервирования
  • timeStart - string - формат: ЧЧ:ММ - время начала резервирования
  • timeStop - string - формат: ЧЧ:ММ - время окончания резервирования
  • intervals - array of array - массив с забронированными интервалами работы в формате array(0 => array("start" => "ЧЧ:ММ", "stop" => "ЧЧ:ММ"), ...)
  • customerGid - integer - глобальный идентификатор клиента
  • customer - Customer - информация о забронировавшем пользователе
  • comment - string - комментарий клиента при резервировании
  • isCancel - bool - значение 1 или 0 - если isCancel=1 при isDelete=0 значит отправлен запрос на удаление резерва. Если isCancel=1 при isDelete=1 значит запрос на отмену резерва подтвержден сотрудником автосервиса. Если isDelete=1 при isCancel=0 значит резерв удален сотрудником без запроса со стороны клиента

Объект Customer

  • fullName - string - ФИО клиента делающего резерв
  • phoneNumber - string - номер телефона
  • email - string - адрес электронной почты
  • modificationId - integer - идентификатор модификации выбранного автомобиля (не используется)
  • manufacture - string - марка автомобиля, например: BMW
  • model - string - модель автомобиля, например - 118i
  • registrationNumber - string - государственный регистрационный номер автомобиля

Операции

Получение информации об автосервисах

GET /car-cares/

Параметры запроса

Параметр Описание
sitelogin Логин сайта
sitepsw md5-хэш пароля сайта

Результат выполнения

Результатом успешного выполнения данной операции будет массив объектов CarCare.

Пример

Запрос

GET http://car-care.abcp.ru/car-cares/?sitelogin=demo.abcp.ru&sitepsw=66786abcd78789f1e

Ответ

[
  {
    "carCareId": 40239,
    "url": "",
    "name": "МойБМВ (на ул. рябиновой)",
    "workingTime": {
      "1": {
        "start": "10:00:00",
        "stop": "20:00:00"
      },
      "2": {
        "start": "10:00:00",
        "stop": "20:00:00"
      },
      "3": {
        "start": "10:00:00",
        "stop": "20:00:00"
      },
      "4": {
        "start": "10:00:00",
        "stop": "20:00:00"
      },
      "5": {
        "start": "10:00:00",
        "stop": "20:00:00"
      },
      "6": {
        "start": "10:00:00",
        "stop": "20:00:00"
      },
      "7": {
        "start": "10:00:00",
        "stop": "20:00:00"
      },
      "holiday": {
      }
    },
    "address": {
      "countryId": 643,
      "regionCode": "77",
      "cityCode": "77_0_000_000_000_000",
      "city": "Москва",
      "street": "Рябиновая",
      "building": "45",
      "apartment": "",
      "subwayLineId": "6",
      "subwayLine": "Филёвская линия",
      "subwayStationId": "47",
      "subwayStation": "Кунцевская",
      "gps": "55.702723176135,37.43234803915"
    },
    "timeZone": "Europe/Moscow",
    "phones": [
      "8-495-922-06-69"
    ],
    "reservationStepInMinutes": 60,
    "status": 3,
    "conditions": "",
    "departmentCount": 1,
    "departments": [
      {
        "departmentId": 80819,
        "name": "Первый Бокс",
        "phones": {
        },
        "workingTime": {
        },
        "reservationStepInMinutes": 60,
        "workplaceCount": 3,
        "availableWorks": [
          {
            "workId": 14,
            "name": "Слесарные работы",
            "duration": 0,
            "parentId": null,
            "isDelete": 0,
            "id": null,
            "manufacturers": [
              {
                "code": "BMW",
                "name": "BMW"
              }
            ]
          },
          {
            "workId": 15,
            "name": "Двигатель",
            "duration": 0,
            "parentId": null,
            "isDelete": 0,
            "id": null,
            "manufacturers": [
              {
                "code": "BMW",
                "name": "BMW"
              }
            ]
          },
          {
            "workId": 16,
            "name": "Электрика",
            "duration": 0,
            "parentId": null,
            "isDelete": 0,
            "id": null,
            "manufacturers": [
              {
                "code": "BMW",
                "name": "BMW"
              }
            ]
          }
        ],
        "isHidden": 0
      }
    ],
    "notificationsPhone": "",
    "inNetwork": 0,
    "informerSite": "",
    "notificationEmails": [
      "xxx@nodasoft.com",
      "yyy@nodasoft.com"
    ]
  },
  {
    "carCareId": 40342,
    "url": "",
    "name": "ТвойБМВ",
    "workingTime": {
      "1": {
        "start": "05:30:00",
        "stop": "08:30:00"
      },
      "2": {
        "start": "05:30:00",
        "stop": "08:30:00"
      },
      "3": {
        "start": "05:30:00",
        "stop": "08:30:00"
      },
      "4": {
        "start": "05:30:00",
        "stop": "08:30:00"
      },
      "5": {
        "start": "05:30:00",
        "stop": "08:30:00"
      },
      "6": {
        "start": "05:30:00",
        "stop": "08:30:00"
      },
      "7": {
        "start": "05:30:00",
        "stop": "08:30:00"
      },
      "holiday": {
      }
    },
    "address": {
      "countryId": 643,
      "regionCode": "01",
      "cityCode": "01_0_000_001_000_000",
      "city": "Майкоп",
      "street": "Ленина",
      "building": "2",
      "apartment": "",
      "subwayLineId": "0",
      "subwayLine": "",
      "subwayStationId": "0",
      "subwayStation": "",
      "gps": ""
    },
    "timeZone": "Europe/Kiev",
    "phones": {
    },
    "reservationStepInMinutes": 30,
    "status": 3,
    "conditions": "",
    "departmentCount": 0,
    "departments": {
    },
    "notificationsPhone": "79000000000",
    "inNetwork": 0,
    "informerSite": "",
    "notificationEmails": [
      "xxx@nodasoft.com",
      "yyy@nodasoft.com"
    ]
  }
]