Просмотр Исходного

Подключаетесь к БД (версия firebird 1.0, cp1251).

Используйте логин/пароль для личного кабинета, в целях безопасности. Реквизиты для доступа можете взять из файла /etc/ics/ics.conf:
{code}
WEB_DB_CHARSET=WIN1251
WEB_DB_PASS=
WEB_DB_ROLE=WEB
WEB_DB_USER=WEB_USER
{code}
Вам будут доступны процедуры БД с префиксом WEB_, посмотреть список можете командой:

{code}
sqlexec "show procedures"
{code}

{color:#ff0000}{*}ВНИМАНИЕ\! Мы оставляем за собой право на изменение данного API в одностороннем порядке. Вам придется тестировать ваши скрипты, работающие с ним, на тестовом стенде с новой версией перед обновлением\!*{color}


h3. Первая процедура, которую должен выполнить абонент: WEB_USER_LOGIN2
{code}
WEB_USER_LOGIN2 (
WEB_LOGIN varchar(32),
RANDOM_WORD varchar(8),
WEB_HASH varchar(32),
WEB_PASS varchar(16),
WEB_IP varchar(15))
returns (
SESSION_ID numeric(18,0),
USER_ID integer,
ISADMIN integer,
GROUP_ID integer,
SHOW_CARD integer,
IDENTIFY varchar(128),
SHOW_OPER integer,
RESULT integer,
MSG varchar(1024),
IP varchar(15))
{code}

Где:
* WEB_LOGIN - логин абонента
* RANDOM_WORD - соль
* WEB_HASH - md5 хеш от соли и пароля (md5(RANDOM_WORD \| PASSWORD))
* WEB_PASS - пароль в открытом виде
* WEB_IP - ip адрес, откуда подключается абонент

Авторизоваться можно 2 способами:
# Безопасно: с помощью параметров RANDOM_WORD и WEB_HASH (оставив WEB_PASS пустым)
# Не безопасно: передав WEB_PASS (оставив RANDOM_WORD и WEB_HASH пустыми)

Возвращаемые значения:
* SESSION_ID - идентификатор сессии
* USER_ID - id абонента в БД
* ISADMIN - 1 если абонент является администраторомGROUP_ID - parid абонента (его группа)
* IDENTIFY - имя абонента
* RESULT - 1 если авторизация прошла успешно, 0 - если нет
* MSG - информация почему авторизация не прошла
* IP - ip адрес абонента

h3. Получить информацию по абоненту можно процедурой WEB_USER_GET:

{code}
WEB_USER_GET (
SUID numeric(18,0),
VIEW_ID integer,
PARENT_ID integer)
{code}

Где:
* SUID - SESSION_ID, получанный при авторизации
* VIEW_ID - id абонента
* PARENT_ID - null

h3. Получить задачи helpdesk:

{code}
SELECT * FROM HDSK_TASK_LIST(id, status)
{code}

Где
* id - id абонента
* status - фильтр по статусу (0 или 10)

h3. Создание/изменение статуса/добавление комментария к заявке:

{code}
HDSK_TASK_EDIT (
UID integer,
UK integer,
PARENT_ID integer,
SUBJ varchar(256),
TEXT varchar(1024),
STATUS integer,
URL varchar(1024))
{code}

Где
* UID - id абонента
* UK - 10, если нужно сменить статус заявки (заявка берется по parent_id, статус из status). 0, для остальных действий
* PARENT_ID - id родительской задачи (для комментариев и смены статуса) либо 0 для создания новой задачи
* SUBJ - тема
* TEXT - сообщение
* STATUS - статус
* URL - url адрес, который приходит абоненту по смс/email


h3. Подключение обещанного платежа:

{code}
create procedure WEB_USER_PROMISE_PAY (
SUID numeric(18,0),
USER_ID integer,
PROMISE_PAY double precision,
HOST varchar(15))
returns (
MSG varchar(1024))
{code}

Где
* SUID - session_id (можно залогиниться как под самим абонентом, так и под администратором)
* USER_ID - id абонента
* PROMISE_PAY - сумма
* HOST - необязательный параметр, ip откуда пришел запрос от абонента
Возвращает:
* MSG - текстом, результат выполнения операции


h3. Смена mac адреса (будет в будущих версиях):
Внимание! mac адрес должен быть в формате 00:00:00:00:00:00 (разделитель двоеточие). Также не следует вносить сюда пользовательский ввод бед превалидации!

{code}
create procedure WEB_USER_MAC_CHANGE (
SUID numeric(18,0),
USER_ID integer,
NEW_MAC varchar(17),
HOST varchar(15))
{code}

Где
* SUID - session_id (можно залогиниться как под самим абонентом, так и под администратором)
* USER_ID - id абонента
* NEW_MAC - новый mac-адрес
* HOST - необязательный параметр, ip откуда пришел запрос от абонента