Base URL
https://api.interdrogas.net:9091/api-pro/DIDD/B2B
Autenticación
Todas las APIs (excepto /Test) requieren un Token JWT.
📌 Base URL
<https://api.interdrogas.net:9091/api/Tools>
Login de Usuario
POST/Login
Genera un Access Token y un Refresh Token válidos para el cliente especificado.
El cliente deberá usar el Access Token en todas las APIs protegidas.
📥 Cuerpo de la solicitud (JSON)
{
"usuario":"john.doe",
"contraseña":"1234",
"cliente":"B2B"
}
📌 Descripción de campos
| Campo | Tipo | Descripción |
|---|---|---|
| usuario | string | Usuario registrado en el sistema |
| contraseña | string | Contraseña del usuario |
| cliente | string | Identificador del cliente ( B2B) |
✅ Respuesta exitosa (200)
{
"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
📌 Importante
El accessToken debe enviarse en el header:
Authorization: Bearer {accessToken}El refreshToken se usa únicamente para renovar credenciales
❌ Credenciales inválidas (401)
{
"status":401,
"message":"Credenciales inválidas para el cliente especificado."
}
❌ Cliente no especificado (400)
{
"status":400,
"message":"Credenciales inválidas para el cliente especificado."
}
Refresh Token
POST/RefreshToken
Permite renovar el Access Token y el Refresh Token cuando el access token ha expirado.
📥 Cuerpo de la solicitud (JSON)
{
"usuario":"john.doe",
"refresh_Token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"cliente":"B2B"
}
📌 Descripción de campos
| Campo | Tipo | Descripción |
|---|---|---|
| usuario | string | Usuario autenticado |
| refresh_Token | string | Refresh token vigente |
| cliente | string | Cliente asociado al token |
✅ Respuesta exitosa (200)
{
"accessToken":"nuevo_access_token",
"refreshToken":"nuevo_refresh_token"
}
❌ Refresh token inválido o expirado (401)
"Refresh token inválido, expirado o cliente no autorizado."
❌ Cliente no especificado (400)
"Cliente no especificado."
Consideraciones de Seguridad
Cada token está asociado a:
- Usuario
- Cliente
- Tipo de token (access / refresh)
- Un refresh token no puede usarse como access token
Flujo recomendado de autenticación
Login
Guardar accessToken y refreshToken
Consumir APIs con:
Authorization: Bearer {accessToken}Cuando expire:
- Llamar a /RefreshToken
Reemplazar ambos tokens
Cómo enviar el token
El token debe enviarse en los Headers HTTP:
Authorization: Bearer {access_token}
Ejemplo:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Test de Conectividad
GET /Test
Permite validar que las APIs están disponibles.
Respuesta exitosa (200):
"Apis funcionales"
Consulta de Clientes
GET /Consulta/Clientes
Obtiene el listado de clientes asociados.
Respuesta exitosa (200):
{
"StatusCode":200,
"Clients":[
{
"Rowid":12227,
"Nit":"1000018291",
"RazonSocial":"GARZON TORO LEIDY MARCELA",
"Nombres":"LEIDY MARCELA",
"Apellido1":"GARZON",
"Apellido2":"TORO",
"Email":"leidygarzon240@gmail.com",
"SucursalId":"001",
"ListaPrecio":"009",
"Vendedor": "860502262",
"CondPago":"C00",
"DiasVcto":1,
"DiasGracia":3,
"Cupo":0,
"SucursalDesc":"BEAUTY SHOP",
"FechaIngreso":"2021-12-02T00:00:00-05:00",
"Estado":0,
"MotivoBloq": null,
"TipoCliente": "0001",
"Direccion": "CR 78 8 30",
"Telefono": "3206809378",
"Email1": "leidygarzon240@gmail.com",
"Depto": "11",
"Ciudad": "001",
"Barrio": null,
"Celular": "3206809378"
}
]
}
Consulta de Items
GET /Consulta/Items
Obtiene el catálogo de productos.
Respuesta exitosa (200):
{
"StatusCode":200,
"Items":[
{
"Referencia":"00359",
"Descripcion":"PNU KLEENEX JUNIOR CJA",
"Iva":19,
"LabId": "0181",
"LabDesc":"COLOMBIANA KIMBERLY COLPAPEL S.A.",
"LProv": "COLOMBIANA KIMBERLY COLPAPEL",
"SlProv": "ASEO E HIGIENE PERSONAL",
"cat": "CUIDADO PERSONAL",
"SubCat":"Aseo e Higiene personal",
"Reg":"NO"
}
]
}
Consulta de Precios
GET /Consulta/Precios/{lista}
Obtiene los precios según la lista asignada.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
| lista | string | Código de lista de precios |
Respuesta exitosa (200):
{
"StatusCode":200,
"Prices":[
{
"Referencia": "00007",
"Precio": 1359.57
}
]
}
Consulta de Descuentos
GET /Consulta/Descuentos
Retorna descuentos aplicables por producto.
Respuesta exitosa (200):
{
"StatusCode":200,
"Discounts":[
{
"Referencia": "00664",
"Dscto": 12.00,
"CantBase": 3,
"RefObs": "00664",
"CantObs": 2
}
]
}
Consulta de Cartera
GET /Consulta/Cartera/{nit}/{sucursal}
Obtiene la información de cartera del cliente.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
| nit | string | NIT del cliente |
| sucursal | string | Código de sucursal |
Respuesta exitosa (200):
{
"StatusCode":200,
"Wallet":[
{
"Nit": "80817704",
"Sucursal": "001",
"Docto": "FVE",
"Consec": 210301,
"Dcto": "2026-01-09T00:00:00",
"Valor": 40578.0000,
"Estado": "Vencido",
"Dias": 10
}
]
}
Consulta de Documentos
GET /Consulta/Pedidos/{nit}/{sucursal}
Consulta pedidos realizados por el cliente.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
| nit | string | NIT del cliente |
| sucursal | string | Código de sucursal |
Respuesta exitosa (200):
{
"StatusCode":200,
"Orders":[
{
"Rowid": 308088,
"Docto": "PPV",
"Consec": 24265,
"Estado": "Cumplido",
"Subtotal": 5143.0000,
"Neto": 5143.0000
}
]
}
Consulta de Movimientos
GET /Consulta/Movimiento/{rowid}
Consulta el detalle de un movimiento específico.
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
| rowid | string | Identificador del movimiento |
Respuesta exitosa (200):
{
"StatusCode":200,
"Movements":[
{
"Referencia": "46822",
"Descripcion": "ASPIRINA 100 MG X140 TAB X4 CJS OFE $",
"CantPedida": 20,
"CantFactura": 20,
"Subtotal": 5211023.0000,
"Neto": 5211023.0000
}
]
}
Respuestas de Error
Token inválido o expirado
{
"StatusCode":401,
"Message":"Token inválido o expirado"
}
Sin información disponible
{
"StatusCode":404,
"Message":"No se encontraron resultados para la consulta"
}
Importación de Pedido (Plano B2B)
POST /Importar/Pedido
Permite importar un pedido en formato plano hacia el sistema B2B.
El servicio valida los datos, genera el plano, lo convierte a XML y lo envía al WebService SOAP del cliente.
🔐 Requiere autenticación
- Header Authorization: Bearer {token}
- El token debe cumplir la política OnlyB2B la cual es que debe enviar el cliente asignado
Cuerpo de la solicitud (JSON)
{
"tercero":"516602",
"sucursal":"001",
"tipoCliente":"0001",
"doctoReferencia":"123456PPP",
"condPago":"C00",
"vendedor":"860502262",
"productos":[
{
"referencia":"00032",
"listaPrecio":"009",
"unidadMedida":"UND",
"cantidad":5,
"precio":1500
}
]
}
Descripción de campos
Datos del pedido
| Campo | Tipo | Descripción |
|---|---|---|
| tercero | string | Código del cliente |
| sucursal | string | Código de sucursal |
| tipoCliente | string | Tipo de cliente |
| doctoReferencia | string | Referencia del documento |
| condPago | string | Condición de pago |
| vendedor | string | Código del vendedor |
Productos
| Campo | Tipo | Descripción |
|---|---|---|
| referencia | string | Código del producto |
| listaPrecio | string | Lista de precios |
| unidadMedida | string | Unidad de medida |
| cantidad | int | Cantidad solicitada |
| precio | decimal | Precio unitario |
Respuesta exitosa (200)
Cuando el pedido es procesado correctamente por el WebService B2B:
{
"statusCode":200,
"message":[
"Importación exitosa"
]
}
Error de validación (400)
Cuando faltan campos obligatorios o los valores no son válidos:
{
"statusCode":400,
"message":"El campo 'Unidad de Medida' es obligatorio."
}
Error de negocio B2B (400)
Cuando el WebService B2B rechaza el pedido, se devuelven los mensajes exactos del sistema externo:
{
"statusCode":400,
"message":[
"(099-PWI-00000001) Movto Pedido: La unidad de medida en el registro no existe.",
"(099-PWI-00000001) Movto Pedido: La lista de precios no es obligatoria.",
"(099-PWI-00000001) Movto Pedido: La unidad de precio en el registro no existe.",
"(099-PWI-00000001) Movto Pedido: El precio unitario debe ser mayor a 0, no existe precio configurado para la lista de precio del registro.",
"(099-PWI-00000001) Movto Pedido: El indicador de backorder debe ser 5."
]
}
Notas Importantes
- El token debe enviarse en todas las peticiones.
- El sistema validará automáticamente el acceso según el cliente.
- Los datos retornados corresponden a la información disponible en el ERP.
El EndPoint de importar pedido debe cambiar lo siguiente en la URL,
- modificar api-pro
- colocar api-qa
Soporte
Si tienes dudas o necesitas ayuda técnica:
- Correo: ventas@damaca.com.co
- Teléfono: +57 3155528617
- Horario de atención: Lunes a viernes, 8:30 a.m. – 4:30 p.m.