
# Applica un profilo predefinito di mappatura degli attributi

`POST /v1/connections/{connection_id}/attribute-mappings:apply-profile` · autorizzazione `connections:write`

Sostituisce le regole a destinazione fissa (email, nomi, gruppi…) di una connessione enterprise con le regole di un profilo predefinito: `entra`, `okta`, `google`, `ping`, `jumpcloud` o `keycloak` per SAML, `generic` per OIDC. Le regole `user_metadata.<key>` memorizzate vengono mantenute. L'attributo soggetto SAML non viene modificato: il soggetto è configurato separatamente e cambiarlo lascerebbe orfane le identità collegate. `If-Match` è obbligatorio come per [la sostituzione della lista](put.md). Applicare un profilo già applicato non scrive nulla. La scrittura viene registrata nel log di audit come `connection.attribute_mappings_replaced` con il nome del profilo.

## Richiesta

| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| `connection_id` | path | sì | ID della connessione enterprise (`conn_…`). |
| `If-Match` | header | sì | L'`ETag` dell'ultima lettura. Se manca: `428`; se obsoleto: `412`. |
| `profile` | string | sì | `entra`, `okta`, `google`, `ping`, `jumpcloud`, `keycloak` (SAML) o `generic` (OIDC). |

## Risposta

`200 OK` con la lista memorizzata (vedi [Ottieni le mappature degli attributi](get.md)) e il nuovo `ETag`.

## Errori

| HTTP | code | Quando |
|---|---|---|
| 404 | `not_found` | La connessione non esiste in questo ambiente o non è una connessione enterprise. |
| 409 | `conflict` | Il protocollo della connessione non prevede mappature degli attributi (LDAP). |
| 412 | `precondition_failed` | `If-Match` non corrisponde alla versione attuale, oppure la lista è stata modificata nel frattempo. |
| 422 | `validation_failed` | `profile` manca, è sconosciuto o non è un profilo predefinito del protocollo della connessione (`/profile`), oppure una regola `user_metadata` mantenuta legge un attributo del profilo con un altro NameFormat (`/profile`, `conflicts_with_stored_mappings`). |
| 428 | `precondition_required` | L'header `If-Match` manca. |
| 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 -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/attribute-mappings:apply-profile" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H 'If-Match: "6f1c…"' \
  -d '{"profile":"entra"}'
```

```bash
keenauth connections attribute-mappings apply-profile conn_01j9xp6q0r1s5t7v9w1x3y5z7b --profile entra --if-match '"6f1c…"'
```
