Use this file to discover all available pages before exploring further.
Every endpoint in this API returns a response wrapped in ApiResponse<T> — a lightweight generic envelope that gives you a consistent structure to parse regardless of which operation you call. The envelope carries an HTTP status code as a string, a human-readable message, and the actual payload in the data field. Having a single predictable shape means you can write one response-handling routine and reuse it across all endpoints: check responseCode, read the message if needed, and extract data when the operation succeeded.
responseCode mirrors the HTTP status code of the response (for example, "200", "201", "404"). You can use it for programmatic error handling even in environments where the raw HTTP status is discarded, such as some API gateway integrations or frontend fetch wrappers that resolve all responses regardless of status.
Returned by 400 validation-failure responses. A flat map where each key is the name of the failing request field and each value is the corresponding constraint violation message.
When the request body fails constraint validation, the data field contains a map of field names to error messages.
POST /api/v1/products — 400
{ "responseCode": "400", "responseMessage": "Error de validación", "data": { "name": "El nombre del producto debe tener entre 3 y 100 caracteres", "price": "El precio del producto debe ser mayor a 0" }}