> ## Documentation Index
> Fetch the complete documentation index at: https://docs.famulor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Actualizar troncal SIP

> Actualiza la configuración de una troncal SIP existente en Famulor a través de la API. Cambia las credenciales, las reglas de enrutamiento y los números de teléfono asignados de tu telefonía de voz con IA.

<Warning>
  **API de Famulor 1.0 (legado).** Esta página se aplica únicamente a Famulor 1.0 (`app.famulor.de`) y se conserva por compatibilidad. Para la plataforma actual, usa la [referencia de la API de Famulor 2.0](/es/api-reference/introduction).
</Warning>

Este endpoint actualiza una troncal SIP existente. Incluye solo los campos que quieras cambiar: se admiten las actualizaciones parciales. Cambiar las credenciales, la dirección o la configuración de proxy vuelve a aprovisionar automáticamente las troncales de infraestructura de voz afectadas.

### Parámetros de ruta

<ParamField path="id" type="integer" required>
  El identificador único de la troncal SIP que se va a actualizar
</ParamField>

### Cuerpo de la solicitud

Todos los campos son opcionales. Envía solo los campos que quieras actualizar.

<ParamField body="phone_number" type="string" optional>
  La extensión SIP o el número de teléfono (1-15 caracteres)
</ParamField>

<ParamField body="nickname" type="string" optional>
  Una etiqueta corta y descriptiva para la troncal. Máximo 50 caracteres. Envía `null` para borrarla.
</ParamField>

<ParamField body="sip_username" type="string" optional>
  Nombre de usuario para la autenticación SIP (3-128 caracteres)
</ParamField>

<ParamField body="sip_password" type="string" optional>
  Contraseña para la autenticación SIP (mínimo 3 caracteres)
</ParamField>

<ParamField body="sip_address" type="string" optional>
  La dirección del servidor SIP sin puerto
</ParamField>

<ParamField body="sip_calling_format" type="string" optional>
  El formato del número de llamada saliente: `+e164`, `e164` o `national`
</ParamField>

<ParamField body="inbound_authorization_type" type="string" optional>
  Cómo se autentican las llamadas entrantes: `auth` o `ip`. Al cambiar a `ip`, también debes proporcionar `allowed_inbound_ips`. Al cambiar a `auth`, se borra cualquier lista blanca de IP existente.
</ParamField>

<ParamField body="allowed_inbound_ips" type="array" optional>
  Array de direcciones IP permitidas para llamadas entrantes. **Obligatorio** cuando `inbound_authorization_type` se establece en `ip`.
</ParamField>

<ParamField body="country_code" type="string" optional>
  Código de país ISO 3166-2
</ParamField>

<ParamField body="outbound_proxy" type="boolean" optional>
  Enruta las llamadas salientes a través de una dirección IP fija
</ParamField>

### Respuesta

<ResponseField name="message" type="string">
  Mensaje de éxito
</ResponseField>

<ResponseField name="data" type="object">
  El objeto de troncal SIP actualizado (los mismos campos que [Obtener troncal SIP](/es/api-v1/sip-trunks/get))
</ResponseField>

<ResponseExample>
  ```json 200 Updated credentials theme={null} theme={null}
  {
    "message": "SIP trunk updated successfully.",
    "data": {
      "id": 42,
      "phone_number": "1000",
      "nickname": "Provider X — Main",
      "sip_username": "new_username",
      "sip_address": "sip.provider.com",
      "sip_calling_format": "+e164",
      "inbound_authorization_type": "auth",
      "allowed_inbound_ips": null,
      "outbound_proxy": false,
      "country_code": "US",
      "inbound_trunk_id": "ST_newtrunkid1",
      "outbound_trunk_id": "ST_newtrunkid2",
      "created_at": "2026-03-31T10:00:00.000000Z",
      "updated_at": "2026-03-31T12:00:00.000000Z"
    }
  }
  ```

  ```json 200 Switched to IP auth theme={null} theme={null}
  {
    "message": "SIP trunk updated successfully.",
    "data": {
      "id": 42,
      "phone_number": "1000",
      "nickname": "Provider X — Main",
      "sip_username": "myuser",
      "sip_address": "sip.provider.com",
      "sip_calling_format": "+e164",
      "inbound_authorization_type": "ip",
      "allowed_inbound_ips": ["203.0.113.10"],
      "outbound_proxy": false,
      "country_code": "US",
      "inbound_trunk_id": "ST_newtrunkid1",
      "outbound_trunk_id": "ST_yyyyyyyyyyyy",
      "created_at": "2026-03-31T10:00:00.000000Z",
      "updated_at": "2026-03-31T12:00:00.000000Z"
    }
  }
  ```

  ```json 404 Not Found theme={null} theme={null}
  {
    "error": "SIP trunk not found."
  }
  ```

  ```json 422 Validation Error theme={null} theme={null}
  {
    "message": "The given data was invalid.",
    "errors": {
      "allowed_inbound_ips": ["At least one allowed IP address is required when authorization type is \"ip\"."]
    }
  }
  ```

  ```json 500 Provisioning Error theme={null} theme={null}
  {
    "error": "Failed to update SIP trunk. Please try again or contact support."
  }
  ```
</ResponseExample>

### Comportamiento del reaprovisionamiento

Los siguientes cambios de campo activan el reaprovisionamiento automático de las troncales de infraestructura de voz:

| Campo modificado             | Troncal entrante | Troncal saliente |
| ---------------------------- | :--------------: | :--------------: |
| `sip_username`               |     Se recrea    |     Se recrea    |
| `sip_password`               |     Se recrea    |     Se recrea    |
| `sip_address`                |         -        |     Se recrea    |
| `phone_number`               |     Se recrea    |     Se recrea    |
| `inbound_authorization_type` |     Se recrea    |         -        |
| `allowed_inbound_ips`        |     Se recrea    |         -        |
| `outbound_proxy`             |         -        |     Se recrea    |

Campos como `sip_calling_format` y `country_code` se almacenan localmente y no activan el reaprovisionamiento.
