POST
prices:write/api/public/v1/products/{productId}/supplier-pricesParámetros
productIdIdentificador del producto.
Body de entrada
PublicSupplierPriceCreate
Crear precio de proveedor
Precio de un producto para un proveedor y fecha efectiva.
PropiedadTipoDescripción
supplierIdobligatoriouuidIdentificador del proveedor existente.supplierProductCodestring | nullCódigo usado por el proveedor.effectiveDateobligatoriodate-timeFecha de vigencia.priceobligatorionumberPrecio neto.priceBeforeDiscountobligatorionumberPrecio antes de descuento.discountPercentageobligatorionumber · 0..100Porcentaje de descuento.setAsReferencePurchasePricebooleanActualiza también el precio de compra de referencia.Ejemplo JSON
{
"supplierId": "70cc0042-7541-4495-93b7-708795e7c093",
"supplierProductCode": "P-77",
"effectiveDate": "2026-10-10T12:00:00",
"price": 90,
"priceBeforeDiscount": 100,
"discountPercentage": 10,
"setAsReferencePurchasePrice": true
}Respuesta
201Precio creado.
PublicSupplierPrice
Precio de proveedor
Precio público asociado a producto y proveedor.
PropiedadTipoDescripción
idobligatoriouuidIdentificador del precio.productIdobligatoriouuidIdentificador interno del producto.supplierIdobligatoriouuidIdentificador interno del proveedor.supplierProductCodestring | nullCódigo usado por el proveedor.effectiveDateobligatoriodate-timeFecha efectiva.priceobligatorionumberPrecio neto.priceBeforeDiscountobligatorionumberPrecio antes de descuento.discountPercentageobligatorionumberPorcentaje de descuento.isReferencePurchasePriceobligatoriobooleanIndica si es el precio de compra de referencia.createdAtobligatoriodate-timeFecha de creación.modifiedAtobligatoriodate-timeÚltima modificación.concurrencyTokenobligatoriostringToken opaco de concurrencia.Ejemplo JSON
{
"id": "6c90ad85-f243-4d41-95bd-b5c55efb2afe",
"productId": "14cc9848-f0c0-4457-9fd1-2b60dd46d6f3",
"supplierId": "70cc0042-7541-4495-93b7-708795e7c093",
"supplierProductCode": "P-77",
"effectiveDate": "2026-10-10T12:00:00",
"price": 90,
"priceBeforeDiscount": 100,
"discountPercentage": 10,
"isReferencePurchasePrice": true,
"createdAt": "2026-10-10T12:00:00",
"modifiedAt": "2026-10-10T12:00:00",
"concurrencyToken": "ct_price_example"
}Ejemplo de respuesta
{
"id": "6c90ad85-f243-4d41-95bd-b5c55efb2afe",
"productId": "14cc9848-f0c0-4457-9fd1-2b60dd46d6f3",
"supplierId": "70cc0042-7541-4495-93b7-708795e7c093",
"supplierProductCode": "P-77",
"effectiveDate": "2026-10-10T12:00:00",
"price": 90,
"priceBeforeDiscount": 100,
"discountPercentage": 10,
"isReferencePurchasePrice": true,
"createdAt": "2026-10-10T12:00:00",
"modifiedAt": "2026-10-10T12:00:00",
"concurrencyToken": "ct_price_example"
}Errores
400Solicitud incorrectaapplication/json401Autenticación inválida o no proporcionadaapplication/json403Permisos insuficientesapplication/json404Recurso no encontradoapplication/json409Conflicto con el estado actualapplication/json410Recurso ya no disponibleapplication/json422Error de validaciónapplication/json429Límite de solicitudes excedidoapplication/jsonVer modelo de error
PublicApiError
Error de API
Formato estable de los errores públicos.
PropiedadTipoDescripción
statusobligatoriointegerCódigo HTTP.codeobligatoriostringCódigo estable para tratamiento automático.messageobligatoriostringMensaje legible.correlationIdobligatoriostringIdentificador para soporte y trazabilidad.currentConcurrencyTokenstring | nullToken actual cuando existe un conflicto.validationErrorsobject<string,string[]>Errores agrupados por campo.Ejemplo JSON
{
"status": 422,
"code": "validation_error",
"message": "The request is invalid.",
"correlationId": "01J9EXAMPLE",
"validationErrors": {
"unitCode": [
"The unit does not exist."
]
}
}