WSAltaServicio
El endpoint más complejo del Legacy Despacho. Soporta crear, modificar y cancelar servicios/tareas, con resolución de geocoding, cuentas y catálogos embebida en la misma operación.
Target route
POST /apidev/legacy/WSAltaServicio
Status
New implementation required — Endpoint de mayor riesgo funcional. Coordina múltiples dominios: ciclo de vida de servicios, cuentas/clientes, catálogos, geocoding interno.
Este endpoint es el candidato con más probabilidad de regresión funcional. Debe tratarse como un workstream de migración dedicado con fixtures de regresión antes de cualquier release.
Authentication
{
"WSAutorizacion": {
"Guid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Usuario": "usuario@empresa.com",
"Password": "contraseña"
}
}
Comportamientos
El campo CancelarTarea controla el modo de operación:
| Modo | Condición | Descripción |
|---|---|---|
| Crear | CancelarTarea = "NO" y no existe tarea previa | Crea un nuevo servicio |
| Modificar | CancelarTarea = "NO" y la tarea ya existe | Actualiza datos del servicio |
| Cancelar | CancelarTarea = "SI" | Cancela la tarea existente |
Request body
Campos principales
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
WSAutorizacion | object | Sí | Credenciales de autenticación legacy |
CancelarTarea | string | No | "SI" o "NO" (default: "NO") |
NroServicio | string | Condicional | Para modificar/cancelar existente |
IdExterno | string | Condicional | ID externo para localizar tarea |
Prestacion | string | No | Nombre o ID de la prestación |
Causa | string | No | Nombre o ID de la causa |
SubCausa | string | No | Nombre o ID de la subcausa |
MotivoCancelacion | string | Condicional | Requerido si CancelarTarea = "SI" |
Prioridad | string | No | Nombre o ID de prioridad |
Notas | string | No | Observaciones del servicio |
Origen (con geocoding embebido)
| Campo | Tipo | Descripción |
|---|---|---|
Origen.Direccion | string | Dirección de texto libre |
Origen.Latitud | number | Latitud (si ya se conoce) |
Origen.Longitud | number | Longitud (si ya se conoce) |
Origen.Departamento | string | Departamento |
Si Origen.Latitud y Origen.Longitud no se informan, el sistema hace geocoding interno usando getinternalgeocoding para resolver la dirección.
Destino
Misma estructura que Origen.
Cuenta (creación en línea)
| Campo | Tipo | Descripción |
|---|---|---|
Cuenta.IdExterno | string | ID externo de la cuenta |
Cuenta.Nombre | string | Nombre (se crea si no existe) |
Cuenta.Telefono | string | Teléfono |
Cuenta.Patente | string | Patente del vehículo |
Si la cuenta no existe, se crea en línea usando crearcuentacliente.
Ejemplo — Crear servicio
{
"WSAutorizacion": { "Guid": "...", "Usuario": "...", "Password": "..." },
"CancelarTarea": "NO",
"IdExterno": "EXT-20260403-001",
"Prestacion": "Asistencia Vial",
"Causa": "Batería descargada",
"Prioridad": "Normal",
"Notas": "Cliente aguarda en el vehículo",
"Origen": {
"Direccion": "18 de Julio 1234",
"Departamento": "Montevideo"
},
"Destino": {
"Latitud": -34.8833,
"Longitud": -56.1670
},
"Cuenta": {
"IdExterno": "CLI-001",
"Nombre": "Juan Pérez",
"Telefono": "099123456",
"Patente": "ABC 1234"
}
}
Ejemplo — Cancelar servicio
{
"WSAutorizacion": { "Guid": "...", "Usuario": "...", "Password": "..." },
"CancelarTarea": "SI",
"NroServicio": "103878",
"MotivoCancelacion": "Cliente no encontrado"
}
Response body
| Campo | Tipo | Descripción |
|---|---|---|
Resultado | string | "OK" o código de error |
Mensaje | string | Descripción del resultado |
Id | string | ID interno de la tarea en GeoTareas |
NroAsistencia | string | Número de asistencia generado |
NroServicio | string | Número de servicio |
Notas | string | Observaciones del sistema |
{
"Resultado": "OK",
"Mensaje": "",
"Id": "7234567890123456789",
"NroAsistencia": "103490",
"NroServicio": "103878",
"Notas": ""
}
Dependencias funcionales
| Dominio | Módulo GeoTareas | Uso |
|---|---|---|
| Ciclo de vida de servicios | servicio / tarea | Crear, modificar, cancelar |
| Cuentas/Clientes | cuenta.service.ts, cliente.service.ts | Crear cuenta en línea |
| Geocoding | api/geocoding/internal/* | Resolver dirección → coordenadas |
| Catálogos | Prestaciones, causas, subcausas, prioridades, medios, zonas | Resolver nombres → IDs |
Migration note
Workstream dedicado. No es un endpoint de migración menor.
Orden recomendado de implementación:
- Implementar y validar el modo Cancelar (menor complejidad)
- Implementar y validar el modo Crear (sin geocoding) con fixtures
- Agregar geocoding embebido al modo Crear
- Implementar el modo Modificar
- Agregar creación de cuenta en línea
- Test de regresión end-to-end con fixtures de los casos GeneXus originales
Related
- WSGetServicios — consulta servicios creados
- WSSeguimientoTarea — seguimiento del servicio creado
- WSABMCuentas — gestión de cuentas (alternativa masiva)