Documentación API WMS

Esta documentación describe los endpoints disponibles en la API FastTrack para la gestión de operaciones logísticas.

URL Base: https://proteus.com.ar/api/wms

Esta URL es el punto de entrada para todas las APIs de WMS.

Estructura de la URL y la operacion_logistica (ambiente)

La URL base https://proteus.com.ar/api es el punto de entrada

La estructura general de la URL es:

https://proteus.com.ar/api/{ambiente}/{segmento_fijo}/{endpoint}

Donde:

  1. {ambiente}:
    • Es un segmento OPCIONAL que identifica una operación logística o ambiente específico (ej: "moreno").
    • Si se usa, DEBE terminar con una barra (/).
    • Ejemplo: moreno/
  2. {segmento_fijo}:
    • Es un segmento REQUERIDO que generalmente es:
      • wms/ para la mayoría de las operaciones del WMS.
      • auth/ para la autenticación (login).
  3. {endpoint}:
    • Es el nombre específico del endpoint que deseas consumir.
    • Ejemplos: consultaStock, altaEntregas, login.

Ejemplos de URL completas:

A. Sin especificar ambiente (usa el ambiente por defecto):

  • Consultar Stock: https://proteus.com.ar/api/wms/consultaStock
  • Autenticarse: https://proteus.com.ar/api/auth/login

B. Especificando ambiente (ejemplo: "moreno"):

  • Consultar Stock: https://proteus.com.ar/api/moreno/wms/consultaStock
  • Autenticarse: https://proteus.com.ar/api/moreno/auth/login

Uso del Token de Autenticación (access_token)

  1. Obtención del Token:
    • Realiza una solicitud POST al endpoint /auth/login (con o sin prefijo de ambiente, según se necesite).
    • Envía username y password en el cuerpo de la solicitud (como application/x-www-form-urlencoded).
    • Si las credenciales son válidas, la respuesta JSON contendrá un access_token dentro del objeto result.
  2. Uso del Token en Solicitudes Posteriores:
    • Para TODAS las demás solicitudes a los endpoints protegidos (ej: /wms/altaEntregas, /wms/consultaStock), DEBES incluir el access_token obtenido.
  3. Método de Inclusión (Encabezado Authorization):
    • La forma estándar y requerida es incluir el token en el encabezado (Header) Authorization de la solicitud HTTP, utilizando el esquema Bearer.
    • Formato del encabezado:
      Authorization: Bearer {tu_access_token_obtenido}
      (Reemplaza {tu_access_token_obtenido} con el token real).
Importante:

Si no incluyes un access_token válido en el encabezado Authorization para los endpoints que lo requieren, la API responderá con un error de "No autorizado" (generalmente código de estado HTTP 401).


Endpoints


Autenticación

POST /auth/login

Generar token de autenticación. Inicia sesión en el sistema y obtiene un token de acceso.

Request:
{
    "username": "usuario_ejemplo",
    "password": "contrase\u00f1a123"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "access_token": "eaeddab7d82fc03e895af68dacf673c02ac53577",
        "expires_at": "2025-03-08 20:23:41"
    }
}
Response (error):
{
    "success": false,
    "error": "Error en la autenticaci\u00f3n",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (falta username/password) 401: Credenciales incorrectas 500: Error interno del servidor
Entregas

POST /wms/altaEntregas

Alta de entregas.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
[
    {
        "idDadorDeCarga": 1,
        "idOperacion": 1,
        "referencia": "PV34534523",
        "idDestino": 345,
        "direccionmanual": 0,
        "nombreDestino": "AutoGeneralli S.A.",
        "direccionDestino": "Triunvirato 3456",
        "localidadDestino": "CABA",
        "provinciaDestino": "CABA",
        "cp": 1427,
        "totalBultos": 1,
        "totalKilos": 3,
        "totalVolumen": 34.12,
        "totalValorDeclarado": 0.05,
        "montoACobrar": 0.05,
        "numeroRemito": "0010-00057862",
        "fechaRemito": "2025-03-10",
        "tipoEntrega": "",
        "tipoProducto": "",
        "masiva": 0,
        "observaciones": "Observaci\u00f3n sobre el pedido",
        "idVendedor": "235",
        "codigoVendedor": "NV545",
        "detalleProductos": [
            {
                "codigo": 15,
                "nombre": "nuevo producto",
                "cantidad": 2,
                "idCalidad": 1,
                "valorUnitario": 2500
            }
        ],
        "detalleCajas": [
            {
                "numeroCaja": 1,
                "etiquetaCaja": 5468321447
            },
            {
                "numeroCaja": 1,
                "etiquetaCaja": 5468321448
            }
        ]
    }
]
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Procesadas": 10
    }
}
Response (error):
{
    "success": false,
    "error": "Error al procesar alta de entregas o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos en la solicitud 401: No autorizado / Token inválido 500: Error interno del servidor

POST /wms/consultaEntregas

Consultar entregas por ID de dador y referencia.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "referencia": "PV34534523"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Entregas": [
            {
                "idEntrega": 456,
                "referencia": "PV34534523",
                "referenciados": null,
                "idEstadoWMS": 12,
                "descEstadoWMS": "Confirmada",
                "idEstadoTMS": 3,
                "descEstadoTMS": "En Viaje",
                "tipoEntrega": "RETIRO POR DEPOSITO",
                "idFranjaHoraria": 3,
                "nombreFranjaHoraria": "14 a 18",
                "bultos": 5,
                "documentos": [
                    {
                        "tipo": "Remito",
                        "numero": 123456
                    }
                ],
                "imagenes": [
                    {
                        "nombre": "Nombre de la imagen",
                        "imagen": "ruta\/imagen.jpeg"
                    }
                ],
                "eventos": [
                    {
                        "idEvento": 3,
                        "descEvento": "Ruteo",
                        "fechaEvento": "2022-07-07 09:58:00",
                        "baseEvento": "CABA",
                        "motivoRechazo": "",
                        "HR": 321
                    }
                ],
                "eventosExpresos": [
                    {
                        "idEvento": 4,
                        "descEvento": "Entregado",
                        "fechaEvento": "2022-07-15 11:45:00"
                    }
                ],
                "eta": "12:25",
                "contenido": [
                    {
                        "codigo": 7798098844271,
                        "cantidad": 1
                    }
                ]
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar entregas o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Entrega no encontrada 500: Error interno

POST /wms/consultaPreparados

Consulta entregas que están en estado preparado.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Entregas": [
            {
                "idEntrega": 303,
                "referencia": 9900123456,
                "idEstadoWMS": 13,
                "descEstadoWMS": "Preparada",
                "idEstadoTMS": 4,
                "descEstadoTMS": "Entregado",
                "tipoEntrega": "Retiro en Dep\u00f3sito",
                "bultos": 1,
                "documentos": [
                    {
                        "tipo": "Remito",
                        "numero": "0005-00004561"
                    }
                ],
                "contenido": [
                    {
                        "codigo": 31710010402,
                        "cantidad": 10,
                        "calidad": "Disponible"
                    },
                    {
                        "codigo": 31730034400,
                        "cantidad": 10,
                        "calidad": "Disponible"
                    }
                ]
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar preparados o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/marcaPreparados

Marca una entrega como consultada (para el flujo de consultaPreparados).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "idEntrega": 243
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": []
}
Response (error):
{
    "success": false,
    "error": "Error al marcar preparado o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Entrega no encontrada 500: Error interno

POST /wms/liberarEntrega

Libera o bloquea una entrega preparada.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "idEntrega": 243,
    "bloqueado": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": []
}
Response (error):
{
    "success": false,
    "error": "Error al liberar\/bloquear entrega o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Entrega no encontrada 500: Error interno

POST /wms/modificarEntrega

Modifica datos de una entrega existente (tipo, fecha, productos, documentos).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "idEntrega": 243,
    "tipoEntrega": "Distribuci\u00f3n",
    "fecha": "2025-03-24",
    "bloqueado": 0,
    "detalleProductos": [
        {
            "codigo": "59001038",
            "nombre": "nuevo producto",
            "cantidad": 2,
            "idCalidad": 1
        }
    ],
    "documentos": [
        {
            "tipoDocumento": "Remito",
            "numero": "0010-000578626",
            "cai": "1245648461348",
            "fechaCai": "2025-04-10"
        }
    ]
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Entrega": [
            {
                "idEntrega": 243,
                "referencia": "PV34534523",
                "documento": "33333333",
                "idEstadoWMS": 12,
                "descEstadoWMS": "Confirmada",
                "idEstadoTMS": 3,
                "descEstadoTMS": "En Viaje",
                "detalleProductos": [
                    {
                        "id": 918,
                        "codigo": "59001038",
                        "nombre": "nuevo producto",
                        "cantidad": 2,
                        "idCalidad": 1
                    }
                ],
                "documentos": [
                    {
                        "idDocumento": 12298,
                        "tipoDocumento": "Factura",
                        "numero": "0010-0000598765",
                        "cai": "2103453455654",
                        "fechaCai": "2025-03-26"
                    }
                ]
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al modificar entrega o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Entrega no encontrada 500: Error interno

POST /wms/altaEtiquetas

Adjunta archivos de etiquetas (PDF, etc.) a una entrega existente, codificados en Base64.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "referencia": "ABC123",
    "etiquetas": [
        {
            "nombre": "Etiqueta_Producto_XYZ.pdf",
            "archivo": "JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSA8RkVGRjAwNDQwMDZGMDA2MzAwNzUwMDZ..."
        }
    ]
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "etiquetas": "Se dieron de alta X etiquetas para la entrega: ABC123"
    }
}
Response (error):
{
    "success": false,
    "error": "Error al dar de alta etiquetas o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (ej. Base64 incorrecto) 401: No autorizado / Token inválido 404: Entrega no encontrada por referencia 500: Error interno

POST /wms/consultaNovedadesEntregas

Consulta IDs de entregas que han tenido novedades (cambios de estado, etc.) desde la última consulta marcada.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Entregas": [
            {
                "id": 1,
                "tabla": "entregas",
                "idexterno": 12345
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar novedades o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/altaEntregasEventos

Registra eventos personalizados asociados a una guía/entrega.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "numeroGuia": "102515464",
    "eventos": [
        {
            "codigo": "EVE01",
            "descripcion": "Este es el evento",
            "fecha": "2024-11-15 11:05:43"
        }
    ]
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Procesados": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al registrar eventos o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Guía no encontrada 500: Error interno
Stock

POST /wms/consultaStock

Consultar Stock. Consulta el stock disponible en un depósito específico para ciertos productos y calidad.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "idDeposito": 1,
    "codigoProductos": [
        6031512,
        6080040,
        5010331
    ],
    "codigoCalidad": 500
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Stocks": [
            {
                "codigo": "98255920ZD",
                "idProducto": 193,
                "calidad": "Disponible",
                "total": 10
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar stock o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/cambioDeCalidad

Registra un cambio de calidad para una cantidad específica de un producto.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "codigoProducto": "CODP123",
    "codigoCalidadOrigen": "CODCO123",
    "codigoCalidadDestino": "CODCD123",
    "fecha": "2024-11-15",
    "cantidad": 10
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al registrar cambio de calidad o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (ej. stock insuficiente, códigos no existen) 401: No autorizado / Token inválido 500: Error interno
Ingresos Pendientes

POST /wms/altaIngresoPendiente

Registra un ingreso de mercadería pendiente de recepción.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "fecha": "2022-10-01",
    "nroRemito": "R-0001-00000001",
    "idDeposito": 1,
    "codigoProveedor": "4086",
    "idCalidad": 1,
    "codigoCalidad": "245",
    "productos": [
        {
            "codigo": "ART0027",
            "cantidad": 1,
            "valor": "15.05",
            "descripcion": "Descripci\u00f3n",
            "cajon": "CAJON",
            "nroSerie": "12345678",
            "um": "CM",
            "lote": "725",
            "vencimiento": "2022-12-15",
            "secuencia": 123
        }
    ]
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Procesadas": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear ingreso pendiente o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaRecepciones

Consulta recepciones de mercadería que han sido cerradas.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Recepciones": [
            {
                "idCabecera": 110,
                "fechaCierre": "2022-11-16",
                "proveedor": null,
                "documento": "INGRESO2",
                "contenido": [
                    {
                        "codigo": "GENAURHS-610R",
                        "cantidad": 50,
                        "calidad": "Disponible",
                        "fechavto": null,
                        "lote": "",
                        "nroserie": null
                    },
                    {
                        "codigo": "PRODUCTO2",
                        "cantidad": 60,
                        "calidad": "Disponible",
                        "fechavto": null,
                        "lote": "",
                        "nroserie": null
                    }
                ]
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar recepciones o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/marcaRecepciones

Marca una recepción como consultada (para el flujo de consultaRecepciones).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "idCabecera": 110
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": []
}
Response (error):
{
    "success": false,
    "error": "Error al marcar recepci\u00f3n o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Recepción no encontrada 500: Error interno
Proveedores

POST /wms/altaProveedor

Crea o actualiza un proveedor.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "Proveedor S.A.",
    "codigoExterno": "1111",
    "fansasia": "Proveedor Fantasia",
    "cuit": "11-111111111-1",
    "email": "proveedor@proveedor.com.ar",
    "web": "proveedor.com.ar",
    "domicilio": "AV CONSTITUYENTES 5364",
    "idCiudad": "3887",
    "codPostal": "1431",
    "telefono": "111111111"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar proveedor o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (ej. código externo duplicado si es creación) 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaProveedor

Consulta un proveedor por su código externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigoExterno": "1111",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 1,
                "codigoexterno": "1111",
                "nombre": "Nombre del proveedor",
                "cuit": "30-12345678-0",
                "email": "email@ejemplo.com"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar proveedor o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Proveedor no encontrado 500: Error interno
Clientes

POST /wms/altaCliente

Crea o actualiza un cliente y sus destinos asociados.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "Cliente",
    "razonSocial": "Cliente S.A",
    "direccion": "Av. de Mayo 100",
    "idLocalidad": 1,
    "telefono": "11111111",
    "mail": "cliente@cliente.com.ar",
    "cuit": "11-111111111-1",
    "codigo": "1111",
    "idRanking": 1,
    "idDadorDeCarga": 1,
    "listaPrecios": "123456",
    "listaPreciosOferta": "654321",
    "destinos": [
        {
            "codigo": "123",
            "nombre": "Destino S.A.",
            "direccion": "Av. de Mayo 1338",
            "idCiudad": "3778",
            "codPostal": "1431",
            "codPostalLargo": "C1431EZR",
            "latitud": "-34.609264",
            "longitud": "-58.3873816",
            "codigoZona": "123456"
        }
    ]
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar cliente o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaCliente

Consulta un cliente por su código externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "1111",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 1,
                "nombre": "Nombre del cliente",
                "razonsocial": "Raz\u00f3n social",
                "telefono": "11-1231-5656",
                "mail": "mail@ejemplo.com",
                "cuit": "30-12345678-0",
                "suspendido": 0,
                "destinos": [
                    {
                        "id": 1,
                        "nombre": "Nombre del destino",
                        "direccion": "Costa Rica 5546",
                        "ciudad": "CIUDAD DE BUENOS AIRES",
                        "provincia": "Ciudad Aut\u00f3noma de Buenos Aires",
                        "codigopostalcorto": 1234,
                        "latitud": -34.58325197969,
                        "longitud": -58.434227243289
                    }
                ]
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar cliente o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Cliente no encontrado 500: Error interno
Productos

POST /wms/altaProducto

Crea o actualiza un producto.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "AR12",
    "nombre": "Cafetera",
    "descripcion": "Cafetera",
    "idRubro": 1,
    "idSubRubro": 1,
    "idMetodoDeConsumo": 1,
    "idProveedor": 1,
    "idDadorDeCarga": 1,
    "idUnidadMedidaAlmacenaje": 1,
    "largo": "1",
    "ancho": "1",
    "alto": "1",
    "volumen": "1",
    "pesobruto": "1",
    "pesoneto": "1",
    "tara": "1",
    "modulo": 100,
    "requiereSerie": 0,
    "usaVto": 1,
    "usaLote": 1,
    "mezclaLote": 1,
    "codigoDeBarra": "A240",
    "codigoAlias": "AAA240000"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar producto o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaProducto

Consulta un producto por su código externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "AR12",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 1,
                "codigo": 113882,
                "nombre": "Nombre del producto",
                "descripcion": "Desc1",
                "pesobruto": 17.9,
                "volumen": 0.087912,
                "alto": 37,
                "ancho": 36,
                "largo": 66,
                "rubro": "Rubro",
                "subrubro": "Subrubro",
                "inactivo": 0
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar producto o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Producto no encontrado 500: Error interno

POST /wms/altaListaPrecios

Crea o actualiza una lista de precios y sus ítems asociados.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "123456",
    "nombre": "Lista de precios",
    "observaciones": "Esto es una lista de precios",
    "fechadesde": "2025-03-31",
    "fechahasta": "2025-03-10",
    "items": [
        {
            "codigo": "XXX666",
            "valor": 4444,
            "codigoCliente": "2"
        }
    ]
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar lista de precios o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaListaPrecios

Consulta una lista de precios por su código externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "123456",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 2,
                "nombre": "Lista de prueba cambio",
                "observaciones": "Observaci\u00f3n de prueba",
                "fechahasta": "2025-03-31",
                "fechadesde": "2025-03-10",
                "codigoexterno": 123456
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar lista de precios o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Lista de precios no encontrada 500: Error interno

POST /wms/altaProductosPrecios

Añade o actualiza el precio de un producto específico dentro de una lista de precios existente.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "123456",
    "valor": 5000,
    "codigoListaPrecios": "1234",
    "codigoCliente": "12"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al actualizar precio de producto o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (ej. lista o producto no existen) 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaProductosPrecios

Consulta el precio de un producto dentro de una lista de precios.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "123456",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 1,
                "fk_productos": 1,
                "fechadesde": "2025-03-10",
                "valor": 5000,
                "fk_listadeprecios": 2
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar precio de producto o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Precio no encontrado para el producto/lista 500: Error interno

POST /wms/altaCodigoProducto

Asocia un código alternativo (ej. EAN, DUN) a un producto existente.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "113882",
    "idProducto": "",
    "codigoProducto": "12345",
    "idTipoCodigo": "3",
    "cantidad": 5,
    "idDadorDeCarga": "1"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al asociar c\u00f3digo alternativo o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (ej. producto no existe, tipo de código inválido) 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaCodigoProducto

Consulta la información asociada a un código alternativo de producto.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "113882",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": {
            "id": 1,
            "fk_productos": 7477,
            "fk_tipocodigo": 3,
            "fk_clientes": 1,
            "codigo": 113882,
            "cantidad": 1,
            "borrado": 0
        }
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar c\u00f3digo alternativo o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Código no encontrado 500: Error interno
Equipos

POST /wms/altaEquipo

Crea o actualiza un equipo (vehículo, remolque).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "1",
    "patente": "AAA333",
    "idMarca": 1,
    "idEmpresa": 2,
    "idTipoEquipo": 3
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar equipo o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaEquipo

Consulta un equipo por su código.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "1",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 1,
                "patente": "AAA111",
                "codigo": "123",
                "empresa": "Empresa de prueba",
                "tipoequipo": "Chasis"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar equipo o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Equipo no encontrado 500: Error interno
Empresas

POST /wms/altaEmpresa

Crea o actualiza una empresa (transportista, etc.).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "123",
    "nombre": "Empresa S.A."
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar empresa o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaEmpresa

Consulta una empresa por su código.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "123",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 1,
                "nombre": "Empresa",
                "cuit": "30-12345678-0",
                "codigo": "1234"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar empresa o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Empresa no encontrada 500: Error interno
Provincias

POST /wms/altaProvincia

Crea o actualiza una provincia.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "Chaco",
    "codigoExterno": "123",
    "idPais": 1
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar provincia o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaProvincia

Consulta una provincia por su código externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigoExterno": "123",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 2,
                "codigoexterno": 901,
                "nombre": "Ciudad Aut\u00f3noma de Buenos Aires"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar provincia o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Provincia no encontrada 500: Error interno
Ciudades

POST /wms/altaCiudad

Crea o actualiza una ciudad/localidad.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "12",
    "nombre": "Chaco",
    "codigoExterno": "123",
    "idProvincia": 10
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar ciudad o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaCiudad

Consulta una ciudad por su código (interno o externo).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "5637193326",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 3889,
                "codigoexterno": null,
                "nombre": "MONSERRAT",
                "provincia": "Ciudad Aut\u00f3noma de Buenos Aires"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar ciudad o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Ciudad no encontrada 500: Error interno
Destinos

POST /wms/altaDestino

Crea o actualiza un destino (punto de entrega) asociado a un cliente.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "852",
    "nombre": "Destino ejemplo",
    "direccion": "Av. Juan B. Justo 2000",
    "idCiudad": 10005,
    "idZona": 110,
    "idCliente": 1,
    "codigoCliente": "225",
    "idDadorDeCarga": 1,
    "comentarios": "Comentario sobre el destino"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar destino o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (ej. cliente no existe) 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaDestino

Consulta un destino por nombre o código, opcionalmente filtrado por cliente.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "P00007",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 1,
                "nombre": "Destino",
                "direccion": "Costa Rica 5546",
                "ciudad": "CIUDAD DE BUENOS AIRES",
                "provincia": "Ciudad Aut\u00f3noma de Buenos Aires",
                "codigopostalcorto": "1234",
                "latitud": -34.58325197969,
                "longitud": -58.434227243289
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar destino o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Destino no encontrado 500: Error interno
Rubros

POST /wms/altaRubro

Crea o actualiza un rubro de producto.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "Agricola",
    "codigoExterno": "123"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar rubro o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaRubro

Consulta un rubro por su código externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigoExterno": "123",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 5,
                "codigoexterno": "AC",
                "nombre": "Rubro"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar rubro o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Rubro no encontrado 500: Error interno
SubRubros

POST /wms/altaSubRubro

Crea o actualiza un subrubro de producto, asociado a un rubro.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "Fertilizante",
    "codigoExterno": "123",
    "idRubro": 2
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar subrubro o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (ej. rubro no existe) 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaSubRubro

Consulta un subrubro por su código externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigoExterno": "123",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 557,
                "codigoexterno": "123",
                "nombre": "TABLETAS",
                "rubro": "TABLETAS",
                "codigoRubro": "1234"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar subrubro o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: SubRubro no encontrado 500: Error interno
Personal

POST /wms/altaPersonal

Crea o actualiza datos de personal (choferes, etc.).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "Federico Lopez",
    "idEmpresa": 1,
    "legajo": "5525",
    "telefono": "132456798",
    "documento": "30999888",
    "fechaIngreso": "2022-01-31"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar personal o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaPersonal

Consulta personal por su legajo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "legajo": "5525",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 1,
                "legajo": "5525",
                "nombre": "Chofer",
                "dni": "12345678",
                "cuil": "20-1234578-8",
                "empresa": "Empresa"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar personal o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Personal no encontrado 500: Error interno
Expresos

POST /wms/altaExpreso

Crea o actualiza un expreso/transportista.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "22",
    "nombre": "Expreso",
    "direccion": "Av. Juan B. Justo 2000",
    "codigoCiudad": "02007010002",
    "idDadorDeCarga": 1
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar expreso o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaExpreso

Consulta un expreso por su código.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "5525",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": [
            {
                "id": 11,
                "nombre": "Andreani Emp",
                "direccion": "Av. Juan B. Justo 2000",
                "ciudad": "Ciudad Aut\u00f3noma de Buenos Aires",
                "codigopostalcorto": "1234",
                "latitud": "-34.59113966488604",
                "longitud": "-58.43902614232909",
                "leyendaguia": "Esta es la leyenda"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar expreso o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Expreso no encontrado 500: Error interno
Hojas de Ruta

POST /wms/consultaHojadeRuta

Consulta una hoja de ruta por su ID interno o número externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idHojaRuta": 5525,
    "numero": "1234568"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "HojasDeruta": [
            {
                "id": 5525,
                "numero": "5525",
                "fecha": "2025-01-31",
                "fechasalida": "2025-01-31 09:45:01",
                "fechafin": "2025-01-31 10:52:02",
                "fechacierre": "2025-01-31 11:07:32",
                "horariocarga": "10:00:00",
                "estado": "Cerrada",
                "camion": "AA 053 EV",
                "acoplado": null,
                "tipoequipo": "Semirremolque",
                "chofer": "NOMBRE DEL CHOFER",
                "nombretransportista": "NOMBRE DE LA EMPRESA",
                "codigotransportista": 1562,
                "tipoviaje": "Ventas",
                "tipozona": "Sin definir",
                "kilometros": 1939,
                "Entregas": [
                    {
                        "id": 1229,
                        "referencia": "Pedido6",
                        "bultos": 0,
                        "peso": 18750,
                        "volumen": 0,
                        "destino": "DESTINO DE LA ENTREGA",
                        "destinoDireccion": "DIRECCI\u00d3N DE LA ENTREGA",
                        "cliente": "CLIENTE",
                        "status": "Rechazado",
                        "motivoRechazo": "DESTINATARIO CERRADO"
                    }
                ],
                "Adicionales": [
                    {
                        "id": 1228,
                        "nombre": "Nombre del adicional",
                        "cantidad": 5,
                        "valor": 120.5,
                        "compra": "SI",
                        "venta": "NO"
                    }
                ],
                "LiquidacionesCompra": [],
                "LiquidacionesVenta": []
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar hoja de ruta o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos (ej. no se provee ID ni número) 401: No autorizado / Token inválido 404: Hoja de ruta no encontrada 500: Error interno

POST /wms/setearNumeroHojaDeRuta

Asigna o modifica el número externo de una hoja de ruta existente.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idHojaRuta": 5525,
    "numero": 2
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": []
    }
}
Response (error):
{
    "success": false,
    "error": "Error al setear n\u00famero de hoja de ruta o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Hoja de ruta no encontrada 500: Error interno

POST /wms/consultaNovedadesHojadeRuta

Consulta IDs de hojas de ruta que han tenido novedades desde la última consulta marcada.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
[]
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "HojasDeruta": [
            1233
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar novedades de hoja de ruta o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 401: No autorizado / Token inválido 500: Error interno
Vendedores

POST /wms/altaVendedores

Crea o actualiza un vendedor.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigoExterno": "123HDG",
    "nombre": "Nombre del vendedor",
    "iniciales": "NV"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar vendedor o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaVendedores

Consulta un vendedor por su ID interno o código externo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idVendedor": 5525,
    "codigoExterno": "1234568",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": []
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar vendedor o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Vendedor no encontrado 500: Error interno
Zonas

POST /wms/altaZona

Crea o actualiza una zona geográfica o de ruteo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigoExterno": "123HDG",
    "nombre": "Nombre de la zona",
    "despachoBloqueado": 0,
    "orden": 1
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar zona o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaZona

Consulta una zona por su código o nombre.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "54654",
    "nombre": "Nombre de la zona",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": []
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar zona o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Zona no encontrada 500: Error interno
Canales

POST /wms/altaCanales

Crea o actualiza un canal de venta.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "codigo": "123HDG",
    "nombre": "Nombre del canal"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar canal o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaCanales

Consulta un canal de venta por su ID interno o código.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idCanal": 5525,
    "codigo": "1234568",
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "data": []
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar canal o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Canal no encontrado 500: Error interno
Devolución

POST /wms/altaDevolucion

Registra una devolución de productos.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "id_propietario": "P2",
    "numeroOrigen": 12088,
    "prefijo": "0000",
    "numero": "1231222",
    "items": [
        {
            "coditm": "5100SF",
            "cantidad1": 12,
            "cantidad2": 5,
            "motivoRechazo": 1
        }
    ]
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al registrar devoluci\u00f3n o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno
Documentos

POST /wms/altaDocumento

Asocia un documento (Factura, Remito) a una entrega existente usando la referencia.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "referencia": "10340-2025-09-15",
    "nombreDocumento": "Factura",
    "numero": "0006-00097099"
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": []
}
Response (error):
{
    "success": false,
    "error": "Error al asociar documento o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Entrega no encontrada por referencia 500: Error interno
Marcas

POST /wms/altaMarcas

Crea o actualiza una marca (para productos, equipos, etc.).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "Nombre de la marca",
    "producto": 1,
    "equipo": 0,
    "neumatico": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "id": 1
    }
}
Response (error):
{
    "success": false,
    "error": "Error al crear\/actualizar marca o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/consultaMarcas

Consulta marcas por nombre y tipo.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "nombre": "Nombre marca",
    "producto": 1
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "marcas": [
            {
                "id": 1,
                "nombre": "Nombre marca",
                "producto": "Si",
                "neumatico": "No",
                "equipo": "No"
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar marcas o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Marcas no encontradas 500: Error interno
Movimientos

POST /wms/consultaMovimientos

Consulta movimientos de stock (ajustes, transferencias) pendientes de marcar.

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "completo": 0
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": {
        "Movimientos": [
            {
                "idRef": 12554,
                "fecha": "2022-11-16",
                "idComprobante": 1,
                "nombreComprobante": "Ajuste",
                "numero": 345,
                "negativos": [
                    {
                        "codigoProducto": "5326",
                        "nombreProducto": "GENAURHS-610R",
                        "cantidad": -1,
                        "idCalidad": 1,
                        "nombreCalidad": "Disponible",
                        "fechavto": null,
                        "lote": "",
                        "nroserie": null
                    }
                ],
                "positivos": [
                    {
                        "codigoProducto": "5378",
                        "nombreProducto": "GENAURHS-625J",
                        "cantidad": 1,
                        "idCalidad": 1,
                        "nombreCalidad": "Disponible",
                        "fechavto": null,
                        "lote": "",
                        "nroserie": null
                    }
                ]
            }
        ]
    }
}
Response (error):
{
    "success": false,
    "error": "Error al consultar movimientos o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 500: Error interno

POST /wms/marcaMovimientos

Marca un movimiento de stock como consultado (para el flujo de consultaMovimientos).

Headers:
{
    "Authorization": "Bearer {access_token}"
}
Request:
{
    "idDadorDeCarga": 1,
    "idRef": 12554
}
Response (éxito):
{
    "success": true,
    "error": null,
    "unauthorized": false,
    "result": []
}
Response (error):
{
    "success": false,
    "error": "Error al marcar movimiento o token inv\u00e1lido",
    "unauthorized": true,
    "result": null
}
200: Éxito 400: Datos inválidos 401: No autorizado / Token inválido 404: Movimiento no encontrado 500: Error interno