Diferencia entre revisiones de «API Modulo Forms»
Sin resumen de edición |
Sin resumen de edición |
||
| 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 === | === GET /api/v1/categories === | ||
Devuelve un listado completo de todas las categorías configuradas en el sistema para la empresa del usuario autenticado. | Devuelve un listado completo de todas las categorías configuradas en el sistema para la empresa del usuario autenticado. | ||
==== Respuesta Exitosa (200 OK) ==== | ==== Respuesta Exitosa (200 OK) ==== | ||
<source lang="json"> | <source lang="json"> | ||
| Línea 54: | Línea 20: | ||
] | ] | ||
</source> | </source> | ||
=== GET /api/v1/folders === | === GET /api/v1/folders === | ||
Retorna la estructura jerárquica completa de carpetas, subcarpetas y formularios, filtrada automáticamente por los roles del usuario. | 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) ==== | ==== Respuesta Exitosa (200 OK) ==== | ||
<source lang="json"> | <source lang="json"> | ||
{ | |||
"respuestasHoy": 142, | |||
"respuestasTotal": 12850, | |||
"formulariosActivos": 18 | |||
} | |||
</source> | </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 ==== | ==== Parámetros ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| | ! Parámetro !! Tipo !! Obligatorio !! Descripción | ||
| | |- | ||
|Sí | | 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;"> | |||
== | |||
=== POST /api/v1/forms === | === POST /api/v1/forms === | ||
Crea un nuevo formulario dinámico asociando su esquema JSON y retornando un UUID | Crea un nuevo formulario dinámico asociando su esquema JSON y retornando un UUID para la URL pública. | ||
==== Parámetros ==== | ==== Parámetros ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
|Body | ! Parámetro !! Tipo !! Obligatorio !! Descripción | ||
|Object | |- | ||
|Sí | | Body || Object || Sí || Datos requeridos para la plantilla de formulario. | ||
| | |||
|} | |} | ||
==== Respuesta Exitosa (201 Created) ==== | ==== Respuesta Exitosa (201 Created) ==== | ||
<source lang="json"> | <source lang="json"> | ||
| Línea 172: | Línea 73: | ||
</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"> | |||
{ | |||
"respuestaJson": "{\"idtercero\":1502,\"idsucursal\":1,\"respuestas\":[{\"pregunta_id\":\"q1\",\"valor\":\"Excelente\"}]}" | |||
} | |||
</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 ==== | ==== Parámetros ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Parámetro !! Tipo !! Obligatorio !! Descripción | |||
|- | |- | ||
|uuid | | uuid || String || Sí (Path) || UUID del formulario a actualizar. | ||
|String | |- | ||
|Sí (Path) | | 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.