Development/WebServiceApi

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
ParamDescription
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
ParamDescription
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
ParamDescription
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
ParamDescription
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
ParamDescription
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: "&lt;p&gt;Finalizaci&oacute;n&lt;/p&gt;",
            expirationDate: "2012-01-11T00:00:00",
            footer: "&lt;p&gt;Pi&eacute;&lt;/p&gt;",
            header: "&lt;p&gt;Cabecera&lt;/p&gt;",
            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: "&lt;p&gt;Prueba&lt;/p&gt;"
        },
        {
            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
ParamDescription
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
ParamDescription
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"}

Contact Methods

Create a new contact

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"}

Update a contact

URL
http://server:port/context/api/contact/{id}
HTTP Method(s)
POST
Format
json
Requires Authentication
Yes
ParamDescription
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"}

Get a contact

URL
http://server:port/context/api/contact/{id}
HTTP Method(s)
GET
Format
json
Requires Authentication
Yes
ParamDescription
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" 
    } 
}

Delete a contact

URL
http://server:port/context/api/contact/{id}
HTTP Method(s)
DELETE
Format
json
Requires Authentication
Yes
ParamDescription
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"}

Delete several contacts

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"}

Search contacts

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
ParamDescription
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"
            }
        ] 
    }
}

Header info about questions of a survey

URL
http://server:port/context/api/survey/{id}/question/simple
HTTP Method(s)
GET
Format
json
Requires Authentication
Yes
ParamDescription
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
ParamDescription
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
ParamDescription
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
ParamDescription
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
ParamDescription
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
ParamDescription
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
ParamDescription
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"}