skipped y no se duplican.rol_ids: array no vacío de IDs de rol. Si falta o está vacío → 400.user_company) del user_id en el tenant actual. Si el usuario no pertenece a la empresa → 404.required_permission y el solicitante no es super admin, valida que el solicitante posea ese permiso; si no → 403.user_rol) y hace dual-write best-effort a DynamoDB (tabla RBAC y phoqo-users-roles).empresa), no del body. Persiste en MySQL + DynamoDB.curl --location 'https://api-pruebas.phoqo.cl/pruebas/v2/settings/users/9cfb6cc6-aed6-45a1-976c-a0afab1b274a/roles' \
--header 'empresa: d6baef78-d4f0-457a-a119-7ebbbd4cdee8' \
--header 'empresa: ' \
--header 'grupo: 8561c7f0-111a-47d1-8efe-a50355778ab6' \
--header 'grupo: ' \
--header 'x-application: PHOQO' \
--header 'x-application: PHOQO' \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"rol_ids": [
"string"
]
}'{
"assigned": [
"string"
],
"skipped": [
"string"
],
"userId": "string"
}