Saltar al contenido principal

4. Uso de la API Global (Impersonation)

Una vez que el onboarding de una empresa cliente (tenant) está en estado completado, el Partner tiene la capacidad de consumir cualquier endpoint de la API estándar de facturación de Emizor (la misma que usaría un cliente de manera directa).

No existe una API transaccional separada o limitada para Partners. En su lugar, el Partner simplemente consume la API Global inyectando el contexto de la empresa deseada a través de la cabecera tenant-key.

¿Cómo funciona?

Para realizar operaciones (como emitir facturas, anular documentos, registrar clientes o productos, etc.) sobre una empresa cliente en particular, debes incluir las siguientes cabeceras HTTP en todas tus peticiones a la API Global:

  • Authorization: Bearer <TU_MASTER_TOKEN>
  • tenant-key: <COMPANY_KEY_DE_LA_EMPRESA>

El sistema interceptará la petición, validará que el tenant-key te pertenece, y aislará la ejecución para que interactúe exclusivamente con la base de datos de esa compañía. Si olvidas enviar el tenant-key en una ruta transaccional, el sistema rechazará la petición con un 400 Bad Request genérico indicando que el token es insuficiente para la operación. Por seguridad (Information Disclosure), si un token regular de empresa envía accidentalmente un tenant-key, este será ignorado silenciosamente.


Ejemplo Transaccional: Emitir Factura

  • URL: POST /api/v1/sucursales/{branchCode}/facturas/{sector}
  • Parámetros URL:
    • branchCode: Código de sucursal del SIN (ej. 0 para Casa Matriz).
    • sector: Código del documento sector (ej. 1 para Compra Venta, 2 para Alquileres).
  • Cabeceras Obligatorias:
    • Authorization: Bearer <TU_TOKEN_PARTNER_API>
    • tenant-key: <COMPANY_KEY_DEL_CLIENTE>
  • Content-Type: application/json

Ejemplo de Payload (Documento Sector 1 - Compra Venta)

{
"numeroFactura": 123,
"nombreRazonSocial": "Juan Perez",
"codigoTipoDocumentoIdentidad": 1,
"numeroDocumento": "1234567",
"codigoCliente": "1234567",
"montoTotal": 100.50,
"montoTotalSujetoIva": 100.50,
"montoTotalMoneda": 100.50,
"codigoMoneda": 1,
"codigoMetodoPago": 1,
"tipoCambio": 1,
"leyenda": "Leyenda de acuerdo a SIN",
"detalles": [
{
"codigoProducto": "PROD-001",
"descripcion": "Descripción del Servicio",
"cantidad": 1,
"precioUnitario": 100.50,
"subTotal": 100.50,
"codigoProductoSin": 83111,
"codigoActividad": "620100",
"unidadMedida": 58
}
]
}

Referencia de la API Global

Para conocer el listado completo de endpoints disponibles, modelos de datos y catálogos, por favor consulta la documentación principal de la API de Emizor:

👉 Ver Documentación Completa de la API de Emizor