Введение

API РемонтОнлайн содержит набор вызываемых методов.

Вы можете интегрировать РемонтОнлайн с любым приложением, получив доступ к базе данных через API. Работа через API происходит от имени авторизированного пользователя.

Для всех запросов действует ограничение по количеству. Вы можете делать не более 8-ми запросов в секунду.

Пагинация

Для запросов, которые возвращают номер страницы page, доступна пагинация. Возвращаемый параметр count содержит общее количество значений. Каждый запрос с пагинацией возвращает до 50 значений. Для итерации по страницам необходимо передавать параметр page=N.
            








curl -G https://api.remonline.ru/order/ \ -d "token=7bab555b5ed075353de2263dd50a394c84a4625a" \ -d "page=2"

Авторизация

Все запросы к API должны содержать в себе параметр token.

Для того, чтобы получить token вам необходимо отправить запрос используя api_key пользователя вашей компании. Вы можете получить api_key в вашем личном кабинете.

Внимание! Время жизни token ограничено во времени и составляет ~10 минут.
curl -X POST https://api.remonline.ru/token/new \
     -d "api_key=1a5f283b6934466f8a408f34ffad317c"


{
    "token": "7bab555b5ed075353de2263dd50a394c84a4625a",
    "success": true
}

Мастерские

Используется для получения списка всех не удаленных мастерских компании.

Url:
  • https://api.remonline.ru/branches/
Arguments:
  • token (required)
Response:
  • id - integer
  • name - string
curl -G https://api.remonline.ru/branches/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 2,
    "data": [
        {"id": 1, "name": "Apple workshop"},
        {"id": 2, "name": "My workshop"}
    ],
    "page": 1,
    "success": true
}

Сотрудники

Используется для получения списка всех не удаленных сотрудников компании.

Url:
  • https://api.remonline.ru/employees/
Arguments:
  • token (required)
Response:
  • id: integer
  • phone: string - Телефон;
  • email: string - Email;
  • deleted: bool - Удален сотрудник или нет;
  • first_name: string - Имя сотрудника;
  • last_name: string - Фамилия сотрудника;
curl -G https://api.remonline.ru/employees/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 1,
    "data": [
        {
            "id": 1,
            "phone": "(123) 456-78-90",
            "email": "some@email.com",
            "deleted": False,
            "first_name": "Jack",
            "last_name": "Newman"
        }
    ],
    "success": true
}

Наценки

Возвращает список наценок, которые используются в компании.

Url:
  • https://api.remonline.ru/margins/
Arguments:
  • token (required)
Response:
  • id: integer
  • title: string - Название наценки;
  • margin: integer - Размер наценки относительно закупочной стоимости.
curl -G https://api.remonline.ru/margins/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 3,
    "data": [
        {"id": 1, "title": "Shop", "margin": 50},
        {"id": 2, "title": "Workshop", "margin": 20},
        {"id": 3, "title": "Zero margin", "margin": -100}
    ],
    "success": true
}

Статусы

Возвращает список статусов компании.

Url:
  • https://api.remonline.ru/statuses/
Arguments:
  • token (required)
Response:
  • id: integer
  • color: string - hex представление цвета;
  • name: string - Название статуса.
  • group: integer - Группа статуса:
    • 0 - Пользовательские;
    • 1 - Новые;
    • 2 - На исполнении;
    • 3 - Отложенные;
    • 4 - Исполненные;
    • 5 - Доставка;
    • 6 - Закрытые.
curl -G https://api.remonline.ru/statuses/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 4,
    "data": [
        {"id": 1, color: "#428BCA", "name": "New", group: 1},
        {"id": 2, color: "#5CB85C", "name": "On performance", group: 2},
        {"id": 3, color: "#F0AD4E", "name": "Delayed", group: 3},
        {"id": 4, color: "#B02CA7", "name": "Closed", group: 6}
    ],
    "success": true
}

Клиенты

Для работы с клиентами доступно несколько методов:
  • Получить список клиентов;
  • Создать клиента.

Источники откуда клиент узнал о нас

Возвращает список источников откуда клиент узнал о нас.

Url:
  • https://api.remonline.ru/clients/marketing-sources/
Arguments:
  • token (required)
Response:
  • id: integer
  • title: string - Источник откуда клиент узнал о нас.
curl -G https://api.remonline.ru/clients/marketing-sources/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 2,
    "data": [
        {"id": 1, "title": "Internet"},
        {"id": 2, "title": "Advertisement"}
    ],
    "success": true
}

    

Список клиентов

Используйте данный ресурс для получения списка клиентов компании.

Url:
  • https://api.remonline.ru/clients/
Arguments:
  • token (required)
  • names: array - Фильтр по имени клиента. Учитывать клиентов у которых переданный параметр содержится в значении name клиента;
  • phones: array - Фильтр по телефону клиента. Учитывать клиентов у которых переданный параметр содержится в значении phone клиента;
  • emails: array - Фильтр по email клиента. Учитывать клиентов у которых переданный параметр содержится в значении email клиента;
  • addresses: array - Фильтр по адресу клиента. Учитывать клиентов у которых переданный параметр содержится в значении adress клиента;
  • modified_at: array - Фильтр по дате изменения сущности клиента. Массив из одного либо двух значений, которые содержат в себе timestamp. В случае, если массив состоит из одного значения, то оно является левой границой. Примеры: [1454277600000, 1456783200000], [1454277500000];
  • marketing_sources: array - Массив идентификаторов источников откуда клиент узнал о нас;
  • juridical: bool - Вернуть только юридические лица, если правда, и только физические лица, если ложь;
  • conflicted: bool - Вернуть конфликтных клиентов, если правда, и только не конфликтных, если ложь;
  • supplier: bool - Вернуть клиентов являющихся поставщиками, если правда, и только обычных, если ложь;
Response:
  • id: integer
  • name: string - ФИО клиента;
  • phone: array[string] - Массив телефонов клиента;
  • email: string - Email клиента;
  • notes: string - Примечания по клиенту;
  • address: string - Адрес клиента;
  • supplier: bool - Клиент является поставщиком?;
  • juridical: bool - Клиент работает как юр.лицо?;
  • conflicted: bool - Конфликтный клиент?;
  • modified_at: timestamp - Время последнего изменения в данных клиента;
  • marketing_source: object - Источник откуда пришел данный клиент.
curl -G https://api.remonline.ru/clients/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a" \
     -d "phones[]=456-78-90" \
     -d "juridical=0" \
     -d "conflicted=1" \
     -d "supplier=0" \
     -d "modified_at[]=1454277600000"


{
    "count": 1,
    "data": [
        {
            "id": 1,
            "name": "Андрей А.А.",
            "phone": [
                "(123) 456-78-90",
                "(098) 765-43-21"
            ],
            "email": "some@site.domain",
            "notes": "Платит не вовремя.",
            "address": "г. Город, ул. Улица д.12, кв.34",
            "supplier": False,
            "juridical": False,
            "conflicted": True,
            "modified_at": 1454278600000,
            "marketing_source": {"id": 1, "title": "Internet"},
        },
    ],
    "success": true
}

Создание клиента

Данный ресурс используется для создания клиента. Для обновления клиента воспользуйтесь следующим методом.

Url:
  • https://api.remonline.ru/clients/
Arguments:
  • token (required)
  • name: string - Имя клиента;
  • phone: array[string] - Телефон клиента;
  • email: string - Email клиента;
  • address: string - Адрес клиента;
  • notes: string - Примечания по клиенту;
  • supplier: bool - Клиент является поставщиком? По умолчанию False;
  • juridical: bool - Клиент работает как юр.лицо? По умолчанию False;
  • conflicted: bool - Конфликтный клиент? По умолчанию False;
  • marketing_source: integer - Идентификатор источника откуда данный клиент узнал о нас;
Response:
  • id: integer - Идентификатор созданного клиента.
curl -X POST https://api.remonline.ru/clients/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a" \
     -d "name=Андрей А.А." \
     -d "phone[]=+2(123)456-78-90" \
     -d "email=noemail@nodomain.com" \
     -d "address=Main street, 35" \
     -d "marketing_source=1" \
     -d "juridical=0" \
     -d "supplier=0" \
     -d "conflicted=1"


{
    "data": {
        "id": 12345,
    },
    "success": true
}

Обновление клиента

Данный ресурс используется для обновления клиента. Работа с этим ресурсом абсолютно идентична тому, как мы создаем клиента. Ключевые изменения: метод PUT; обязательный параметр id.

Url:
  • https://api.remonline.ru/clients/
Arguments:
Аргементы, и их типы, абсолюнто идентичные методу создания клиента.

Response:
  • id: integer - Идентификатор обновленного клиента.
curl -X PUT https://api.remonline.ru/clients/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a" \
     -d "id=12345" \
     -d "name=Андрей А.А." \
     -d "phone[]=+2(123)456-78-90" \
     -d "email=noemail@nodomain.com" \
     -d "address=Main street, 35" \
     -d "marketing_source=2" \
     -d "juridical=0" \
     -d "supplier=1" \
     -d "conflicted=0"


{
    "data": {
        "id": 12345,
    },
    "success": true
}

Заказы

Для работы с заказами доступно несколько методов:
  • Получить список пользовательских полей;
  • Получить типы заказов;
  • Получить список заказов компании;
  • Создать заказ.

Пользовательские поля

Возвращает список пользовательских полей компании.

Url:
  • https://api.remonline.ru/order/custom-fields/
Arguments:
  • token (required)
Response:
  • id: integer
  • name: string - Название пользовательского поля;
  • type: integer - Тип пользовательского поля:
    • 0 - Чекбокс;
    • 1 - Текстовое поле (одна строка);
    • 2 - Текстовое поле (несколько строк);
    • 3 - Список значений;
    • 4 - Дата + время;
    • 5 - Дата;
    • 6 - Цена.
curl -G https://api.remonline.ru/order/custom-fields/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 2,
    "data": [
        {"id": 1, "type": 0, "name": "VIP"}
        {"id": 2, "type": 4, "name": "Order time"},
    ],
    "success": true
}

    

Типы заказов

Возвращает список типов заказов.

Url:
  • https://api.remonline.ru/order/types/
Arguments:
  • token (required)
Response:
  • id: integer
  • name: string - Название типа заказа.
curl -G https://api.remonline.ru/order/types/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 2,
    "data": [
        {"id": 1, "name": "Commercial"},
        {"id": 2, "name": "VIP"}
    ],
    "success": true
}

    

Заказы компании

Используйте данный ресурс для получения списка заказов компании.

Url:
  • https://api.remonline.ru/order/
Arguments:
  • token (required)
  • types: array - Массив идентификаторов типов заказа;
  • branches: array - Перечень идентификаторов мастерских;
  • brands: array - Перечень брендов;
  • ids: array - Массив системных идентификаторов заказов;
  • id_labels: array - Массив идентификаторов заказов;
  • statuses: array - Массив идентификаторов статусов для заказа;
  • managers: array - Массив идентификаторов сотрудников компании;
  • engineers: array - Массив идентификаторов сотрудников компании;
  • client_names: array - Перечень имен клиентов;
  • client_phones: array - Перечень телефонных номеров клиентов;
  • created_at: array - Фильтр по дате создания. Массив из одного либо двух значений, которые содержат в себе timestamp. В случае, если массив состоит из одного значения, то оно является левой границой. Примеры: [0, 1454277600000], [1454277500000];
  • done_at: array - Фильтр по дате готовности. Массив из одного либо двух значений, которые содержат в себе timestamp. В случае, если массив состоит из одного значения, то оно является левой границой. Примеры: [1454277600000, 1456783200000], [1454277500000];
  • modified_at: array - Фильтр по дате изменения заказа;
  • closed_at: array - Фильтр по дате выдачи. Массив из одного либо двух значений, которые содержат в себе timestamp. В случае, если массив состоит из одного значения, то оно является левой границой. Примеры: [1456783200000, 1454925794507], [1454277500000].
Response:
  • id: integer
  • brand: string
  • model: string
  • price: float
  • payed: float
  • resume: string
  • urgent: bool
  • serial: string
  • client: object
  • status: object
  • done_at: timestamp
  • overdue: bool
  • engineer_id: integer
  • manager_id: integer
  • branch_id: integer
  • appearance: string
  • created_by_id: integer
  • order_type: object
  • operations: array
  • parts: array
  • created_at: timestamp
  • assigned_at: timestamp
  • closed_at: timestamp
  • modified_at: timestamp
  • packagelist: string
  • kindof_good: string
  • malfunction: string
  • id_label: string
  • closed_by_id: integer
  • custom_fields: object
  • warranty_date: timestamp
  • manager_notes: string
  • estimated_cost: float
  • engineer_notes: string
  • estimated_done_at: timestamp
curl -G https://api.remonline.ru/order/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a" \
     -d "client_phones[]=(947)294-82-93" \
     -d "created_at[]=1454277600000" \
     -d "created_at[]=1456178400000"


{
    "count": 1,
    "data": [
        {
            "id": 1,
            "brand": "",
            "model": "Sony Ericsson K800i",
            "price": 1700,
            "payed": 1200,
            "resume": "",
            "urgent": false,
            "serial": "356128022598709",
            "client": {
                "id": 142,
                "phone": ["+7 (947) 294-82-93"],
                "address": "",
                "name": "Jack London",
                "email": "",
                "modified_at": 1454278600000
                "notes": "Платит вовремя.",
                "address": "г. Город, ул. Улица д.12, кв.34",
                "supplier": False,
                "juridical": False,
                "conflicted": False,
                "marketing_source": {"id": 1, "title": "Internet"},
            },
            "status": {
                "id": 828,
                "name": "New",
                "group": 1,
                "color": "#999999"
            },
            "done_at": 1456137000000,
            "overdue": false,
            "engineer_id": 1,
            "manager_id": 1,
            "branch_id": 218,
            "appearance": "Scratches, abrasions",
            "created_by_id": 1,
            "order_type": {
                    "id": 1,
                    "title": "VIP"
            },
            "parts": [
                {
                    "price": 150.0,
                    "engineer_id": 9130,
                    "cost": 100.0,
                    "amount": 1,
                    "title": "Display"
                },
            ],
            "operations": [
                {
                    "price": 25,
                    "engineer_id": 9130,
                    "amount": 1,
                    "title": "Diagnostics"
                },
                {
                    "price": 222,
                    "engineer_id": 9130,
                    "amount": 2,
                    "title": "Work"
                }
            ],
            "created_at": 1456132000000,
            "assigned_at": null,
            "closed_at": 1456137000000,
            "modified_at": 1456137000000,
            "packagelist": "",
            "kindof_good": "Smartphone",
            "malfunction": "Broken display",
            "id_label": "W1",
            "closed_by_id": 1,
            "custom_fields": {
                "1": "Some custom value"
            },
            "warranty_date": 1459137000000,
            "manager_notes": "",
            "estimated_cost": 1700,
            "engineer_notes": "",
            "warranty_granted": true,
            "estimated_done_at": 1456136000000
        }
    ],
    "page": 1,
    "success": true
}

    

Создание заказа

Данный ресурс используется для создания заказа в мастерской.

Url:
  • https://api.remonline.ru/order/
Arguments:
  • token (required)
  • branch_id (required)
  • order_type (required)
  • brand: string - Бренд устройства
  • model: string - Модель устройства
  • serial: string - Серийный номер устройства
  • urgent: bool - Срочный заказ?
  • estimated_cost: float - Ориентировочная стоимость
  • appearance: string - Внешний вид
  • packagelist: string - Комплектация
  • malfunction: string - Неисправность
  • assigned_at: timestamp - Время вызова мастера
  • estimated_done_at: timestamp - Ориентировочное время выполнения заказа
  • manager: int - Идентификатор ответсвенного менеджера
  • engineer: int - Идентификатор ответсвенного исполнителя
  • manager_notes: string - Заметки приемщика
  • warranty_date: timestamp - Дата окончания гарантии
  • kindof_good: string - Тип устройства
  • custom_fields: object - Пользовательские поля
  • client_id: int - Идентификатор клиента
Response:
  • id: integer - Идентификатор созданного заказа.
curl -X POST https://api.remonline.ru/order/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a" \
     -d "branch_id=2" \
     -d "client_id=3" \
     -d "order_type=1" \
     -d "brand=Apple" \
     -d "model=iPhone 6" \
     -d "serial=123456" \
     -d "malfunction=Broken phone" \
     -d "assigned_at=1444761830376" \
     -d "custom_fields={\"key\": \"value\"}"


{
    "data": {
        "id": 12345,
    },
    "success": true
}

    

Изменение статуса заказа

Данный ресурс используется для изменения статуса заказа.

Url:
  • https://api.remonline.ru/order/status/
Arguments:
  • order_id: int - Идентификатор заказа
  • status_id: int - Идентификатор статуса
Response:
  • id: integer - Идентификатор обновленного заказа.
curl -X POST https://api.remonline.ru/order/status/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a" \
     -d "order_id=232" \
     -d "status_id=87" \


{
    "data": {
        "id": 12345,
    },
    "success": true
}

    

Склад

Для работы со складом доступно несколько методов:
  • Получить список складов;
  • Получить список категорий;
  • Получить перечень товаров.

Получение списка складов компании

Для начала работы со складом, необходимо получить список складов компании. Вы можете отфильтровать список по конкретной мастерской передав идентификатор мастерской branch_id в запрос.

Url:
  • https://api.remonline.ru/warehouse/
Arguments:
  • token (required)
  • branch_id (optional)
Response:
  • id: integer
  • is_global: bool - Является ли склад глобальным?
  • title: string - Название склада.
curl -G https://api.remonline.ru/warehouse/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a" \
     -d "branch_id=2"


{
    "count": 3,
    "data": [
        {"id": 1, "is_global": false, "title": "Basic"},
        {"id": 2, "is_global": false, "title": "Heavy"},
        {"id": 3, "is_global": true, "title": "Reserved"}
    ],
    "success": true
}

    

Получение списка категорий компании

Запрос вернет список всех категорий в компании.

Url:
  • https://api.remonline.ru/warehouse/categories/
Arguments:
  • token (required)
Response:
  • id: integer
  • title: string - Название категории;
  • parent_id: <id|null> - Идентификатор родительской категории.
curl -G https://api.remonline.ru/warehouse/categories/ \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 4,
    "data": [
        {"id": 1, "title": "Phones", "parent_id": null},
        {"id": 2, "title": "Apple", "parent_id": 1},
        {"id": 3, "title": "Samsung", "parent_id": 1},
        {"id": 4, "title": "Transistors", "parent_id": null},
    ],
    "success": true
}

        

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

Запрос вернет список товаров компании с информацией по переданному складу. Список товаров для всех складов одинаковый. Отличие товаров между складами только в ихнем остатке.

Вы можете отфильтровать список товаров по категориям, передав идентификаторы необходимых категорий в запрос с помощью аргумента categories[].

Url:
  • https://api.remonline.ru/warehouse/goods/<warehouse_id>
Arguments:
  • token (required)
  • categories: array
Response:
  • id: integer
  • code: string - Код товара;
  • title: string - Наименование товара;
  • image: string - Абсолютный URL на изображение товара;
  • price: object - Наценки с ценами;
  • article: string - Артикул товара;
  • residue: float - Остаток товара на указаном складе;
  • category: object - Категория товара. Ответ идентичен методу, который возвращает категории;
  • description: string - Описание товара.
curl -G https://api.remonline.ru/warehouse/goods/1 \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 1,
    "data": [
        {
            "id": 1,
            "title": "Apple iPhone 6s",
            "image": "//storage.remonline.ru/path/image.ext",
            "code": "",
            "price": {
                "1": 799,
                "2": 999
            },
            "article": "",
            "residue": 8,
            "description": "Phone description",
            "category": {
                "id": 2,
                "title": "Apple",
                "parent_id": 1
            }
        },
    ],
    "page": 1,
    "success": true
}

        

Справочники

Список доступных справочников:
  • Модели;
  • Перечень услуг.

Модели

Возвращает справочник моделей компании.

Url:
  • https://api.remonline.ru/books/models/<branch_id>
Arguments:
  • token (required)
Response:
  • id: integer
  • title: string - Название моедли.
curl -G https://api.remonline.ru/books/models/1 \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 2,
    "data": [
        {"id": 1, "title": "Asus"},
        {"id": 2, "title": "Dell"}
    ],
    "success": true
}

    

Перчень услуг

Возвращает перечень услуг компании.

Url:
  • https://api.remonline.ru/books/service-operations/<branch_id>
Arguments:
  • token (required)
Response:
  • id: integer
  • title: string - Название услуги;
  • price: float - Цена услуги.
curl -G https://api.remonline.ru/books/service-operations/1 \
     -d "token=7bab555b5ed075353de2263dd50a394c84a4625a"


{
    "count": 2,
    "data": [
        {"id": 1, "title": "Cleaning", "price": 200},
        {"id": 2, "title": "Printing", "price": 15.67}
    ],
    "success": true
}

    

Коды ошибок

Запрос может вернуть сообщение и код ошибки.

Коды ошибок:
  • 100 - Обязательный параметр token не был указан;
  • 101 - Указан не правильный token. Сгенерируйте новый token и попробуйте еще раз;
  • 110 - Обязательный параметр api_key не был указан;
  • 111 - Указан не правильный api_key. Проверьте свой api_key в личном кабинете.
  • 400 - Запрос содержит некорректные данные. Сверьте запрос с документацией;
  • 404 - Запрашиваемый ресурс - не найден;
  • 500 - Программная ошибка на сервере. Пожалуйста, сообщите о такой ошибке в нашу техническую поддержку.

{
    "code": 100,
    "success": false,
    "message": "Some error message",
}