Response Contract
VibeFlui reads rows, totals, messages, and feedback status from runtime responses.
Table rows
Tables read rows from:
dataprop.responseprop or provider response.table.dataPathwhen rows are nested.
JSON
{
"data": [
{ "id": 1, "name": "Ada Lovelace", "status": "active" }
],
"meta": {
"total": 1
}
}TS
table: {
dataPath: "data",
totalPath: "meta.total"
}Feedback status
Runtime feedback status can be resolved from status or code.
| Response value | Feedback status |
|---|---|
status: true | success |
status: false with 4xx code | warning |
status: false without 4xx code | error |
status: "accepted", "ok", "success" | success |
status: "rejected" or "warning" | warning |
status: "failed" or "error" | error |
code 200-299 | success |
code 400-499 | warning |
code 500+ | error |
Message extraction
Feedback messages can use backend messages when present. Endpoint errors also use data.message or data.error.message when available.
JSON
{
"status": false,
"code": 409,
"message": "Email is already registered."
}Endpoint errors
The built-in endpoint provider throws FluiKitEndpointError when response.ok is false. The error includes the endpoint response.
Recommended list response
JSON
{
"status": true,
"code": 200,
"message": "Users loaded.",
"data": [
{ "id": 1, "name": "Ada Lovelace", "email": "ada@example.test" }
],
"meta": {
"page": 1,
"pageSize": 10,
"total": 1
}
}Recommended mutation response
JSON
{
"status": true,
"code": 200,
"message": "User saved.",
"data": {
"id": 1,
"name": "Ada Lovelace"
}
}Common mistakes
datadoes not need to be the row array. Usetable.dataPathfor nested responses.- Return
status,code, ormessagewhen the UI should show clear failure feedback. - VibeFlui maps readable 4xx-style failures to warning feedback when it can read the code.