//[[restapi:start|RESTful API]]//
====== Campaign Descriptor ======
This descriptor //-as a json file-// contains all the details to describe each different type of campaign (Multiple Choice, Raffle, Keyword and External Interaction)
==== Json Structure ====
{
"name": "Campaign Name",
"description": "Campaign Description",
"useFallback": false,
"wildcards": true,
"active": 1,
"delivery_method": "SMS",
"listIds": "",
"autowildcards": true,
"keyphrasesBegin": false,
"onetime": false,
"autoMenu": true,
"alertMimAggregator": "none",
"mute": false,
"isMenu": false,
"typeMessage": "0",
"oncorrect": "Campaign Correct",
"onincorrect": "Campaign Incorrect",
"startup_keyword_activated": true,
"HTTPMETHOD": "GET",
"URL": "{base_url}/",
"rafflePriceThreshold": 4,
"cycle": 2,
"raffleTypeId": 5,
"oneCycle": -1,
"alreadyWinner": 1,
"KeywordInit": {
"keyphrase": "KeywordInitValue1,KeywordInitValue2",
"label": "KeywordInitValue"
},
"questions": [
{
"question": "Question 1",
"prize": 10,
"answers": [
{
"keyphrase": "rp1-1|rp1-2|rp1-3",
"label": "label 1",
"nexQuestionNumber": "0",
"isCorrect": true,
"campaign": "campaign demo 1",
"keyword": "keyword1"
}
]
}
],
"answers": [
{
"keyphrase": "keyphraseQ1A1|keyphraseQ1A2|keyphraseQ1A3",
"label": "labelA 1",
"response": "Response 1"
}
],
"prizes": [
{
"prizeQuantity": "3",
"prizeName": "Prize 1",
"dropCycle": "1",
"responsePrize": "Prize 1"
}
]
}
==== Basic JSON Parameters ====
^ Parameter Name ^ Description ^ Possible Values ^
| name | Campaign Name | Text |
| description | Campaign description text | Text |
| useFallback | Enables SMS Fallback if using a non SMS Delivery method | Boolean |
| wildcards \\ OPTIONAL | Allows the uses of wildcards to activate the campaign | Boolean |
| active | Use **1** to activate the campaign, **0** to keep it deactivated | Number |
| delivery_method | Change the delivery channel. Use one of the following: **SMS**, **PUSH** | Text |
| listIds \\ OPTIONAL | Use this parameter only if you want to whitelist users using custom distribution lists | Text |
| autowildcards \\ OPTIONAL | Use **true** to automatically generate a wildcard expression | Boolean |
| keyphrasesBegin \\ OPTIONAL | Force the presence of the desire keyword at the start of the message to initiate the campaign | Boolean |
| onetime \\ OPTIONAL | If **true** user can only use the campaign one time | Boolean |
| autoMenu \\ OPTIONAL | Automatically generates a menu using all keywords configured | Boolean |
| mute \\ OPTIONAL | Mute the campaign output | Boolean |
| isMenu | If **true** the campaign will be a menu. Applies only for [[:multiple_choice|Multiple Choice]] | Boolean |
| typeMessage | Use **0** to create a Poll or **1** to create a Contest. Applies only for [[:multiple_choice|Multiple Choice]] | Text |
| oncorrect | On correct answer message | Text |
| onincorrect | On incorrect answer message | Text |
| startup_keyword_activated | if **true** the user can only start the campaign by using the configured keyword | Boolean |
| HTTPMETHOD | The http method to use when calling the configured URLs. Use **GET** or **POST**. Applies only when for [[:external_webservice|External Web Service]] | Text |
| URL | The URL to call on every message received. Applies only when for [[:external_webservice|External Web Service]] | Text |
| rafflePriceThreshold | Send a low prizes inventory notification when the inventory fall below this number | Number |
| cycle | Cycles by day | Number |
| raffleTypeId | Use "**5**" tu use cycles or "**6**" for the regular [[:raffle|Raffle]] | Number |
| oneCycle | Use **1** to allow one cycle per day | Number |
| alreadyWinner | Use **1** to allow the user to win multiple times, use **0** to limit one user per price | Number |
| questions | Contains the questions pool for the [[:multiple_choice|Multiple Choice]] | Text |
| questions.question | Question text | Text |
| questions.prize | Points to win if the user answer correctly | Numérico |
| questions.answers | Contains the answers pool | Text |
| questions.answers.keyphrase | Keyword to match this answer. Use "**,**" to indicate multiple keywords | Text |
| questions.answers.label | Answer internal label | Text |
| questions.answers.nexQuestionNumber | Indicate which will be the next question after answer this one, use **0** to end | Number |
| questions.answers.isCorrect | Indicates if this answer is the correct one | Boolean |
| questions.answers.campaign | Indicates which campaign will be triggered if user select this answer, Applies only when **typeMessage** is **0** and **isMenu** is **true**, otherwise it will be ignored | Text |
| questions.answers.keyword | Which keyword will be interpreted if this answer is selected | Text |
| answers | Contains the answers pool | Text |
| answers.keyphrase | Keyword to match this answer. Use "**,**" to indicate multiple keywords | Text |
| answers.label | Answer internal label | Text |
| answers.response | Response to deliver if this answer is selected | Text |
| prizes | Contains the prizes pool. Applies only for [[:raffle|Raffle]] | Text |
| prizes.prizeQuantity | How many prizes on inventory | Number |
| prizes.prizeName | Prize name | Text |
| prizes.dropCycle | How many prizes can be awarded by cycle | Text |
| prizes.responsePrize | Message to deliver when a user win this prize | Text |
==== JSon Example - Multiple Choice ====
{
"startup_keyword_activated": true,
"KeywordInit": {
"keyphrase": "init1,init2,init3",
"label": "demoInit"
},
"wildcards": true,
"questions": [
{
"question": "Question 1",
"answers": [
{
"keyphrase": "rp1-1|rp1-2|rp1-3",
"nexQuestionNumber": "0",
"keyword": "keyword1",
"isCorrect": true
},
{
"keyphrase": "rp2-1|rp2-2|rp2-3",
"nexQuestionNumber": "0",
"keyword": "keyword2",
"isCorrect": "false"
}
],
"prize": 20
}
],
"active": 1,
"description": "Description Multiple choice",
"isMenu": false,
"useFallback": false,
"typeMessage": "0",
"oncorrect": "Correct",
"delivery_method": "SMS",
"name": "Name Multiple choice",
"onincorrect": "Incorrect"
}
==== JSon Example - Keywords ====
{
"useFallback": false,
"delivery_method": "SMS",
"answers": [
{
"response": "Response Question 1",
"keyphrase": "response1_1|response1_2|dresponse1_3",
"label": "lebel1"
},
{
"response": "Response Question 2",
"keyphrase": "response2_1|response2_2|response2_3",
"label": "lebel2"
}
],
"name": "Name Keywords",
"active": 1,
"description": "Description Keywords"
}
==== JSon Example - External Web Servicese ====
{
"HTTPMETHOD": "GET",
"useFallback": false,
"delivery_method": "SMS",
"answers": [
{
"response": "Response External",
"keyphrase": "response1_1|response1_2|response1_3",
"label": "label"
}
],
"name": "Name External Web Servicese",
"active": 1,
"description": "Description External Web Servicese",
"URL": "https://www.google.co.ve/"
}
==== JSon Example - Raffle ====
{
"oneCycle": -1,
"useFallback": false,
"rafflePriceThreshold": 4,
"prizes": [
{
"prizeQuantity": "3",
"prizeName": "Prize 1",
"dropCycle": "1",
"responsePrize": "Response Prize 1"
},
{
"prizeQuantity": "6",
"prizeName": "Prize 2",
"dropCycle": "2",
"responsePrize": "Response Prize 2"
}
],
"delivery_method": "SMS",
"answers": [
{
"response": "Response Raffle",
"keyphrase": "response1_1|response1_2|response1_3",
"label": "label"
}
],
"name": "Name Raffle",
"active": 1,
"alreadyWinner": 1,
"description": "Description Raffle",
"cycle": 2,
"raffleTypeId": 5
}