API v.2

Отличие API v.2 от API v.1 заключается в:
- Добавлены возможности создания заявок, а так же работы с ними (выполнение действий над заявками).
- Изменён способ аутентификации
- Изменён формат запросов/ответов


Авторизация
Для работы с API, необходимо иметь token, который генерируется в панели администрирования и может иметь срок действия. Метод аутентификации: JWT. Вы можете использовать token как в виде параметра token тела запроса, так и в Header Authorization: Bearer <token>.


Формат запросов и ответов
Для всех запросов используется метод POST. Формат запросов: Content-Type: multipart/form-data; Во всех ответах формат: json. В случае ошибки, обязательно возвращаются: message, status_code.


Дополнительный параметр sudo
В качестве наличия включённого атрибута sudo, в настройках token, при запросе возможно указывать id пользователя, от которого производится действие с заявкой. В таком случае, все права на заявки берутся исключительно из настроек формы заявки id пользователя указанного в sudo. Если параметр sudo выключен или отсутствует, то по умолчанию все действия будут производиться от пользователя, указанного в настройках конкретного token.



Объекты


1. Пользователи: 

1.1 Создание

1.2 Поиск

1.3 Просмотр


2. Заявки:

2.1 Просмотр возможных атрибутов для создания заявки

2.2 Просмотр списка возможных групп (кому)

2.3 Просмотр списка возможных пользователей (кому)

2.4 Просмотр списка возможных SLA

2.5 Просмотр списка возможных дополнительных полей

2.6 Создание заявки

2.7 Просмотр списка входящих заявок

2.8 Просмотр списка исходящих заявок

2.9 Просмотр списка архивных заявок

2.10 Добавление наблюдающего пользователя к заявке

2.11 Удаление наблюдающего пользователя к заявке

2.12 Переадресация заявки

2.13 Блокирование/разблокирование заявки

2.14 Выполнение/отмена заявки

2.15 Объединение заявки

2.16 Подтверждение/отмена проверки заявки после её выполнения

2.17 Комментирование заявки



1.1 Создание пользователя


Endpoint: user/create

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

name (обязательный) Имя Фамилия пользователя

email (обязательный) Email пользователя

password (обязательный) Пароль пользователя

groups_user (опциональный) Список id групп, через запятую в которых пользователь с ролью пользователя

groups_super (опциональный) Список id групп, через запятую в которых пользователь с ролью супер пользователь

notify: true/false (опциональный) Уведомить пользователя о создании его учётной записи

lang: ru,en,uk (опциональный) Язык интерфейса пользователя

conf_params: user,group (опциональный) Параметры формы создания заявки

ticket_form_id (опциональный) ID формы создания заявки

group_conf_id (опциональный) ID группы, с которой брать форму создания заявки

role: 'admin','user','client' (опциональный) Роль пользователя в системе

Пример ответа:

[

  {

    "id": 9,

    "name": "admin@zen.comreer",

    "email": "admin@zen.com",

    "last_login": null,

    "created_at": "2019-04-23 11:13:11",

    "updated_at": "2019-04-23 11:13:11",

    "deleted_at": null,

    "active": "true"

  }

]


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


Endpoint: user/find

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

q (обязательный) Имя Фамилия пользователя/email

Пример ответа:

[

  {

    "id": 9,

    "name": "admin@zen.comreer",

    "email": "admin@zen.com",

    "last_login": null,

    "created_at": "2019-04-23 11:13:11",

    "updated_at": "2019-04-23 11:13:11",

    "deleted_at": null,

    "active": "true"

  }

]


1.3 Просмотр пользователя


Endpoint: user

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

user_id (обязательный) ID пользователя

Пример ответа:

{

  "user": {

    "id": 1,

    "name": "System Account",

    "email": "admin@local",

    "last_login": "2019-05-17 15:38:10",

    "created_at": "2019-04-05 07:48:01",

    "updated_at": "2019-05-17 15:38:10",

    "deleted_at": null,

    "active": "true"

  },

  "profile": {

    "user_id": 1,

    "user_img": null,

    "user_cover": null,

    "lang": "ru",

    "full_name": "System Account",

    "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx",

    "sms": null,

    "pb": null,

    "telephone": null,

    "skype": null,

    "address": null,

    "position": "$request->profile['email']",

    "birthdayDay": 1,

    "birthdayMonth": 1,

    "birthdayYear": 1950,

    "email": "admin@local",

    "facebook": null,

    "twitter": null,

    "website": null,

    "about": null,

    "skills": "",

    "created_at": "2019-04-05 07:48:01",

    "updated_at": "2019-05-06 14:24:03"

  },

  "role": {

    "id": 1,

    "created_at": "2019-04-05 07:48:01",

    "updated_at": "2019-04-05 07:48:01",

    "user_id": 1,

    "role": "admin"

  },

  "group_admin": [

    {

      "id": 1,

      "name": "Default group",

      "description": "Default group",

      "cover": null,

      "icon": null,

      "status": "public",

      "description_full": null,

      "slogan": null,

      "address": null,

      "tags": null,

      "facebook": null,

      "twitter": null,

      "group_urlhash": "def_group",

      "created_at": "2019-04-08 09:17:06",

      "updated_at": "2019-04-08 09:17:06",

      "pivot": {

        "user_id": 1,

        "group_id": 1,

        "created_at": "2019-04-12 12:43:24",

        "updated_at": "2019-04-12 12:43:24",

        "status": "success",

        "priviliges": "admin"

      }

    }

  ],

  "group_user": [

    {

      "id": 1,

      "name": "Default group",

      "description": "Default group",

      "cover": null,

      "icon": null,

      "status": "public",

      "description_full": null,

      "slogan": null,

      "address": null,

      "tags": null,

      "facebook": null,

      "twitter": null,

      "group_urlhash": "def_group",

      "created_at": "2019-04-08 09:17:06",

      "updated_at": "2019-04-08 09:17:06",

      "pivot": {

        "user_id": 1,

        "group_id": 1,

        "created_at": "2019-04-12 12:43:24",

        "updated_at": "2019-04-12 12:43:24",

        "status": "success",

        "priviliges": "user"

      }

    }

  ],

  "contacts": [

    {

      "id": 10,

      "user_id": 1,

      "type": "email",

      "primary": "true",

      "value": "admin3@zenlix.com",

      "created_at": "2019-04-15 08:11:47",

      "updated_at": "2019-04-15 08:11:47"

    },

    {

      "id": 11,

      "user_id": 1,

      "type": "email",

      "primary": "false",

      "value": "admin2@zenlix.com",

      "created_at": "2019-04-15 08:11:47",

      "updated_at": "2019-04-15 08:11:47"

    }

  ],

  "ticket_conf": {

    "id": 1,

    "created_at": "2019-04-05 07:48:01",

    "updated_at": "2019-04-05 07:48:01",

    "user_id": 1,

    "ticket_form_id": 1,

    "conf_params": "user",

    "group_conf_id": null

  },

  "fields": [

    {

      "id": 1,

      "created_at": "2019-04-12 13:11:27",

      "updated_at": "2019-04-15 08:11:47",

      "user_field_id": 1,

      "user_id": 1,

      "field_data": "$profileReq['profile']к"

    },

    {

      "id": 2,

      "created_at": "2019-04-12 13:20:31",

      "updated_at": "2019-04-15 08:11:47",

      "user_field_id": 2,

      "user_id": 1,

      "field_data": ""

    }

  ]

}




2.1 Просмотр возможных атрибутов для создания заявки

Endpoint: ticket/precreate

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

-

Пример ответа:

{

  "prio": "true",  Возможность установки приоритета заявки

  "files": {

    "active": "true", Возможность загрузки файлов

    "types": "jpeg,png", Допустимые форматы файлов

    "count": 3,  Разрешённое к-во файлов

    "size": 1024 Максимальный размер каждого файла

  },

  "deadline": "true", Возможность установки крайнего срока выполнения заявки

  "watching": "true", Возможность установки наблюдающих за заявкой

  "individual_ok": "true", Индивидуальное выполнение заявки

  "check_after": "true", Возможность принять заявку после её выполнения

  "create_user": "true", Возможность создавать пользователя 

  "target_group": {

    "1": "Default group" ID группы в которую возможно создать заявку

  },

  "target_users": {

    "1": "System Account" ID пользователей на которых разрешено создавать заявку

  },

  "fields": [ Список дополнительных полей заявки

    {

      "id": 1,

      "created_at": "2019-04-08 11:22:32",

      "updated_at": "2019-04-08 11:22:32",

      "name": "IP-адрес", Название поля

      "f_type": "text", Тип поля

      "required": "true", Обязательное поле

      "field_name": "IP-адрес",

      "field_value": null,

      "field_placeholder": "IP-адрес",

      "field_hash": "E3IQzkECnRqOQEZ9roKdg4ymRiImcuvYzruyti53"

    }

  ],

  "sla": {

    "1": "Главный" Список допустимых SLA-планов

  },

  "subj": true, Возможность установки темы заявки

  "msg": true, Возможность установки сообщения

  "tags": true Возможность установки тэгов к заявке

}



2.2 Просмотр списка возможных групп (кому)

Endpoint: ticket/groups/list

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

-

Пример ответа:

{

  "1": "Default group"

}



2.3 Просмотр списка возможных пользователей (кому)

Endpoint: ticket/users/list

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

-

Пример ответа:

{

  "1": "System Account"

}



2.4 Просмотр списка возможных SLA

Endpoint: ticket/sla/list

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

-

Пример ответа:

{

  "1": "Главный"

}



2.5 Просмотр списка возможных дополнительных полей

Endpoint: ticket/custom_fields/list

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

-

Пример ответа:

[

  {

    "id": 1,

    "created_at": "2019-04-08 11:22:32",

    "updated_at": "2019-04-08 11:22:32",

    "name": "IP-адрес",

    "f_type": "text",

    "required": "true",

    "field_name": "IP-адрес",

    "field_value": null,

    "field_placeholder": "IP-адрес",

    "field_hash": "E3IQzkECnRqOQEZ9roKdg4ymRiImcuvYzruyti53"

  }

]



2.6 Создание заявки

Endpoint: ticket/create

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

deadline: true (не обязательный) Активировать карйний срок заявке

deadlineYear Год крайнего срока

deadlineMonth Месяц крайнего срока

deadlineDay День крайнего срока

deadlineTime Время крайнего срока 

msg (обязательный) Сообщение 

subj (обязательный) Тема заявки

prio: low, normal, high приоритет заявки

tags: тэги с запятой в качестве разделительного знака

sla: SLA id

target_group (обязательный) ID группы, на которую создана заявка

target_users ID пользователей с запятой в качестве разделительного знака которым назначена заявка

clients ID пользователей с запятой в качестве разделительного знака, клиенты

check_after true/false Проверять заявку после её выполнения

individual_ok true/false Индивидуальное выполнение заявки каждого

notify_client true/false Уведомить клиента о создании заявки

watching_users ID пользователей с запятой в качестве разделительного знака которые будут видеть заявку

fields[*] где * - id дополнительного поля

files[*] где * - порядковый номер или другой атрибут файла для загрузки

Пример ответа:

{

  "id": 16,

  "author_id": 1,

  "code": "PS4X",

  "client_id": null,

  "prio": "normal",

  "text": "test",

  "subject": "test",

  "tags": "api_v2",

  "urlhash": "7AC5eA2Knv",

  "sla_id": null,

  "target_group_id": null,

  "deadline_time": null,

  "inspect_after_ok": "false",

  "individual_ok": "false",

  "overtime": "false",

  "planner_flag": "false",

  "merge_flag": "false",

  "deleted_at": null,

  "status": "free",

  "created_at": "2019-05-15 15:12:44",

  "updated_at": "2019-05-17 16:30:16"

}



2.7 Просмотр списка входящих заявок

Endpoint: ticket/list/in

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

order_column название поля, по которому необходимо произвести сортировку

order_sort asc/desc вид сортировки

limit к-во выдаваемых записей

offset начальный элемент

Пример ответа:

{

  "tickets": [

    {

      "code": "QS92",

      "prio": "normal",

      "subject": "test",

      "author": {

        "full_name": "System Account",

        "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx"

      },

      "created_at": {

        "date": "2019-05-17 16:05:25.000000",

        "timezone_type": 3,

        "timezone": "Europe/Kiev"

      },

      "clients": [

        {

          "full_name": "System Account",

          "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx",

          "id": 1

        }

      ],

      "targets": {

        "group": null,

        "users": [

          {

            "full_name": "System Account",

            "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx",

            "id": 1

          }

        ]

      },

      "ticket_status": "free",

      "text": "test",

      "tags": "api_v2",

      "urlhash": "wT7V0b4J8B",

      "overtime": "false",

      "planner_flag": "false"

    },

...



2.8 Просмотр списка исходящих заявок

Endpoint: ticket/list/out

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

order_column название поля, по которому необходимо произвести сортировку

order_sort asc/desc вид сортировки

limit к-во выдаваемых записей

offset начальный элемент

Пример ответа:

{

  "tickets": [

    {

      "code": "QS92",

      "prio": "normal",

      "subject": "test",

      "author": {

        "full_name": "System Account",

        "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx"

      },

      "created_at": {

        "date": "2019-05-17 16:05:25.000000",

        "timezone_type": 3,

        "timezone": "Europe/Kiev"

      },

      "clients": [

        {

          "full_name": "System Account",

          "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx",

          "id": 1

        }

      ],

      "targets": {

        "group": null,

        "users": [

          {

            "full_name": "System Account",

            "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx",

            "id": 1

          }

        ]

      },

      "ticket_status": "free",

      "text": "test",

      "tags": "api_v2",

      "urlhash": "wT7V0b4J8B",

      "overtime": "false",

      "planner_flag": "false"

    },

...




2.9 Просмотр списка архивных заявок

Endpoint: ticket/list/arch

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

order_column название поля, по которому необходимо произвести сортировку

order_sort asc/desc вид сортировки

limit к-во выдаваемых записей

offset начальный элемент

Пример ответа:

{

  "tickets": [

    {

      "code": "QS92",

      "prio": "normal",

      "subject": "test",

      "author": {

        "full_name": "System Account",

        "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx"

      },

      "created_at": {

        "date": "2019-05-17 16:05:25.000000",

        "timezone_type": 3,

        "timezone": "Europe/Kiev"

      },

      "clients": [

        {

          "full_name": "System Account",

          "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx",

          "id": 1

        }

      ],

      "targets": {

        "group": null,

        "users": [

          {

            "full_name": "System Account",

            "user_urlhash": "dQbM7AkSgr8m2PmQUM6CuHxCx",

            "id": 1

          }

        ]

      },

      "ticket_status": "free",

      "text": "test",

      "tags": "api_v2",

      "urlhash": "wT7V0b4J8B",

      "overtime": "false",

      "planner_flag": "false"

    },

...




2.10 Добавление наблюдающего пользователя к заявке

Endpoint: ticket/watching/add

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

code Код заявки

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

Пример ответа:

[

  1,

  2,

  3

]



2.11 Удаление наблюдающего пользователя к заявке

Endpoint: ticket/watching/remove

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

code Код заявки

watching_users ID пользователей с запятой в качестве разделительного знака, которых исключить со списка наблюдающих

Пример ответа:

[

  1,

  2,

  3

]



2.12 Переадресация заявки

Endpoint: ticket/refer

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

target_group (обязательный) ID группы, на которую переадресовать заявку

target_users ID пользователей с запятой в качестве разделительного знака, на которых направить заявку

msg (обязательный) сообщение 

Пример ответа:

{

  "id": 16,

  "author_id": 1,

  "code": "PS4X",

  "client_id": null,

  "prio": "normal",

  "text": "test",

  "subject": "test",

  "tags": "api_v2",

  "urlhash": "7AC5eA2Knv",

  "sla_id": null,

  "target_group_id": null,

  "deadline_time": null,

  "inspect_after_ok": "false",

  "individual_ok": "false",

  "overtime": "false",

  "planner_flag": "false",

  "merge_flag": "false",

  "deleted_at": null,

  "status": "free",

  "created_at": "2019-05-15 15:12:44",

  "updated_at": "2019-05-17 16:30:16"

}



2.13 Блокирование/разблокирование заявки

Endpoint: ticket/toggle/work

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

code (обязательный) Код заявки

Пример ответа:

{

  "id": 16,

  "author_id": 1,

  "code": "PS4X",

  "client_id": null,

  "prio": "normal",

  "text": "test",

  "subject": "test",

  "tags": "api_v2",

  "urlhash": "7AC5eA2Knv",

  "sla_id": null,

  "target_group_id": null,

  "deadline_time": null,

  "inspect_after_ok": "false",

  "individual_ok": "false",

  "overtime": "false",

  "planner_flag": "false",

  "merge_flag": "false",

  "deleted_at": null,

  "status": "free",

  "created_at": "2019-05-15 15:12:44",

  "updated_at": "2019-05-17 16:30:16"

}



2.14 Выполнение/отмена заявки

Endpoint: ticket/toggle/success

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

code (обязательный) Код заявки

Пример ответа:

{

  "id": 16,

  "author_id": 1,

  "code": "PS4X",

  "client_id": null,

  "prio": "normal",

  "text": "test",

  "subject": "test",

  "tags": "api_v2",

  "urlhash": "7AC5eA2Knv",

  "sla_id": null,

  "target_group_id": null,

  "deadline_time": null,

  "inspect_after_ok": "false",

  "individual_ok": "false",

  "overtime": "false",

  "planner_flag": "false",

  "merge_flag": "false",

  "deleted_at": null,

  "status": "free",

  "created_at": "2019-05-15 15:12:44",

  "updated_at": "2019-05-17 16:30:16"

}




2.15 Объединение заявки

Endpoint: ticket/merge

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

code (обязательный) Код заявки основной

child_code (обязательный) Код заявки, которая будет привязана к основной

Пример ответа:

{

  "id": 16,

  "author_id": 1,

  "code": "PS4X",

  "client_id": null,

  "prio": "normal",

  "text": "test",

  "subject": "test",

  "tags": "api_v2",

  "urlhash": "7AC5eA2Knv",

  "sla_id": null,

  "target_group_id": null,

  "deadline_time": null,

  "inspect_after_ok": "false",

  "individual_ok": "false",

  "overtime": "false",

  "planner_flag": "false",

  "merge_flag": "false",

  "deleted_at": null,

  "status": "free",

  "created_at": "2019-05-15 15:12:44",

  "updated_at": "2019-05-17 16:30:16"

}



2.16 Подтверждение/отмена проверки заявки после её выполнения

Endpoint: ticket/approve

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

code (обязательный) Код заявки

status: true/false (обязательный) Статус подтверждения выполненной заявки

rate (0-5) рейтинг выполнения заявки

Пример ответа:

{

  "id": 16,

  "author_id": 1,

  "code": "PS4X",

  "client_id": null,

  "prio": "normal",

  "text": "test",

  "subject": "test",

  "tags": "api_v2",

  "urlhash": "7AC5eA2Knv",

  "sla_id": null,

  "target_group_id": null,

  "deadline_time": null,

  "inspect_after_ok": "false",

  "individual_ok": "false",

  "overtime": "false",

  "planner_flag": "false",

  "merge_flag": "false",

  "deleted_at": null,

  "status": "free",

  "created_at": "2019-05-15 15:12:44",

  "updated_at": "2019-05-17 16:30:16"

}



2.17 Комментирование заявки

Endpoint: ticket/comment

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

code (обязательный) Код заявки

msg (обязательный) текст комментария

files[*] массив файлов

visible_client true/false (обязательный) видимость комментария для пользователей с правами клиента

Пример ответа:

{

  "text": "test",

  "author_id": 1,

  "ticket_id": 16,

  "visible_client": "true",

  "urlhash": "aKzZmyae2h",

  "updated_at": "2019-05-17 22:13:36",

  "created_at": "2019-05-17 22:13:36",

  "id": 2

}