Historial de cambios
Cambios importantes del API de TEALCA.
[Sin publicar]
Seguridad
POST /label: solo genera etiquetas de guías a las que el usuario tiene acceso. Una guía fuera de ese acceso ahora devuelve el error de guía no encontrada, igual queGET /shipment/{shipment_identification}/label.
[1.5.0] - 2026-09-29
Agregado
POST /shipment/price-calculationyGET /shipment/{shipment_identification}/price-calculation: cada elemento dequoteincluye el campois_invoiced, verdadero si el monto ya fue facturado para la guía, falso si es una cotización calculada al momento de la solicitud.
Cambiado
POST /shipment,POST /preshipmentyPOST /warehouse/delivery-order: ahora empareja una cuenta existente aunque la identificación tenga espacios finales o distinta capitalización, en lugar de crear una cuenta duplicada.- En esos mismos endpoints,
shipper_phoneyconsignee_phoneen la respuesta ahora son siempre el número de teléfono normalizado. POST /label: el camposhipment_identificationsacepta un máximo de 20 elementos por solicitud.
Corregido
POST /shipment,POST /shipment/price-calculation,POST /preshipment,POST /warehouse/delivery-order,GET /customer/{customer_identification}/shipments,POST /documentyPOST /manifest: una identificación, número de teléfono o identificación de conductor con salto de línea al final ahora se rechaza en lugar de aceptarse.POST /shipment,POST /preshipmentyPOST /warehouse/delivery-order: una guía o preguía sin teléfono o correo del remitente o destinatario ahora devuelve un error de validación claro en lugar de fallar inesperadamente. También reutiliza un teléfono o correo ya dado para la misma cuenta en otra parte de la solicitud.- En esos mismos endpoints, enviar el mismo cliente nuevo más de una vez en una solicitud ya no lo rechaza ni lo guarda con el nombre literal "None".
- En esos mismos endpoints, enviar la misma dirección de remitente o destinatario más de una vez en una solicitud ya no crea direcciones duplicadas.
POST /shipment,POST /shipment/price-calculation,POST /preshipmentyPOST /warehouse/delivery-order: un cliente corporativo sin contrato configurado ahora recibe un error claro que lo identifica, en lugar de un error inesperado.POST /shipment/price-calculation,GET /shipment/{shipment_identification}/price-calculationyPOST /shipment: las excepciones e inclusiones de items de contrato limitadas a una tienda o a un tipo de tienda ahora se aplican correctamente.quote[].itemsy el precio total de la guía ahora reflejan solo los cargos que corresponden a las tiendas reales de la guía.POST /label: el código de barras impreso en la etiqueta ahora se mantiene dentro de la grilla de puntos de la impresora para guías con códigos de localidad largos. Ya no incluye un espacio final proveniente del código de localidad.
[1.4.0] - 2026-09-15
Agregado
GET /store,GET /store/{code}yGET /store/coverage: cada tienda incluye el campois_platform.POST /shipment,GET /shipment/{shipment_identification},POST /shipment/cancel,GET /customer/{customer_identification}/shipments,POST /preshipmentyGET /preshipment/{preshipment_identification}:origin_storeydestination_storeincluyen el campois_platform.GET /location:default_destination_storeincluye el campois_platform.GET /store/coverage: nuevo parámetro opcionallocation_code. Cuando las coordenadas no resuelven a una sola tienda de esa localidad, el endpoint devuelve la plataforma que la atiende.
Cambiado
GET /location:default_destination_storese resuelve con el nuevo algoritmo de cobertura, por lo que puede ser una tienda distinta, puede ser una plataforma y es nulo cuando la localidad no tiene cobertura.POST /shipment,POST /preshipment,POST /shipment/price-calculation,GET /shipment/{shipment_identification}/price-calculation,POST /warehouse/delivery-orderyPOST /shipment-bulk/{header_id}/execute: cuando se omiteorigin.storeodestination.storeen un servicio de oficina, la tienda siempre se resuelve por cobertura, por lo que la tienda asignada puede ser distinta a la asociada a la localidad y puede ser una plataforma.- En esos mismos endpoints, la tienda resuelta por cobertura también se valida contra las tiendas bloqueadas, por lo que ahora se rechaza una guía que llega a una tienda bloqueada sin indicarla.
- En esos mismos endpoints, los errores de cobertura se reportan según su motivo, que incluye zonas sin cobertura, tiendas inactivas, tiendas bloqueadas, tiendas fuera del catálogo y localidades cubiertas por varias tiendas sin una plataforma. El mensaje indica las tiendas candidatas.
POST /shipment,POST /document,POST /manifestyPOST /preshipment: la lista de la respuesta mantiene el orden de la lista enviada en la solicitud.GET /store/coverage: unlocation_codeque no existe se reporta con el error de localidad inexistente, y un punto fuera de cobertura se reporta como no ubicado dentro de un área de cobertura de TEALCA.
Corregido
POST /shipment,POST /preshipment,POST /shipment/price-calculation,GET /shipment/{shipment_identification}/price-calculation,POST /warehouse/delivery-orderyPOST /shipment-bulk/{header_id}/execute: enviarorigin.coordinatesodestination.coordinatespara recolección o entrega a domicilio ya no produce un error del servidor.- En esos mismos endpoints, cada guía se tarifa con la zona que le corresponde, lo que evita que una guía se tarife con la zona de otra.
[1.3.0] - 2026-09-09
Cambiado
POST /shipment,POST /preshipmentyPOST /document: el nombre de una persona natural debe contener al menos dos palabras, y el nombre de una cuenta jurídica acepta además el carácter+.
Corregido
POST /shipment,POST /preshipmentyPUT /shipment/{shipment_header_id}/shipment-parcel: El mensaje de error al intentar crear guías de clientes corporativos con un factor volumétrico igual o menor a cero ahora indica el código de línea de facturación y el factor configurado, en lugar de ser un mensaje genérico.POST /shipment,POST /preshipmentyPOST /document: el mensaje de error para nombres inválidos distingue entre cuentas naturales y jurídicas.
[1.2.0] - 2026-09-03
Cambiado
GET /tracking/shipment/{shipment_identifier_list}: cada guía en la respuesta incluye los campospreshipment_numberyshipment_partner_id, vacíos cuando la guía no los tiene.POST /shipment,POST /preshipmentyPOST /warehouse/delivery-order: los camposshipment_list,preshipment_listydelivery_order_listaceptan un máximo de 20 elementos por solicitud.
Corregido
POST /shipment: los camposshipper.nameyconsignee.nameaceptan los caracteresñyÑ.
[1.1.0] - 2026-08-27
Agregado
- Todos los endpoints están disponibles también bajo el prefijo
/api/v1/. - Nuevo endpoint
GET /customer/{customer_identification}/shipments: lista las guías donde el cliente es el remitente o el destinatario, con paginación por cursor.
Cambiado
- Registrar un POD (prueba de entrega) mediante
POST /podtambién actualiza el estatus y la información de tracking de la guía. POST /pod: el campoaccount_idacepta un UUID en cualquier formato estándar. Los valores mal formados se rechazan durante la validación de la solicitud en lugar de causar un error del servidor.POST /shipment: la creación de guías corporativas se rechaza cuando la tienda destino (destination.store) no está disponible, o está bloqueada, para el contrato de la línea de facturación. El mensaje de error identifica la guía, la tienda y el motivo.
Obsoleto
- Las rutas sin el prefijo
/api/v1/se eliminarán próximamente. Se recomienda migrar a las rutas versionadas.
Corregido
PUT /shipment/{shipment_header_id}/shipment-parcel: el parámetro de la ruta acepta el ID de la guía o el número de guía.POST /shipment: los valores deshipment_header_referenceusados por guías anuladas o sustituidas pueden reutilizarse en nuevas guías.
[1.0.0] - 2026-08-20
Agregado
- Nuevo endpoint
GET /preshipment: devuelve las preguías creadas entredate_fromydate_to, cada una con su remitente, destinatario, estado actual, la fecha en que alcanzó cada etapa y los pesos declarado, validado y facturado. Los resultados se paginan concursorypage_size. El rango máximo por consulta es de 31 días. - Nuevos endpoints
/shipment-bulkpara el nuevo proceso de carga masiva de guías en MiTealca:POST /shipment-bulk,GET /shipment-bulk/list,GET /shipment-bulk/{header_id},GET /shipment-bulk/{header_id}/progressyGET /shipment-bulk/{header_id}/file.
Cambiado
GET /tracking/shipment/{shipment_identifier_list}: cada registro de tracking incluye el campoevent_id, junto coneventyevent_category, para que los sistemas que lo consumen puedan reaccionar sin depender del texto.
Corregido
- Correcciones de errores en cotización (
POST /shipment/price-calculationyGET /shipment/{shipment_identification}/price-calculation), creación de guías (POST /shipment) y la documentación pública en/api/docs.