query interface =============== The query interface allows to programmatically search for products in the macsserver database. This is done by HTTP request to specially crafted URLs. query format ------------ The base url for querying is:: http://macsserver/query After this prefix, the user can add key-value parameters in the following form:: /key[_modifier]:value Where ``key`` is the field to search for and ``value`` the value to match the query. The ``modifier`` is optional, when ommitted, the query seraches for an exact match. The following ``key``s are currently supported: * ``_oid``: object id (str) * ``sensorId``: sensor id (str) * ``campaign`` == ``userMeta.campaign``: campaign id (str) * ``intent`` == ``userMeta.intent``: intent id (str) * ``mountOptions`` == ``userMeta.mountOptions``: mount option id (str) * ``productType``: product type id (str) * ``date``: date and time of capture (milliseconds since the epoch == JavaScript convention) The modifiers will alter the query in the following manner: * ``min``: Match all attributes which are greater or equal. * ``max``: Match all attributes which are less or equal. Additionally, there are special keys, which are written in all uppercase. The following special keys are currently supported: * ``LIMIT``: Maximum number of results to return. * ``OFS``: Number of results to skip. The special keys ``LIMIT`` and ``OFS`` can be used for pagination. So if the user wants to query for all SWIR data from ACRIDICON 2014 from 27.08.2014 00:00:00+01:00 until 01.09.2014 00:00:00+01:00, with a maximum of 90 results, starting from the beginning, the correct query would be:: http://macsserver/query/campaign:acridicon2014/sensorId:410043/date_min:1409090400000/date_max:1409522400000/LIMIT:90/OFS:0 answer from the server ---------------------- The server will return JSON data in the following form:: {"count": NUMBER OF TOTAL RESULTS, "result": [RES_0, RES_1, RES_2, ...]} Where ``count`` will always give the number of results for the query, without considering ``LIMIT`` or ``OFS``. The ``result`` list will contain objects containing: * ``_oid``: object id (str) * ``date``: date and time (ISO 8601) * ``sensorId``: sensor id (str) * ``userMeta``: object containing user defined metadata