Diferencia entre revisiones de «API Modulo Forms»
Página creada con « = API Módulo Forms = == Introducción == El API del Módulo Forms permite la consulta, creación y gestión de los formularios dentro del sistema. * '''URL Base:''' <code>https://api.tudominio.com/v1/</code> * '''Formato de respuesta:''' <code>JSON</code> == Autenticación == Todas las peticiones a los endpoints protegidos deben incluir un token JWT en las cabeceras (headers) de la petición.<source lang="http"> Authorization: Bearer TU_TOKEN_AQUI </source>---…» |
Sin resumen de edición |
||
| (No se muestran 2 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
== ⚡ Referencia de Endpoints == | |||
A continuación, los servicios expuestos organizados por método HTTP. Haz clic en cada bloque para expandir la documentación. | |||
== | <div class="mw-collapsible mw-collapsed" style="border: 1px solid #c8e6c9; background-color: #f1f8e9; padding: 10px; margin-bottom: 10px; border-radius: 4px;"> | ||
<div style="font-weight: bold; font-size: 1.1em; color: #2e7d32;">🟩 GET (Consultas y Lecturas)</div> | |||
<div class="mw-collapsible-content" style="background-color: #ffffff; padding: 15px; margin-top: 10px; border: 1px solid #c8e6c9;"> | |||
=== GET /api/v1/categories === | |||
Devuelve un listado completo de todas las categorías configuradas en el sistema para la empresa del usuario autenticado. | |||
==== Respuesta Exitosa (200 OK) ==== | |||
<source lang="json"> | |||
[ | |||
{ | |||
"categoriaId": 1, | |||
"nombre": "Encuestas de Satisfacción", | |||
"color": "#3B82F6", | |||
"roleIds": [101, 102] | |||
} | |||
] | |||
</source> | |||
=== GET /api/v1/folders === | |||
Retorna la estructura jerárquica completa de carpetas, subcarpetas y formularios, filtrada automáticamente por los roles del usuario. | |||
== | === GET /api/v1/forms/stats === | ||
Calcula y devuelve los indicadores clave (KPIs) globales del Workspace para la empresa. | |||
==== Respuesta Exitosa (200 OK) ==== | |||
</source> | <source lang="json"> | ||
{ | |||
"respuestasHoy": 142, | |||
"respuestasTotal": 12850, | |||
"formulariosActivos": 18 | |||
} | |||
</source> | |||
== | === GET /api/v1/forms/public/{empresaid}/{uuid} === | ||
Devuelve el esquema y diseño público de un formulario para renderizarse en el frontend (No requiere JWT). | |||
==== Parámetros ==== | |||
{| class="wikitable" | |||
|- | |||
! Parámetro !! Tipo !! Obligatorio !! Descripción | |||
|- | |||
| empresaid || Integer || Sí (Path) || ID de la empresa o 0 para resolver automáticamente. | |||
|- | |||
| uuid || String || Sí (Path) || UUID público del formulario. | |||
|} | |||
</div> | |||
</div> | |||
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #bbdefb; background-color: #e3f2fd; padding: 10px; margin-bottom: 10px; border-radius: 4px;"> | |||
<div style="font-weight: bold; font-size: 1.1em; color: #1565c0;">🟦 POST (Creación y Procesos)</div> | |||
<div class="mw-collapsible-content" style="background-color: #ffffff; padding: 15px; margin-top: 10px; border: 1px solid #bbdefb;"> | |||
==== Parámetros | === POST /api/v1/forms === | ||
Crea un nuevo formulario dinámico asociando su esquema JSON y retornando un UUID para la URL pública. | |||
==== Parámetros ==== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Parámetro !! Tipo !! Obligatorio !! Descripción | |||
|- | |- | ||
| | | Body || Object || Sí || Datos requeridos para la plantilla de formulario. | ||
| | |||
| | |||
| | |||
|} | |} | ||
==== Respuesta Exitosa (201 Created) ==== | |||
==== Respuesta Exitosa ==== | |||
<source lang="json"> | <source lang="json"> | ||
{ | { | ||
" | "formId": 45, | ||
" | "uuid": "d3b07384-d113-4f4a-a62e-336712345678", | ||
"titulo": "Encuesta de Satisfacción en Visita", | |||
"urlPublica": "/f/15/d3b07384-d113-4f4a-a62e-336712345678" | |||
} | } | ||
</source> | </source> | ||
=== | === POST /api/v1/forms/public/{empresaid}/{uuid}/responses === | ||
Endpoint público para registrar la respuesta diligenciada por un encuestado. Garantiza inmutabilidad y orquesta el cobro de folio SaaS. | |||
==== Payload Esperado ==== | |||
==== | |||
<source lang="json"> | <source lang="json"> | ||
{ | { | ||
" | "respuestaJson": "{\"idtercero\":1502,\"idsucursal\":1,\"respuestas\":[{\"pregunta_id\":\"q1\",\"valor\":\"Excelente\"}]}" | ||
} | } | ||
</source> | </source> | ||
=== | === POST /api/v1/billing/process === | ||
Orquestación interna SaaS para debitar folios transaccionales (Zero-Trust). No utiliza JWT, sino el encabezado HTTP <code>X-Secret-Key</code>. | |||
</div> | |||
</div> | |||
--- | <div class="mw-collapsible mw-collapsed" style="border: 1px solid #ffe0b2; background-color: #fff3e0; padding: 10px; margin-bottom: 10px; border-radius: 4px;"> | ||
<div style="font-weight: bold; font-size: 1.1em; color: #e65100;">🟧 PUT (Actualizaciones)</div> | |||
<div class="mw-collapsible-content" style="background-color: #ffffff; padding: 15px; margin-top: 10px; border: 1px solid #ffe0b2;"> | |||
== | === PUT /api/v1/forms/{uuid} === | ||
Actualiza el título, descripción y estructura de preguntas (Esquema JSON) de un formulario existente. | |||
==== Parámetros ==== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Parámetro !! Tipo !! Obligatorio !! Descripción | |||
|- | |- | ||
| | | uuid || String || Sí (Path) || UUID del formulario a actualizar. | ||
| | |||
| | |||
|- | |- | ||
| | | Body || Object || Sí || Datos actualizados del formulario. | ||
| | |||
| | |||
|} | |} | ||
=== PUT /api/v1/forms/{uuid}/toggle-status === | |||
Alterna el estado de un formulario entre Activo e Inactivo (bloquea la recepción de respuestas). | |||
=== PUT /api/v1/forms/{uuid}/move === | |||
Reubica un formulario en otra carpeta contenedora o en la raíz del Workspace enviando <code>?carpetaId=25</code>. | |||
</div> | |||
</div> | |||
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #ffcdd2; background-color: #ffebee; padding: 10px; margin-bottom: 10px; border-radius: 4px;"> | |||
<div style="font-weight: bold; font-size: 1.1em; color: #c62828;">🟥 DELETE (Eliminaciones)</div> | |||
<div class="mw-collapsible-content" style="background-color: #ffffff; padding: 15px; margin-top: 10px; border: 1px solid #ffcdd2;"> | |||
=== DELETE /api/v1/categories/{id} === | |||
Elimina de forma física y permanente una categoría. Fallará si la categoría posee carpetas activas. | |||
=== DELETE /api/v1/folders/{id} === | |||
Realiza un borrado lógico en cascada de una carpeta y de todas sus subcarpetas y formularios dependientes. | |||
=== DELETE /api/v1/forms/{uuid} === | |||
Ejecuta un borrado lógico (Soft Delete) del formulario, desactivándolo y moviéndolo a la papelera sin perder respuestas históricas. Requiere estar apagado previamente. | |||
==== Códigos de Error Posibles ==== | |||
* <code>400 Bad Request:</code> El formulario está Activo. Debe desactivarse antes de eliminarse. | |||
* <code>401 Unauthorized:</code> No autenticado. | |||
* <code>404 Not Found:</code> Formulario inexistente. | |||
</div> | |||
</div> | |||
Revisión actual - 10:09 21 ago 2026
⚡ Referencia de Endpoints
A continuación, los servicios expuestos organizados por método HTTP. Haz clic en cada bloque para expandir la documentación.
GET /api/v1/categories
Devuelve un listado completo de todas las categorías configuradas en el sistema para la empresa del usuario autenticado.
Respuesta Exitosa (200 OK)
[
{
"categoriaId": 1,
"nombre": "Encuestas de Satisfacción",
"color": "#3B82F6",
"roleIds": [101, 102]
}
]GET /api/v1/folders
Retorna la estructura jerárquica completa de carpetas, subcarpetas y formularios, filtrada automáticamente por los roles del usuario.
GET /api/v1/forms/stats
Calcula y devuelve los indicadores clave (KPIs) globales del Workspace para la empresa.
Respuesta Exitosa (200 OK)
{
"respuestasHoy": 142,
"respuestasTotal": 12850,
"formulariosActivos": 18
}GET /api/v1/forms/public/{empresaid}/{uuid}
Devuelve el esquema y diseño público de un formulario para renderizarse en el frontend (No requiere JWT).
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| empresaid | Integer | Sí (Path) | ID de la empresa o 0 para resolver automáticamente. |
| uuid | String | Sí (Path) | UUID público del formulario. |
POST /api/v1/forms
Crea un nuevo formulario dinámico asociando su esquema JSON y retornando un UUID para la URL pública.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Body | Object | Sí | Datos requeridos para la plantilla de formulario. |
Respuesta Exitosa (201 Created)
{
"formId": 45,
"uuid": "d3b07384-d113-4f4a-a62e-336712345678",
"titulo": "Encuesta de Satisfacción en Visita",
"urlPublica": "/f/15/d3b07384-d113-4f4a-a62e-336712345678"
}POST /api/v1/forms/public/{empresaid}/{uuid}/responses
Endpoint público para registrar la respuesta diligenciada por un encuestado. Garantiza inmutabilidad y orquesta el cobro de folio SaaS.
Payload Esperado
{
"respuestaJson": "{\"idtercero\":1502,\"idsucursal\":1,\"respuestas\":[{\"pregunta_id\":\"q1\",\"valor\":\"Excelente\"}]}"
}POST /api/v1/billing/process
Orquestación interna SaaS para debitar folios transaccionales (Zero-Trust). No utiliza JWT, sino el encabezado HTTP X-Secret-Key.
PUT /api/v1/forms/{uuid}
Actualiza el título, descripción y estructura de preguntas (Esquema JSON) de un formulario existente.
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| uuid | String | Sí (Path) | UUID del formulario a actualizar. |
| Body | Object | Sí | Datos actualizados del formulario. |
PUT /api/v1/forms/{uuid}/toggle-status
Alterna el estado de un formulario entre Activo e Inactivo (bloquea la recepción de respuestas).
PUT /api/v1/forms/{uuid}/move
Reubica un formulario en otra carpeta contenedora o en la raíz del Workspace enviando ?carpetaId=25.
DELETE /api/v1/categories/{id}
Elimina de forma física y permanente una categoría. Fallará si la categoría posee carpetas activas.
DELETE /api/v1/folders/{id}
Realiza un borrado lógico en cascada de una carpeta y de todas sus subcarpetas y formularios dependientes.
DELETE /api/v1/forms/{uuid}
Ejecuta un borrado lógico (Soft Delete) del formulario, desactivándolo y moviéndolo a la papelera sin perder respuestas históricas. Requiere estar apagado previamente.
Códigos de Error Posibles
400 Bad Request:El formulario está Activo. Debe desactivarse antes de eliminarse.401 Unauthorized:No autenticado.404 Not Found:Formulario inexistente.