# Ricerca di SPID

È possibile effettuare una ricerca di tutte le richieste collegate ad un dato item tramite l'API

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

I risultati dell'API sono **paginati**.

### 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`

### Query Parameter

Campi <span style="text-decoration: underline;">sottolineati</span> sono obbligatori

- **<span style="text-decoration: underline;">itemId</span>**: identificativo anagrafico univoco dell'item associato alle richiesta SPID ricercate. Obbligatorio per le utenze personali o tecniche
- **userTaxId**: codice fiscale associato con le richieste SPID ricercate
- **fullName**: stringa che indica il nome e cognome della persona associata alle richieste SPID da ricercare. Può essere un valore parziale.
- **email**: email associata alle richieste SPID da ricercare. Può essere un valore parziale
- **channels**: elenco di canali di riconoscimento disponibili nelle richieste SPID da ricercare. Valori possibili: 
    - **CIE**
    - **CNS**
    - **FEQ**
    - **VIDEO**
    - **RAO**
- **identityTypes**: elenco di tipologie di identità disponibili nelle richieste SPID da ricercare. Valori possibili: 
    - **INDIVIDUAL**
    - **LEGAL\_ENTITY**
    - **PROFESSIONAL\_INDIVIDUAL**
    - **PROFESSIONAL\_LEGAL\_ENTITY**
- **requestedAt**: data di emissione della richiesta SPID, sotto forma di stringa. Se fornita, la porzione temporale della stringa non viene considerata
- **statsuses**: elenco di stati in cui può essere la richiesta SPID ricercata
- **fullNameOrTaxId**: campo che combina la ricerca fullName con la ricerca taxId. Ammette valori parziali
- **sortBy**: campo per il quale ordinare la richiesta. Valore di default: **requestedAt**.
- **sortDirection**: direzione di sorting. Valori possibili: **ASC**, **DESC**
- **size**: dimensione della pagina restituita. Default: **10**
- **page**: numero di pagina. Default: 0

### Body

La richiesta non ha body.

### Risposte

#### Successo

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

```JSON
{
  "totalPages": 0,
  "totalElements": 0,
  "size": 0,
  "content": [
    {
      "id": "string",
      "itemId": "string",
      "type": "INDIVIDUAL",
      "status": "PENDING",
      "requestedAt": "2022-04-14T09:53:28.029Z",
      "updatedAt": "2022-04-14T09:53:28.029Z",
      "user": {
        "id": "string",
        "name": "string",
        "surname": "string",
        "email": "string",
        "taxId": "string",
        "ncsId": "string"
      },
      "slotId": 0,
      "videoSlotId": 0,
      "sessionId": "string",
      "sessionLink": "string",
      "cie": true,
      "cns": true,
      "feq": true,
      "video": true,
      "rao": true,
      "sessionExpirationDate": "2022-04-14T09:53:28.029Z",
      "raoId": "string",
      "level": "SPID_LEVEL_1"
    }
  ],
  "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**: richieste SPID presenti nella pagina corrente. Vedi [Lettura di un singolo SPID](https://digital-docs.ts-paas.com/books/spid/page/lettura-di-un-singolo-spid "Lettura di un singolo SPID") per dettagli.
- **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
- **500**: si è verificato un errore inaspettato