# TS Digital Insights

# TS Digital Insights

### Processo![flow.png](https://digital-docs.ts-paas.com/uploads/images/gallery/2023-05/scaled-1680-/5zGfz3yugnx41hK9-flow.png)

Il flusso per utilizzare il servizio di **INSIGHTS** parte dalla firma del contratto, per far ciò dal FE viene chiamato il servizio **Insights-api** e tramite la chiamata **signContratct** viene recuperato il template(**ONE\_PLATFORM\_INSIGHT**) del contratto per dare i consensi, vengono aggiunti i check sulle clausole e il tutto poi viene inviato ad L-CMS che si occupa di tenere una copia del contratto firmato e viene inviata una mail all'utente che riepiloga il contratto firmato. Una volta firmato il contratto viene chiamata l'api di attivazione del servizio **activeService** che scatena tutta la serie di eventi per far si che il servizio sia correttamente attivo e venga notificato il **datalake** di questa attivazione per iniziare a processare i dati dell'azienda così da poter calcolare gli insights.

## Endpoint

##### DEV

<p class="callout info">[https://insights-api-dev.agyo.io/swagger](https://insights-api-dev.agyo.io/swagger)  
[https://ts-digital-insights-config-write-dev.agyo.io/swagger-ui/index.html](https://ts-digital-insights-config-write-dev.agyo.io/swagger-ui/index.html)  
[https://ts-digital-insights-config-read-dev.agyo.io/swagger-ui/index.html](https://ts-digital-insights-config-read-dev.agyo.io/swagger-ui/index.html#/)</p>

#####   
TEST

<p class="callout info">[https://insights-api-test.agyo.io/swagger](https://insights-api-test.agyo.io/swagger)  
[https://ts-digital-insights-config-write-test.agyo.io/swagger-ui/index.html](https://ts-digital-insights-config-write-test.agyo.io/swagger-ui/index.html)  
[https://ts-digital-insights-config-read-test.agyo.io/swagger-ui/index.html](https://ts-digital-insights-config-read-test.agyo.io/swagger-ui/index.html)</p>

#####   
PROD

<p class="callout info"> </p>

## Api

#### Insights-api

\*opzionale

---

<p class="callout info">\[GET\] /getCardList/{itemId}</p>

Permette di recuperare la lista delle card di insights.

- `itemId` identificativo uuid dell'azienda.

---

<p class="callout info">\[GET\] /getKpiData/{kpiName}/{itemId}</p>

Permette di recuperare i dati specifici per il singolo kpi.

- `kpiName` nome del kpi per cui si vuole recuperare i dati.
- `itemId` identificativo uuid dell'azienda.

---

<p class="callout info">\[POST\] /signContract</p>

Permette di firmare il contratto per dare il consenso di trattare i dati di un azienda ai fine di poterli usare per analytics.

- `itemId` identificativo uuid dell'azienda.
- `userId` identificativo uuid dell'utente che sta firmando il contratto per conto dell'azienda.

---

<p class="callout info">\[POST\] /activeService</p>

Permette di attivare il servizio di insights.

- `ownerId` identificativo uuid dell'azienda owner del pacchetto.
- `itemId` identificativo uuid dell'azienda.

---

<p class="callout info">\[POST\] <span class="property">/disableService</span></p>

Permette di disattivare il servizio di insights.

- `ownerId` \* identificativo uuid dell'azienda owner del pacchetto.
- `itemId` identificativo uuid dell'azienda.

---

<p class="callout info">\[GET\] /getStatus/{itemId}/{ownerId}</p>

Permette di recuperare le informazioni sul pacchetto di insights per una singola azienda. Con il parametro `infoServiceName` si possono recuperare dei conteggi aggiuntivi sul pacchetto.

- `ownerId` identificativo uuid dell'azienda owner del pacchetto.
- `itemId` identificativo uuid dell'azienda.
- `infoServiceName` \* valori possibili: 
    - **CARD\_NUMBER** permette di recuperare il numero di insights disponibili.
    - **SALES\_INFO** permette di recuperare l'incremento % di fatture ricevute e inviate rispetto l'anno precedente.

```JSON
{
    "configInfo": {
        "id": 4,
        "itemId": "e6e530cc-8f98-4fc1-9017-cda412b51497",
        "ownerId": "e6e530cc-8f98-4fc1-9017-cda412b51497",
        "createdAt": "2023-04-20T13:22:18.947+00:00",
        "createdBy": "c34b9996-fb3f-4378-a9e5-fb180d8a5db9-WEBHOOK-INVOKER-INSIGHTS",
        "updatedAt": "2023-04-20T13:22:18.947+00:00",
        "updatedBy": "c34b9996-fb3f-4378-a9e5-fb180d8a5db9-WEBHOOK-INVOKER-INSIGHTS",
        "active": true,
        "readonly": false,
        "flows": [
            {
                "id": 4,
                "configId": 4,
                "flowId": "EIP",
                "createdAt": "2023-04-20T13:22:18.959+00:00",
                "createdBy": "c34b9996-fb3f-4378-a9e5-fb180d8a5db9-WEBHOOK-INVOKER-INSIGHTS",
                "updatedAt": "2023-04-20T13:22:18.959+00:00",
                "updatedBy": "c34b9996-fb3f-4378-a9e5-fb180d8a5db9-WEBHOOK-INVOKER-INSIGHTS",
                "active": true
            }
        ]
    },
    "status": "ACTIVE",
    "infoService": [
        {
            "name": "cardNumber",
            "value": 7,
            "type": "number"
        }
    ]
}
```

---

#### Ts-digital-insights-config-read

---

---

<p class="callout info">\[GET\] /api/v1/flows</p>

Permette di recuperare la lista dei flussi disponibili.

---

<p class="callout info">\[GET\] /api/v1/flows/{flowId}</p>

Permette di recuperare le informazioni di un singolo flusso.

- `flowId` identificativo uuid dell'azienda.

---

<p class="callout info">\[GET\] /api/v1/config/{itemId}/{ownerId}</p>

Permette di recuperare le info del config.

- `ownerId` identificativo uuid dell'azienda owner del pacchetto.
- `itemId` identificativo uuid dell'azienda.

---

#### Ts-digital-insights-config-write

---

## Flussi

Il servizio digital Insights una volta attivo permette di configurare differenti flussi su cui è configurato il servizio come ad esempio:

<table border="1" id="bkmrk-app_id-%28identificati" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**flow\_id (identificativo del flusso)**</td><td style="width: 50%;">**flow description**</td></tr><tr><td style="width: 50%;">EIP</td><td style="width: 50%;">Digital Invoice</td></tr><tr><td style="width: 50%;">FLOW\_2</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">FLOW\_3</td><td style="width: 50%;"> </td></tr></tbody></table>

Esistono dei flussi che vengono attivati automaticamente all'attivazione del servizio.

## Flussi di Notifica

Tramite il config è possibile configurare per ogni flusso una lista di endpoint a cui notificare l'attivazione del flusso di digital Insights.

L'endpoint del servizio a cui il config dovrà inviare la notifica deve essere sviluppato nel seguente modo:

<table border="1" id="bkmrk-protocollo-rest-meto" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Protocollo**</td><td style="width: 50%;">REST</td></tr><tr><td style="width: 50%;">**Metodo**</td><td style="width: 50%;">POST</td></tr><tr><td style="width: 50%;">**Autenticazione**</td><td style="width: 50%;">Bearer JWT</td></tr><tr><td style="width: 50%;">**Body della richiesta per notifiche sui flussi**</td><td style="width: 50%;">{

"flowId": "String",

"itemId": "String",

"ownerId": "String",

"action": "ENABLE\_FLOW/DISABLE\_FLOW",

}

</td></tr></tbody></table>

Di seguito è presente una descrizione dei parametri passati nel body:

- **flowId**: identificativo del flusso (es EIP per fatturazione)
- **itemId**: azienda su cui è stato attivato il flusso
- **ownerId**: azienda che paga il servizio Digital Insights

Gli endpoint messi a disposizione dovranno essere idempotenti, quindi dovranno gestire potenziali chiamate doppie (in caso di eventuali errori del sistema) .

Gli endpoint dovranno restituire le seguenti risposte

<table border="1" id="bkmrk-status-code-body-200" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 41.9753%;">**Status Code**</td><td style="width: 58.0247%;">**Body**</td></tr><tr><td style="width: 41.9753%;">200/202</td><td style="width: 58.0247%;">{

"message":""

}

</td></tr><tr><td style="width: 41.9753%;">400/401/404/406/412/500/502</td><td style="width: 58.0247%;">{

"code": "string",

"timeStamp": "2021-07-08T13:13:12.223Z",

"message": "string"

}

</td></tr></tbody></table>

<span style="color: #ff0000;">**\[documentazione parziale, ancora in fase di sviluppo\]**</span>