Ir al contenido

Documentación API B2B – DAMACA

Versión: 1.0

Fecha: 20 de Enero de 2026

Desarrollador: Javier Quintana Duran

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.