Información general
Para desarrolladores
Web Service API (draft)
Opina publishes a RESTful Web Services API which allows the interaction with core services.
Index
| /api
|
| | /survey
|
| | | /[id]/simple
|
| | | /[id]/full
|
| | | /[id]/elementset
|
| | | /[id]/question
|
| | | /[id]/question/simple
|
| | | /[id]/event
|
| | | /[id]/access
|
| | | | /contact
|
| | | | /ticket
|
| | | | /ticket/export
|
| | | /[id]/invitation |
|
| | | | /[id]/send
|
| | /publish
|
| | | /survey/[id]/edition
|
| | | /edition/[id]
|
| | | /edition/[id]/lock
|
| | | /edition/[id]/unlock
|
| | /contact
|
| | | /[id]/address/[id]
|
| | | /[id]/job/[id]
|
| | /elementset
|
| | | /[id]/add/[id]
|
| | | /[id]/add/[id]/position/[pos]
|
| | | /[id]/remove/[id]
|
| | /element
|
| | | /[id]/move/[pos]
|
| | /question
|
| | | /basic/[id]
|
| | | /multiple/[id]
|
| | | /matrix/[id]
|
| | | /gradient/[id]
|
| | /reply
|
| | | /basic
|
| | | /multiple
|
| | | /matrix
|
| | | /gradient
|
| | | /survey/[id]
|
| | /textblock
|
| | /validation
|
| | /invitation
|
| | | /channel/[id]
|
| | /label
|
| | /plugin
|
| | | /[type]
|
| | | /register
|
| | /role
|
| | /user
|
Survey Methods
Create a new survey
- URL
- http://server:port/context/api/survey
- HTTP Method(s)
- PUT
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
survey:{
description:"[NEW] Description",
title:"[NEW] Title"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "id":9, "info": "Message with info"}
|
| 200 | {"success" = false, "code": "V0001", "type": "VALIDATION", "info": "Message with info", "messages: {"att1":"message1", "att2": "message2", ...}
|
| 400 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 403 | empty message
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
Update a survey
- URL
- http://server:port/context/api/survey/{id}
- HTTP Method(s)
- POST
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Survey identifier
|
- Request (example)
-
{
survey:{
description:"[MODIFIED] Description",
title:"[MODIFIED] Title"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "id":9, "info": "Messager with info"}
|
| 200 | {"success" = false, "code": "V0001", "type": "VALIDATION", "info": "Message with info", "messages: {"att1":"message1", "att2": "message2", ...}
|
| 400 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 403 | empty message
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
Get a survey
- URL
- http://server:port/context/api/survey/{id}/simple
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Survey identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with survey info
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- Responses examples
-
{
survey:{
creationDate:"2010-05-24T13:14:22",
description:"Description - Survey",
id:2,
modificationDate:"2010-05-24T13:14:22",
title:"Title - Survey"
}
}
Get a survey with its elements
- URL
- http://server:port/context/api/survey/{id}/full
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Survey identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with survey and its questions, groups and text blocks info
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- Responses examples
-
{
survey:{
creationDate:"2010-05-24T13:14:22",
description:"Description - Survey",
id:2,
modificationDate:"2010-05-24T13:14:22",
title:"Title - Survey",
elements:[
{
freeTextLabel:"Numeric free text label",
helpMessage: null,
id:7,
integer:true,
position:18,
prefix:null,
sufix:"Km",
template:false,
wording:"Numeric Question text"
},
{
freeTextLabel:null,
helpMessage:null,
id:9,
position:1,
template:false,
wording:"Open question text"
}
]
}
}
Delete a survey
- URL
- http://server:port/context/api/survey/{id}
- HTTP Method(s)
- DELETE
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Survey identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "info": "Messager with info"}
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
Delete several surveys
- URL
- http://server:port/context/api/survey
- HTTP Method(s)
- DELETE
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
survey:[
{
id:1
},
{
id:7
}
]
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "info": "Messager with info"}
|
| 400 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
Search a survey
- URL
- http://server:port/context/api/survey?parameterN=valueParameterN
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| title | Survey title
|
| description | Survey description
|
| activationDate | Survey activation date
|
| creationDate | Survey creation date
|
| modificationDate | Survey last modification date
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with surveys list info
|
| 403 | empty message
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- Responses examples
-
{
survey:[
{
creationDate:"2010-05-24T13:14:22",
description:"Description - Survey",
id:2,
modificationDate:"2010-05-24T13:14:22",
title:"Title - Survey"
},
{
creationDate:"2010-05-24T13:14:22",
description:"Description - Survey number 2",
id:3,
modificationDate:"2010-05-24T13:14:22",
title:"Survey number 2"
}
]
}
Publish Methods
Create a new edition
- URL
- http://server:port/context/api/publish/edition
- HTTP Method(s)
- PUT
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
edition: {
activationDate: "2012-01-11T00:00:00",
expirationDate: "2012-01-11T00:00:00",
surveyId: 19,
theme: {
kee: "default-theme"
},
title: "Primera edicion",
welcome: "<p>Welcome to the survey</p>",
end: "<p>Thanks. See you soon!</p>",
footer: "<p>General survey - 2012</p>",
header: "<p>Example survey</p>"
}
}
Get edition list
- URL
- http://server:port/context/api/publish/survey/{id}/edition
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Survey identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with editions info
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- Responses examples
-
{
editions: [
{
activationDate: "2012-01-11T00:00:00",
blocked: false,
end: "<p>Finalización</p>",
expirationDate: "2012-01-11T00:00:00",
footer: "<p>Pié</p>",
header: "<p>Cabecera</p>",
id: 18,
surveyId: 19,
theme: {
author: null,
description: null,
enabled: true,
filename: null,
id: 1,
installDate: "2012-01-09T13:54:49",
kee: "default-theme",
lastModifyDate: "2012-01-09T13:54:49",
name: "Default theme plugin",
version: "1.0"
},
title: "Primera edición",
url: "http://localhost:8080/opina/c/18",
welcome: "<p>Prueba</p>"
},
{
activationDate: "2012-01-26T00:00:00",
blocked: false,
end: null,
expirationDate: "2012-01-27T00:00:00",
footer: null,
header: null,
id: 20,
surveyId: 19,
theme: {
author: null,
description: null,
enabled: true,
filename: null,
id: 1,
installDate: "2012-01-09T13:54:49",
kee: "default-theme",
lastModifyDate: "2012-01-09T13:54:49",
name: "Default theme plugin",
version: "1.0"
},
title: "Segunda edición",
url: "http://localhost:8080/opina/c/20",
welcome: null
}
]
}
Unlock an edition
- URL
- http://server:port/context/api/publish/edition/{id}/unlock
- HTTP Method(s)
- POST
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Edition identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | {"id":[id],"message":"edition.unlock.success","success":true}
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
Lock an edition
- URL
- http://server:port/context/api/publish/edition/{id}/lock
- HTTP Method(s)
- POST
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Edition identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | {"id":[id],"message":"edition.lock.success","success":true}
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- URL
- http://server:port/context/api/contact
- HTTP Method(s)
- PUT
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
contact : {
address : [
{
country : "Spain",
extendedAddress : "C/Industria 1, Edificio Metropol 1, planta 3ª, módulo 3",
locality : "Mairena del Aljarafe",
postOfficeAddress : null,
postalCode : "41927",
region : "Andalucía",
street : "C/Industria 1",
type : "POSTAL"
},
{
country : "Spain",
extendedAddress : "C/Esperanza 55",
locality : "Mairena del Aljarafe",
postOfficeAddress : null,
postalCode : "41927",
region : "Andalucía",
street : "C/Esperanza",
type : "HOME"
}
],
birthDate : "2010-06-02",
email : "hello@klicap.es",
formatedName : "José Morales",
jobs : [
{
agent : null,
organization : {
department : null,
name : "klicap - ingeniería del puzle",
unit : null
},
role : "Software Developer",
tittle : "Software Developer"
}
],
name : "José",
phones : [
{
number : "+34664000629",
type : "CELL"
},
{
number : "+34954894322",
type : "WORK"
}
],
prefixName : "MR",
sufixName : "JMM",
surname : "Morales Martínez",
timezone : "+0100"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "id":9, "info": "Message with info"}
|
| 200 | {"success" = false, "code": "V0001", "type": "VALIDATION", "info": "Message with info", "messages: {"att1":"message1", "att2": "message2", ...}
|
| 400 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 403 | empty message
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- URL
- http://server:port/context/api/contact/{id}
- HTTP Method(s)
- POST
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Contact identifier
|
- Request (example)
-
{
contact : {
address : [
{
country : "Spain",
extendedAddress : "C/Industria 1, Edificio Metropol 1, planta 3ª, módulo 3",
id : 3,
locality : "Mairena del Aljarafe",
postOfficeAddress : null,
postalCode : "41927",
region : "Andalucía",
street : "C/Industria 1",
type : "POSTAL"
},
{
country : "Spain",
extendedAddress : "C/Esperanza 55",
id : 4,
locality : "Mairena del Aljarafe",
postOfficeAddress : null,
postalCode : "41927",
region : "Andalucía",
street : "C/Esperanza",
type : "HOME"
}
],
birthDate : "2010-06-02",
creationDate : "2010-06-02T17:16:29",
email : "hello@klicap.es",
formatedName : "José Morales",
id : 80,
jobs : [
{
agent : null,
id : 2,
organization : {
department : null,
id : 2,
name : "klicap - ingeniería del puzle",
unit : null
},
role : "Software Developer",
tittle : "Software Developer"
}
],
modificationDate : "2010-06-02T17:16:30",
name : "José",
phones : [
{
id : 3,
number : "+34664000629",
type : "CELL"
},
{
id : 4,
number : "+34954894322",
type : "WORK"
}
],
prefixName : "MR",
sufixName : "JMM",
surname : "Morales Martínez",
timezone : "+0100"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "id":9, "info": "Messager with info"}
|
| 200 | {"success" = false, "code": "V0001", "type": "VALIDATION", "info": "Message with info", "messages: {"att1":"message1", "att2": "message2", ...}
|
| 400 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 403 | empty message
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- URL
- http://server:port/context/api/contact/{id}
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Contact identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with contact info
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- Responses examples
-
{
contact : {
address : [
{
country : "Spain",
extendedAddress : "C/Industria 1, Edificio Metropol 1, planta 3ª, módulo 3",
id : 3,
locality : "Mairena del Aljarafe",
postOfficeAddress : null,
postalCode : "41927",
region : "Andalucía",
street : "C/Industria 1",
type : "POSTAL"
},
{
country : "Spain",
extendedAddress : "C/Esperanza 55",
id : 4,
locality : "Mairena del Aljarafe",
postOfficeAddress : null,
postalCode : "41927",
region : "Andalucía",
street : "C/Esperanza",
type : "HOME"
}
],
birthDate : "2010-06-02",
creationDate : "2010-06-02T17:16:29",
email : "hello@klicap.es",
formatedName : "José Morales",
id : 80,
jobs : [
{
agent : null,
id : 2,
organization : {
department : null,
id : 2,
name : "klicap - ingeniería del puzle",
unit : null
},
role : "Software Developer",
tittle : "Software Developer"
}
],
modificationDate : "2010-06-02T17:16:30",
name : "José",
phones : [
{
id : 3,
number : "+34664000629",
type : "CELL"
},
{
id : 4,
number : "+34954894322",
type : "WORK"
}
],
prefixName : "MR",
sufixName : "JMM",
surname : "Morales Martínez",
timezone : "+0100"
}
}
- URL
- http://server:port/context/api/contact/{id}
- HTTP Method(s)
- DELETE
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Contact identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "info": "Messager with info"}
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- URL
- http://server:port/context/api/contact
- HTTP Method(s)
- DELETE
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
contact:[
{
id:1
},
{
id:7
}
]
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "info": "Messager with info"}
|
| 400 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- URL
- http://server:port/context/api/contact?parameterN=valueParameterN
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| name | Contact name
|
| surname | Contact surname
|
| email | Contact email
|
| formatedName | Contact formated name
|
| creationDate | Contact creation date
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with contacts list info
|
| 403 | empty message
|
| 500 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|
- Responses examples
-
{
contacts : [
{
address : [
{
country : "Spain",
extendedAddress : "C/Industria 1, Edificio Metropol 1, planta 3ª, módulo 3",
id : 1,
locality : "Mairena del Aljarafe",
postOfficeAddress : null,
postalCode : "41927",
region : "Andalucía",
street : "C/Industria 1",
type : "POSTAL"
}
],
birthDate : "2010-06-02",
creationDate : "2010-06-02T17:06:42",
email : "mail@klicap.es",
formatedName : "User name",
id : 66,
jobs : [
{
agent : null,
id : 1,
organization : {
department : null,
id : 1,
name : "klicap - ingeniería del puzle",
unit : null
},
role : "Role of Job",
tittle : "Title of Job"
}
],
modificationDate : "2010-06-02T17:06:42",
name : "Username",
prefixName : null,
sufixName : null,
surname : "Surname1 surname2",
timezone : null
},
{
birthDate : "2010-06-02",
creationDate : "2010-06-02T17:16:29",
email : "hello@klicap.es",
formatedName : "José Morales",
id : 80,
jobs : [
{
agent : null,
id : 2,
organization : {
department : null,
id : 2,
name : "klicap - ingeniería del puzle",
unit : null
},
role : "Software Developer",
tittle : "Software Developer"
}
],
modificationDate : "2010-06-02T17:16:30",
name : "José",
phones : [
{
id : 3,
number : "+34664000629",
type : "CELL"
},
{
id : 4,
number : "+34954894322",
type : "WORK"
}
],
prefixName : "MR",
sufixName : "JMM",
surname : "Morales Martínez",
timezone : "+0100"
}
]
}
Question Methods
Create/Update a TEXT question
- URL
- http://server:port/context/api/question/basic
- HTTP Method(s)
- PUT/POST
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
question: {
data: {
multipleLines: true
},
template: false,
validations: [
{
enabled: true,
id: null,
type: "required",
message: "Answer required"
},
{
enabled: true,
id: null,
type: "min",
value: 1,
message: "Validation message"
},
{
enabled: true,
id: null,
type: "max",
value: 200,
message: "Vaidation message"
}
],
questionType: "TEXT",
surveyId: 3,
wording: "This is a text question",
helpMessage: "Help message"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create/Update a NUMERIC question
- URL
- http://server:port/context/api/question/basic
- HTTP Method(s)
- PUT/POST
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
question: {
data: {
"type": "decimal"
},
prefix: null,
sufix: "Km",
template: false,
validations: [
{
enabled: true,
id: null,
type: "required",
message: "Answer required"
},
{
enabled: true,
id: null,
type: "min",
value: 1,
message: "Validation message"
},
{
enabled: true,
id: null,
type: "max",
value: 30,
message: "Validation message"
}
],
questionType: "NUMERIC",
surveyId: 3,
wording: "This is a numeric question example",
helpMessage: "Help message"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create/Update a DATE question
- URL
- http://server:port/context/api/question/basic
- HTTP Method(s)
- PUT/POST
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
question: {
data: {},
template: false,
validations: [
{
enabled: true,
id: null,
type: "required",
message: "This question is required"
},
{
enabled: true,
id: null,
type: "min",
value: "2011-10-26",
message: "Validation message"
},
{
enabled: true,
id: null,
type: "max",
value: "2011-10-27",
message: "Validation message"
}
],
questionType: "DATE",
surveyId: 3,
wording: "This an example",
helpMessage: "Help message"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create/Update a TIME question
- URL
- http://server:port/context/api/question/basic
- HTTP Method(s)
- PUT/POST
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
question: {
data: {
type: "24H",
seconds: true
},
template: true,
validations: [
{
enabled: true,
id: null,
type: "required",
message: "Answer required"
},
{
enabled: true,
id: null,
type: "min",
value: "00:01:00",
message: "Validation message"
},
{
enabled: true,
id: null,
type: "max",
value: "14:00:00",
message: "Validation message"
}
],
questionType: "TIME",
surveyId: 3,
wording: "This is a TIME question example",
helpMessage: "Help message"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create/Update a TIMESTAMP question
- URL
- http://server:port/context/api/question/basic
- HTTP Method(s)
- PUT/POST
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
question: {
data: {
type: "AM/PM",
seconds: true
},
template: false,
validations: [
{
enabled: true,
id: 29,
type: "required",
message: "Answer required"
},
{
enabled: true,
id: 30,
type: "min",
value: "2011-10-26T01:10:00",
message: "Validation message"
},
{
enabled: true,
id: 31,
type: "max",
value: "2011-10-27T14:00:00",
message: "Validation message"
}
],
questionType: "TIMESTAMP",
surveyId: 3,
wording: "This a TIMESTAMP question example",
helpMessage: "Help message"
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create/Update a gradient question
- URL
- http://server:port/context/api/question/gradient
- HTTP Method(s)
- PUT/POST
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
question: {
validations: [
{
enabled: true,
type: "required",
message: "Answer required"
}
],
surveyId: 13,
wording: "Pregunta de tipo GRADIENT",
helpMessage: "Ayuda",
data: {
numberGradientElements: 7,
firstValue: -3,
optionNA: true,
maxValueMessage: "Valor máximo",
minValueMessage: "Valor mínimo"
}
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create/Update a multiple choice question
- URL
- http://server:port/context/api/question/multiple
- HTTP Method(s)
- PUT/POST
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
question : {
freeTextLabel: "Free text label",
helpMessage: null,
position: 7,
surveyId: 2,
id: 18,
template: false,
wording: "Matrix question",
type: "TEXT",
multipleSelection: true,
options: [
{
basicData: {
value: "Option 1"
},
index: 2,
type: "TEXT",
id: 20
},
{
basicData: {
value: "Option 2"
},
index: 1,
type: "TEXT",
id: 21
},
{
basicData: {
value: "Option 3"
},
index: 3,
type: "TEXT"
}
]
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create/Update a matrix question
- URL
- http://server:port/context/api/question/matrix
- HTTP Method(s)
- PUT/POST
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
question : {
freeTextLabel: "Free text label",
helpMessage: "Help message",
position: 6,
id: 19,
surveyId: 2,
template: false,
wording: "Matrix question with 2 rows and 3 columns",
rows: [
{
id: 10,
headerData: {
value: "Row 1"
},
headerType: "TEXT",
multipleValues: false,
position: 1
},
{
id: 11,
headerData: {
value: "Row 2"
},
headerType: "TEXT",
multipleValues: false,
position: 2
}
],
columns: [
{
id: 12,
basicValueData: {
value: null
},
headerData: {
value: "Column 1 - value Text"
},
headerType: "TEXT",
multipleValueData: null,
multipleValues: true,
position: 1,
valueType: "TEXT"
},
{
id: 13,
basicValueData: {
value: null
},
headerData: {
value: "Column 2 - value Boolean"
},
headerType: "TEXT",
multipleValueData: null,
multipleValues: false,
position: 2,
valueType: "BOOLEAN"
},
{
id: 14,
basicValueData: {
value: null
},
headerData: {
value: "Column 3 - value Number"
},
headerType: "TEXT",
multipleValueData: null,
multipleValues: false,
position: 3,
valueType: "NUMBER"
}
]
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Get a question
- URL
- http://server:port/context/api/question/{id}
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Question identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with question info
|
| 403 | empty message
|
| 404 | {"messages" = ["errorMessage"]}
|
| 500 | {"messages" = ["errorMessage"]}
|
- Responses examples
-
{
"question" : {
"questuionType": "matrix",
"freeTextLabel": "Free text label",
"helpMessage": "Help message",
"position": 6,
"id": 19,
"surveyId": 2,
"template": false,
"wording": "Matrix question with 2 rows and 3 columns",
"rows": [
{
"id": 10,
"headerData": {
"value": "Row 1"
},
"headerType": "TEXT",
"multipleValues": false,
"position": 1
},
{
"id": 11,
"headerData": {
"value": "Row 2"
},
"headerType": "TEXT",
"multipleValues": false,
"position": 2
}
],
"columns": [
{
"id": 12,
"basicValueData": {
"value": null
},
"headerData": {
"value": "Column 1 - value Text"
},
"headerType": "TEXT",
"multipleValueData": null,
"multipleValues": true,
"position": 1,
"valueType": "TEXT"
},
{
"id": 13,
"basicValueData": {
"value": null
},
"headerData": {
"value": "Column 2 - value Boolean"
},
"headerType": "TEXT",
"multipleValueData": null,
"multipleValues": false,
"position": 2,
"valueType": "BOOLEAN"
},
{
"id": 14,
"basicValueData": {
"value": null
},
"headerData": {
"value": "Column 3 - value Number"
},
"headerType": "TEXT",
"multipleValueData": null,
"multipleValues": false,
"position": 3,
"valueType": "NUMBER"
}
]
}
}
- URL
- http://server:port/context/api/survey/{id}/question/simple
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Survey identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with questions list info
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
- Responses examples
-
{
"questions": [
{
"freeTextLabel": null,
"helpMessage": null,
"id": 3,
"position": 2,
"surveyId": 2,
"template": false,
"wording": "Matrix question"
},
{
"freeTextLabel": "Free text label",
"helpMessage": "Message",
"id": 4,
"position": 1,
"surveyId": 2,
"template": false,
"wording": "Text for multiple choice question"
}
]
}
All info about question of a survey
- URL
- http://server:port/context/api/survey/{id}/question
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Survey identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | json message with questions list info
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Responses examples:
{
"questions": [
{
"questuionType": "matrix",
"freeTextLabel": "Free text label",
"helpMessage": "Help message",
"position": 2,
"id": 19,
"surveyId": 2,
"template": false,
"wording": "Matrix question with 2 rows and 3 columns",
"rows": [
{
"id": 10,
"headerData": {
"value": "Row 1"
},
"headerType": "TEXT",
"multipleValues": false,
"position": 1
},
{
"id": 11,
"headerData": {
"value": "Row 2"
},
"headerType": "TEXT",
"multipleValues": false,
"position": 2
}
],
"columns": [
{
"id": 12,
"basicValueData": {
"value": null
},
"headerData": {
"value": "Column 1 - value Text"
},
"headerType": "TEXT",
"multipleValueData": null,
"multipleValues": true,
"position": 1,
"valueType": "TEXT"
},
{
"id": 13,
"basicValueData": {
"value": null
},
"headerData": {
"value": "Column 2 - value Boolean"
},
"headerType": "TEXT",
"multipleValueData": null,
"multipleValues": false,
"position": 2,
"valueType": "BOOLEAN"
},
{
"id": 14,
"basicValueData": {
"value": null
},
"headerData": {
"value": "Column 3 - value Number"
},
"headerType": "TEXT",
"multipleValueData": null,
"multipleValues": false,
"position": 3,
"valueType": "NUMBER"
}
]
},
{
"questuionType": "open",
"freeTextLabel": "Free text label",
"helpMessage": "Message",
"id": 4,
"position": 1,
"surveyId": 2,
"template": false,
"wording": "Text open question"
}
]
}
Delete a question
- URL
- http://server:port/context/api/question/{id}
- HTTP Method(s)
- DELETE
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Question identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | {"messages" = ["successMessage"]}
|
| 403 | empty message
|
| 404 | {"messages" = ["errorMessage"]}
|
| 500 | {"messages" = ["errorMessage"]}
|
Delete several questions
- URL
- http://server:port/context/api/question
- HTTP Method(s)
- DELETE
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
"question" : [
{
"id" : 1
},
{
"id" : 7
},
...
]
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"messages" = ["successMessage"]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 404 | {"messages" = ["errorMessage"]}
|
| 500 | {"messages" = ["errorMessage"]}
|
Elementset Methods
Get all element sets from a survey
- URL
- http://server:port/context/api/survey/{id}/elementset
- HTTP Method(s)
- GET
- Format
- json
- Requires Authentication
- Yes
- Responses
-
| HTTP Code | Description
|
| 200 | json message with questions list info
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Responses examples:
{
"elementSets": [
{
"description": "This is the description",
"elementSetId": null,
"elementType": "ELEMENTSET",
"id": 149,
"members": [
{
"elementSetId": 149,
"elementType": "QUESTION",
"freeTextLabel": null,
"helpMessage": "",
"id": 150,
"position": 1,
"questionType": "BOOLEAN",
"surveyId": 127,
"template": false,
"wording": "Pregunta 4"
},
{
"elementSetId": 149,
"elementType": "QUESTION",
"freeTextLabel": null,
"helpMessage": "",
"id": 130,
"position": 2,
"questionType": "NUMERIC",
"surveyId": 127,
"template": false,
"wording": "Pregunta 3"
},
{
"elementSetId": 149,
"elementType": "TEXTBLOCK",
"id": 152,
"message": "Text block",
"position": 3,
"surveyId": 127,
"template": false
},
{
"elementSetId": 149,
"elementType": "QUESTION",
"freeTextLabel": null,
"helpMessage": "",
"id": 129,
"position": 4,
"questionType": "BOOLEAN",
"surveyId": 127,
"template": false,
"wording": "Pregunta 2"
}
],
"position": 1,
"surveyId": 127,
"template": false,
"title": "Page title"
},
{
"description": "This is another description",
"elementSetId": null,
"elementType": "ELEMENTSET",
"id": 151,
"members": [],
"position": 3,
"surveyId": 127,
"template": false,
"title": "Title"
}
]
}
Create/update an element set
- URL
- http://server:port/context/api/elementset
- HTTP Method(s)
- PUT/POST (POST appending id to URL)
- Format
- json
- Requires Authentication
- Yes
- Request (example)
-
{
"elementSet": {
"title": "Title text",
"description": "Description text",
"surveyId": 127,
"members": []
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Add an element to the element set
- URL
- http://server:port/context/api/elementset/[id]/add/[elementId]
- HTTP Method(s)
- POST
- Requires Authentication
- Yes
| Param | Description
|
| id | Element set identifier
|
| elementId | Element identifier
|
Insert an element to the element set
- URL
- http://server:port/context/api/elementset/[id]/add/[elementId]/position/[pos]
- HTTP Method(s)
- POST
- Requires Authentication
- Yes
| Param | Description
|
| id | Element set identifier
|
| elementId | Element identifier
|
| pos | Position relative to the elementset
|
Survey Element Methods
Move an element inside his container
- URL
- http://server:port/context/api/element/[id]/move/[pos]
- HTTP Method(s)
- POST
- Requires Authentication
- Yes
| Param | Description
|
| id | Element identifier
|
| pos | Position
|
Reply Methods
Create replies (mixed mode)
- URL
- http://server:port/context/api/reply
- HTTP Method(s)
- PUT
- Format
- json
- Requires Authentication
- Yes
Request (example)
{
replies: [{
reply: {
questionId: 9,
replyType: "GRADIENT",
replyValue: {
value: 1
},
respondent: {
edition: {
id: 3
}
}
}
}, {
reply: {
questionId: 10,
replyType: "MULTIPLECHOICE",
replyValue: [{
index: 2
}, {
index: 3
}],
respondent: {
edition: {
id: 3
}
}
}
}, {
reply: {
replyType: "BOOLEAN",
replyValue: {
value: true
},
questionId: 4,
respondent: {
edition: {
id: 1
}
}
}]
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create a basic reply
- URL
- http://server:port/context/api/reply/basic
- HTTP Method(s)
- PUT/POST (POST appending id to URL)
- Format
- json
- Requires Authentication
- Yes
Request (example, reply type TEXT)
{
reply: {
replyType: "TEXT",
replyValue: {
value: "Esto es una respuesta de prueba"
},
questionId: 4,
respondent: {
edition: {
id: 1
}
}
}
}
... or type BOOLEAN
{
reply: {
replyType: "BOOLEAN",
replyValue: {
value: true
},
questionId: 4,
respondent: {
edition: {
id: 1
}
}
}
}
... or type TIMESTAMP/DATE/TIME
{
reply: {
questionId: 6,
replyType: "TIMESTAMP", // or DATE or TIME
replyValue:
value: "2011-12-20T01:00:00",
format: "TIMESTAMP" // or DATE or TIME
},
respondent: {
edition: {
id: 3
}
}
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create a multiple choice reply
- URL
- http://server:port/context/api/reply/multiple
- HTTP Method(s)
- PUT/POST (POST appending id to URL)
- Format
- json
- Requires Authentication
- Yes
Request (example)
{
reply: {
questionId: 5,
replyType: "MULTIPLECHOICE",
replyValue: [{
index: 2
}, {
index: 3
}],
respondent: {
edition: {
id: 3
}
}
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Create a matrix reply
- URL
- http://server:port/context/api/reply/matrix
- HTTP Method(s)
- PUT/POST (POST appending id to URL)
- Format
- json
- Requires Authentication
- Yes
Request (example)
{
reply: {
questionId: 5,
replyType: "MATRIX",
replyValue: [{
columnIndex: 0,
rows: {
values: [{
index: 0,
type: "TEXT",
basicReplyValue: {
value: "Reply value for cell 1, 1"
}
}, {
index: 1,
type: "TEXT",
basicReplyValue: {
value: "Reply vlaue for cell 1, 2"
}
}]
}
}, {
columnIndex: 1,
rows: {
values: [{
index: 0,
type: "BOOLEAN",
basicReplyValue: {
value: true
}
}, {
index: 1,
type: "BOOLEAN",
basicReplyValue: {
value: false
}
}]
}
}],
respondent: {
edition: {
id: 3
}
}
}
}
- Responses
-
| HTTP Code | Description
|
| 200 | {"error" = true/false, "messages" = ["validationMessage1",... ]}
|
| 400 | {"messages" = ["errorMessage"]}
|
| 403 | empty message
|
| 500 | {"messages" = ["errorMessage"]}
|
Delete a reply
- URL
- http://server:port/context/api/reply/{id}
- HTTP Method(s)
- DELETE
- Format
- json
- Requires Authentication
- Yes
| Param | Description
|
| id | Reply identifier
|
- Responses
-
| HTTP Code | Description
|
| 200 | {"success" = true, "info": "Messager with info"}
|
| 403 | empty message
|
| 404 | {"success" = false, "code": "E0001", "type": "ERROR", "info": "Message with error"}
|