
# Recupera il provider email

`GET /v1/email-provider` · autorizzazione `email-provider:read` · tutti i piani

Restituisce il modo in cui l'ambiente invia le email: la modalità di consegna, l'indirizzo del mittente, il tuo server SMTP o provider email e l'ultimo test di connessione.

La credenziale (password SMTP o chiave API) non viene mai restituita, nemmeno mascherata o con la sua lunghezza. `credentials_set` indica solo se una credenziale è memorizzata.

Un ambiente mai configurato restituisce `platform_default` con versione `0`. L'header `ETag` contiene la versione; inviala come `If-Match` quando [sostituisci](put.md) la configurazione.

## Risposta

`200 OK` con la configurazione e `ETag` impostato alla sua versione.

| Campo | Tipo | Descrizione |
|---|---|---|
| `mode` | string | `platform_default`, `platform_managed_domain`, `customer_smtp`, `customer_api` o `customer_webhook`. |
| `sender_domain_id` | string o null | `platform_managed_domain`: il [dominio mittente](../email-sender-domains/get.md) (`sdom_…`) da cui viene inviata la posta; null in tutte le altre modalità. Leggi il dominio per vedere il suo stato attuale. |
| `webhook_endpoint_id` | string o null | `customer_webhook`: l'[endpoint webhook](../webhook-endpoints/get.md) (`whe_…`) che riceve i messaggi generati; null in tutte le altre modalità. Leggi l'endpoint per vedere se è ancora abilitato. |
| `from_address` | string o null | Indirizzo del mittente senza nome; null in `platform_default`. |
| `reply_to` | string o null | Indirizzo di risposta senza nome. |
| `provider` | string o null | Provider di `customer_api`: `ses`, `sendgrid`, `postmark`, `mailgun` o `brevo`. |
| `smtp_host` | string o null | Nome host del server `customer_smtp`. |
| `smtp_port` | integer o null | Porta di `customer_smtp`: `465` (TLS implicito) o `587` (STARTTLS). |
| `smtp_username` | string o null | Nome utente AUTH di `customer_smtp`. Non è segreto. |
| `credentials_set` | boolean | Indica se una credenziale è memorizzata. |
| `last_test_at` | string o null | Momento dell'ultimo [test di connessione](test.md); viene azzerato quando la configurazione cambia. |
| `last_test_result` | string o null | `ok` oppure il codice di errore fisso dell'ultimo test. |
| `version` | integer | Versione della configurazione, uguale all'`ETag`; `0` significa mai configurata. |
| `updated_at` | string o null | Momento dell'ultima modifica. |

```json
{
  "mode": "customer_smtp",
  "sender_domain_id": null,
  "webhook_endpoint_id": null,
  "from_address": "no-reply@example.com",
  "reply_to": null,
  "provider": null,
  "smtp_host": "smtp.example.com",
  "smtp_port": 587,
  "smtp_username": "mailer",
  "credentials_set": true,
  "last_test_at": "2026-10-19T09:30:00Z",
  "last_test_result": "ok",
  "version": 4,
  "updated_at": "2026-10-19T09:00:00Z"
}
```

Una configurazione `platform_managed_domain`:

```json
{
  "mode": "platform_managed_domain",
  "sender_domain_id": "sdom_01k7xq3m5r8t9v0w1x2y3z4a5b",
  "webhook_endpoint_id": null,
  "from_address": "auth@mail.example.com",
  "reply_to": "support@example.com",
  "provider": null,
  "smtp_host": null,
  "smtp_port": null,
  "smtp_username": null,
  "credentials_set": false,
  "last_test_at": null,
  "last_test_result": null,
  "version": 5,
  "updated_at": "2026-10-19T10:00:00Z"
}
```

Una configurazione `customer_webhook`:

```json
{
  "mode": "customer_webhook",
  "sender_domain_id": null,
  "webhook_endpoint_id": "whe_01k7xq3m5r8t9v0w1x2y3z4a5b",
  "from_address": "auth@example.com",
  "reply_to": null,
  "provider": null,
  "smtp_host": null,
  "smtp_port": null,
  "smtp_username": null,
  "credentials_set": false,
  "last_test_at": null,
  "last_test_result": null,
  "version": 6,
  "updated_at": "2026-10-27T09:00:00Z"
}
```

## Errori

| HTTP | code | Quando |
|---|---|---|
| 401 | `unauthenticated` | La credenziale manca, non è valida o è stata revocata. |
| 403 | `insufficient_permissions` | La credenziale non ha l'autorizzazione richiesta. |
| 429 | `rate_limited` | È stato superato il limite di frequenza; riprova dopo il periodo indicato in `Retry-After`. |
| 503 | `service_unavailable` | Una dipendenza è temporaneamente non disponibile; riprova dopo il periodo indicato in `Retry-After`. |

## Esempio

```bash
curl https://api.eu.keenauth.com/v1/email-provider \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth email-provider get`
