Bases de datos
Endpoints de Bases de datos (Waiify DB): tablas propias con columnas tipadas para inventarios, catálogos y cualquier dato estructurado de tu negocio. Todos cuelgan de /workspaces/:workspaceId/databases y requieren autenticación.
Bases de datos
Sección titulada «Bases de datos»| Método | Ruta | Descripción |
|---|---|---|
GET | /databases | Listar bases de datos |
POST | /databases | Crear base de datos |
GET | /databases/:dbId | Obtener base de datos |
PATCH | /databases/:dbId | Actualizar base de datos |
DELETE | /databases/:dbId | Eliminar base de datos |
| Método | Ruta | Descripción |
|---|---|---|
GET | /databases/:dbId/tables | Listar tablas de una base |
POST | /databases/:dbId/tables | Crear tabla (opcionalmente con sus columnas) |
GET | /databases/:dbId/tables/:tableId | Obtener tabla (con sus columnas) |
PATCH | /databases/:dbId/tables/:tableId | Actualizar tabla (nombre visible y descripción) |
DELETE | /databases/:dbId/tables/:tableId | Eliminar tabla |
Columnas
Sección titulada «Columnas»| Método | Ruta | Descripción |
|---|---|---|
POST | /databases/:dbId/tables/:tableId/columns | Crear columna |
PATCH | /databases/:dbId/tables/:tableId/columns/:colId | Actualizar columna |
DELETE | /databases/:dbId/tables/:tableId/columns/:colId | Eliminar columna |
| Método | Ruta | Descripción |
|---|---|---|
GET | /databases/:dbId/tables/:tableId/rows | Listar filas (con búsqueda, filtros y orden) |
POST | /databases/:dbId/tables/:tableId/rows | Crear fila |
GET | /databases/:dbId/tables/:tableId/rows/:rowId | Obtener fila |
PATCH | /databases/:dbId/tables/:tableId/rows/:rowId | Actualizar fila (merge parcial) |
DELETE | /databases/:dbId/tables/:tableId/rows/:rowId | Eliminar fila (borrado lógico) |
POST | /databases/:dbId/tables/:tableId/rows/query | Operación sobre filas: upsert, aggregate o deleteMany |
POST | /databases/:dbId/tables/:tableId/import | Importar filas en lote |
Crear base de datos
Sección titulada «Crear base de datos»/workspaces/:workspaceId/databases Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | Sí | Nombre de la base de datos. |
description | string | No | Descripción. |
driver | string | No | Solo admite "waiify-pg" (por defecto). |
color | string | No | Color para identificarla en la biblioteca. |
icon | string | No | Icono asociado. |
Crear tabla
Sección titulada «Crear tabla»/workspaces/:workspaceId/databases/:dbId/tables Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | Sí | Identificador interno de la tabla (empieza con letra; letras, números y guion bajo). Único dentro de la base. |
displayName | string | Sí | Nombre visible. |
description | string | No | Descripción. |
columns | array | No | Columnas iniciales (mismo formato que crear columna). Una tabla admite hasta 50 columnas. |
Crear columna
Sección titulada «Crear columna»/workspaces/:workspaceId/databases/:dbId/tables/:tableId/columns Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
key | string | Sí | Identificador interno (empieza con letra; letras, números y guion bajo). Único dentro de la tabla. |
displayName | string | Sí | Nombre visible. |
type | string | Sí | Uno de: text, longText, number, currency, boolean, date, datetime, select, multi_select, email, phone, url, json, reference. |
required | boolean | No | Por defecto false. |
unique | boolean | No | Por defecto false. |
indexed | boolean | No | Por defecto false. |
defaultValue | any | No | Valor por defecto al crear una fila sin ese campo. |
options | object | No | Depende del tipo: choices (arreglo de strings, para select/multi_select), precision (decimales, para number/currency), refTableId + refColumnKey (para reference). |
Listar filas
Sección titulada «Listar filas»/workspaces/:workspaceId/databases/:dbId/tables/:tableId/rows Parámetros de query
Sección titulada «Parámetros de query»| Parámetro | Tipo | Descripción |
|---|---|---|
search | string | Búsqueda libre sobre los valores de la fila. Se combina en AND con filter. |
filter | string (JSON) | Filtro estructurado — ver formato abajo. |
sort | string (JSON) | Arreglo de orden — ver formato abajo. |
page | number | Página, empieza en 1. |
pageSize | number | Filas por página. Por defecto 50, tope 1000. |
filter es un JSON con esta forma (hasta 50 condiciones):
{ "combinator": "and", "conditions": [ { "column": "categoria", "operator": "eq", "value": "Electrónica" }, { "column": "stock", "operator": "gt", "value": 0 } ]}Operadores disponibles: eq, ne, gt, gte, lt, lte, contains, startsWith, endsWith, isEmpty, isNotEmpty, in.
sort es un arreglo de { "column": "...", "direction": "asc" | "desc" }.
Obtener fila
Sección titulada «Obtener fila»/workspaces/:workspaceId/databases/:dbId/tables/:tableId/rows/:rowId Crear fila
Sección titulada «Crear fila»/workspaces/:workspaceId/databases/:dbId/tables/:tableId/rows Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
data | object | Sí | Par columna: valor para cada campo. Los campos omitidos toman el defaultValue de su columna cuando existe; las columnas required sin valor ni default rechazan la petición. |
Actualizar fila
Sección titulada «Actualizar fila»/workspaces/:workspaceId/databases/:dbId/tables/:tableId/rows/:rowId Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
data | object | Sí | Par columna: valor a actualizar. Es un merge parcial: las columnas que no envíes conservan su valor actual. |
Eliminar fila
Sección titulada «Eliminar fila»/workspaces/:workspaceId/databases/:dbId/tables/:tableId/rows/:rowId Es un borrado lógico (deletedAt): la fila deja de aparecer en listados y lecturas, pero no se destruye físicamente.
Operación sobre filas — upsert, aggregate y deleteMany
Sección titulada «Operación sobre filas — upsert, aggregate y deleteMany»/workspaces/:workspaceId/databases/:dbId/tables/:tableId/rows/query Un único endpoint para tres operaciones que no encajan en el CRUD simple, seleccionadas por operation.
Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
operation | string | Sí | upsert, aggregate o deleteMany. |
matchColumn | string | Solo upsert | Columna usada para buscar la fila existente. |
data | object | Solo upsert | Datos a insertar o mezclar. |
aggregateOp | string | No (solo aggregate) | count (por defecto), sum, avg, min o max. |
column | string | Solo aggregate si aggregateOp ≠ count | Columna numérica sobre la que agregar. |
filter | object | No | Mismo formato que en listar filas. Aplica a aggregate y deleteMany. |
Importar filas
Sección titulada «Importar filas»/workspaces/:workspaceId/databases/:dbId/tables/:tableId/import Inserta varias filas en un solo lote. A diferencia de crear fila, aquí la validación es estricta: cada fila del lote debe cumplir todas las columnas requeridas (no se aplican valores por defecto salvo los que ya tenga la columna). Las filas que fallan no detienen el import — se reportan en errors y el resto se inserta igual.
Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
rows | array de objetos | Sí | Cada elemento es un par columna: valor, con la misma forma que data en crear fila pero sin el envoltorio. |