##Апи для управления сотрудниками, для терминального сервиса##
###Описание Апи###
Все передаваемые POST параметры отсортированы по убыванию по алфавиту.
Безопасность Все запросы осуществляются по https. За каждым пользователем закреплена пара key - secret. При посылке любого запроса в заголовке Key указывается персональный ключ пользователя, в заголовке Sign пересылается чек сумма запроса, для расчета используется массив содержащий все POST и GET параметры.
Реализация проверки на python
def get_api_sign(secret, data):
keys = sorted(data.keys())
post = []
for key in keys:
if isinstance(data[key], unicode):
post.append('%s=%s' % (key, data[key].encode('utf-8')))
else:
post.append('%s=%s' % (key, data[key]))
H = hmac.new(secret, digestmod=hashlib.sha512)
H.update('&'.join(post))
return H.hexdigest()
Если проверка не прошла, ответ сервера - 403
1) Получение информации о сотрудниках фирмы
Тип запроса - GET
Передаваемые параметры -
- firm_id (int, обязательный параметр ид фирмы),
- count (int, количество отображаемых сотрудников, необязательный параметр, по умолчанию 50, максимальное значение 1000),
- offset (int, смещение от начала списка, по умолчанию 0)
Путь - https://general_url/terminal/firm_id/<firm_id>/persons/
Ответы:
- У пользователя нет доступа к данной фирме - 403
- Передан не числовой ид фирмы - 404
- Переданные параметры имеют неверный формат - 405
Ответ в формате xml:
<?xml version="1.0" encoding="windows-1251"?>
<info>
<person id="1">
<name></name>
<tabel_id></tabel_id>
<card></card>
<hard_id></hard_id>
<payment_id></payment_id>
<status></status>
</person>
<person id="2">
<name></name>
<tabel_id></tabel_id>
<card></card>
<hard_id></hard_id>
<payment_id></payment_id>
<status></status>
</person>
</info>
Если под условия поиска подходит всего один сотрудник - так же выводится информация о количестве событий привязанных к нему
<event count="1"/>
2) Получение информации об одном сотруднике
Тип запроса - GET
Передаваемые параметры -
- firm_id (int, обязательный параметр, ид фирмы),
- search_key (str, обязательный параметр, название параметра по которому будет осуществляться поиск, валидные значения - name, tabel_id, card, hard_id),
- search_request (str, обязательный параметр, строка поиска)
Путь - https://general_url/terminal/firm_id/<firm_id>/persons/?<search_key>=<search_request>
Ответы:
- У пользователя нет доступа к данной фирме - 403
- Передан не числовой ид фирмы - 404
- Переданные параметры имеют неверный формат - 405
Ответ в формате xml:
<?xml version="1.0" encoding="windows-1251"?>
<info>
<person id="1">
<name></name>
<tabel_id></tabel_id>
<card></card>
<hard_id></hard_id>
<payment_id></payment_id>
<status></status>
</person>
</info>
3) Добавление сотрудника
Тип запроса - POST
Передаваемые параметры -
- firm_id (int, обязательный параметр, ид фирмы),
- name (str, обязательный параметр),
- tabel_id ид фирмы (str, обязательный параметр, уникальный параметр),
- card ид фирмы (str, необязательный параметр),
- hard_id ид фирмы (str, обязательный параметр, уникальный параметр, хид карты),
- payment_id ид фирмы (str, необязательный параметр, уникальный параметр, пид карты)',
- force (int, необязательный параметр, флаг принудительной замены при наличии в таблице совпадения по любому уникальному параметру, по умолчанию 0, при замене все события привязанные к старому сотруднику, корп. кошелек - удаляются),
Путь - https://general_url/terminal/firm_id/<firm_id>/persons/
Ответы:
- У пользователя нет доступа к данной фирме - 403
- Передан не числовой ид фирмы - 404
- Переданные параметры имеют неверный формат - 405
- Если в таблице уже существую уникальные поля аналогичные передаваемым в запросе и параметр force не передан или передан 0 - 400
Ответ в формате xml:
<?xml version="1.0" encoding="windows-1251"?>
<info>
<person id="1">
<name></name>
<tabel_id></tabel_id>
<card></card>
<hard_id></hard_id>
<payment_id></payment_id>
<status></status>
</person>
</info>
4) Удаление сотрудника
Тип запроса - DELETE
Передаваемые параметры -
- firm_id (int, обязательный параметр ид фирмы),
- hard_id (str, обязательный параметр, хид карты удаляемого сотрудника)
При удалении сотрудника все привязанные события, корп. кошелек - удаляются
Путь - https://general_url/terminal/firm_id/<firm_id>/persons/?hard_id=<hard_id>
Ответы:
- У пользователя нет доступа к данной фирме - 403
- Передан не числовой ид фирмы - 404
- Переданные параметры имеют неверный формат - 405
Ответ в формате xml:
<?xml version="1.0" encoding="windows-1251"?>
<info>
<error>0</error>
</info>
5) Просмотр информации о событиях привязанных к событию
Тип запроса - GET
Передаваемые параметры -
- firm_id (int, обязательный параметр ид фирмы),
- person_id (int, обязательный параметр, ид сотрудника)
Путь - https://general_url/terminal/firm_id/<firm_id>/persons/<person_id>/events/
Ответы:
- У пользователя нет доступа к данной фирме - 403
- Передан не числовой ид фирмы - 404
- Переданные параметры имеют неверный формат - 405
- Не найден сотрудник или у него нет привязанных событий - 404
Ответ в формате xml:
<info>
<person id="3" count="1">
<person_event id="3">
<event id="6">Выдача товара</event>
<term id="10" hard_id="44">Терминал Вендинг #1</term>
<firm id="8">3R</firm>
<timeout>0</timeout>
<status>1</status>
</person_event>
</person>
</info>