← SIS

SIS REST API

Sviluppata da

Alessio Vertemati e Diego Bernini

Versione

2.0.14 branch

Introduzione

La SIS API espone l'accesso alle funzionalità della piattaforma SIS mediante un web service RESTful la cui codifica dei messaggi è basata su UTF-8 e la serializzazione è realizzata mediante formato JSON.

Account required

In order to use the SIS API you need a developer account and an authentication token.

L'intera API consta di 5 endpoint raggiungibili mediante protocollo HTTP: 1. eventsmediator: che permette di effettuare le operazioni di pubblicazione e sottoscrizione 2. mappingsinspector: che permette di effettuare l'ispezione dei mapping presenti nell'istanza della piattaforma 3. mappingsmanager: che permette di gestire la configurazione dei mapping 4. spacesinspector: che permette l'esplorazione degli spazi configurati 5. spacesmanager: che permette la configurazione degli spazi

In aggiunta a questi endpoint trovano posto altri 2 servizi legati alle WebSocket (protocollo WS) per permettere la notifica asincrona di eventi: 1. EventsWebSockets: per ricevere le notifiche legate ad una sottoscrizione 2. MappingsWebSockets: per ricevere le notifiche di cambiamento dei mapping (sempre legate a una precedente sottoscrizione)

Nel seguito si suppone che l'istanza di SIS sia raggiungibile mediante il seguente url:

http://www.sal.disco.unimib.it/sis/2/

e che l'API rest sia raggiungibile appendendo al path precedente la stringa

rest/token/

dove token è l’identificativo personale (questa struttura cambierà in futuro quindi ove possibile si consiglia di utilizzare la SISAbstraction).

eventsmediator

Il servizio eventsmediator permette l'accesso alle primitive di pubblicazione e sottoscrizione basate sulla metafora multi-spaziale.

Publish

Url path: publish/

Method: POST

La publish permette di effettuare una pubblicazione di una informazione tematica su uno o più contesti spaziali.

Il contenuto della richiesta POST prevede un oggetto JSON contenente:


{
  "publicationContexts": [
    {
      "type": "enumerative",
      "locationNames": [
        "465"
      ],
      "spaceName": "impulso.RFIDTags"
    }
  ],
  "thematicInfo": {
    "object": "publish-list-ThematicInfo"
  }
}

Sync Subscribe

Url path: path

Method: GET,POST,PUT,DELETE

description

Async Subscribe

Url path: path

Method: GET,POST,PUT,DELETE

description

Get Matchings

Url path: path

Method: GET,POST,PUT,DELETE

description

mappingsinspector

to be described

mappingsmanager

to be described

spacesinspector

to be described

spacesmanager

to be described

Protocollo di comunicazione inerente alle WebSocket

Considerando l’indirizzo specificato nell’introduzione le web socket sono raggiungibili rispettivamente ai seguenti url:

la procedura prevede che all'apertura della websocket il client invii al server un payload formattato come segue:

login$subscription_handle

dove subscription_handle è l’identificativo della sottoscrizione ritornato a fronte di una richiesta di sottoscrizione precedentemente effettuata.

FAQ e risoluzione problemi

Curiosità

...