Survey
Endpoint para exportação de dados de surveys (censos e pesquisas).
📥 Collection Postman
URLs
| Método | URL | Ação | Descrição |
|---|---|---|---|
| GET | /api/survey | Listar | Lista todos os surveys disponíveis |
| GET | /api/survey/{id}/structure | Visualizar | Exporta a estrutura (perguntas) de um survey |
| GET | /api/survey/{id}/answers | Visualizar | Exporta as respostas de um survey (paginado) |
Produção:
{connect-producao}/api/surveyHomologação:
{connect-homologacao}/api/surveyAutenticaçã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
{
"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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | number | Sim | ID do survey |
Exemplo
GET {connect-producao}/api/survey/8/structureResposta de Sucesso
Status: 200 OK
{
"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
| Campo | Tipo | Descrição |
|---|---|---|
chapterId | number | ID do capítulo |
chapterNome | string | Nome do capítulo |
reg | array | Array de perguntas do capítulo |
reg[].regId | string | ID da pergunta |
reg[].regNome | string | Texto 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | number | Sim | ID do survey |
Parâmetros de Query:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
page | number | Não | 1 | Número da página |
pageSize | number | Não | 500 | Quantidade de registros por página (máx: 500) |
Exemplo
GET {connect-producao}/api/survey/8/answers?page=1&pageSize=500Resposta de Sucesso
Status: 200 OK
{
"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
| Campo | Tipo | Descrição |
|---|---|---|
page | number | Página atual |
pageSize | number | Tamanho da página |
totalPages | number | Total de páginas |
totalRecords | number | Total de registros |
answers | array | Array de respostas |
Campos de cada Resposta
| Campo | Tipo | Descrição |
|---|---|---|
answerDate | datetime | Data/hora da resposta (ISO 8601) |
userId | number | ID do usuário no Fanbase |
cpf | string | CPF do usuário |
email | string | Email do usuário |
respostas | object | Objeto com as respostas (chave = regId, valor = resposta) |
Exemplo de Implementação
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
- Listar surveys disponíveis para identificar o ID desejado
- Exportar estrutura para entender as perguntas e mapear os
regId - 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.
