123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- .. _rest_api_geofence_server_batch:
- Batch Rest API
- ===================
- Batch operations allow to run multiple insert, update and delete at the same time over rules and admin rules. All the operations are executed in a single transaction: this means that either all of them are successful or all the operations are rolled back.
- Security
- --------
- The Geofence REST API is only accessible to users with the role ``ROLE_ADMIN``.
- Input/Output
- ------------
- Data Object Transfer
- ~~~~~~~~~~~~~~~~~~~~
- Both XML and JSON are supported for transfer of data objects. The default is XML. Alternatively, JSON may be used by setting the ``Content-Type`` and ``Accept`` HTTP headers to ``application/json`` in your requests.
- A ``Batch`` data object transfer must declare a list of ``operations``. Each operation needs to declare:
- * The ``service`` name (``rules`` for a Rule operation or ``adminrules`` for an AdminRule operation).
- * The ``type`` of the operation (``insert``, ``update``, ``delete``).
- * The ``id`` of the entity over which the operation is being performed in case of an ``update`` or ``delete`` types.
- * The ``Rule`` or ``AdminRule`` data object transfer in case of ``insert`` or ``update`` operation.
- Encoding of a Batch in XML::
- <Batch>
- <operations service="rules" id="2" type="update">
- <Rule id="2">
- <access>ALLOW</access>
- <layer>layer</layer>
- <priority>5</priority>
- <request>GETMAP</request>
- <roleName>ROLE_AUTHENTICATED</roleName>
- <service>WMS</service>
- <workspace>ws</workspace>
- </Rule>
- </operations>
- <operations service="rules" id="5" type="delete" />
- <operations service="adminrules" type="insert">
- <RuleAdmin>
- <priority>2</priority>
- <roleName>ROLE_USER</roleName>
- <workspace>ws</workspace>
- <access>ADMIN</access>
- </RuleAdmin>
- </operations>
- </Batch>
- Encoding of a Batch in JSON::
- {
- "Batch":{
- "operations":[
- {
- "@service":"adminrules",
- "@type":"update",
- "@id":"3",
- "Rule":{
- "access":"ALLOW",
- "layer":"layer",
- "priority":5,
- "request":"GETMAP",
- "service":"WMS",
- "roleName":"ROLE_AUTHENTICATED",
- "workspace":"ws"
- }
- },
- {
- "@service":"rules",
- "@type":"delete",
- "@id":5
- },
- {
- "@service":"adminrules",
- "@type":"insert",
- "AdminRule":{
- "priority":2,
- "roleName":"ROLE_USER",
- "workspace":"ws",
- "access":"ADMIN"
- }
- }
- ]
- }
- }
- Requests
- --------
- ``/rest/geofence/batch/exec``
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Issue a Batch operation executing all the declared operations.
- +------------+-----------------+--------------+-------------------------------------------------------------+
- | Method | Action | Response code| Response |
- +============+=================+==============+=============================================================+
- | POST | Execute a batch | 200 | OK |
- | | +--------------+-------------------------------------------------------------+
- | | | 400 | BadRequest: malformed request body, duplicate rule addition |
- | | +--------------+-------------------------------------------------------------+
- | | | 404 | NotFound: rule not found |
- | | +--------------+-------------------------------------------------------------+
- | | | 500 | InternalServerError: unexpected error |
- +------------+-----------------+--------------+-------------------------------------------------------------+
|