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

# Registro de solicitud de actualización

El servicio permite a los clientes solicitar la actualización de sus datos personales, de contacto y de autorizaciones de comunicación, en línea en formato JSON.

Los datos no se actualizan de inmediato: el servicio registra una solicitud de actualización pendiente que un usuario de la empresa revisa y aprueba en SEDI-ERP (opción de aprobación de actualizaciones de terceros). Al registrar la solicitud, se notifica a los usuarios configurados para aprobar actualizaciones de las áreas indicadas en los perfiles del cliente (`Storage`, `Inmobiliaria`, `Titularizacion`, `Inventario`, `Nomina`, `Proveedor`, `Cliente`).

El método de solicitud es POST y se requiere un encabezado "Authorization" para la autenticación, que debe contener el **AccessToken** (JWT) obtenido previamente del servicio de [inicio de sesión](https://tech.sedierp.com/inicio-de-sesion.md).

## Prerequisitos

Antes de registrar la actualización de datos, se debe contar con los siguientes datos:

* AccessToken solicitado mediante el servicio de [inicio de sesión](https://tech.sedierp.com/inicio-de-sesion.md)
* Perfiles del cliente obtenidos del servicio de [datos del cliente](https://tech.sedierp.com/datos-del-cliente.md), que además indica en el campo `ActualizarDatos` si el cliente puede enviar una nueva solicitud

## Registrar actualización de datos

**Request URL:** [https://portal.sedierp.com/API/api/Terceros/ActualizacionDatos](https://portal.sedierp.com/API/api/Terceros/ActualizacionDatos)\
**Tipo:** POST \
**Content Type:** application/json

**DirIP** `string` *required*

Dirección IP desde la que el cliente realiza la actualización. Es obligatoria, aunque actualmente el servicio no la almacena.

**Nombres** `string` *required*

Primer nombre del cliente, o razón social cuando es persona jurídica (máx. 250 caracteres).

**Nombres2** `string`

Segundo nombre del cliente (máx. 250 caracteres).

**Apellidos** `string`

Primer apellido del cliente (máx. 250 caracteres).

**Apellidos2** `string`

Segundo apellido del cliente (máx. 250 caracteres).

**DireccionBase** `object`

Dirección del cliente estructurada por componentes. Si no se envía, se registra con todos los componentes vacíos.

**propiedades**

**ViaPrincipal** `string`

Tipo de vía principal (ej. "CL", "KR", "AV").

**NumeroPrincipal** `string`

Número de la vía principal.

**LetraPrincipal** `string`

Letra de la vía principal.

**BisPrincipal** `bool`

Indica si la vía principal es Bis, por defecto (false).

**LetraBisPrincipal** `string`

Letra del Bis de la vía principal.

**OrientacionPrincipal** `string`

Orientación de la vía principal (ej. "SUR", "ESTE").

**NumeroSecundaria** `string`

Número de la vía secundaria.

**LetraSecundaria** `string`

Letra de la vía secundaria.

**NumeroComplemento** `string`

Número de complemento (placa).

**OrientacionComplemento** `string`

Orientación del complemento.

**Detalle** `string`

Detalle de la dirección (ej. apartamento, torre, oficina).

**DireccionManual** `string`

Dirección digitada manualmente, cuando no se usa la dirección estructurada.

**Direccion** `string` *required*

Dirección completa del cliente (máx. 200 caracteres).

**Telefono** `string`

Teléfono del cliente (máx. 40 caracteres).

**CelularCodigoArea** `string`

Código de área del celular (máx. 10 caracteres).

**Celular** `string` *required*

Número de celular del cliente (máx. 20 caracteres).

**Email** `string` *required*

Correo electrónico del cliente (máx. 400 caracteres).

**EmailFacturacionElectronica** `string` *required*

Correo electrónico para el envío de facturación electrónica (máx. 400 caracteres).

**Storage** `bool` *required*

Indica si el cliente tiene perfil de bodegaje. Corresponde al campo `Bodegaje` del servicio de [datos del cliente](https://tech.sedierp.com/datos-del-cliente.md).

**Inmobiliaria** `bool` *required*

Indica si el cliente tiene perfil inmobiliario. Corresponde a los campos `Arrendatario` o `Propietario` del servicio de [datos del cliente](https://tech.sedierp.com/datos-del-cliente.md).

**Titularizacion** `bool` *required*

Indica si el cliente tiene perfil de titularización (fiducias). Corresponde al campo `Titularizar` del servicio de [datos del cliente](https://tech.sedierp.com/datos-del-cliente.md).

**Inventario** `bool` *required*

Indica si el cliente tiene perfil de inventarios. Corresponde al campo `Inventarios` del servicio de [datos del cliente](https://tech.sedierp.com/datos-del-cliente.md).

**Nomina** `bool` *required*

Indica si el cliente tiene perfil de nómina. Corresponde al campo `Nomina` del servicio de [datos del cliente](https://tech.sedierp.com/datos-del-cliente.md).

**Proveedor** `bool` *required*

Indica si el cliente tiene perfil de proveedor. Corresponde al campo `Proveedor` del servicio de [datos del cliente](https://tech.sedierp.com/datos-del-cliente.md).

**Cliente** `bool` *required*

Indica si el cliente tiene perfil de cliente. Corresponde al campo `Cliente` del servicio de [datos del cliente](https://tech.sedierp.com/datos-del-cliente.md).

**AutorizaSMS** `bool` *required*

Indica si el cliente autoriza el envío de mensajes de texto (SMS).

**AutorizaWhatsApp** `bool` *required*

Indica si el cliente autoriza el envío de mensajes por WhatsApp.

**AutorizaCelular** `bool` *required*

Indica si el cliente autoriza las llamadas al celular.

**AutorizaEmail** `bool` *required*

Indica si el cliente autoriza el envío de mensajes por correo electrónico.

```bash theme={null}
curl --location 'https://portal.sedierp.com/API/api/Terceros/ActualizacionDatos' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--data '{
	"DirIP": "190.25.114.32",
	"Nombres": "LAURA",
	"Nombres2": null,
	"Apellidos": "MARTINEZ",
	"Apellidos2": "ROJAS",
	"DireccionBase": {
		"ViaPrincipal": "CL",
		"NumeroPrincipal": "45",
		"LetraPrincipal": null,
		"BisPrincipal": false,
		"LetraBisPrincipal": null,
		"OrientacionPrincipal": null,
		"NumeroSecundaria": "12",
		"LetraSecundaria": null,
		"NumeroComplemento": "30",
		"OrientacionComplemento": null,
		"Detalle": "AP 501",
		"DireccionManual": null
	},
	"Direccion": "CL 45 # 12 - 30 AP 501",
	"Telefono": null,
	"CelularCodigoArea": "57",
	"Celular": "3104567890",
	"Email": "laura.martinez@correo.com",
	"EmailFacturacionElectronica": "laura.martinez@correo.com",
	"Storage": false,
	"Inmobiliaria": true,
	"Titularizacion": false,
	"Inventario": false,
	"Nomina": false,
	"Proveedor": false,
	"Cliente": true,
	"AutorizaSMS": true,
	"AutorizaWhatsApp": true,
	"AutorizaCelular": false,
	"AutorizaEmail": true
}'
```

### Validaciones

El servicio realiza las siguientes validaciones antes de registrar la solicitud. Si alguna no se cumple, no se registra la solicitud y se retorna HTTP 400 con el detalle del error.

* `DirIP`, `Nombres`, `Direccion`, `Celular`, `Email`, `EmailFacturacionElectronica` y todos los indicadores de perfil y de autorización son obligatorios.
* El cliente no debe tener otra solicitud de actualización de datos pendiente por aprobar.

> [!NOTE]
>
> Los textos que superan la longitud máxima indicada en cada campo se recortan sin generar error.

### Respuesta

Si el AccessToken no se envía, es inválido o expiró, el servicio responde HTTP 401 (`{"Code": 401, "Message": "El TokenAcceso no es valido"}`).

**TipoSalida** `string`

Resultado de la operación: "OK" o "Error".

**Codigo** `int`

Retorna 200 cuando el registro es correcto.

**Descripcion** `string`

"Transacción Exitosa" cuando el registro es correcto.

Cuando ocurre un error en el registro, el servicio responde HTTP 400 con el campo `Message`, que contiene el detalle del error precedido de "Error:".

```json Request theme={null}
{
  "DirIP": "190.25.114.32",
  "Nombres": "LAURA",
  "Nombres2": null,
  "Apellidos": "MARTINEZ",
  "Apellidos2": "ROJAS",
  "DireccionBase": {
    "ViaPrincipal": "CL",
    "NumeroPrincipal": "45",
    "LetraPrincipal": null,
    "BisPrincipal": false,
    "LetraBisPrincipal": null,
    "OrientacionPrincipal": null,
    "NumeroSecundaria": "12",
    "LetraSecundaria": null,
    "NumeroComplemento": "30",
    "OrientacionComplemento": null,
    "Detalle": "AP 501",
    "DireccionManual": null
  },
  "Direccion": "CL 45 # 12 - 30 AP 501",
  "Telefono": null,
  "CelularCodigoArea": "57",
  "Celular": "3104567890",
  "Email": "laura.martinez@correo.com",
  "EmailFacturacionElectronica": "laura.martinez@correo.com",
  "Storage": false,
  "Inmobiliaria": true,
  "Titularizacion": false,
  "Inventario": false,
  "Nomina": false,
  "Proveedor": false,
  "Cliente": true,
  "AutorizaSMS": true,
  "AutorizaWhatsApp": true,
  "AutorizaCelular": false,
  "AutorizaEmail": true
}
```

```json Exitosa theme={null}
{
    "total": 1,
    "rows": [
        {
            "TipoSalida": "OK",
            "Codigo": 200,
            "Descripcion": "Transacción Exitosa"
        }
    ],
    "result": 1
}
```

```json Pendiente theme={null}
{
    "Message": "Error: Ya hay una solicitud de actualización en curso, debe esperar hasta que finalize para enviar o"
}
```

```json Error theme={null}
{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "errors": {
        "Celular": [
            "El celular es requerido"
        ]
    },
    "traceId": "00-4b2e8f1a9c3d7e60a1b2c3d4e5f60718-2c3d4e5f6a7b8c9d-00"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.