Skip to content

Encuestas

Endpoints para consulta de encuestas disponibles.

Listar Encuestas

GET /api/searches

Retorna la lista de encuestas vinculadas al token del usuario.

Casos de uso:

  • Obtener IDs de encuestas para integración
  • Popular selectores de encuesta
  • Validar encuestas disponibles para disparo

Ejemplo de Solicitud

bash
curl -X GET "https://api-b2s.experienciab2s.com/api/searches" \
     -H "Authorization: Bearer SU_TOKEN"

Respuesta Exitosa (200)

json
[
  {
    "id": "103a525c-0ce3-4182-a504-aad595425233",
    "name": "Encuesta de Satisfacción - Restaurante",
    "company_id": "603a525c-0ce3-4182-a504-aad595425233"
  },
  {
    "id": "203a525c-0ce3-4182-a504-aad595425233",
    "name": "Encuesta de Satisfacción - Delivery",
    "company_id": "503a525c-0ce3-4182-a504-aad595425233"
  }
]

Estructura de la Respuesta

CampoTipoDescripción
idstringID único de la encuesta (UUID)
namestringNombre de la encuesta
company_idstringID de la empresa vinculada (UUID)

Códigos de Respuesta

CódigoDescripción
200Encuestas encontradas
401Token ausente o inválido
403Token inválido o usuario no autorizado
404Token de integración no encontrado

Obtener Encuesta con Preguntas

GET /api/searches/:id

Retorna los detalles completos de una encuesta, incluyendo todas las preguntas con soporte multiidioma. La estructura de la respuesta varía según el valor de has_page:

  • has_page: false: Las preguntas se retornan directamente en el campo questions
  • has_page: true: Las preguntas están organizadas dentro de páginas en el campo pages

Casos de uso:

  • Renderizar formulario de encuesta personalizado
  • Obtener estructura completa de preguntas para integración
  • Cargar traducciones de las preguntas para sistemas multilingües
  • Validar tipos y formatos de preguntas antes del envío

Parámetros de URL

ParámetroTipoObligatorioDescripción
idstringID único de la encuesta (UUID)

Ejemplo de Solicitud

bash
curl -X GET "https://api-b2s.experienciab2s.com/api/searches/103a525c-0ce3-4182-a504-aad595425233" \
     -H "Authorization: Bearer SU_TOKEN"

Respuesta Exitosa (200) - Sin Páginas

Cuando has_page es false, las preguntas se retornan directamente:

json
{
  "has_page": false,
  "translations": [
    {
      "language_code": "pt-BR",
      "nps": "Como você avalia sua experiência?",
      "discursive_question": "Deixe seu comentário",
      "question_page": "Em qual salão você se encontra?"
    },
    {
      "language_code": "es-ES",
      "nps": "¿Cómo califica su experiencia?",
      "discursive_question": "Deje su comentario",
      "question_page": "¿En qué salón se encuentra?"
    }
  ],
  "questions": [
    {
      "id": "q1-uuid-example",
      "required": true,
      "others": false,
      "unknown": false,
      "type": "Resposta curta",
      "format": "default",
      "options": [],
      "translations": [
        {
          "language_code": "pt-BR",
          "name": "Qual seu nome completo?",
          "description": "Informe seu nome para identificação"
        },
        {
          "language_code": "es-ES",
          "name": "¿Cuál es su nombre completo?",
          "description": "Ingrese su nombre para identificación"
        }
      ]
    },
    {
      "id": "q2-uuid-example",
      "required": false,
      "others": false,
      "unknown": false,
      "type": "Rating",
      "format": "default",
      "options": [
        {
          "id": "opt1-uuid",
          "translations": [
            {
              "language_code": "pt-BR",
              "name": "Excelente"
            },
            {
              "language_code": "es-ES",
              "name": "Excelente"
            }
          ]
        },
        {
          "id": "opt2-uuid",
          "translations": [
            {
              "language_code": "pt-BR",
              "name": "Bom"
            },
            {
              "language_code": "es-ES",
              "name": "Bueno"
            }
          ]
        }
      ],
      "translations": [
        {
          "language_code": "pt-BR",
          "name": "Como você avalia o atendimento?",
          "description": "Avalie a qualidade do atendimento recebido",
          "detractor_replica": "Lamentamos pela sua experiência",
          "neutral_replica": "Obrigado pelo feedback",
          "promoter_replica": "Ficamos felizes com sua avaliação!"
        },
        {
          "language_code": "es-ES",
          "name": "¿Cómo califica la atención?",
          "description": "Evalúe la calidad de la atención recibida",
          "detractor_replica": "Lamentamos su experiencia",
          "neutral_replica": "Gracias por su feedback",
          "promoter_replica": "¡Estamos felices con su calificación!"
        }
      ]
    }
  ]
}

Respuesta Exitosa (200) - Con Páginas

Cuando has_page es true, las preguntas están organizadas en páginas:

json
{
  "has_page": true,
  "translations": [
    {
      "language_code": "pt-BR",
      "nps": "Como você avalia sua experiência?",
      "discursive_question": "Deixe seu comentário",
      "question_page": "Em qual salão você se encontra?"
    },
    {
      "language_code": "es-ES",
      "nps": "¿Cómo califica su experiencia?",
      "discursive_question": "Deje su comentario",
      "question_page": "¿En qué salón se encuentra?"
    }
  ],
  "pages": [
    {
      "id": "page1-uuid-example",
      "translations": [
        {
          "language_code": "pt-BR",
          "name": "Dados Pessoais"
        },
        {
          "language_code": "es-ES",
          "name": "Datos Personales"
        }
      ],
      "questions": [
        {
          "id": "q1-uuid-example",
          "required": true,
          "others": false,
          "unknown": false,
          "type": "Resposta curta",
          "format": "default",
          "options": [],
          "translations": [
            {
              "language_code": "pt-BR",
              "name": "Qual seu nome completo?",
              "description": "Informe seu nome para identificação"
            },
            {
              "language_code": "es-ES",
              "name": "¿Cuál es su nombre completo?",
              "description": "Ingrese su nombre para identificación"
            }
          ]
        }
      ]
    },
    {
      "id": "page2-uuid-example",
      "translations": [
        {
          "language_code": "pt-BR",
          "name": "Avaliação do Atendimento"
        },
        {
          "language_code": "es-ES",
          "name": "Evaluación del Servicio"
        }
      ],
      "questions": [
        {
          "id": "q2-uuid-example",
          "required": true,
          "others": false,
          "unknown": false,
          "type": "Rating",
          "format": "default",
          "options": [
            {
              "id": "opt1-uuid",
              "translations": [
                {
                  "language_code": "pt-BR",
                  "name": "Excelente"
                },
                {
                  "language_code": "es-ES",
                  "name": "Excelente"
                }
              ]
            },
            {
              "id": "opt2-uuid",
              "translations": [
                {
                  "language_code": "pt-BR",
                  "name": "Bom"
                },
                {
                  "language_code": "es-ES",
                  "name": "Bueno"
                }
              ]
            }
          ],
          "translations": [
            {
              "language_code": "pt-BR",
              "name": "Como você avalia o atendimento?",
              "description": "Avalie a qualidade do atendimento recebido",
              "detractor_replica": "Lamentamos pela sua experiência",
              "neutral_replica": "Obrigado pelo feedback",
              "promoter_replica": "Ficamos felizes com sua avaliação!"
            },
            {
              "language_code": "es-ES",
              "name": "¿Cómo califica la atención?",
              "description": "Evalúe la calidad de la atención recibida",
              "detractor_replica": "Lamentamos su experiencia",
              "neutral_replica": "Gracias por su feedback",
              "promoter_replica": "¡Estamos felices con su calificación!"
            }
          ]
        }
      ]
    }
  ]
}

Estructura de la Respuesta

CampoTipoDescripción
has_pagebooleanIndica si la encuesta tiene múltiples páginas
translationsarrayTraducciones de los textos principales de la encuesta
questionsarrayLista de preguntas (solo cuando has_page: false)
pagesarrayLista de páginas con preguntas (solo cuando has_page: true)

Objeto translations (de la encuesta)

CampoTipoDescripción
language_codestringCódigo del idioma (ej: "pt-BR", "en-US", "es-ES")
npsstringTexto de la pregunta NPS principal
discursive_questionstringTexto de la pregunta discursiva/comentario
question_pagestringTexto de la pregunta para selección de página

Estructura de Page

CampoTipoDescripción
idstringID único de la página (UUID)
translationsarrayTraducciones del nombre de la página
questionsarrayLista de preguntas de la página

Objeto translations (de la página)

CampoTipoDescripción
language_codestringCódigo del idioma (ej: "pt-BR", "es-ES")
namestringNombre/título de la página

Estructura de Question

CampoTipoDescripción
idstringID único de la pregunta (UUID)
requiredbooleanSi la pregunta es obligatoria
othersbooleanSi permite opción "Otros"
unknownbooleanSi permite opción "No sé/Desconocido"
typestringTipo de pregunta (ver tabla abajo)
formatstringFormato de visualización (ver tabla abajo)
optionsarrayOpciones de respuesta disponibles
translationsarrayTraducciones de la pregunta en diferentes idiomas

Tipos de Pregunta (type)

TipoDescripción
AtendenteSelección de empleado/funcionario
Caixa de seleçãoOpción múltiple con checkboxes
CSATCustomer Satisfaction Score (1-5)
DataCampo de selección de fecha
EmoticonEvaluación por emoticones/emojis
Like/DislikeEvaluación binaria (me gusta/no me gusta)
Multipla escolhaSelección entre múltiples opciones
NPSNet Promoter Score (0-10)
RatingEvaluación por estrellas/puntuación
Resposta curtaCampo de texto libre

Formatos de Visualización (format)

FormatoDescripciónDisponible en
defaultVisualización estándar (botones)Todos los tipos
selectMenú desplegable (dropdown)Atendente, Multipla escolha
checkboxCasilla de selección múltipleAtendente

Objeto translations (de la pregunta)

CampoTipoDescripción
language_codestringCódigo del idioma (ej: "pt-BR", "es-ES")
namestringTexto traducido de la pregunta
descriptionstringDescripción traducida (opcional)
promoter_replicastringRespuesta para notas altas (opcional)
neutral_replicastringRespuesta para notas medias (opcional)
detractor_replicastringRespuesta para notas bajas (opcional)
criteriastringCriterio traducido (opcional)

Estructura de Option

CampoTipoDescripción
idstringID único de la opción (UUID)
translationsarrayTraducciones de la opción en otros idiomas

Objeto translations (de la opción)

CampoTipoDescripción
language_codestringCódigo del idioma (ej: "pt-BR", "es-ES")
namestringTexto traducido de la opción

Códigos de Respuesta

CódigoDescripción
200Encuesta encontrada exitosamente
401Token ausente o inválido
403Token inválido o usuario no autorizado
404Encuesta no encontrada

Flujo Recomendado para Integración

  1. Buscar encuesta: GET /api/searches/:id
  2. Seleccionar idioma: Filtrar traducciones por el language_code deseado
  3. Verificar has_page:
    • Si es false: Iterar directamente sobre questions
    • Si es true: Mostrar selección de página e iterar sobre pages[].questions
  4. Renderizar preguntas: Usar translations para mostrar en el idioma correcto

Integration Documentation