Skip to content
This repository has been archived by the owner on Apr 4, 2018. It is now read-only.
/ archive_corp-api Public archive

External API for terminal project

Notifications You must be signed in to change notification settings

bigbag/archive_corp-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

##Апи для управления сотрудниками, для терминального сервиса##

###Описание Апи###

Все передаваемые 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>

About

External API for terminal project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages