# Notifiche di connessione

Il servizio delle notifiche di connessione si occupa di raccogliere e gestire le notifiche generate dalle connessione di tipologia `USER`.

#### Tipologie di notifiche

Il servizio delle notifiche di connessione gestisce due categorie di notifiche: `INFO` e `REQUEST`.

##### Notifiche INFO

Le notifiche di tipo `INFO` sono notifiche puramente informative. Vengono ricevute, possono venir segnate come lette o non lette, ma non hanno altre azioni collegate ad esse. Un esempio di notifica di tipo `INFO` è la notifica di connessione accettata che viene mandata all'item gestore nel caso in cui l'item gestito decida di accettare la richiesta.

##### Notifiche REQUEST

Le notifiche di tipo `REQUEST` sono le notifiche utilizzate per chiedere l'accettazione/rifiuto di una connessione di tipo `USER`. Un'interfaccia grafica che voglia gestire queste notifiche deve quindi presentare all'utente un bottone di accettazione e uno di rifiuto.

### Notification Read

Servizio di lettura delle notifiche, offre una API per recuperare tutte le notifiche di un dato item e una per recuperare una specifica notifica dato il suo ID.

#### GET /api/v2/notifications/{notificationId}

API che permette di recuperare i dati di una specifica notifica, dato il suo ID univoco

##### Header

Il servizio richiede gli [header standard di TS Digital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

##### Path Parameters

- **notificationId:** identificativo univoco della notifica da recuperare

##### Risposta

In caso di risposta positiva l'API ritorna un codice HTTP `200`

```JSON
{
  "notification": {
    "id": "string",
    "correlationId": "string",
    "requesterId": "string",
    "requesterName": "string",
    "recipientId": "string",
    "recipientName": "string",
    "name": "string",
    "type": "INFO",
    "createdAt": 0,
    "createdBy": "string",
    "note": "string",
    "resourceId": "string",
    "readStatus": true,
    "accepted": true,
    "rejected": true
  }
}
```

La chiave top level `notification` contiene tutte le informazioni recuperate sulla notifica:

- **id:** identificativo univoco della notifica
- **correlationId:** identificativo UUIDV4 utilizzato per correlare fra loro due o più notifiche (es: la notifica ricevuta dalla gestita per ottenre l'approvazione della connessione e la relativa notifica di feedback ritornata al gestore hanno lo stesso `correlationId`
- **requesterId:** identificativo dell'item che ha originato la notifica
- **requesterName:** nome/ragione sociale dell'item che ha originato la notifica
- **recipientId:** identificativo dell'item che ha ricevuto la notifica
- **recipientName:** nome/ragione sociale dell'item che ha ricevuto la notifica
- **name:** nome identificativo della notifica (es: `CONNECTION_REMOVED_NOTIFICATION_REQUEST`)
- **type:** tipologia della notifica. Valori possibili: `INFO`, `REQUEST`
- **createdAt:** data di creazione della notifica, espressa come unix timestamp (risoluzione in millisecondi)
- **createdBy:** identificativo dell'utente che ha causato la creazione della notifica
- **note:** note aggiuntive sulla notifica
- **resourceId:** identificativo della connessione cui la notifica fa riferimento
- **readStatus:** booleano che indica se la notifica è stata marcata come letta o meno
- **accepted:** booleano che indica se la notifica è stata accettata
- **rejected:** booleano che indica se la notifica è stata rifiutata

#### GET /api/v2/notifications

API che permette di recuperare i dati di tutte le notifiche collegate ad uno specifico item

##### Header

Il servizio richiede gli [header standard di TS Digital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

##### Query Parameters

- **recipientId:** identificativo univoco dell'item per il quale si vogliono ottenere le notifiche ricevute
- **page:** numero di pagina da recuperare (0...N)
- **size:** numero di notifiche per pagina

##### Risposta

In caso di risposta positiva l'API ritorna un codice HTTP `200`

```JSON
{
  "notifications": [
    {
      "id": "string",
      "correlationId": "string",
      "requesterId": "string",
      "requesterName": "string",
      "recipientId": "string",
      "recipientName": "string",
      "name": "string",
      "type": "INFO",
      "createdAt": 0,
      "createdBy": "string",
      "note": "string",
      "resourceId": "string",
      "readStatus": true,
      "accepted": true,
      "rejected": true
    }
  ],
  "totalItems": 0,
  "unreadNotifications": 0
}
```

La risposta contiene le seguenti informazioni:

- **notifications:** contiene un array contenente tutte le notifiche presenti nella pagina corrente. Per il significato dei termini, vedi la risposta di `/api/v2/notifications/{notificationId}`
- **totalItems:** totale delle notifiche disponibili per l'item specificato
- **unreadNotifications:** totale delle notifiche non lette disponibili per l'utente selezionato

### Notification Write

Servizio di scrittura delle notifiche, fornisce le API per segnare come letta/non letta, accettare o rifiutare una notifica.

#### POST /api/v2/notifications/{id}/accept

API che permette di accettare una notifica di tipo `REQUEST`

##### Header

Il servizio richiede gli [header standard di TS Digital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

##### Path Parameters

- **id:** identificativo univoco della notifica da accettare

##### Body

```JSON
{
  "note": "string"
}
```

- **note:** note aggiuntive sull'accettazione della notifica. Opzionale

##### Risposta

In caso di risposta positiva l'API ritorna un codice HTTP `200`

```JSON
{
  "id": "string"
}
```

La risposta contiene le seguenti informazioni:

- **id:** identificativo della notifica accettata

#### POST /api/v2/notifications/{id}/read

API che permette di marcare una notifica come letta

##### Header

Il servizio richiede gli [header standard di TS Digital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

##### Path Parameters

- **id:** identificativo univoco della notifica da segnare come letta

##### Body

```JSON
{
  "note": "string"
}
```

- **note:** note aggiuntive sulla lettura della notifica. Opzionale

##### Risposta

In caso di risposta positiva l'API ritorna un codice HTTP `200`

```JSON
{
  "id": "string"
}
```

La risposta contiene le seguenti informazioni:

- **id:** identificativo della notifica segnata come letta

#### POST /api/v2/notifications/{id}/reject

API che permette di rifiutare una notifica di tipo `REQUEST`

##### Header

Il servizio richiede gli [header standard di TS Digital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

##### Path Parameters

- **id:** identificativo univoco della notifica da rifiutare

##### Body

```JSON
{
  "note": "string"
}
```

- **note:** note aggiuntive sul rifiuto della notifica. Opzionale

##### Risposta

In caso di risposta positiva l'API ritorna un codice HTTP `200`

```JSON
{
  "id": "string"
}
```

La risposta contiene le seguenti informazioni:

- **id:** identificativo della notifica rifiutata

#### POST /api/v2/notifications/{id}/unread

API che permette di segnare una notifica come non letta

##### Header

Il servizio richiede gli [header standard di TS Digital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

##### Path Parameters

- **id:** identificativo univoco della notifica da segnare come non letta

##### Body

```JSON
{
  "note": "string"
}
```

- **note:** note aggiuntive sulla notifica. Opzionale

##### Risposta

In caso di risposta positiva l'API ritorna un codice HTTP `200`

```JSON
{
  "id": "string"
}
```

La risposta contiene le seguenti informazioni:

- **id:** identificativo della notifica segnata come non letta