### POST /api/integration/v1/preenvio Source: https://integration.99envios.app/api-docs-json?v=1791769138 Creates a pre-shipment (preenvio) and returns the generated guide. Requires JWT authentication via bearer token. ```APIDOC ## POST /api/integration/v1/preenvio ### Description Creates a pre-shipment (preenvio) and returns the generated guide. Requires JWT authentication via bearer token. ### Method POST ### Endpoint /api/integration/v1/preenvio ### Parameters #### Request Body - **origenCreacion** (integer) - Required - Origin creation indicator (example: 1) ### Request Example { "origenCreacion": 1 } ### Response #### Success Response (200) - **numeroPreenvio** (string) - Pre-shipment number - **fechaVencimiento** (null) - Expiration date (null if not applicable) - **fechaCreacion** (string) - Creation date and time - **valorFlete** (integer) - Freight value - **estadoRecogida** (boolean) - Pickup status - **numeroRecogida** (integer) - Pickup number - **mensaje** (string) - Success message #### Response Example { "numeroPreenvio": "954101306101", "fechaVencimiento": null, "fechaCreacion": "2025-10-01 15:18:07", "valorFlete": 11596, "estadoRecogida": false, "numeroRecogida": 0, "mensaje": "preenvio envia creado con exito" } ### Error Responses #### 401 Unauthorized - **error** (string) - Description of authentication failure (e.g., invalid JWT token or integration token) #### 403 Forbidden - **error** (string) - Description of permission failure (e.g., user blocked or not active branch) #### 404 Not Found - **error** (string) - Description of missing branch data or branch not found #### 422 Unprocessable Entity - **error** (string) - Description of invalid data provided ### Security - **bearerAuth** - JWT authentication required ``` -------------------------------- ### POST /api/integration/v1/pdf/{tipo_pdf?} Source: https://integration.99envios.app/api-docs-json?v=1791769138 Generates a PDF for a transport guide. The tipo_pdf path parameter is optional and defaults to 2 (normal format), with 1 for sticker format. ```APIDOC ## POST /api/integration/v1/pdf/{tipo_pdf?} ### Description Generates a PDF for a transport guide. The tipo_pdf path parameter is optional and defaults to 2 (normal format), with 1 for sticker format. ### Method POST ### Endpoint /api/integration/v1/pdf/{tipo_pdf?} ### Parameters #### Path Parameters - **tipo_pdf** (integer) - Optional - Type of PDF to generate: 1 = sticker format, 2 = normal format (default: 2) ### Response #### Success Response (200) - **PDF content** - The generated PDF file (binary) ### Error Responses #### 401 Unauthorized - **error** (string) - Description of authentication failure (e.g., invalid JWT token or integration token) #### 403 Forbidden - **error** (string) - Description of permission failure (e.g., user blocked or not active branch) #### 404 Not Found - **error** (string) - Description of missing branch data or branch not found #### 422 Unprocessable Entity - **error** (string) - Description of invalid data provided ### Security - **bearerAuth** - JWT authentication required ``` -------------------------------- ### GET /api/integration/sucursal/novedades/{codigo_sucursal} Source: https://integration.99envios.app/api-docs-json?v=1791769138 Este endpoint devuelve las novedades asociadas a una sucursal específica, identificada por su código. Es útil para consultar las novedades de envíos de una sucursal. ```APIDOC ## GET /api/integration/sucursal/novedades/{codigo_sucursal} ### Description Este endpoint devuelve las novedades asociadas a una sucursal específica, identificada por su código. ### Method GET ### Endpoint /api/integration/sucursal/novedades/{codigo_sucursal} ### Parameters #### Path Parameters - **codigo_sucursal** (integer) - Required - Código de la sucursal a buscar. ### Response #### Success Response (200) - **message** (string) - Mensaje de éxito. - **codigo_sucursal** (integer) - Código de la sucursal. - **novedades** (array) - Lista de novedades. - **id** (integer) - Identificador de la novedad. - **codigo_sucursal** (integer) - Código de la sucursal. - **numero_preenvio** (integer) - Número de preenvío. - **id_transportadora** (integer) - Identificador de la transportadora. - **novedad** (string) - Descripción de la novedad. - **tipo_novedad** (string) - Tipo de novedad. - **dice_contener** (string) - Contenido declarado. - **nombre_destinatario** (string) - Nombre del destinatario. - **direccion_destinatario** (string) - Dirección del destinatario. - **telefono_destinatario** (string) - Teléfono del destinatario. #### Response Example { "message": "Novedades encontradas.", "codigo_sucursal": 58732, "novedades": [ { "id": 1, "codigo_sucursal": 58732, "numero_preenvio": 250000266, "id_transportadora": 3, "novedad": "nuevo intento de entrega", "tipo_novedad": "nuevo intento de entrega", "dice_contener": "camisa sport", "nombre_destinatario": "Juan Carlos", "direccion_destinatario": "Avenida Calle 3 # 41ª-57B Edificio 123 Torre 3 APTO 43", "telefono_destinatario": "string" } ] } ``` -------------------------------- ### POST /api/envios/generar-pdf Source: https://integration.99envios.app/api-docs-json?v=1791769138 Generates a PDF for a shipping guide. Requires a valid JWT token and the guide number, carrier country and name, and optionally the AplicaContrapago flag if the carrier is Servientrega. ```APIDOC ## POST /api/envios/generar-pdf ### Description Genera un PDF para una guía de transporte. Requiere un token JWT válido y los datos de la guía y la transportadora. ### Method POST ### Endpoint /api/envios/generar-pdf ### Parameters #### Request Body - **guia** (integer) - Required - Número de la guía de transporte - **transportadora.pais** (string) - Required - País de la transportadora - **transportadora.nombre** (string) - Required - Nombre de la transportadora - **AplicaContrapago** (boolean) - Required - Indica si aplica contrapago (requerido si la transportadora es Servientrega) ### Request Example { "guia": 123456, "transportadora": { "pais": "colombia", "nombre": "servientrega" }, "AplicaContrapago": true } ### Response #### Success Response (200) - PDF generado exitosamente. #### Error Responses - **401** - Token JWT inválido, expirado o no proporcionado. - **403** - Usuario no tiene permisos para realizar esta acción. - **404** - Sucursal no encontrada. - **422** - Los datos proporcionados no son válidos. ### Security - **bearerAuth** - JWT Bearer token authentication ``` -------------------------------- ### POST /api/integration/sucursal/novedades/{id} Source: https://integration.99envios.app/api-docs-json?v=1791769138 This endpoint allows updating the data of a specific notification (novedad) identified by its ID. It requires authentication and the request body must include the guide number and branch notification details. ```APIDOC ## POST /api/integration/sucursal/novedades/{id} ### Description Este endpoint permite actualizar los datos de una novedad específica. ### Method POST ### Endpoint /api/integration/sucursal/novedades/{id} ### Parameters #### Path Parameters - **id** (string) - Required - ID de la novedad a actualizar. #### Request Body - **numero_guia** (string) - Required - Número de guía de la novedad. - **novedad_sucursal** (object) - Required - Datos de la novedad de sucursal. ### Request Example { "numero_guia": "string", "novedad_sucursal": {} } ### Response #### Success Response (200) - **data** (object) - Datos de la novedad actualizada. #### Response Example { "data": { "id": 1, "numero_guia": "3012884943", "ciudad_destinatario": "ARMENIA/ARMENIA", "observaciones": "nuevo intento de entrega por nuevo pago", "reclamo_oficina": 1, "created_at": "2025-03-31", "updated_at": "2025-03-31" } } #### Error Responses - **401** - No autorizado: usuario no autenticado. - message: "No autorizado: usuario no autenticado" - **404** - No se encontró la sucursal o no hay novedades. - message: "No se encontraron novedades para el código de sucursal proporcionado." ### Security - bearerAuth ``` -------------------------------- ### POST /api/integration/v1/cotizar Source: https://integration.99envios.app/api-docs Permite generar una cotización de envío con múltiples transportadoras colombianas. El usuario debe estar autenticado con JWT. Se pueden realizar máximo 300 cotizaciones por hora. ```APIDOC ## [POST] /api/integration/v1/cotizar ### Description Endpoint para autenticar un usuario mediante JWT y generar una cotización con diferentes transportadoras en Colombia (Interrapidísimo, TCC, Servientrega, Coordinadora y Envia). Se pueden realizar máximo 300 cotizaciones por hora. ### Authorization _bearerAuth_ ### Method POST ### Endpoint /api/integration/v1/cotizar ### Request Body (application/json) - **destino** (object) - Required - Destino del envío - **origen** (object) - Required - Origen del envío - **IdTipoEntrega** (integer) - Required - ID del tipo de entrega - **IdServicio** (integer) - Required - ID del servicio de entrega - **valorDeclarado** (number) - Required - Valor declarado del paquete - **peso** (number) - Required - Peso del paquete en kilogramos - **alto** (number) - Required - Alto del paquete en centímetros - **largo** (number) - Required - Largo del paquete en centímetros - **ancho** (number) - Required - Ancho del paquete en centímetros - **fecha** (string) - Required - Fecha de envío en formato d-m-Y - **seguro99** (boolean or null) - Optional - Indica si aplica seguro adicional. Si seguro99plus es true, este campo se ignora. - **seguro99plus** (boolean or null) - Optional - Indica si aplica seguro plus. Tiene prioridad sobre seguro99. - **AplicaContrapago** (boolean) - Required - Indica si aplica contrapago ### Request Example { "destino": { "nombre": "", "codigo": "68001000" }, "origen": { "nombre": "", "codigo": "" }, "IdTipoEntrega": 1, "IdServicio": 1, "valorDeclarado": 50000, "peso": 1, "alto": 1, "largo": 1, "ancho": 1, "fecha": "28-06-2024", "seguro99": false, "seguro99plus": false, "AplicaContrapago": true } ### Response #### Success Response (200) Cotización generada exitosamente para todas las transportadoras. #### Response Example { "interrapidisimo": { "mensaje": "cotizacion exitosa", "valor": 12880, "valor_contrapago": 2500, "comision_interna": 0, "sobreflete": 600, "dias": "-29", "IdServicio": 3, "fecha_entrega": "2025-09-02T18:00:00", "seguro99": 0, "exito": true }, "tcc": { "mensaje": "cotizacion exitosa", "valor": 11130, "valor_contrapago": 3000, "valor_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": null, "seguro99": 0, "exito": true }, "servientrega": { "mensaje": "cotizacion exitosa", "valor": 13800, "valor_contrapago": 3500, "comision_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": null, "seguro99": 0, "exito": true }, "coordinadora": { "mensaje": "cotizacion exitosa", "valor": 13100, "valor_contrapago": 3000, "comision_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": "2025-10-08", "seguro99": 0, "exito": true }, "envia": { "mensaje": "cotizacion exitosa", "valor": 13368, "valor_contrapago": 3000, "comision_interna": 0, "sobreflete": 600, "dias": 1, "IdServicio": 12, "fecha_entrega": null, "porcentaje_seguro_99": 0, "seguro99": 0, "exito": true } } ### Error Responses - **401**: Cuando el token de validación no corresponde a la sucursal o por tiempo a expirado. - **403**: Cuando el susario ha sido bloqueado o el usuario no es una sucursal activa. - **404**: Cuando la sucursal le faltan algunos datos o no es una sucursal. - **422**: Cuando en el json enviado a el endpont le faltan datos o tiene algun atribuno que no corresponde con un dato del atributo. - **429**: Cuando la sucursal supera las 300 cotizaciones en una hora, tiene que esperar a que pase menos de 60 minutos para volver a cotizar. ``` -------------------------------- ### POST /api/integration/v1/preenvio Source: https://integration.99envios.app/api-docs-json?v=1791769138 Realiza un preenvío para distintas transportadoras. Requiere autenticación JWT. Los headers X-Integration-Token y X-Integration-Id son opcionales. ```APIDOC ## POST /api/integration/v1/preenvio ### Description Realiza un preenvío para distintas transportadoras. Requiere autenticación JWT. Los headers X-Integration-Token y X-Integration-Id son opcionales. ### Method POST ### Endpoint /api/integration/v1/preenvio ### Parameters #### Header Parameters - **X-Integration-Token** (string) - Optional - Token de autenticación de integración (opcional). - **X-Integration-Id** (string) - Optional - ID de la integración (opcional). #### Request Body - **IdTipoEntrega** (integer) - Required - ID del tipo de entrega (solo acepta valor 1 para entrega en domicilio). - **IdServicio** (integer) - Required - ID del servicio (solo acepta valor 1 para estándar). - **AplicaContrapago** (boolean) - Required - Indica si aplica contrapago. - **peso** (number) - Required - Peso del paquete en kilogramos. - **largo** (number) - Required - Largo del paquete en centímetros. - **ancho** (number) - Required - Ancho del paquete en centímetros. - **alto** (number) - Required - Alto del paquete en centímetros. - **diceContener** (string) - Required - Descripción del contenido del paquete. - **valorDeclarado** (number) - Required - Valor declarado del paquete. - **Destinatario.tipoDocumento** (string) - Required - Tipo de documento del destinatario. - **Destinatario.nombre** (string) - Required - Nombre del destinatario. - **Destinatario.primerApellido** (string) - Required - Primer apellido del destinatario. - **Destinatario.telefono** (string) - Required - Teléfono del destinatario. - **Destinatario.direccion** (string) - Required - Dirección del destinatario. - **Destinatario.idLocalidad** (integer) - Required - ID de la localidad del destinatario. - **transportadora.pais** (string) - Required - País de la transportadora. - **transportadora.nombre** (string) - Required - Nombre de la transportadora. - **origenCreacion** (string) - Required - Origen de creación. ### Request Example ```json { "IdTipoEntrega": 1, "IdServicio": 1, "AplicaContrapago": true, "peso": 5, "largo": 30.5, "ancho": 20, "alto": 15, "diceContener": "Documentos", "valorDeclarado": 100.0, "Destinatario": { "tipoDocumento": "CC", "nombre": "Juan", "primerApellido": "Pérez", "telefono": "3001234567", "direccion": "Calle 123", "idLocalidad": 1 }, "transportadora": { "pais": "CO", "nombre": "Coordinadora" }, "origenCreacion": "api" } ``` ### Response #### Success Response (200) - **guia** (string) - Número de guía generado. - **estado** (string) - Estado del envío. #### Response Example ```json { "guia": "123456789", "estado": "generada" } ``` ### Error Handling - **400 Bad Request**: Error de validación en los datos enviados. - **401 Unauthorized**: Autenticación JWT inválida o ausente. - **429 Too Many Requests**: Límite de cotizaciones alcanzado. Respuesta de ejemplo: ```json { "error": "Has alcanzado el límite de 300 cotizaciones por hora.", "retry_after": "15 minutos" } ``` ``` -------------------------------- ### POST /api/integration/v1/pdf/{tipo_pdf?} Source: https://integration.99envios.app/api-docs Genera un PDF de una guía de transporte. Requiere autenticación JWT (bearerAuth). Permite elegir entre formato sticker (1) o normal (2, predeterminado). ```APIDOC ## POST /api/integration/v1/pdf/{tipo_pdf?} ### Description Genera un PDF de una guía de transporte, autenticando al usuario mediante JWT (bearerAuth). ### Method POST ### Endpoint /api/integration/v1/pdf/{tipo_pdf?} ### Parameters #### Path Parameters - **tipo_pdf** (integer, enum: 1, 2) - Opcional - Tipo de PDF a generar (por defecto 2): 1 = formato sticker, 2 = formato normal. #### Request Body (application/json, required) - **guia** (integer, required) - Número de la guía de transporte. - **transportadora** (object) - Transportadora, incluye campos como `pais` y `nombre`. - **AplicaContrapago** (boolean, required) - Indica si aplica contrapago (requerido si la transportadora es Servientrega). ### Request Example ```json { "guia": 123456, "transportadora": { "pais": "colombia", "nombre": "servientrega" }, "AplicaContrapago": true } ``` ### Response #### Success Response (200) PDF generado exitosamente. #### Error Responses - **401**: Token JWT inválido, expirado o no proporcionado. - **403**: Usuario no tiene permisos para realizar esta acción. - **404**: Sucursal no encontrada. - **422**: Los datos proporcionados no son válidos. ``` -------------------------------- ### POST /api/integration/v1/login Source: https://integration.99envios.app/api-docs-json?v=1791769138 Authenticates a user with email and password, returning a JWT token on success. ```APIDOC ## POST /api/integration/v1/login ### Description Inicio de sesión de usuario. Permite a los usuarios autenticarse mediante email y contraseña. Si las credenciales son correctas, devuelve un token JWT. ### Method POST ### Endpoint /api/integration/v1/login ### Parameters #### Request Body - **email** (string, email) - Required - Email del usuario - **password** (string, password) - Required - Contraseña del usuario ### Request Example { "email": "usuario@ejemplo.com", "password": "123456" } ### Response #### Success Response (200) - **token** (string) - Token JWT generado #### Response Example { "token": "eyJhbGciOiJIUzI1NiIsInR5..." } #### Error Response (401) Credenciales incorrectas #### Error Response (422) Error de validación, los campos email o password están ausentes o son inválidos #### Error Response Example (422) { "error": "Los datos proporcionados no son válidos." } ``` -------------------------------- ### Solicitud de cotización con varias transportadoras Source: https://integration.99envios.app/api-docs Cuerpo de la solicitud para el endpoint POST /api/integration/v1/cotizar. Incluye los objetos destino y origen, el tipo de entrega, servicio, valor declarado, peso, dimensiones, fecha en formato d-m-Y, y los campos opcionales seguro99 y seguro99plus. El campo AplicaContrapago es obligatorio. ```json { "destino": { "nombre": "", "codigo": "68001000" }, "origen": { "nombre": "", "codigo": "" }, "IdTipoEntrega": 1, "IdServicio": 1, "valorDeclarado": 50000, "peso": 1, "alto": 1, "largo": 1, "ancho": 1, "fecha": "28-06-2024", "seguro99": false, "seguro99plus": false, "AplicaContrapago": true } ``` -------------------------------- ### POST /cotizar Source: https://integration.99envios.app/api-docs-json?v=1791769138 Endpoint para cotizar envíos. Permite a una sucursal obtener precios y tiempos de entrega de múltiples transportadoras. Requiere un token JWT válido y datos de envío en el cuerpo de la solicitud. ```APIDOC ## POST /cotizar ### Description Endpoint para cotizar envíos. Permite a una sucursal obtener precios y tiempos de entrega de múltiples transportadoras. Requiere un token JWT válido y datos de envío en el cuerpo de la solicitud. ### Method POST ### Endpoint /cotizar ### Parameters #### Request Body - **origen** (object) - Required - Datos del origen del envío. - **destino** (object) - Required - Datos del destino del envío. - **paquete** (object) - Required - Datos del paquete a enviar. ### Request Example { "origen": {}, "destino": {}, "paquete": {} } ### Response #### Success Response (200) - **sobreflete** (object) - Cotización de la transportadora sobreflete. - **envia** (object) - Cotización de la transportadora envia. - **servientrega** (object) - Cotización de la transportadora servientrega. - **coordinadora** (object) - Cotización de la transportadora coordinadora. #### Response Example { "sobreflete": { "mensaje": "cotizacion exitosa", "valor": 13800, "valor_contrapago": 3500, "comision_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": null, "seguro99": 0, "exito": true }, "servientrega": { "mensaje": "cotizacion exitosa", "valor": 13800, "valor_contrapago": 3500, "comision_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": null, "seguro99": 0, "exito": true }, "coordinadora": { "mensaje": "cotizacion exitosa", "valor": 13100, "valor_contrapago": 3000, "comision_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": "2025-10-08", "seguro99": 0, "exito": true }, "envia": { "mensaje": "cotizacion exitosa", "valor": 13368, "valor_contrapago": 3000, "comision_interna": 0, "sobreflete": 600, "dias": 1, "IdServicio": 12, "fecha_entrega": null, "porcentaje_seguro_99": 0, "seguro99": 0, "exito": true } } ### Error Responses #### 401 Unauthorized - **error** (string) - Token JWT inválido, expirado o no proporcionado. #### 403 Forbidden - **error** (string) - Usuario no tiene permisos para realizar esta acción. #### 404 Not Found - **error** (string) - Sucursal no encontrada. #### 422 Unprocessable Entity - **error** (string) - Los datos proporcionados no son válidos. #### 429 Too Many Requests - **error** (string) - La sucursal supera las 300 cotizaciones en una hora, tiene que esperar a que pase menos de 60 minutos para volver a cotizar. ``` -------------------------------- ### Respuesta 200 de cotización con varias transportadoras Source: https://integration.99envios.app/api-docs Respuesta exitosa (código 200) del endpoint de cotización. Contiene un objeto por cada transportadora (Interrapidísimo, TCC, Servientrega, Coordinadora y Envia) con mensaje, valor, valor de contrapago, comisión interna, sobreflete, días, IdServicio, fecha de entrega, seguro99 y exito. ```json { "interrapidisimo": { "mensaje": "cotizacion exitosa", "valor": 12880, "valor_contrapago": 2500, "comision_interna": 0, "sobreflete": 600, "dias": "-29", "IdServicio": 3, "fecha_entrega": "2025-09-02T18:00:00", "seguro99": 0, "exito": true }, "tcc": { "mensaje": "cotizacion exitosa", "valor": 11130, "valor_contrapago": 3000, "valor_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": null, "seguro99": 0, "exito": true }, "servientrega": { "mensaje": "cotizacion exitosa", "valor": 13800, "valor_contrapago": 3500, "comision_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": null, "seguro99": 0, "exito": true }, "coordinadora": { "mensaje": "cotizacion exitosa", "valor": 13100, "valor_contrapago": 3000, "comision_interna": 0, "sobreflete": 600, "dias": "0", "IdServicio": 2, "fecha_entrega": "2025-10-08", "seguro99": 0, "exito": true }, "envia": { "mensaje": "cotizacion exitosa", "valor": 13368, "valor_contrapago": 3000, "comision_interna": 0, "sobreflete": 600, "dias": 1, "IdServicio": 12, "fecha_entrega": null, "porcentaje_seguro_99": 0, "seguro99": 0, "exito": true } } ``` -------------------------------- ### Generar PDF de guía de transporte - Request Body Source: https://integration.99envios.app/api-docs Cuerpo de la solicitud para generar un PDF de una guía de transporte. Incluye el número de guía, la transportadora (con país y nombre) y el campo AplicaContrapago, que es requerido si la transportadora es Servientrega. ```json { "guia": 123456, "transportadora": { "pais": "colombia", "nombre": "servientrega" }, "AplicaContrapago": true } ``` -------------------------------- ### Respuesta 200 de preenvío exitoso Source: https://integration.99envios.app/api-docs Respuesta exitosa (código 200) del endpoint de preenvío. Devuelve el número de preenvío generado, la fecha de creación, el valor del flete y un mensaje de éxito. ```json { "numeroPreenvio": "954101306101", "fechaVencimiento": null, "fechaCreacion": "2025-10-01 15:18:07", "valorFlete": 11596, "estadoRecogida": false, "numeroRecogida": 0, "mensaje": "preenvio envia creado con exito" } ``` -------------------------------- ### Solicitud de preenvío con autenticación JWT Source: https://integration.99envios.app/api-docs Cuerpo de solicitud para el endpoint POST /api/integration/v1/preenvio. Incluye campos obligatorios como IdTipoEntrega (solo 1), IdServicio (solo 1), peso, dimensiones, diceContener, valorDeclarado y origenCreacion (solo 1). Los campos seguro99 y seguro99plus son opcionales; si seguro99plus es true, seguro99 se ignora. ```json { "IdTipoEntrega": 1, "IdServicio": 1, "AplicaContrapago": true, "peso": 5, "largo": 30.5, "ancho": 25, "alto": 15, "diceContener": "Documentos", "valorDeclarado": 100000, "seguro99": false, "seguro99plus": false, "Destinatario": { "tipoDocumento": "CC", "numeroDocumento": "123456789", "nombre": "Juan", "primerApellido": "Pérez", "segundoApellido": "García", "telefono": "3111234567", "direccion": "Calle 123 #45-67", "idLocalidad": "11001000", "correo": "juan@example.com" }, "Observaciones": "Paquete frágil", "transportadora": { "pais": "colombia", "nombre": "interrapidisimo" }, "origenCreacion": 1 } ``` -------------------------------- ### PUT /novedades/{id} Source: https://integration.99envios.app/api-docs-json?v=1791769138 Actualiza una novedad existente identificada por su ID. Se debe proporcionar el número de guía, la descripción de la novedad y observaciones adicionales en el cuerpo de la solicitud. ```APIDOC ## [PUT] /novedades/{id} ### Description Actualiza una novedad existente identificada por su ID. Se debe proporcionar el número de guía, la descripción de la novedad y observaciones adicionales en el cuerpo de la solicitud. ### Method PUT ### Endpoint /novedades/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - ID de la novedad a actualizar. #### Request Body - **numero_guia** (integer) - Required - Número de guía asociado a la novedad. - **novedad_sucursal** (string) - Required - Descripción de la novedad en la sucursal. - **observaciones** (string) - Optional - Observaciones adicionales. ### Request Example { "numero_guia": 123456789, "novedad_sucursal": "Paquete retrasado", "observaciones": "El paquete llegará con 2 días de retraso" } ### Response #### Success Response (200) - **message** (string) - Mensaje de éxito. - **novedad_id** (string) - ID de la novedad actualizada. - **updated_data** (object) - Datos actualizados de la novedad. - **numero_preenvio** (string) - Número de preenvío. - **novedad_sucursal** (string) - Descripción de la novedad. - **observaciones** (string) - Observaciones adicionales. #### Response Example { "message": "Novedad registrada con éxito", "novedad_id": "1", "updated_data": { "numero_preenvio": "123456789", "novedad_sucursal": "Paquete retrasado", "observaciones": "El paquete llegará con 2 días de retraso" } } #### Error Responses - **401** - No autorizado: usuario no autenticado. - **message** (string) - "No autorizado: usuario no autenticado" - **404** - Novedad no encontrada. - **message** (string) - "No se encontró la novedad con el ID proporcionado." - **422** - Error de validación. ``` -------------------------------- ### Actualizar novedad - Response 200 Source: https://integration.99envios.app/api-docs Respuesta exitosa (200) al actualizar una novedad. Incluye un mensaje de éxito, el ID de la novedad y los datos actualizados. ```json { "message": "Novedad registrada con éxito", "novedad_id": "1", "updated_data": { "numero_preenvio": "123456789", "novedad_sucursal": "Paquete retrasado", "observaciones": "El paquete llegará con 2 días de retraso" } } ``` -------------------------------- ### Obtener novedades de sucursal - Respuesta 200 Source: https://integration.99envios.app/api-docs Respuesta de ejemplo para el endpoint de obtener novedades de una sucursal. Muestra la estructura de una novedad con detalles del envío, destinatario y observaciones. ```json { "message": "Novedades encontradas.", "codigo_sucursal": "58732", "novedades": [ { "id": 1, "codigo_sucursal": 58732, "numero_preenvio": "250000266", "id_transportadora": 3, "novedad": "nuevo intento de entrega", "tipo_novedad": "nuevo intento de entrega", "dice_contener": "camisa sport", "nombre_destinatario": "Juan Carlos", "direccion_destinatario": "Avenida Calle 3 # 41ª-57B Edificio 123 Torre 3 APTO 43", "telefono_destinatario": "3012884943", "ciudad_destinatario": "ARMENIA/ARMENIA", "observaciones": "nuevo intento de entrega por nuevo pago", "reclamo_oficina": 1, "created_at": "2025-03-31", "updated_at": "2025-03-31" } ] } ``` -------------------------------- ### Actualizar novedad - Request payload Source: https://integration.99envios.app/api-docs Cuerpo de la solicitud para actualizar una novedad. Incluye los campos requeridos numero_guia y novedad_sucursal, y el campo opcional observaciones. ```json { "numero_guia": "123456789", "novedad_sucursal": "Paquete retrasado", "observaciones": "El paquete llegará con 2 días de retraso" } ``` -------------------------------- ### POST /cotizar Source: https://integration.99envios.app/api-docs-json?v=1791769138 Generates a shipping quote for a package across multiple carriers. The request includes package dimensions, weight, declared value, delivery type, service, and optional insurance flags. ```APIDOC ## POST /cotizar ### Description Generates a shipping quote for a package across multiple carriers. The request includes package dimensions, weight, declared value, delivery type, service, and optional insurance flags. ### Method POST ### Endpoint /cotizar ### Parameters #### Request Body - **IdTipoEntrega** (integer) - Required - ID del tipo de entrega - **IdServicio** (integer) - Required - ID del servicio de entrega - **valorDeclarado** (number) - Required - Valor declarado del paquete - **peso** (number) - Required - Peso del paquete en kilogramos - **alto** (number) - Required - Alto del paquete en centímetros - **largo** (number) - Required - Largo del paquete en centímetros - **ancho** (number) - Required - Ancho del paquete en centímetros - **fecha** (string) - Required - Fecha de envío en formato d-m-Y - **seguro99** (boolean) - Optional - Indica si aplica seguro adicional. Si seguro99plus es true, este campo se ignora. - **seguro99plus** (boolean) - Optional - Indica si aplica seguro plus. Tiene prioridad sobre seguro99. - **AplicaContrapago** (boolean) - Required - Indica si aplica contrapago ### Request Example { "IdTipoEntrega": 1, "IdServicio": 1, "valorDeclarado": 50000, "peso": 1, "alto": 1, "largo": 1, "ancho": 1, "fecha": "28-06-2024", "seguro99": false, "seguro99plus": false, "AplicaContrapago": true } ### Response #### Success Response (200) - **interrapidisimo** (object) - Cotización de Interrapidísimo - **tcc** (object) - Cotización de TCC #### Response Example { "interrapidisimo": { "mensaje": "cotizacion exitosa", "valor": 12880, "valor_contrapago": 2500, "comision_interna": 0, "sobreflete": 600, "dias": "-29", "IdServicio": 3, "fecha_entrega": "2025-09-02T18:00:00", "seguro99": 0, "exito": true }, "tcc": { "mensaje": "cotizacion exitosa", "valor": 11130, "valor_contrapago": 3000, "valor_interna": 0 } } ``` -------------------------------- ### POST /api/integration/v1/cotizar Source: https://integration.99envios.app/api-docs-json?v=1791769138 Generates a shipping quote with multiple carriers in Colombia (Interrapidísimo, TCC, Servientrega, Coordinadora, and Envia). Requires authentication via JWT and supports up to 300 quotes per hour. ```APIDOC ## POST /api/integration/v1/cotizar ### Description Generates a shipping quote with multiple carriers in Colombia (Interrapidísimo, TCC, Servientrega, Coordinadora, and Envia). Requires authentication via JWT and supports up to 300 quotes per hour. ### Method POST ### Endpoint /api/integration/v1/cotizar ### Parameters #### Request Body - **destino** (object) - Required - Destination city information. - **nombre** (string, nullable) - Optional - Name of the destination city (can be null). - **codigo** (string) - Required - Code of the destination city. - **origen** (object) - Optional - Origin city information. - **nombre** (string, nullable) - Optional - Name of the origin city (can be null). - **codigo** (string, nullable) - Optional - Code of the origin city (can be null). - **IdTipoEntrega** (type not specified) - Required - Delivery type identifier. - **IdServicio** (type not specified) - Required - Service identifier. - **valorDeclarado** (type not specified) - Required - Declared value. - **peso** (type not specified) - Required - Weight. - **alto** (type not specified) - Required - Height. - **largo** (type not specified) - Required - Length. - **ancho** (type not specified) - Required - Width. - **fecha** (type not specified) - Required - Date. - **AplicaContrapago** (type not specified) - Required - Indicates if cash on delivery applies. ### Request Example { "destino": { "nombre": "", "codigo": "68001000" }, "origen": { "nombre": "", "codigo": "" }, "IdTipoEntrega": "", "IdServicio": "", "valorDeclarado": "", "peso": "", "alto": "", "largo": "", "ancho": "", "fecha": "", "AplicaContrapago": "" } ### Response #### Success Response (200) - **token** (string) - JWT token for authentication. #### Response Example { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } ### Error Handling - **500**: Error en el servidor, no se pudo generar el token ``` -------------------------------- ### Login Success Response Source: https://integration.99envios.app/api-docs Successful login response (200) containing the JWT token. ```json { "token": "eyJhbGciOiJIUzI1NiIsInR5..." } ``` -------------------------------- ### Login Request Payload Source: https://integration.99envios.app/api-docs Request body for the login endpoint. Requires an email and password. If credentials are correct, a JWT token is returned. ```json { "email": "usuario@ejemplo.com", "password": "123456" } ```