Skip to content

Survey

Endpoint para exportação de dados de surveys (censos e pesquisas).

📥 Collection Postman

Baixar Collection - Survey Export

URLs

MétodoURLAçãoDescrição
GET/api/surveyListarLista todos os surveys disponíveis
GET/api/survey/{id}/structureVisualizarExporta a estrutura (perguntas) de um survey
GET/api/survey/{id}/answersVisualizarExporta as respostas de um survey (paginado)

Produção:

{connect-producao}/api/survey

Homologação:

{connect-homologacao}/api/survey

Autenticação

Todas as requisições requerem um token de acesso obtido no endpoint de Security. O token deve ser enviado no header AccessToken.

AccessToken: {seu_token}

1. Listar Surveys

Lista todos os surveys disponíveis para o cliente.

Requisição

Endpoint: GET {connect-producao}/api/survey

Headers:

AccessToken: {access_token}

Resposta de Sucesso

Status: 200 OK

json
{
  "header": {
    "codigo": 1,
    "msg": "ok."
  },
  "data": [
    {
      "surveyId": "8",
      "surveyNome": "Pesquisa de Satisfação 2025"
    },
    {
      "surveyId": "15",
      "surveyNome": "Censo Anual de Sócios"
    }
  ]
}

2. Exportar Estrutura (Perguntas)

Exporta a estrutura completa de um survey, incluindo capítulos e perguntas.

Requisição

Endpoint: GET {connect-producao}/api/survey/{id}/structure

Headers:

AccessToken: {access_token}

Parâmetros de Path:

ParâmetroTipoObrigatórioDescrição
idnumberSimID do survey

Exemplo

GET {connect-producao}/api/survey/8/structure

Resposta de Sucesso

Status: 200 OK

json
{
  "header": {
    "codigo": 1,
    "msg": "ok."
  },
  "data": [
    {
      "chapterId": 1,
      "chapterNome": "Dados Pessoais",
      "reg": [
        {
          "regId": "1",
          "regNome": "Qual é o seu nome completo?"
        },
        {
          "regId": "2",
          "regNome": "Qual é o seu email?"
        }
      ]
    },
    {
      "chapterId": 2,
      "chapterNome": "Preferências",
      "reg": [
        {
          "regId": "3",
          "regNome": "Qual seu esporte favorito?"
        },
        {
          "regId": "4",
          "regNome": "Com que frequência você assiste aos jogos?"
        }
      ]
    }
  ]
}

Campos da Resposta

CampoTipoDescrição
chapterIdnumberID do capítulo
chapterNomestringNome do capítulo
regarrayArray de perguntas do capítulo
reg[].regIdstringID da pergunta
reg[].regNomestringTexto da pergunta

3. Exportar Respostas

Exporta as respostas de um survey com suporte a paginação.

Requisição

Endpoint: GET {connect-producao}/api/survey/{id}/answers

Headers:

AccessToken: {access_token}

Parâmetros de Path:

ParâmetroTipoObrigatórioDescrição
idnumberSimID do survey

Parâmetros de Query:

ParâmetroTipoObrigatórioPadrãoDescrição
pagenumberNão1Número da página
pageSizenumberNão500Quantidade de registros por página (máx: 500)

Exemplo

GET {connect-producao}/api/survey/8/answers?page=1&pageSize=500

Resposta de Sucesso

Status: 200 OK

json
{
  "header": {
    "codigo": 1,
    "msg": "ok."
  },
  "data": {
    "page": 1,
    "pageSize": 500,
    "totalPages": 10,
    "totalRecords": 4532,
    "answers": [
      {
        "answerDate": "2025-01-15T14:30:00Z",
        "userId": 123456,
        "cpf": "12345678900",
        "email": "usuario@exemplo.com",
        "respostas": {
          "1": "João da Silva",
          "2": "joao@exemplo.com",
          "3": "Futebol",
          "4": "Semanalmente"
        }
      },
      {
        "answerDate": "2025-01-15T15:00:00Z",
        "userId": 123457,
        "cpf": "98765432100",
        "email": "maria@exemplo.com",
        "respostas": {
          "1": "Maria Santos",
          "2": "maria@exemplo.com",
          "3": "Basquete",
          "4": "Mensalmente"
        }
      }
    ]
  }
}

Campos da Resposta

CampoTipoDescrição
pagenumberPágina atual
pageSizenumberTamanho da página
totalPagesnumberTotal de páginas
totalRecordsnumberTotal de registros
answersarrayArray de respostas

Campos de cada Resposta

CampoTipoDescrição
answerDatedatetimeData/hora da resposta (ISO 8601)
userIdnumberID do usuário no Fanbase
cpfstringCPF do usuário
emailstringEmail do usuário
respostasobjectObjeto com as respostas (chave = regId, valor = resposta)

Exemplo de Implementação

javascript
async function listarSurveys(accessToken) {
  const response = await fetch('{connect-producao}/api/survey', {
    method: 'GET',
    headers: {
      'AccessToken': accessToken
    }
  });

  if (!response.ok) {
    throw new Error(`Erro ${response.status}: ${response.statusText}`);
  }

  return await response.json();
}

async function exportarEstrutura(surveyId, accessToken) {
  const response = await fetch(`{connect-producao}/api/survey/${surveyId}/structure`, {
    method: 'GET',
    headers: {
      'AccessToken': accessToken
    }
  });

  if (!response.ok) {
    throw new Error(`Erro ${response.status}: ${response.statusText}`);
  }

  return await response.json();
}

async function exportarRespostas(surveyId, page, pageSize, accessToken) {
  const url = `{connect-producao}/api/survey/${surveyId}/answers?page=${page}&pageSize=${pageSize}`;
  
  const response = await fetch(url, {
    method: 'GET',
    headers: {
      'AccessToken': accessToken
    }
  });

  if (!response.ok) {
    throw new Error(`Erro ${response.status}: ${response.statusText}`);
  }

  return await response.json();
}

// Exportar todas as respostas (com paginação)
async function exportarTodasRespostas(surveyId, accessToken) {
  const todasRespostas = [];
  let page = 1;
  let totalPages = 1;
  
  do {
    const result = await exportarRespostas(surveyId, page, 500, accessToken);
    todasRespostas.push(...result.data.answers);
    totalPages = result.data.totalPages;
    page++;
  } while (page <= totalPages);
  
  return todasRespostas;
}

Fluxo Recomendado

  1. Listar surveys disponíveis para identificar o ID desejado
  2. Exportar estrutura para entender as perguntas e mapear os regId
  3. Exportar respostas página por página até obter todos os dados

Dica de Performance

Para surveys com muitas respostas, utilize o máximo de pageSize (500) para reduzir o número de requisições necessárias.

Documentação da API Fanbase