Skip to main content

WSAltaServicio

Crea, actualiza o cancela una tarea (servicio) de despacho, con origen/destino, geocodificación interna, alta de cuenta inline, resolución de motivo/prestación/causa, datos de vehículo, campos dinámicos (OAV) y adjuntos.


Alta / Actualización / Cancelación de tarea

POST/apidev/legacy/WSAltaServicio
AuthWSAutorizacion (body)
FormatoJSON
RespuestaHTTP 200 + Notas
EstadoAvailable
Protocolo legacy

Todos los servicios legacy son POST a /apidev/legacy/<WSName>. No usan headers Authorization / X-API-Key / tenant: la autenticación viaja en el cuerpo como objeto WSAutorizacion. La respuesta siempre es HTTP 200; el resultado y los mensajes de error/validación se devuelven dentro del envelope, en el campo Notas.

Modos de operación

El campo CancelarTarea controla la operación:

ModoCondiciónDescripción
CrearCancelarTarea = "NO" y no existe la tareaCrea un servicio nuevo (SerEstId desde "SA", SerModoTareaCreada = "WS").
ActualizarCancelarTarea = "NO" y la tarea ya existeCarga por NroServicioIdExterno y actualiza los datos.
CancelarCancelarTarea = "SI"Cancela la tarea existente. Notas = "La tarea ha sido cancelada.".

Request Body

CampoTipoRequeridoDescripción
WSAutorizacionobjectCredenciales legacy: { Guid, Usuario, Password }.
WSAutorizacion.GuidstringAPI key de la compañía; resuelve el CiaId.
WSAutorizacion.UsuariostringEmail/login del usuario (se normaliza a minúsculas + trim).
WSAutorizacion.PasswordstringContraseña validada por el servicio.
WSSDTAltaServicioobjectPayload de la tarea (campos a continuación).

WSSDTAltaServicio

CampoTipoRequeridoDescripción
CancelarTareastringNo"SI" (insensible a mayúsculas) → rama de cancelación. "NO" con tarea CAN existente → reenvío como cancelada-pendiente.
CancelarNotastringNoSe anexa a la observación de cancelación.
NroAsistenciastring (numeric 10,0)NoNúmero de asistencia padre. >0 → busca el SerId padre y marca EsHijo.
NroServiciostring (numeric 10,0)NoNúmero de tarea; se usa para cargar/actualizar una tarea existente.
CuentaCodigoExternostringNoCódigo externo de cuenta; resuelve el CueId.
CuentaNombrestringNoNombre de cuenta de respaldo al crearla.
CuentaDocstringNoDocumento de la cuenta.
ProcedenciastringNoSe resuelve a CueProId. No vacío + no resuelto → " - Procedencia Inválida".
ProductostringNoSe resuelve a CueProTipCliLin. No resuelto → " - Producto Inválido".
CoberturastringNoSe resuelve a CueProCobLin. No resuelto → " - Cobertura Inválida".
CelularstringNoSerTelefono1 (substr 1..20). También clave de búsqueda de cuenta CueCel.
TelefonostringNoSerTelefono2 (substr 1..20). Clave de búsqueda CueTel.
IdExternostringNoSerId_Externo; lookup alternativo de la tarea.
ContactostringCondicionalRequerido (no vacío) cuando no se cancela → " - Contacto Vacío".
PrioridadshortNo0 / <0 / >3 → se asigna 2.
ParticularbooleanNoSerParticular. Influye en el cómputo.
Vehiculo_MatriculastringNoSerAutMat (substr 1..20).
Vehiculo_MarcastringNoSerAutMar.
Vehiculo_ModelostringNoSerAutMod.
Vehiculo_AnioshortNoSerAutAni.
Vehiculo_ColorstringNoSe resuelve a SerColId (sin error si no resuelve).
Vehiculo_MotorstringNoDato de vehículo.
Vehiculo_ChasisstringNoDato de vehículo.
Detallestring (long)NoSerDet (token literal "null" removido).
ProgramadodatetimeNoISO-8601 sin zona horaria (2026-02-24T17:53:00).
ProgramadoHastadatetimeNoISO-8601 sin zona horaria.
TurnostringNoSe resuelve a SerTurId. No resuelto → " - Turno invalido." (warn).
ComputabooleanNofalse → calculado por el sistema; true → se usa tal cual.
TiempoDemorastring (numeric 10,2)NoSerTiempoDemoraGPS.
PrestacionstringNoSe resuelve a SerPrestaId. No resuelto → " - Prestación Inválida".
Origen_CausastringNoSerCauId. No resuelto → " - Origen Causa Inválida".
Origen_SubCausastringNoSerCauSubCauLin. No resuelto → " - Origen SubCausa Inválida".
Origen_LugarEspecialstringNoSerLugEspId. Warn-only.
Origen_PaisstringNoSerPaiId. No resuelto → " - País Inválido".
Origen_DepartamentostringNoSerPaiDepLin. No resuelto → " - Origen Departamento Inválida".
Origen_CiudadstringNoSerPaiDepCiuLin. No resuelto → " - Origen Ciudad Inválida".
Origen_ZonastringNoSerPaiDepCiuZonLin. Warn-only.
Origen_CallestringNoSerCalle (token literal "null" removido).
Origen_EsquinastringNoSerEsquina.
Origen_Esquina2stringNoSerEsquina2.
Origen_NumeroPtastringNoSerNumeroPta.
Origen_AptostringNoSerApto.
Origen_MiraHaciastringNoSerMiraHacia.
Origen_Latitudstring (numeric 18,14)NoSerLatitud. Si 0 → geocodificación interna automática.
Origen_Longitudstring (numeric 18,14)NoSerLongitud.
Destino_CausastringNoSerTraCauId. No resuelto → " - Destino Causa Inválida".
Destino_SubCausastringNoSerTraCauSubCauLin. No resuelto → " - Destino SubCausa Inválida".
Destino_LugarEspecialstringNoSerTraLugEspId. Warn-only.
Destino_PaisstringNoSerTraPaiId. No resuelto → " - Destino País Inválido".
Destino_DepartamentostringNoSerTraPaiDepLin. No resuelto → " - Destino Departamento Inválida".
Destino_CiudadstringNoSerTraPaiDepCiuLin. No resuelto → " - Destino Ciudad Inválida".
Destino_ZonastringNoSerTraPaiDepCiuZonLin. Warn-only.
Destino_CallestringNoSerTraCalle.
Destino_EsquinastringNoSerTraEsquina.
Destino_Esquina2stringNoPresente en el SDT.
Destino_NumeroPtastringNoSerTraNroPuerta.
Destino_AptostringNoSerTraApto.
Destino_MiraHaciastringNoSerTraMiraHacia.
Destino_Latitudstring (numeric 18,14)NoSerTraLatitud (geocodificación si 0).
Destino_Longitudstring (numeric 18,14)NoSerTraLongitud.
MotivostringNoSe resuelve a SerMotId. Si se setea, sobrescribe prestación/causa/subcausa desde el motivo. No resuelto → " - Motivo Inválido".
ReservarPersonalstringNoSerFijadoConId. Warn-only. Dispara notificación de reserva.
ReservarPrestadorstringNoSerFijadoPreId. No resuelto → " - Reservar Prestador Inválido".
ReservarMovilstringNoSerFijadoVehId. No resuelto → " - Reservar Movil Inválido".
ReservarUsuarioEmailstringNoSerFijadoUsuId. No resuelto → " - Reservar Usuario Email Inválido".
MedioComunicacionstringNoSerAltaMedComId. Warn-only.
CueMailstringNoEmail de cuenta de respaldo (clave de búsqueda CueMail).
TelefonistaAliasstringNoResuelve el usuario operador por alias cuando el email está vacío.
TelefonistaEmailstringNoResuelve SerTelUsuId. Cae a alias y luego a WSAutorizacion.Usuario. No vacío y no resuelto → " - Usuario Inválido".
AutomatizarbooleanNoSerAutomatico = "SI"/"NO".
AlertaAsignacionstringNoSe almacena como alerta del servicio.
TipoMovilesstringNoLista de tipos de móvil separada por |; tipo inválido → " - Tipo de Móvil inválido: <nombre>". Se guarda como arreglo JSON en SerColTipVehId.
NoNotificarMovilbooleanNoSuprime la notificación de actualización al móvil en edición.
PendienteSinConfirmarbooleanNoSerPendiente.
PrestacionIdstring (numeric 18,0)NoId explícito de prestación.
AdjuntosarrayNoAdjuntos por URL; se cargan tras guardar.
CuentaobjectNoDetalle de cuenta usado al auto-crear una cuenta nueva.
CamposDinamicosarrayNoCampos dinámicos (OAV); se emparejan por nombre (minúsculas + trim) contra la plantilla OAV del servicio.

Adjuntos[]

CampoTipoDescripción
NombrestringNombre visible del archivo.
Urlstring (long)URL origen a descargar/almacenar.
Notasstring (long)Notas del adjunto.

Cuenta

CampoTipoDescripción
NombrestringNombre de cuenta (clave CueNom; cae a CuentaNombre y luego a Contacto).
TelefonostringClave de búsqueda CueTel.
CelularstringClave CueCel (cae al Celular de nivel superior).
MailstringClave CueMail (cae al CueMail de nivel superior).
Notasstring (long)Clave CueObs.
Direccion_CallestringClave CueCalle.
Direccion_EsquinastringClave CueEsquina.
Direccion_NumeroPtastringClave CueNroPuerta.
Direccion_PaisstringClave CuePaiNom.
Direccion_DepartamentostringClave CueDepNom.
Direccion_CiudadstringClave CueCiuNom.
Direccion_Latitudstring (numeric 18,14)Clave CueLatitud (solo si ≠ 0).
Direccion_Longitudstring (numeric 18,14)Clave CueLongitud (solo si ≠ 0).

CamposDinamicos[]

CampoTipoDescripción
etiquetastringClave JSON en minúsculas. Se empareja (lower + trim) contra SerOAV_Item_Name.
valorstring (long)Clave JSON en minúsculas. Se escribe en SerOAV_Item_Value.

Response

La respuesta es HTTP 200 con el envelope GeneXus. El campo Notas es el canal de resultado/error: transporta tanto mensajes de éxito como cada mensaje de validación o error.

CampoTipoDescripción
WSSDTDatoNroServicioobjectPropiedad única del envelope OUT.
Idstring (numeric 18,0)SerId creado/actualizado.
NroServiciostring (numeric 10,0)SerNroServicio.
NroAsistenciastring (numeric 10,0)SerNroAsistencia.
Notasstring (long)Canal de resultado/error: lleva "GUID Inválido", "Cuenta inexistente o inválida...", "La tarea ha sido cancelada.", los Errores de validación o los mensajes del guardado.

Code Examples

curl -s -X POST "https://$TENANT/apidev/legacy/WSAltaServicio" \
-H "Content-Type: application/json" \
-d '{
"WSAutorizacion": {
"Guid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Usuario": "usuario@empresa.com",
"Password": "********"
},
"WSSDTAltaServicio": {
"CancelarTarea": "NO",
"IdExterno": "EXT-20260403-001",
"Contacto": "Juan Pérez",
"Prestacion": "Asistencia Vial",
"Origen_Causa": "Batería descargada",
"Origen_SubCausa": "Sin arranque",
"Prioridad": 2,
"Detalle": "Cliente aguarda en el vehículo",
"Origen_Calle": "18 de Julio",
"Origen_NumeroPta": "1234",
"Origen_Departamento": "Montevideo",
"Destino_Latitud": "-34.88330000000000",
"Destino_Longitud": "-56.16700000000000",
"Cuenta": {
"Nombre": "Juan Pérez",
"Telefono": "099123456"
}
}
}'

Cancelación de tarea

{
"WSAutorizacion": {
"Guid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Usuario": "usuario@empresa.com",
"Password": "********"
},
"WSSDTAltaServicio": {
"CancelarTarea": "SI",
"NroServicio": "103878",
"CancelarNota": "Cliente no encontrado"
}
}

Example Response

{
"WSSDTDatoNroServicio": {
"Id": "7234567890123456789",
"NroServicio": "103878",
"NroAsistencia": "103490",
"Notas": ""
}
}

Respuesta de una cancelación exitosa:

{
"WSSDTDatoNroServicio": {
"Id": "7234567890123456789",
"NroServicio": "103878",
"NroAsistencia": "103490",
"Notas": "La tarea ha sido cancelada."
}
}

Errors

Todos los errores se devuelven con HTTP 200 en el campo Notas del envelope (no hay códigos 4xx). Las validaciones de catálogo se acumulan anexadas como - <mensaje> al texto de Notas.

Mensaje en NotasCausa
GUID InválidoEl Guid no resuelve a una compañía (CiaId == 0).
URL InválidaEl host/URL no está en la lista permitida (el superusuario la omite).
Cuenta inexistente o inválida...No se pudo resolver ni auto-crear la cuenta.
Debe ingresar el motivo de la tarea o la prestación, causa y sub causa.Falta Motivo o la terna Prestacion + Origen_Causa + Origen_SubCausa.
La tarea ha sido cancelada.Resultado correcto de la rama de cancelación.
- Contacto VacíoContacto vacío al crear/actualizar (no cancelación).
- Procedencia InválidaProcedencia no resuelta.
- Producto InválidoProducto no resuelto.
- Cobertura InválidaCobertura no resuelta.
- Motivo InválidoMotivo no resuelto.
- Prestación InválidaPrestacion no resuelta.
- Origen Causa InválidaOrigen_Causa no resuelta.
- Origen SubCausa InválidaOrigen_SubCausa no resuelta.
- Destino Causa InválidaDestino_Causa no resuelta.
- Destino SubCausa InválidaDestino_SubCausa no resuelta.
- País InválidoOrigen_Pais no resuelto.
- Origen Departamento InválidaOrigen_Departamento no resuelto.
- Origen Ciudad InválidaOrigen_Ciudad no resuelta.
- Destino País InválidoDestino_Pais no resuelto.
- Destino Departamento InválidaDestino_Departamento no resuelto.
- Destino Ciudad InválidaDestino_Ciudad no resuelta.
- Reservar Prestador InválidoReservarPrestador no resuelto.
- Reservar Movil InválidoReservarMovil no resuelto.
- Reservar Usuario Email InválidoReservarUsuarioEmail no resuelto.
- Usuario InválidoTelefonistaEmail no vacío y no resuelto.
- Tipo de Móvil inválido: <nombre>Un nombre de TipoMoviles no resuelve a un tipo de vehículo.
- Turno invalido.Turno no resuelto (warn, no bloquea).