# Consenso SCA

### Effettuare una SCA

#### Descrizione

In questa sezione vengono elencati gli endpoint che consentono di ottenere e rinnovare i vari consensi necessari al collegamento di un conto.

---

#### [Ottenimento consenso una-tantum per mostrare la lista dei conti](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/createAccountListConsent)

Consente di effettuare la SCA (usa e getta) per accedere ai conti/carte in proprio possesso presso la banca, per il prodotto definito nel productId.

```
[POST] /{itemId}/consents/accountsList
```

Nella **request** in particolare abbiamo:

- `providerId<span style="color: #ff0000;"><sup>*</sup></span>` id della banca (o provider)
- `productCode<span style="color: #ff0000;"><sup>*</sup></span>` codice del prodotto
- `accountNature<span style="color: #ff0000;"><sup>*</sup></span>` natura dell'account ("account" o "card")
- `tppRedirectUri` URL di redirect dopo che la SCA viene effettuata

Nella **response** l'API fornisce:

- `consentId` id del consenso
- `consentStatus` stato del consenso
- `scaManagerRedirectUrl` URI per effettuare la SCA
- `validUntil` data fine validità

---

#### [Ottenimento consenso ricorrente](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/createRecurringConsents)

Consente di effettuare la SCA (valida tipicamente 90 giorni) per collegare ai conti/carte in proprio possesso presso la banca, per il prodotto selezionato.

```
[POST] /{itemId}/consents/recurring
```

Nella **request** in particolare abbiamo:

- `providerId<span style="color: #ff0000;"><sup>*</sup></span>` id della banca (o provider)
- `productCode<sup><span style="color: #ff0000;">*</span></sup>` codice del prodotto
- `tppRedirectUri` URL di redirect dopo che la SCA viene effettuata
- `accountAccess<span style="color: #ff0000;"><sup>*</sup></span>` oggetto composto da 
    - `balances<span style="color: #ff0000;"><sup>*</sup></span>` lista di oggetti con la seguente forma: 
        - `resourceId<span style="color: #ff0000;"><sup>*</sup></span>`
        - `iban`
        - `maskedPan`
        - `currency<span style="color: #ff0000;"><sup>*</sup></span>`
        - `accountNature`
    - `transactions<span style="color: #ff0000;"><sup>*</sup></span>` lista di oggetti con la stessa forma di `balances`
    - `accounts` lista di oggetti con la stessa forma di `balances`

Nella **response** l'API fornisce:

- `consentId` id del consenso
- `consentStatus` stato del consenso
- `scaManagerRedirectUrl` URI per effettuare la SCA
- `validUntil` data fine validità

---

#### [Rinnovo di un consenso](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/renewConsent)

Consente di rinnovare la SCA (valida tipicamente 90 giorni) a partire da un consenso precedentemente valido.

```
[PUT] /{itemId}/consents/{consentId}/renew
```

I **parametri** richiesti sono:

- `consentId` path variable - id del consenso.

Nella **response** l'API fornisce:

- `consentId` id del consenso
- `consentStatus` stato del consenso
- `scaManagerRedirectUrl` URI per effettuare la SCA
- `validUntil` data fine validità

---

#### [Revoca di un consenso](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/deleteConsent)

Consente di rinnovare la SCA (valida tipicamente 90 giorni) a partire da un consenso precedentemente valido.

```
[DELETE] /{itemId}/consents/{consentId}
```

I **parametri** richiesti sono:

- `consentId` path variable - id del consenso.

Nella **response** l'API torna il consenso stesso, con lo status aggiornato.

---

#### [Recuperare i conti collegati ad un consenso](https://ts-pay-gateway-test.agyo.io/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config#/API/getAccountsByConsentId)

Consente di recuperare l'elenco dei conti/carte in proprio possesso presso la banca a fronte del consenso precedentemente fornito.

```
[GET] /{itemId}/consents/{consentId}/accounts
```

I **parametri** richiesti sono:

- `consentId` path variable - id del consenso.

Nella **response** l'API fornisce:

- `accounts` lista degli account composti dalle seguenti proprietà 
    - `accountId` stato del consenso
    - `resourceId` id della risorsa
    - `iban` codice IBAN
    - `currency` valuta di conto
    - `providerId` id della banca
    - `productCode` codice del prodotto
    - `consentId` id del consenso