= SOAP сервис Permission-management

=== Permission - сущность для описания и хранения прав.

Поля _Permission_:

. _permissionId_ (long) - идентификатор объекта permission
. _objectId_ (long) - идентификатор объекта, для которого проверяются права
. _objectType_ (String) - тип объекта, данный параметр соответствует проектной терминалогии: _system_, _system-group_
. _subjectId_ (String) - идентификатор предмета применяемого права
. _subjectType_ (String) - тип предмета
. _action_ (String)- тип действия, по умолчанию проставляется значение _default_

=== SOAP Сервис Permission управляет созданием и проверкой объекта Permission.

Типы объектов в системе ESB.

- _system_ - система
- _system-group_ - группа систем
- _service_ - сервис
- _account_ - аккаунт
- _event-topic_ - топик

=== Методы сервиса

_Check_ - проверяет описанное право

Принимает параметры

- _objectId_ (long) - идентификатор объекта, для которого проверяются права
- _objectType_ (String) - тип объекта
- _subjectId_ (String) - идентификатор предмета применяемого права
- _subjectType_ (String) - тип предмета
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_

Пример запроса:

[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
    <soapenv:Header/>
    <soapenv:Body>
        <per:permissionCommon>
            <per:objectId>1</per:objectId>
            <per:objectType>system</per:objectType>
            <per:subjectId>2</per:subjectId>
            <per:subjectType>system</per:subjectType>
            <!--Optional:-->
            <per:action>default</per:action>
        </per:permissionCommon>
    </soapenv:Body>
</soapenv:Envelope>
----

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

[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <response xmlns="http://www.entaxy.ru/permission/">false</response>
    </soap:Body>
</soap:Envelope>
----


=== Get - получает запись Permission

Принимает параметры

_permissionId_ (long) - идентификатор объекта _permission_

Пример запроса:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
    <soapenv:Header/>
    <soapenv:Body>
        <per:permissionId>24</per:permissionId>
    </soapenv:Body>
</soapenv:Envelope>
----

Пример ответа:
[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <tns:permission xmlns:tns="http://www.entaxy.ru/permission/">
            <tns:permissionId>24</tns:permissionId>
            <tns:objectId>7</tns:objectId>
            <tns:objectType>system</tns:objectType>
            <tns:subjectId>8</tns:subjectId>
            <tns:subjectType>system</tns:subjectType>
            <tns:action>connect</tns:action>
        </tns:permission>
    </soap:Body>
</soap:Envelope>
----


=== GetByAllParams - получает запись Permission

Принимает параметры

- _objectId_ (long) - идентификатор объекта, для которого проверяются права
- _objectType_ (String) - тип объекта
- _subjectId_ (String) - идентификатор предмета применяемого права
- _subjectType_ (String) - тип предмета
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_

Пример запроса:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
    <soapenv:Header/>
    <soapenv:Body>
        <per:permissionCommon>
            <per:objectId>7</per:objectId>
            <per:objectType>system</per:objectType>
            <per:subjectId>8</per:subjectId>
            <per:subjectType>system</per:subjectType>
            <!--Optional:-->
            <per:action>connect</per:action>
        </per:permissionCommon>
    </soapenv:Body>
</soapenv:Envelope>
----

Пример ответа:
[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <tns:permission xmlns:tns="http://www.entaxy.ru/permission/">
            <tns:permissionId>24</tns:permissionId>
            <tns:objectId>7</tns:objectId>
            <tns:objectType>system</tns:objectType>
            <tns:subjectId>8</tns:subjectId>
            <tns:subjectType>system</tns:subjectType>
            <tns:action>connect</tns:action>
        </tns:permission>
    </soap:Body>
</soap:Envelope>
----


=== Create - создаёт запись Permission

Принимает параметры

- _objectId_ (long) - идентификатор объекта, для которого проверяются права
- _objectType_ (String) - тип объекта
- _subjectId_ (String) - идентификатор предмета применяемого права
- _subjectType_ (String) - тип предмета
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_

Пример запроса:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
    <soapenv:Header/>
    <soapenv:Body>
        <per:permissionCommon>
            <per:objectId>7</per:objectId>
            <per:objectType>account</per:objectType>
            <per:subjectId>1234</per:subjectId>
            <per:subjectType>system-group</per:subjectType>
            <!--Optional:-->
            <per:action>send</per:action>
        </per:permissionCommon>
    </soapenv:Body>
</soapenv:Envelope>
----

Пример ответа:
[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <tns:permission xmlns:tns="http://www.entaxy.ru/permission/">
            <tns:permissionId>25</tns:permissionId>
            <tns:objectId>7</tns:objectId>
            <tns:objectType>account</tns:objectType>
            <tns:subjectId>1234</tns:subjectId>
            <tns:subjectType>system-group</tns:subjectType>
            <tns:action>send</tns:action>
        </tns:permission>
    </soap:Body>
</soap:Envelope>
----

В случае если запись уже создана возвращается ошибка
[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <soap:Fault>
            <faultcode>soap:Server</faultcode>
            <faultstring>org.hibernate.exception.ConstraintViolationException: could not execute statement</faultstring>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>
----

=== Update - изменяет запись Permission

Принимает параметры

- _permissionId_ (long) - идентификатор объекта permission
- _objectId_ (long) - идентификатор объекта, для которого проверяются права
- _objectType_ (String) - тип объекта, данный параметр соответствует проектной терминалогии: system, system-group
- _subjectId_ (String) - идентификатор предмета применяемого права
- _subjectType_ (String) - тип предмета
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_

Пример запроса:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
    <soapenv:Header/>
    <soapenv:Body>
        <per:permission>
            <per:permissionId>23</per:permissionId>
            <per:objectId>8</per:objectId>
            <per:objectType>account</per:objectType>
            <per:subjectId>1234</per:subjectId>
            <per:subjectType>system-group</per:subjectType>
            <!--Optional:-->
            <per:action>send</per:action>
        </per:permission>
    </soapenv:Body>
</soapenv:Envelope>
----


Пример ответа:
[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <tns:permission xmlns:tns="http://www.entaxy.ru/permission/">
            <tns:permissionId>23</tns:permissionId>
            <tns:objectId>8</tns:objectId>
            <tns:objectType>account</tns:objectType>
            <tns:subjectId>1234</tns:subjectId>
            <tns:subjectType>system-group</tns:subjectType>
            <tns:action>send</tns:action>
        </tns:permission>
    </soap:Body>
</soap:Envelope>
----

В случае если запись не найдена возвращается ошибка
[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <soap:Fault>
            <faultcode>soap:Server</faultcode>
            <faultstring>No entity found for query</faultstring>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>
----


=== _Delete_ - удаляет запись _Permission_

Принимает параметры

- _objectId_ (long) - идентификатор объекта, для которого проверяются права
- _objectType_ (String) - тип объекта
- _subjectId_ (String) - идентификатор предмета применяемого права
- _subjectType_ (String) - тип предмета
- _action_ (String) - тип действия, необязательный по умолчанию проставляется значение _default_

Пример запроса:
[source,xml]
----
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:per="http://www.entaxy.ru/permission/">
    <soapenv:Header/>
    <soapenv:Body>
        <per:permissionCommon>
            <per:objectId>7</per:objectId>
            <per:objectType>account</per:objectType>
            <per:subjectId>1234</per:subjectId>
            <per:subjectType>system-group</per:subjectType>
            <!--Optional:-->
            <per:action>send</per:action>
        </per:permissionCommon>
    </soapenv:Body>
</soapenv:Envelope>
----

Пример ответа:
[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <response xmlns="http://www.entaxy.ru/permission/">true</response>
    </soap:Body>
</soap:Envelope>
----

В случае если запись не найдена возвращается ошибка
[source,xml]
----
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <soap:Fault>
            <faultcode>soap:Server</faultcode>
            <faultstring>No entity found for query</faultstring>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>
----

