Productos · API PÚBLICA V1

Crear un producto

Crea un producto nuevo. Un código ya existente devuelve un conflicto.

Conectar con un entornoSin token

La petición sale de tu navegador hacia el entorno indicado. La API key y el token permanecen en la memoria de esta página.

Introduce las credenciales del entorno que quieras probar.
POST/api/public/v1/products
products:write

Body de entrada

PublicProductCreate

Crear producto

Datos necesarios para crear un producto.

PropiedadTipoDescripción
codeobligatoriostringCódigo único del producto.
shortDescriptionobligatoriostringNombre corto visible del producto.
descriptionstring | nullDescripción ampliada.
unitCodeobligatoriostringSímbolo de la unidad existente en Trowel.
purchasePricenumber | nullPrecio de compra de referencia.
purchasePriceDatedate-time | nullFecha del precio de compra.
salePricenumber | nullPrecio de venta.
activebooleanIndica si el producto está activo.
Ejemplo JSON
{
  "code": "MAT-001",
  "shortDescription": "Cemento",
  "unitCode": "kg",
  "purchasePrice": 0.25,
  "purchasePriceDate": "2026-10-10T12:00:00",
  "active": true
}

Respuesta

201Producto creado.

PublicProduct

Producto

Representación pública de un producto de catálogo.

PropiedadTipoDescripción
idobligatoriouuidIdentificador interno estable.
codeobligatoriostringCódigo del producto.
shortDescriptionobligatoriostringNombre corto.
descriptionstring | nullDescripción ampliada.
unitCodestring | nullSímbolo de unidad.
purchasePricenumber | nullPrecio de compra de referencia.
purchasePriceDatedate-time | nullFecha del precio de compra.
salePricenumber | nullPrecio de venta.
activeobligatoriobooleanEstado activo.
createdAtobligatoriodate-timeFecha de creación.
modifiedAtobligatoriodate-timeÚltima modificación.
concurrencyTokenobligatoriostringToken opaco para control de concurrencia.
Ejemplo JSON
{
  "id": "14cc9848-f0c0-4457-9fd1-2b60dd46d6f3",
  "code": "MAT-001",
  "shortDescription": "Cemento",
  "unitCode": "kg",
  "purchasePrice": 0.25,
  "active": true,
  "createdAt": "2026-10-10T12:00:00",
  "modifiedAt": "2026-10-10T12:00:00",
  "concurrencyToken": "ct_product_example"
}
Ejemplo de respuesta
{
  "id": "14cc9848-f0c0-4457-9fd1-2b60dd46d6f3",
  "code": "MAT-001",
  "shortDescription": "Cemento",
  "unitCode": "kg",
  "purchasePrice": 0.25,
  "active": true,
  "createdAt": "2026-10-10T12:00:00",
  "modifiedAt": "2026-10-10T12:00:00",
  "concurrencyToken": "ct_product_example"
}

Errores

400Solicitud incorrectaapplication/json
401Autenticación inválida o no proporcionadaapplication/json
403Permisos insuficientesapplication/json
404Recurso no encontradoapplication/json
409Conflicto con el estado actualapplication/json
410Recurso ya no disponibleapplication/json
422Error de validaciónapplication/json
429Límite de solicitudes excedidoapplication/json
Ver 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."
    ]
  }
}
Probar endpointPetición directa desde el navegador

JSON resultante

{}

Petición

RespuestaSin ejecutar
Configura la conexión y ejecuta la petición.