Diferencia entre revisiones de «API Modulo Forms»

De WikiSerpi
Ir a la navegación Ir a la búsqueda
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 ==


= API Módulo Forms =
A continuación, los servicios expuestos organizados por método HTTP. Haz clic en cada bloque para expandir la documentación.


== Introducción ==
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #c8e6c9; background-color: #f1f8e9; padding: 10px; margin-bottom: 10px; border-radius: 4px;">
El API del Módulo Forms permite la consulta, creación y gestión de los formularios dentro del sistema.
<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;">


* '''URL Base:''' <code>https://api.tudominio.com/v1/</code>
=== GET /api/v1/categories ===
* '''Formato de respuesta:''' <code>JSON</code>
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.


== Autenticación ==
=== GET /api/v1/forms/stats ===
Todas las peticiones a los endpoints protegidos deben incluir un token JWT en las cabeceras (headers) de la petición.<source lang="http">
Calcula y devuelve los indicadores clave (KPIs) globales del Workspace para la empresa.
Authorization: Bearer TU_TOKEN_AQUI
==== Respuesta Exitosa (200 OK) ====
</source>---
<source lang="json">
{
  "respuestasHoy": 142,
  "respuestasTotal": 12850,
  "formulariosActivos": 18
}
</source>


== Endpoints ==
=== 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.
|}


=== 1. Obtener lista de formularios ===
</div>
Retorna una lista paginada de los formularios disponibles.
</div>


* '''Endpoint:''' <code>/forms</code>
<div class="mw-collapsible mw-collapsed" style="border: 1px solid #bbdefb; background-color: #e3f2fd; padding: 10px; margin-bottom: 10px; border-radius: 4px;">
* '''Método:''' <code>GET</code>
<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 de Consulta (Query Params) ====
=== 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
|-
|-
|limit
! Parámetro !! Tipo !! Obligatorio !! Descripción
|Integer
|No
|Cantidad máxima de registros a devolver (por defecto: 20).
|-
|-
|status
| Body || Object || Sí || Datos requeridos para la plantilla de formulario.
|String
|No
|Filtra por estado (ej. <code>active</code>, <code>archived</code>).
|}
|}
 
==== Respuesta Exitosa (201 Created) ====
==== Respuesta Exitosa ====
 
* '''Código:''' <code>200 OK</code>
* '''Cuerpo:'''
<source lang="json">
<source lang="json">
{
{
   "success": true,
   "formId": 45,
   "data": [
   "uuid": "d3b07384-d113-4f4a-a62e-336712345678",
    {
  "titulo": "Encuesta de Satisfacción en Visita",
      "_id": "60d5ecb8b392d7",
  "urlPublica": "/f/15/d3b07384-d113-4f4a-a62e-336712345678"
      "title": "Inspección de Calidad",
      "createdAt": "2026-08-21T10:00:00Z"
    }
  ]
}
}
</source>
</source>


=== 2. Crear un nuevo formulario ===
=== POST /api/v1/forms/public/{empresaid}/{uuid}/responses ===
Permite registrar la estructura de un nuevo formulario.
Endpoint público para registrar la respuesta diligenciada por un encuestado. Garantiza inmutabilidad y orquesta el cobro de folio SaaS.
 
==== Payload Esperado ====
* '''Endpoint:''' <code>/forms</code>
* '''Método:''' <code>POST</code>
 
==== Cuerpo de la Petición (Payload) ====
<source lang="json">
<source lang="json">
{
{
   "title": "Formulario de Novedades",
   "respuestaJson": "{\"idtercero\":1502,\"idsucursal\":1,\"respuestas\":[{\"pregunta_id\":\"q1\",\"valor\":\"Excelente\"}]}"
  "fields": ["empleado_id", "fecha", "descripcion"]
}
}
</source>
</source>


==== Respuesta Exitosa ====
=== 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>.


* '''Código:''' <code>201 Created</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;">


== Códigos de Error Frecuentes ==
=== 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"
!Código HTTP
!Mensaje
!Descripción
|-
|-
|400
! Parámetro !! Tipo !! Obligatorio !! Descripción
|Bad Request
|La petición está mal formada o faltan campos obligatorios.
|-
|-
|401
| uuid || String || Sí (Path) || UUID del formulario a actualizar.
|Unauthorized
|El token de acceso es inválido o ha expirado.
|-
|-
|500
| Body || Object || Sí || Datos actualizados del formulario.
|Internal Server Error
|Error interno en el servidor de la aplicación.
|}
|}
=== 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 (Consultas y Lecturas)

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 (Creación y Procesos)

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 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 (Actualizaciones)

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 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 (Eliminaciones)

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.