# Lettura storico stati di una richiesta

Ogniqualvolta una richiesta SPID cambia stato, il vecchio stato viene memorizzato nello storico. È possibile recuperare lo storico degli stati tramite l'API

<p class="callout info">[\[GET\] /api/v1/spid/{id}/history](https://spid-read-dev.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/spid-controller/getHistory)</p>

### Header

Gli header richiesti dalla chiamata sono gli [header standard di TSDigital](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").

Il `Content-Type` deve essere `application/json`

### Path Parameter

- <span style="text-decoration: underline;">**id**</span>: identificativo univoco della sessione di riconoscimento SPID, ottenuto al termine del [processo di creazione](https://digital-docs.ts-paas.com/books/spid/page/creazionemodifica-di-una-sessione-di-riconoscimento "Creazione/Modifica di una sessione di riconoscimento") o dalle API di lettura

### Body

La richiesta non ha body.

### Risposte

#### Successo

In caso di successo, l'API risponde con il codice **HTTP 200** con body

```JSON
{
  "totalPages": 0,
  "totalElements": 0,
  "size": 0,
  "content": [
    {
      "id": "string",
      "spidId": "string",
      "requestedAt": "2022-04-14T12:07:44.026Z",
      "status": "PENDING"
    }
  ],
  "number": 0,
  "sort": {
    "empty": true,
    "sorted": true,
    "unsorted": true
  },
  "pageable": {
    "page": 0,
    "size": 1,
    "sort": [
      "string"
    ]
  },
  "numberOfElements": 0,
  "first": true,
  "last": true,
  "empty": true
}

```

- **totalPages**: numero totale di pagine disponibili data la **size** e i filtri correnti
- **totalElements**: numero totale di richieste SPID disponibili con i filtri forniti
- **size**: dimensione della pagina ritornata. Coincide con il parametro **size** fornito in input
- **content**: storico degli stati SPID passati 
    - **id**: identificativo entry dello storico
    - **spidId**: identificativo univoco della richiesta SPID, coincide con il pathParameter **id**
    - **requestedAt**: data del cambio di stato
    - **status**: stato storicizzato
- **number**: numero di pagina attuale. Corrisponde con il parametro **page** fornito in input
- **sort**: informazioni sul sorting attuale
- **pageable**: informazioni sulla paginazione attuale
- **numberOfElement**: elementi presenti nella pagina attuale
- **first/last/empty**: booleani che indicano se si tratta della prima/ultima pagina o se la pagina è vuota

#### Errore

In caso di errore, l'API risponde con un body JSON avente il seguente formato:

```JSON
{
  "code": "string",
  "timestamp": "2022-04-13T13:35:16.678Z",
  "message": "string",
  "subErrors": [
    {}
  ]
}
```

- **code**: rappresentazione sotto forma di stringa del codice d'errore HTTP. Coincide con l'errore HTTP ritornato
- **tiemstamp**: data e ora della risposta, espresso sotto forma di stringa
- **message**: messaggio che esprime l'errore

Gli errori possibili sono:

- **400**: la richiesta è malformata (parametri con formato errato, parametri invalidi o inconsistenti fra loro)
- **401**: non è stato fornito un token autorizzativo o il token autorizzativo fornito non è valido (es: è scaduto)
- **403**: il token fornito è valido, ma l'utente non è autorizzato ad effettuare l'operazione
- **404**: non esiste una sessione con l'ID specificato
- **500**: si è verificato un errore inaspettato