A survey has common properties and can contain an arbitrary number of answer fields.
This document aims to define a JSON format for storage of survey definitions, which will be returned by the survey API and stored in a MongoDB database.
Fields that are common to every survey and providing basic information.
Field name | Description |
---|---|
id |
Survey ID |
name |
Survey name |
description |
Survey description (optional) |
author |
Survey's author |
questions |
Array of question object |
A question has a randomly generated identifier, type, name and an optional description. Questions can be mandatory or optional.
Question format defines how the user should answer the question. It can be a freeform input of text or choice types like radio buttons, checkboxes and selects.
For choices input, a list of valid options is attached to the question, each option having a unique identifier and name.
Field name | Description |
---|---|
id |
Question unique ID |
name |
Question name |
description |
Question description (optional) |
required |
Should the answer be required. true or false |
type |
text / paragraph / radio / checkbox / select |
options |
If question is of type radio , checkbox or select , array of option object |
If the question is of type radio
, checkbox
or select
, valid options must
be attached to it.
Field name | Description |
---|---|
id |
Option unique ID |
name |
Option name |
{
"id": "hJVYUldjnf",
"name": "Music blind test",
"description": "A sample survey for react-surveys",
"author": "Hugo Caille <[email protected]>",
"questions": [
{
"id": 1,
"name": "Stop the world cause i wanna get off with you",
"required": false,
"type": "text"
},
{
"id": 2,
"name": "Interstate 8",
"description": "Find the band singing this",
"required": true,
"type": "select",
"options": [
{
"id": 1,
"name": "Moderat"
},
{
"id": 2,
"name": "Modest Mouse"
},
{
"id": 3,
"name": "Parquet Courts"
}
]
},
{
"id": 3,
"name": "How you'll rate Tame Impala's Lonerism",
"type": "radio",
"options": [
{
"id": 1,
"name": "1"
},
{
"id": 2,
"name": "2"
},
{
"id": 3,
"name": "3"
},
{
"id": 4,
"name": "4"
},
{
"id": 5,
"name": "5"
},
]
}
]
}