# API для разработчиков

> Документация по API для разработчиков. С помощью API вы сможете интегрировать WorkPan со своей программой или сайтом

https://workpan.com/ru/doc/api/  
Опубликовано: 2018-11-29  
Обновлено: 2026-09-11

---

API «WorkPan» содержит набор вызываемых методов.

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

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

Прежде чем использовать **API** вы должны его включить и сгенерировать ключ `token`, это можно сделать в разделе «Модули» панели управления. После чего все запросы к API должны содержать в себе этот параметр `token`.

Запросы можно отправлять методом `GET|POST`.

Все ответы будут предоставлены в формате `JSON`.

`URL:` - это адрес расположения вашей системы, пример, `https://_ВАШ_ЛОГИН_.workpan.com`.

В данном уроке мы будем использовать **DEMO-систему** со следующими данными

<dl>
  <dt><code>URL:</code></dt>
  <dd>https://demo.workpan.com</dd>
  <dt><code>token:</code></dt>
  <dd>wt3sctw89sl</dd>
  </dl> 
#### Оглавление:

- [Раздел №1: Получение статуса заявки](#menu_orderStatus)
- [Раздел №2: Получение ID всех заявок](#menu_orderIds)
- [Раздел №3: Получение информации о заявке по ID](#menu_orderById)
- [Раздел №4: Получение информации о контакте по ID](#menu_contactById)
- [Раздел №5: Получение информации о статусе по ID](#menu_statusById)
- [Раздел №6: Получение информации о сотруднике по ID](#menu_userById)
- [Раздел №7: Получение текстовых данных по ID (поля с окончанием \_tid)](#menu_textById)
- [Раздел №8: Получение данных из справочника, по ID (поля с окончанием \_rid)](#menu_rosterById)

### Раздел №1: Получение статуса заявки

##### Описание запроса:

|                               |                          |
|-------------------------------|--------------------------|
| `Метод`                       | `/api/order-status/`     |
| `token` <sup>(required)</sup> | `(string)` token         |
| `id` <sup>(required)</sup>    | `(integer)` Номер заявки |

##### Описание ответа:

| Ключ     | Тип         | Описание                        |
|----------|-------------|---------------------------------|
| `status` | `(boolean)` | Статус запроса: **TRUE\|FALSE** |
| `data`   | `(object)`  | Объект с данными                  |

Подробная информация об объекте `data`.

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr>
<th>Ключ</th>
<th>Описание</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>id</code></td>
<td>Ключ заявки</td>
</tr>
<tr>
<td><code>contacts_id</code></td>
<td>Ключ контакта</td>
</tr>
<tr>
<td><code>contacts_name</code></td>
<td>Наименование контакта</td>
</tr>
<tr>
<td><code>global_sid</code></td>
<td>Ключ статуса</td>
</tr>
<tr>
<td><code>global_status_name</code></td>
<td>Полное описание статуса</td>
</tr>
<tr>
<td><code>global_status_name_sm</code></td>
<td>Краткое описание статуса</td>
</tr>
<tr>
<td><code>global_status_class</code></td>
<td>Класс статуса: <code>('none','warning','success','important','info','inverse')</code></td>
</tr>
<tr>
<td><code>global_status_type</code></td>
<td>Тип статуса: <code>(1 = 'ожидание', 2 = 'открыт', 3 = 'в работе', 4 = 'успех', 5 = 'ошибка', 6 = 'закрыт')</code></td>
</tr>
<tr>
<td><code>gid</code></td>
<td>Ключ типа аппарата</td>
</tr>
<tr>
<td><code>g_name</code></td>
<td>Тип аппарата</td>
</tr>
<tr>
<td><code>bid</code></td>
<td>Ключ бренда</td>
</tr>
<tr>
<td><code>b_name</code></td>
<td>Бренд</td>
</tr>
<tr>
<td><code>models_id</code></td>
<td>Ключ модели</td>
</tr>
<tr>
<td><code>m_name</code></td>
<td>Модель</td>
</tr>
<tr>
<td><code>imei</code></td>
<td>IMEI аппарата</td>
</tr>
<tr>
<td><code>bt_data</code></td>
<td>Описание поломки</td>
</tr>
<tr>
<td><code>nt_data</code></td>
<td>Примечание к заявке</td>
</tr>
<tr>
<td><code>discount_name</code></td>
<td>Скидка</td>
</tr>
<tr>
<td><code>sumPrice</code></td>
<td>Сумма услуг</td>
</tr>
<tr>
<td><code>sumDiscount</code></td>
<td>Сумма скидки</td>
</tr>
<tr>
<td><code>sumTotal</code></td>
<td>Итоговая сумма</td>
</tr>
<tr>
<td><code>repairs</code></td>
<td>Массив объектов с Видами ремонта:<br />
<br />
&#10;<ul>
<li><code>orders_repairs_id</code> - тикет ремонта</li>
<li><code>products_rosters_id</code> - ключ вида ремонта</li>
<li><code>products_rosters_name</code> - наименование</li>
<li><code>price</code> - стоимость</li>
</ul></td>
</tr>
<tr>
<td><code>details</code></td>
<td>Массив объектов с Комплектующими:<br />
<br />
&#10;<ul>
<li><code>orders_details_id</code> - тикет закупки</li>
<li><code>details_rosters_id</code> - ключ детали</li>
<li><code>details_rosters_name</code> - наименование</li>
<li><code>price</code> - стоимость</li>
</ul></td>
</tr>
</tbody>
</table>

#### [Пример запроса:](#request_orderStatus)

    <?php
    $url = 'https://demo.workpan.com/api/order-status/';
    $token = 'wt3sctw89sl'; // Примерный token, его можно получить в личном кабинете
    $id = 10; // Примерный ключ заявки
    $postData = array(
        'token' => $token,
        'id' => $id
    );
    $post = http_build_query($postData);

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    $response = curl_exec($ch);
    curl_close($ch);

    // Вывод данных
    $obj = json_decode($response);
    var_dump($obj);

#### [Пример ответа:](#result_orderStatus)

    {
        "data": {
            "id": "10",
            "contacts_id": "23",
            "contacts_name": "Мария",
            "global_sid": "27",
            "global_status_name": "Выдан с ремонтом",
            "global_status_name_sm": "Выдан с ремонтом",
            "global_status_class": "info",
            "global_status_type": "4",
            "gid": "2",
            "g_name": "Планшет",
            "bid": "1",
            "b_name": "3Q",
            "models_id": "17",
            "m_name": "3Q Q-pad MT0729D",
            "imei": null,
            "bt_data": "После попадания воды планшет не включается, так же разбит дисплей",
            "nt_data": null,
            "discount_name": null,
            "sumPrice": "7500.00",
            "sumDiscount": "0.00",
            "sumTotal": "7500.00",
            "repairs": [
                {
                    "orders_repairs_id": "34",
                    "products_rosters_id": "1",
                    "products_rosters_name": "Диагностика",
                    "price": "0"
                },
                {
                    "orders_repairs_id": "35",
                    "products_rosters_id": "2",
                    "products_rosters_name": "Чистка после попадания воды",
                    "price": "1500"
                },
                {
                    "orders_repairs_id": "36",
                    "products_rosters_id": "85",
                    "products_rosters_name": "Замена модуля (стекло, тачскрин и дисплей)",
                    "price": "1500"
                }
            ],
            "details": [
                {
                    "orders_details_id": "5",
                    "details_rosters_id": "48",
                    "details_rosters_name": "Модуль (стекло, тачскрин и дисплей)",
                    "price": "4500"
                }
            ]
        },
        "status": true
    }

### Раздел №2: Получение ID всех заявок

##### Описание запроса:

|  |  |
|----|----|
| `Метод` | `/api/get-orders-ids/` |
| `token` <sup>(required)</sup> | `(string)` token |
| `page` | `(integer)` Номер страницы |
| `create_date_start` | `(integer)` Дата создания заявки, начало (UNIXTIMESTAMP) |
| `create_date_end` | `(integer)` Дата создания заявки, конец (UNIXTIMESTAMP) |

##### Описание ответа:

| Ключ        | Тип        | Описание                                            |
|-------------|------------|-----------------------------------------------------|
| `paginator` | `(object)` | Объект с данными для обхода по запросу              |
| `items`     | `(object)` | ID заявок, для последующего получения полных данных |

#### [Пример ответа:](#result_orderIds)

    {
      "paginator": {
        "pageCount": 2,
        "itemCountPerPage": 10,
        "first": 1,
        "current": 1,
        "last": 2,
        "next": 2,
        "pagesInRange": {
          "1": 1,
          "2": 2
        },
        "firstPageInRange": 1,
        "lastPageInRange": 2,
        "currentItemCount": 10,
        "totalItemCount": 11,
        "firstItemNumber": 1,
        "lastItemNumber": 10
      },
      "items": [
        "1",
        "2",
        "9",
        "22",
        "29",
        "30",
        "31",
        "32",
        "33",
        "34"
      ]
    }

### Раздел №3: Получение информации о заявке по ID

##### Описание запроса:

|                               |                          |
|-------------------------------|--------------------------|
| `Метод`                       | `/api/get-order-by-id/`  |
| `token` <sup>(required)</sup> | `(string)` token         |
| `id` <sup>(required)</sup>    | `(integer)` Номер заявки |

##### Описание ответа:

| Ключ | Тип | Описание |
|----|----|----|
| `id` | `(integer)` | ID заявки |
| `contacts_id` | `(integer)` | ID контакта/клиента <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `models_id` | `(integer)` | ID модели |
| `models_name` | `(string)` | Название модели |
| `models_gadgets_id` | `(integer)` | ID Типа устройства |
| `models_gadgets_name` | `(string)` | Название типа устройства |
| `models_brands_id` | `(integer)` | ID бренда |
| `models_brands_name` | `(string)` | Название бренда |
| `services_id` | `(integer)` | ID сервисного центра |
| `create_uid` | `(integer)` | ID пользователя создавшего заявку (для получения данных, см. соответствующий раздел) |
| `create_date` | `(datetime)` | Дата создания заявки |
| `create_date_u` | `(integer)` | Дата создания заявки (UNIXTIMESTAMP) |
| `priority` | `(integer)` | Приоритет заявки `(1, 2, 3)` |
| `isService` | `(boolean)` | Статус нахождения аппарата в сервисе `(0 => у клиента, 1 => в сервисном центре)` |
| `isWarranty` | `(boolean)` | Гарантийная заявка? `(0 => нет, 1 => да)` |
| `isClose` | `(boolean)` | Заявка закрыта? `(0 => нет, можно редактировать, 1 => да, закрыта)` |
| `bug_tid` | `(integer)` | Ключ описания поломки <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `note_tid` | `(integer)` | Примечание к заявке <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `color_rid` | `(integer)` | Цвет аппарата <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `discount_rid` | `(integer)` | Скидка по заявке <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `discount_type` | `(integer)` | Тип скидки `(1 => на работу, 2 => на все)` |
| `oriented` | `(integer)` | Сумма согласования |
| `imei` | `(string)` | Серийный номер аппарата |
| `cond` | `(string)` | Состояние |
| `appearance` | `(string)` | Внешний вид |
| `complete` | `(string)` | Комплектация |
| `global_sid` | `(integer)` | Глобальный статус заявки <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `client_sid` | `(integer)` | Клиентский статус <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `acceptance_sid` | `(integer)` | Статус приёмки <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `detail_sid` | `(integer)` | Статус деталей <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `repair_sid` | `(integer)` | Статус ремонтов <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `delivery_sid` | `(integer)` | Статус выдачи <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `acceptance_uid` | `(integer)` | ID сотрудника принявшего аппарат <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `acceptance_date` | `(datetime)` | Дата приёмки |
| `acceptance_date_u` | `(integer)` | Дата приёмки (UNIXTIMESTAMP) |
| `delivery_uid` | `(integer)` | ID пользователя выдавшего аппарат <sup>(для получения полных данных, см. соответствующий раздел)</sup> |
| `delivery_date` | `(datetime)` | Дата выдачи |
| `delivery_date_u` | `(integer)` | Дата выдачи (UNIXTIMESTAMP) |
| `delivery_type` | `(integer)` | Тип выдачи `(1 => с ремонтом, 2 => без ремонта)` |
| `expect_date` | `(date)` | Дата ожидания клиента/выдачи |
| `expect_date_u` | `(integer)` | Дата ожидания клиента/выдачи (UNIXTIMESTAMP) |
| `sumPrice` | `(float)` | Сумма всех услуг |
| `sumDiscount` | `(float)` | Сумма скидки |
| `sumTotal` | `(float)` | Итоговая сумма (сумма услуг - сумма скидки) |
| `sumExpense` | `(float)` | Сумма расходов |
| `sumPaid` | `(float)` | Оплачено |
| `sumIncome` | `(string)` | Прибыль |
| `guarantee_rid` | `(string)` | ID ключа гарантии <sup>(для получения полных данных, см. соответствующий раздел)</sup> |

#### [Пример ответа:](#result_orderById)

    {
      "id": "31",
      "contacts_id": "23",
      "models_id": "1928",
      "models_name": "Apple iPhone 2G",
      "models_gadgets_id": "1",
      "models_gadgets_name": "Apple",
      "models_brands_id": "5",
      "models_brands_name": "Телефон",
      "services_id": "2",
      "create_uid": "1",
      "create_date": "2018-07-05 16:30:55",
      "create_date_u": "1530790255",
      "priority": "2",
      "isService": "1",
      "isWarranty": "0",
      "isClose": "0",
      "bug_tid": "10",
      "note_tid": null,
      "color_rid": "107",
      "discount_rid": null,
      "discount_type": null,
      "oriented": "0",
      "imei": "",
      "cond": "Б/У",
      "appearance": "Потертости,Царапины",
      "complete": "Без упаковки,Без флешки,Без СЗУ,Без аккумлятора",
      "global_sid": "14",
      "client_sid": "7",
      "acceptance_sid": "10",
      "detail_sid": "14",
      "repair_sid": "21",
      "delivery_sid": null,
      "acceptance_uid": "1",
      "acceptance_date": "2019-01-19 14:36:40",
      "acceptance_date_u": "1547890600",
      "delivery_uid": null,
      "delivery_date": null,
      "delivery_date_u": null,
      "delivery_type": null,
      "expect_date": "2019-03-11",
      "expect_date_u": "1552244400",
      "sumPrice": "1000.00",
      "sumDiscount": "0.00",
      "sumTotal": "1000.00",
      "sumExpense": "0.00",
      "sumPaid": "1000.00",
      "sumIncome": "1000.00",
      "guarantee_rid": null
    }

### Раздел №4: Получение информации о контакте по ID

##### Описание запроса:

|                               |                            |
|-------------------------------|----------------------------|
| `Метод`                       | `/api/get-contact-by-id/`  |
| `token` <sup>(required)</sup> | `(string)` token           |
| `id` <sup>(required)</sup>    | `(integer)` Номер контакта |

##### Описание ответа:

| Ключ | Тип | Описание |
|----|----|----|
| `id` | `(integer)` | ID контакта |
| `name` | `(string)` | Название |
| `create_users_id` | `(integer)` | Пользователь создавший контакт |
| `date_create` | `(datetime)` | Дата создания |
| `date_create_u` | `(integer)` | Дата создания (UNIXTIMESTAMP) |
| `date_update` | `(datetime)` | Дата обновления |
| `date_update_u` | `(integer)` | Дата обновления (UNIXTIMESTAMP) |
| `types` | `(string)` | Тип контакта `(ENUM('client','organization','provider'))` |
| `status` | `(integer)` | Статус |
| `update_users_id` | `(integer)` | ID пользователя, обновившего контакт |
| `communications` | `(object)` | Массив с данными коммуникации с контактом (телефон, сайт, адрес и прочие) |

#### [Пример ответа:](#result_contactById)

    {
      "id": "23",
      "name": "Мария",
      "create_users_id": "1",
      "date_create": "2018-06-11 18:38:11",
      "date_create_u": "1528724291",
      "date_update": "2019-03-29 16:44:23",
      "date_update_u": "1553859863",
      "types": "client",
      "status": "1",
      "update_users_id": "1",
      "communications": [
        {
          "rosters_id": "1",
          "rosters_name": "Телефон",
          "rosters_type_id": "17",
          "rosters_type_name": "Мобильный",
          "data": "78124987856"
        },
        {
          "rosters_id": "1",
          "rosters_name": "Телефон",
          "rosters_type_id": "16",
          "rosters_type_name": "Рабочий",
          "data": "7495123456"
        }
      ]
    }

### Раздел №5: Получение информации о статусе по ID

##### Описание запроса:

|                               |                          |
|-------------------------------|--------------------------|
| `Метод`                       | `/api/get-status-by-id/` |
| `token` <sup>(required)</sup> | `(string)` token         |
| `id` <sup>(required)</sup>    | `(integer)` ID статуса   |

##### Описание ответа:

| Ключ | Тип | Описание |
|----|----|----|
| `id` | `(integer)` | ID статуса |
| `name` | `(string)` | Название |
| `name_small` | `(string)` | Краткое название |
| `status_groups_id` | `(integer)` | ID группы статуса |
| `status_groups_name` | `(string)` | Название группы статуса |
| `class` | `(string)` | class `ENUM('none','warning','success','important','info','inverse')` |
| `class_i` | `(integer)` | class integer |
| `type` | `(string)` | type `ENUM('ожидание','открыт','в работе','успех','ошибка','закрыт')` |
| `type_i` | `(integer)` | type integer |

#### [Пример ответа:](#result_statusById)

    {
      "id": "14",
      "name": "Требуется назначить закупщика",
      "name_small": "Тр. назначить закупщика",
      "status_groups_id": "4",
      "status_groups_name": "Запчасти",
      "class": "warning",
      "class_i": "2",
      "type": "ожидание",
      "type_i": "1"
    }

### Раздел №6: Получение информации о сотруднике по ID

##### Описание запроса:

|                               |                           |
|-------------------------------|---------------------------|
| `Метод`                       | `/api/get-user-by-id/`    |
| `token` <sup>(required)</sup> | `(string)` token          |
| `id` <sup>(required)</sup>    | `(integer)` ID сотрудника |

##### Описание ответа:

| Ключ       | Тип         | Описание      |
|------------|-------------|---------------|
| `id`       | `(integer)` | ID сотрудника |
| `name`     | `(string)`  | Имя           |
| `lastname` | `(string)`  | Фамилия       |

#### [Пример ответа:](#result_userById)

    {
      "id": "1",
      "create_date": "2018-04-18 19:11:42",
      "create_date_u": "1524060702",
      "create_uid": "1",
      "name": "Иван",
      "lastname": "Иванов",
      "patronymic": null,
      "login": "ivanov123",
      "auths_groups_id": "1",
      "isAdmin": "1",
      "services_id": "1",
      "status_id": "50",
      "rosters_posts_id": "1",
      "date_birth": "1989-01-01",
      "date_birth_u": "614372400",
      "note": null,
      "career_start": "2018-02-01",
      "career_end": null,
      "communications": [
        {
          "rosters_id": "1",
          "rosters_name": "Телефон",
          "rosters_type_id": null,
          "rosters_type_name": null,
          "data": "+749512346"
        },
        {
          "rosters_id": "3",
          "rosters_name": "E-mail",
          "rosters_type_id": null,
          "rosters_type_name": null,
          "data": "info@example.com"
        },
        {
          "rosters_id": "12",
          "rosters_name": "Мессенджер",
          "rosters_type_id": null,
          "rosters_type_name": null,
          "data": "skype_name"
        }
      ]
    }

### Раздел №7: Получение текстовых данных по ID (поля с окончанием \_tid)

##### Описание запроса:

|  |  |
|----|----|
| `Метод` | `/api/get-text-by-id/` |
| `token` <sup>(required)</sup> | `(string)` token |
| `id` <sup>(required)</sup> | `(integer)` ID нужной записи \| окончание в пред. запросах на `_tid` |

##### Описание ответа:

| Ключ   | Тип         | Описание |
|--------|-------------|----------|
| `id`   | `(integer)` | ID       |
| `data` | `(string)`  | Данные   |

#### [Пример ответа:](#result_textById)

    {
      "id": "15",
      "data": "Не заряжается"
    }

### Раздел №8: Получение данных из справочника, по ID (поля с окончанием \_rid)

##### Описание запроса:

|  |  |
|----|----|
| `Метод` | `/api/get-roster-by-id/` |
| `token` <sup>(required)</sup> | `(string)` token |
| `id` <sup>(required)</sup> | `(integer)` ID нужной записи \| окончание в пред. запросах на `_rid` |

##### Описание ответа:

| Ключ   | Тип         | Описание |
|--------|-------------|----------|
| `id`   | `(integer)` | ID       |
| `name` | `(string)`  | Название |

#### [Пример ответа:](#result_rosterById)

    {
      "id": "15",
      "name": "Банковские реквизиты"
    }