PEPortal Emisión Developers · Integrations API
OpenAPI YAML ↓
API v1 · Documentación oficial

Integra ventas con confianza.

Reporta ventas externas, valida productos y administra órdenes con las mismas reglas comerciales que utiliza Portal Emisión internamente.

Base URL: Auth: Bearer JWT Timezone: America/Caracas

Arquitectura

Un espacio seguro para tu integración

Cada credencial accede únicamente al espacio asignado en Portal Emisión. Allí estarán disponibles sus productos, configuraciones y ventas, sin parámetros adicionales en cada solicitud.

01Venta confirmada

Al reportar, el integrador declara que procesó y confirmó el pago en su propio sistema.

02Cálculo interno

Portal Emisión vuelve a calcular precios, edades, días, promociones, recargos y riders.

03Acceso independiente

La integración solo consulta y administra la información disponible en su espacio asignado.

order_idUUID público e inmutable de Portal Emisión.
system_codeCódigo visible generado por nuestro sistema.
external_codeCódigo único de la venta en el sistema integrador.

Primeros pasos

Flujo recomendado

Paso 1Obtener token JWT
Paso 2Consultar catálogo
Paso 3Reportar la venta
Paso 4Guardar los 3 códigos
No generes un token por cada método.

Reutiliza el JWT mientras esté vigente. Solicita uno nuevo al expirar.

Autenticación

Obtener un token

Usa las credenciales de integración suministradas por Portal Emisión. Por defecto, el token dura 15 minutos.

POST/auth/tokenPúblico

Crear token de acceso

Devuelve un Bearer JWT con los permisos habilitados para la integración.

CampoTipoUso
email REQUERIDOemailCorreo asignado a la integración.
password REQUERIDOstringContraseña asignada a la integración.
Ejemplo
Respuesta · 200

Operación principal

Reportar una venta estándar

Este método representa el 95% de las integraciones previstas. La venta ya debe haber sido procesada y confirmada como pagada por el sistema externo.

POST/reported-ordersorders:report

Crear una orden desde una venta externa

!
No envíes forma de pago, referencia, cotización ni importes.

La venta debe estar procesada y pagada en el sistema externo. Portal Emisión validará el producto y calculará el valor oficial con la configuración vigente.

Encabezado obligatorio

HeaderTipoDescripción
Authorization REQUERIDOBearerToken obtenido en /auth/token.
Idempotency-Key REQUERIDOstringIdentifica este intento lógico y evita ventas duplicadas.

Campos de la solicitud

CampoTipoDescripción
external_code REQUERIDOstringCódigo único de la venta dentro del espacio de integración.
plan_id REQUERIDOintegerID obtenido del catálogo.
trip REQUERIDOobjectOrigen, territorio, inicio y fin del viaje.
emergency_contact REQUERIDOobjectNombre completo, correo y teléfono.
passengers REQUERIDOarrayUno o más pasajeros con correo y teléfono.
riders OPCIONALarrayRiders asociados por documento de pasajero.
Solicitud completa
Respuesta · 201

Operación especializada

Reportar Brasil y emitir con HERO

Mantiene la estructura estándar y añade únicamente la información regulatoria solicitada por HERO. Admite exactamente un pasajero.

POST/reported-orders/brazilorders:report
Campo BrasilTipoRegla
brazil.has_cpf REQUERIDObooleanDefine si el documento del pasajero es CPF o pasaporte.
brazil.civil_status_id REQUERIDOintegerIdentificador de estado civil aceptado por HERO.
brazil.responsible CONDICIONALobjectNombre y CPF obligatorios cuando el pasajero no posee CPF.
brazil.address REQUERIDOobjectCEP, calle, número, barrio, ciudad y estado.
Solicitud Brasil
Respuesta · 201
!
issue_failed no significa solicitud rechazada.

La venta fue aceptada localmente, pero HERO no confirmó la emisión. Debe revisarse o reintentarse con el flujo operativo correspondiente.

Ciclo de vida

Consultar una orden

GET/orders/{orderId}orders:read

Devuelve el estado, los tres identificadores, vigencia, importes calculados y estado del proveedor cuando aplique.

Consulta
Respuesta · 200

Ciclo de vida

Corregir datos de contacto

PATCH/orders/{orderId}orders:update

Permite corregir contacto de emergencia, correo, teléfono y condiciones médicas antes de las 00:00 del inicio de vigencia en Venezuela.

Actualización
Respuesta · 200

Ciclo de vida

Cancelar antes de la vigencia

DELETE/orders/{orderId}orders:cancel

Cancela una orden estándar. Brasil utiliza solicitud y confirmación separadas con HERO.

Cancelar orden estándar
Respuesta · 200
POST
/orders/{id}/cancellation-requestsSolicita la cancelación Brasil
POST
/orders/{id}/cancellation-confirmationsConfirma dentro de 5 minutos

Auditoría

Consultar aceptadas y rechazadas

GET/submissions?status=rejectedorders:read

Lista intentos procesados por la credencial. Una solicitud rechazada conserva sus errores para consulta, pero no crea una orden válida ni activa una cobertura.

Consultar rechazos
Respuesta · 200

Notificaciones

Webhooks firmados

Registra un receptor HTTPS. El secreto se devuelve una sola vez y cada evento se firma con HMAC-SHA256.

POST/webhookswebhooks:manage
EventoCuándo se emite
order.createdOrden aceptada y activa.
order.updatedDatos de contacto corregidos.
order.cancelledCancelación confirmada.
order.issue_failedOrden aceptada, pero proveedor externo falló.
Registrar receptor
Respuesta · 201
Verifica la firma antes de procesar.

Calcula HMAC-SHA256 sobre X-Portal-Timestamp + "." + cuerpo_json y compara el resultado en tiempo constante.

Confiabilidad

Errores e idempotencia

Todas las respuestas de negocio incluyen un código estable y un request_id para soporte y trazabilidad.

HTTPSignificadoAcción recomendada
401Token inválido o expirado.Obtén un token nuevo.
403La cuenta o el alcance no permite la operación.Revisa las credenciales y permisos habilitados.
409Conflicto de código, idempotencia o vigencia.No repitas la venta; consulta su estado.
422Estructura o regla comercial inválida.Corrige los datos y usa una llave nueva.
500/502Fallo técnico interno o de proveedor.Reintenta con la misma llave.
!
¿Misma llave o llave nueva?

Reutiliza la misma Idempotency-Key cuando el contenido no cambió y solo hubo un fallo de red. Si corriges una solicitud rechazada, genera una llave nueva.