Saltar al contenido principal

Tablas dinámicas (WebApp Tables)

¿Necesita guardar en Zauru información que el sistema no maneja de fábrica —un catálogo propio, el historial de versiones de un registro o un listado de opciones para su webapp? Las tablas dinámicas (WebApp Tables) le permiten ampliar cualquier funcionalidad que su operación requiera, sin esperar a que el sistema la incluya. Cada tabla incluye su CRUD completo (crear, editar, eliminar y listar), acepta estructuras de números y texto, y puede crecer tanto como usted la necesite.

Creación y edición de WebApp Table

Para crear una WebApp table basta con dirigirnos en el menú a la opción: WebApps => Tablas => New WebApp Table

WebAppTable listado 1

En el siguiente ejemplo, una empresa desea almacenar en Zauru los diferentes tipos de moneda que pueden recibir, por ejemplo (moneda local, moneda de plata, moneda de oro, etc...), en este caso hipotético, este listado no se maneja explicitamente en Zauru, por lo cual recurrimos a la ayuda de una webapp table en donde podemos definir una estructura para ese listado.

Nuestro listado se llamará "Tipos de monedas", el cuál necesitamos que almacene el nombre y un estado.

No preocuparse por el id único para cada opción, ya que automáticamente zauru le creará un id único a cada registro de nuestra webapp table.

New webapp table example

Con nuestra estructura lista, podemos ahora dar en la opción (Crear WebApp Table)

Con eso nuestra webapp table se creará y ya la tendremos lista para ser utilizada.

example newwebapp table created

Ahora podemos hacer uso de nuestra nueva webapp table para ingresar registros, o actualizar los ya existentes.

EjemploListadoRegistrosWebAppTable

Con esto, su tabla dinámica queda creada y lista para recibir registros. Lo que sigue naturalmente es llenarla desde el sistema o conectarla con su webapp personalizada; más adelante, si sus aplicaciones la consultan con frecuencia, también podrá sincronizarla con una base de datos externa.

Uso de la API

Como en todos los casos, aquí también tenemos acceso a una API para gestionar todo en relación al CRUD de las webapp tables y sus registros.

La ruta utilizada para acceder a la API es la siguiente:

https://app.zauru.com/apps/webapp_tables

Obtener listado de webapp tables

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables.json

Esto devolverá un JSON similar a este:

[]

Obtener detalle de una webapp table

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1.json

Esto devolverá un JSON similar a este:

{
"id": "153",
"zid": "2",
"entity_id": "1303",
"name": "Actualizaciones Ordenes de Trabajo",
"structure": "{\"image_s3_urls\": \"jsonb_urls\", \"observaciones\": \"string\", \"production_work_order_id\": \"int\"}",
"creator_id": "2512",
"updater_id": "2512",
"created_at": "2026-06-22 21:45:41.980008",
"updated_at": "2026-07-07 19:39:37.3826",
"hidden_in_show_columns": "[]",
"show_column_titles": "{}",
"load_in_rowable_show": false
}

Crear webapp table

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"webapp_table": {
"name": "Tipos de monedas",
"rows_structure": ["nombre", "estado"],
"rows_type": ["string", "boolean"]
}
}' \
https://app.zauru.com/apps/webapp_tables.json

Esto devolverá un JSON similar a este:

{
"id": 1,
"zid": 1,
"entity_id": 2,
"name": "Tipos de monedas",
"structure": {
"nombre": "string",
"estado": "boolean"
},
"creator_id": 3,
"updater_id": null,
"created_at": "2026-08-06T04:16:14.949Z",
"updated_at": "2026-08-06T04:16:14.949Z",
"hidden_in_show_columns": [],
"show_column_titles": {},
"load_in_rowable_show": false
}

Actualizar webapp table

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X PATCH \
-d '{
"webapp_table": {
"name": "Tipos de monedas actualizado"
}
}' \
https://app.zauru.com/apps/webapp_tables/1.json

Esto devolverá un JSON similar a este:

{
"id": "153",
"zid": "2",
"entity_id": "1303",
"name": "Actualizaciones Ordenes de Trabajo",
"structure": "{\"image_s3_urls\": \"jsonb_urls\", \"observaciones\": \"string\", \"production_work_order_id\": \"int\"}",
"creator_id": "2512",
"updater_id": "2512",
"created_at": "2026-06-22 21:45:41.980008",
"updated_at": "2026-07-07 19:39:37.3826",
"hidden_in_show_columns": "[]",
"show_column_titles": "{}",
"load_in_rowable_show": false
}

Eliminar webapp table

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X DELETE \
https://app.zauru.com/apps/webapp_tables/1.json

En caso de exito, retorna un codigo HTTP 204 No Content (sin cuerpo).

Nueva webapp table (prellenado)

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/new.json

Esto devolverá un JSON similar a este:

{
"webapp_table": {
"id": null,
"zid": null,
"entity_id": 1,
"name": null,
"structure": null,
"creator_id": null,
"updater_id": null,
"created_at": null,
"updated_at": null,
"hidden_in_show_columns": [],
"show_column_titles": {},
"load_in_rowable_show": false
},
"types": [
[
"Numero",
"int"
],
[
"Texto",
"string"
]
]
}

Editar webapp table

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/edit.json

Esto devolverá un JSON similar a este:

{
"id": "153",
"zid": "2",
"entity_id": "1303",
"name": "Actualizaciones Ordenes de Trabajo",
"structure": "{\"image_s3_urls\": \"jsonb_urls\", \"observaciones\": \"string\", \"production_work_order_id\": \"int\"}",
"creator_id": "2512",
"updater_id": "2512",
"created_at": "2026-06-22 21:45:41.980008",
"updated_at": "2026-07-07 19:39:37.3826",
"hidden_in_show_columns": "[]",
"show_column_titles": "{}",
"load_in_rowable_show": false
}

Obtener filas asociables (rowables) de una webapp table

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/rowables.json

Asociar filas a documentos (create_rowables)

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"webapp_table": {
"rowables_id": ["1", "2"],
"rowables_type": ["Invoice", "Shipment"],
"rowables_doc_id": ["10", "20"]
}
}' \
https://app.zauru.com/apps/webapp_tables/1/create_rowables.json

API de Filas (Webapp Rows)

Las filas de una webapp table se gestionan a través de rutas anidadas.

Obtener listado de filas

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows.json

Esto devolverá un JSON similar a este:

[
{
"id": "15171",
"webapp_table_id": "6",
"data": "{\"Otras_razones\": \"\", \"Razon_primaria\": \"Mancha Café\", \"Razon_terciaria\": \"\", \"Razon_secundaria\": \"\"}",
"creator_id": "2472",
"updater_id": null,
"created_at": "2023-10-04 23:47:39.990827",
"updated_at": "2023-10-04 23:47:39.990827"
}
]

Obtener listado de filas con paginación

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows.json?page=1&per_page=25

Esto devolverá un JSON similar a este:

[
{
"id": "15171",
"webapp_table_id": "6",
"data": "{\"Otras_razones\": \"\", \"Razon_primaria\": \"Mancha Café\", \"Razon_terciaria\": \"\", \"Razon_secundaria\": \"\"}",
"creator_id": "2472",
"updater_id": null,
"created_at": "2023-10-04 23:47:39.990827",
"updated_at": "2023-10-04 23:47:39.990827"
}
]

Obtener detalle de una fila

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1.json

Esto devolverá un JSON similar a este:

{
"id": "15171",
"webapp_table_id": "6",
"data": "{\"Otras_razones\": \"\", \"Razon_primaria\": \"Mancha Café\", \"Razon_terciaria\": \"\", \"Razon_secundaria\": \"\"}",
"creator_id": "2472",
"updater_id": null,
"created_at": "2023-10-04 23:47:39.990827",
"updated_at": "2023-10-04 23:47:39.990827"
}

Crear fila

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"webapp_row": {
"data": {
"nombre": "Quetzal",
"estado": true
}
}
}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows.json

Esto devolverá un JSON similar a este:

{
"id": "15171",
"webapp_table_id": "6",
"data": "{\"Otras_razones\": \"\", \"Razon_primaria\": \"Mancha Café\", \"Razon_terciaria\": \"\", \"Razon_secundaria\": \"\"}",
"creator_id": "2472",
"updater_id": null,
"created_at": "2023-10-04 23:47:39.990827",
"updated_at": "2023-10-04 23:47:39.990827"
}

Actualizar fila

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X PATCH \
-d '{
"webapp_row": {
"data": {
"nombre": "Dolar",
"estado": true
}
}
}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1.json

Esto devolverá un JSON similar a este:

{
"id": "15171",
"webapp_table_id": "6",
"data": "{\"Otras_razones\": \"\", \"Razon_primaria\": \"Mancha Café\", \"Razon_terciaria\": \"\", \"Razon_secundaria\": \"\"}",
"creator_id": "2472",
"updater_id": null,
"created_at": "2023-10-04 23:47:39.990827",
"updated_at": "2023-10-04 23:47:39.990827"
}

Eliminar fila

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X DELETE \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1.json

En caso de exito, retorna un codigo HTTP 204 No Content (sin cuerpo).

Nueva fila (prellenado)

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/new.json

Esto devolverá un JSON similar a este:

{
"id": "15171",
"webapp_table_id": "6",
"data": "{\"Otras_razones\": \"\", \"Razon_primaria\": \"Mancha Café\", \"Razon_terciaria\": \"\", \"Razon_secundaria\": \"\"}",
"creator_id": "2472",
"updater_id": null,
"created_at": "2023-10-04 23:47:39.990827",
"updated_at": "2023-10-04 23:47:39.990827"
}

Editar fila

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1/edit.json

Esto devolverá un JSON similar a este:

{
"id": "15171",
"webapp_table_id": "6",
"data": "{\"Otras_razones\": \"\", \"Razon_primaria\": \"Mancha Café\", \"Razon_terciaria\": \"\", \"Razon_secundaria\": \"\"}",
"creator_id": "2472",
"updater_id": null,
"created_at": "2023-10-04 23:47:39.990827",
"updated_at": "2023-10-04 23:47:39.990827"
}

Asociar una fila a un documento

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X POST \
-d '{
"temp_invoice_id": "10"
}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1/associate.json

Esto devolverá un JSON similar a este:

{
"status": "ok"
}

Desasociar una fila de un documento

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X DELETE \
-d '{"temp_invoice_id": "10"}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1/dissociate.json

Esto devolverá un JSON similar a este:

{
"status": "ok"
}

Para desasociar todas las relaciones de una fila, use "all": true:

curl -v \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-H "X-User-Email: prueba@zauru.com" \
-H "X-User-Token: XSDFKK09238487DLFS" \
-X DELETE \
-d '{"all": true}' \
https://app.zauru.com/apps/webapp_tables/1/webapp_rows/1/dissociate.json

Esto devolverá un JSON similar a este:

{
"status": "ok"
}

¿Le fue útil esta guía?