postFormsData
Envía datos del formulario a la plataforma OneEntry.
🎯 ¿Qué hace este método?
Este método envía datos del formulario a la plataforma OneEntry. Piensa en ello como hacer clic en "Enviar" en un formulario de contacto: envía toda la entrada del usuario (nombre, correo electrónico, mensaje, archivos, etc.) al servidor.
Casos de uso:
- 📝 Formularios de contacto
- 📋 Formularios de registro
- 💬 Formularios de retroalimentación
- 📤 Cargas de archivos
- 🎫 Tickets de soporte
📖 Explicación Simple
Cuando un usuario completa un formulario en tu sitio web, necesitas enviar esos datos a algún lugar. Este método hace exactamente eso: toma todos los campos del formulario (texto, números, archivos, etc.) y los envía a OneEntry.
Piénsalo como:
El usuario completa el formulario → Tu código llama a postFormsData() → Datos guardados en OneEntry ✅
🚀 Ejemplo Súper Simple (¡Empieza Aquí!)
Escenario: Tienes un formulario de contacto con solo un campo de nombre.
// Paso 1: El usuario completa el formulario (por ejemplo, ingresa "John Doe")
// Paso 2: Envíalo a OneEntry
const response = await FormData.postFormsData({
formIdentifier: "contact_us", // 👈 El nombre de tu formulario
formModuleConfigId: 2, // 👈 ID de configuración del formulario (desde el administrador de OneEntry)
moduleEntityIdentifier: "blog", // 👈 Dónde guardarlo (desde OneEntry)
replayTo: null, // 👈 Correo electrónico de respuesta (opcional)
status: "sent", // 👈 "enviado" o "borrador"
formData: [ // 👈 Los datos reales del formulario
{
marker: "name", // 👈 Nombre del campo
type: "string", // 👈 Tipo de campo
value: "John Doe" // 👈 Entrada del usuario
}
]
});
// ✅ ¡Listo! Formulario enviado con éxito
console.log("Formulario enviado, ID:", response.formData.id);
¡Eso es todo! Ahora veamos cómo manejar diferentes tipos de campos...
📋 Lo Que Necesitas Saber Antes de Usar
Antes de llamar a este método, necesitas estas 3 cosas del panel de administración de OneEntry:
- formIdentifier - El nombre único de tu formulario (por ejemplo, "contact_us")
- formModuleConfigId - ID de configuración del formulario (un número, por ejemplo, 2)
- moduleEntityIdentifier - Dónde almacenar los datos (por ejemplo, "blog", "contacts")
¿Cómo encontrarlos?
- Inicia sesión en OneEntry Admin
- Ve a la sección de Formularios
- Copia los valores de la configuración de tu formulario
🔧 Firma del Método
FormData.postFormsData(
body*,
body.formIdentifier*,
body.formModuleConfigId*,
body.moduleEntityIdentifier*,
body.replayTo*,
body.status*,
body.formData*,
body.fileQuery,
langCode
);
Esquema de Parámetros
Esquema (body)
body(required): IBodyPostFormData
Cuerpo de la solicitud
ejemplo:
{
"formIdentifier": "test-form",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
]
}
body.formIdentifier(required): string
Identificador de texto (marcador) del formulario.
ejemplo: "form"
body.formModuleConfigId(required): number
El identificador único de la configuración del módulo del formulario.
ejemplo: 2
body.moduleEntityIdentifier(required): string
Identificador de texto (marcador) de la entidad del módulo.
ejemplo: "blog"
body.replayTo(required): string | null
Correo electrónico para responder.
ejemplo: "some@email.com"
body.status(required): string
Estado del formulario.
ejemplo: "sent"
body.formData(required): FormDataType[]
Array de objetos de datos del formulario.
ejemplo:
[
{
"marker": "name",
"type": "string",
"value": "Jack"
}
]
body.fileQuery: IUploadingQuery
Consulta de archivo opcional para cargar archivos.
ejemplo:
{
"type": "page",
"entity": "editor",
"id": 3787
}
langCode: string
Código de idioma. Predeterminado: "en_US"
ejemplo: "en_US"
Ejemplos
Ejemplo mínimo
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "last_name", "type": "string" "value": "Andrey" } ]};
const response = await FormData.postFormsData(body);
Ejemplo con un atributo de tipo simple "string", "number", "float"
const body = { "formIdentifier": "test-form", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "string_marker", "type": "string", "value": "Username" }, { "marker": "number_marker", "type": "number", "value": 1 }, { "marker": "float_marker", "type": "float", "value": 2.256 } ]};
const response = await FormData.postFormsData(body);
Ejemplo con un atributo de tipo simple "date", "dateTime", "time"
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "date_marker", "type": "date", "value": { "fullDate": "2024-05-07T21:02:00.000Z", "formattedValue": "08-05-2024 00:02", "formatString": "DD-MM-YYYY HH:mm" } } ]};
const response = await FormData.postFormsData(body);
Ejemplo con un atributo de tipo simple "text" (Solo uno de htmlValue, plainValue o mdValue puede ser proporcionado)
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "about_marker", "type": "text", "value": [ { "htmlValue": "<p>Hola mundo</p>", "params": { "isImageCompressed": true, "editorMode": "html" } } ] } ]};
const response = await FormData.postFormsData(body);
Ejemplo con un atributo de tipo simple "textWithHeader" (Solo uno de htmlValue, plainValue o mdValue puede ser proporcionado)
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { marker: "textwithheader_marker", type: "textWithHeader", value: [ { "header": "Título", "htmlValue": "<p>Hola Mundo</p>", "params": { "isImageCompressed": true, "editorMode": "html" } } ] } ]};
const response = await FormData.postFormsData(body);
Ejemplo con atributo de tipo "image"
const testImageUrl = 'https://your-project.oneentry.cloud/cloud-static/files/project/product/2954/image/7e0a6a70-a23d-410f-8b6a-f8b4f7483244.png';const filename = 'test-image.png';
/* En un escenario del mundo real, deberías usar la API de archivos para crear un archivo desde la URL, pero por simplicidad, usaremos una URL de archivo predefinida y usaremos el método createFileFromUrl para este ejemplo */const file = await FileUploading.createFileFromUrl(testImageUrl, filename);
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { marker: "image_marker", type: "image", value: [ file ] } ]};
const response = await FormData.postFormsData(body);
Ejemplo con atributo de tipo "groupOfImages"
const testImageUrl = 'https://your-project.oneentry.cloud/cloud-static/files/project/product/2954/image/7e0a6a70-a23d-410f-8b6a-f8b4f7483244.png';const filename = 'test-image.png';
/* En un escenario del mundo real, deberías usar la API de archivos para crear un archivo desde la URL, pero por simplicidad, usaremos una URL de archivo predefinida y usaremos el método createFileFromUrl para este ejemplo */const file = await FileUploading.createFileFromUrl(testImageUrl, filename);
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { marker: "groupofimages_marker", type: "groupOfImages", value: [ file ] } ]};
const response = await FormData.postFormsData(body);
Ejemplo con atributo de tipo "files"
const testImageUrl = 'https://your-project.oneentry.cloud/cloud-static/files/project/product/2954/image/7e0a6a70-a23d-410f-8b6a-f8b4f7483244.png';const filename = 'test-image.png';
/* En un escenario del mundo real, deberías usar la API de archivos para crear un archivo desde la URL, pero por simplicidad, usaremos una URL de archivo predefinida y usaremos el método createFileFromUrl para este ejemplo */const file = await FileUploading.createFileFromUrl(testImageUrl, filename);
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "picture_marker", "type": "file", "value": [ { "filename": "files/project/page/10/image/Screenshot-from-2024-05-02-15-23-14.png", "downloadLink": "http://my-site.com/cloud-static/files/project/page/10/image/Screenshot-from-2024-05-02-15-23-14.png", "size": 392585 } ] } ]};
const response = await FormData.postFormsData(body);
Ejemplo con atributo de tipo "radioButton" o "list"
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "selector_marker", "type": "list", "value": [ { "marker": "list", "type": "list", "value": ["1"] } ] } ]};
const response = await FormData.postFormsData(body);
Ejemplo con atributo de tipo "entity" (lista anidada)
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "entity_marker", "type": "entity", "value": [25, 32, 24] } ]};
const response = await FormData.postFormsData(body);
Valor - identificadores numéricos para páginas e identificadores de cadena para productos. Los identificadores de productos deben incluir el prefijo 'p-', por ejemplo, 'p-1-', 'p-2-', etc. p-[parentId]-[productId]
Ejemplo con atributo de tipo "timeInterval"
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { marker: 'timeinterval_marker', type: 'timeInterval', value: [ [ "2025-02-11T16:00:00.000Z", "2025-02-13T16:00:00.000Z" ] ] }, ]};
const response = await FormData.postFormsData(body);
valor — array de intervalos en formato ISO 8601. por ejemplo 2025-02-11T16:00:00:000Z
2025 — año; 02 — mes; 11 — día del mes; T — separador entre fecha y hora; 16:00:00 — hora en formato horas:minutos:segundos; 000Z — milisegundos e indicación de zona horaria. Z significa que la hora está especificada en formato UTC.
Ejemplo de retorno:
{
"formData": {
"formIdentifier": "test-form",
"time": "2026-01-07T04:15:52.928Z",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
],
"entityIdentifier": "blog",
"fingerprint": "UQ_ue7gas",
"isUserAdmin": false,
"formModuleId": 2,
"userIdentifier": null,
"parentId": null,
"id": 3481
},
"actionMessage": ""
}
Esquema de respuesta
Esquema: IPostFormResponse
formData: object
Datos del formulario.
ejemplo:
{
"id": 42,
"formIdentifier": "contact_form",
"time": "2023-10-01T12:00:00Z",
"entityIdentifier": "blog",
"isUserAdmin": false,
"formModuleId": 2,
"parentId": null,
"userIdentifier": null,
"formData": [
{
"marker": "name",
"type": "string",
"value": "Jack"
}
]
}
formData.id: number
El identificador único de la página del formulario.
ejemplo: 12345
formData.formIdentifier: string
El identificador del formulario.
ejemplo: "contact_form"
formData.time: string
La hora del envío del formulario.
ejemplo: "2023-10-01T12:00:00Z"
formData.entityIdentifier: string
El identificador de la entidad.
ejemplo: "blog"
formData.isUserAdmin: boolean
¿Es el usuario administrador?
ejemplo: false
formData.formModuleId: number
El identificador del módulo del formulario.
ejemplo: 2
formData.parentId: any
El identificador del padre.
ejemplo: null
formData.userIdentifier: any
El identificador del usuario.
ejemplo: null
formData.formData: FormDataType[]
Datos de los campos del formulario.
ejemplo:
[
{
"marker": "name",
"type": "string",
"value": "Jack"
}
]
actionMessage: string
Mensaje de acción para los datos del formulario.
ejemplo: "Formulario enviado con éxito"