POST Update Action with Condition – Client examples

/**
 * @author Bluedot Innovation
 * Copyright (c) 2016 Bluedot Innovation. All rights reserved.
 * Update Message and URL Action client demonstrates updating an existing message and URL action of an existing zone
 * using the 'request' node module 
 */
var request = require('request');
var actionData =
    {
        "security": {
            /* The apiKey is generated when you create an application. */
            "apiKey" : "c2c8211f-796f-4eda-b6ce-05467b5263a9",
            /* This key is generated by Bluedot Point Access UI when your account is created. It is also available
             * on the PointAccess interface in the Edit Profile section. */       
            "customerApiKey": "86577370-7b91-11e4-bcb7-a0481cdc3311"
        },
        "content": {
            "zone": {
                /* The zoneId is the id of the zone being updated. This can be fetched by calling GET Zones API */
                "zoneId": "722c991a-3ebb-4143-b441-5b0c0cf680a0",
                "actions": {
                    "urlActions": [
                        {
                            /* The actionId is the id of the URL action being updated.
                             * This can be fetched by calling zones/getAll API */
                            "actionId" : 'dc8209fc-9e92-4f81-8d4e-a96d52f99524',
                            "url" : 'http://wwww.google.com'
                        }
                    ],
                    "messageActions": [
                        {
                            /* The actionId is the id of the message action being updated.
                             * This can be fetched by calling zones/getAll API */
                            "actionId" : 'b83c7308-0191-4905-aac8-dc7dd8e609a3',
                            "title" : 'Offer.',
                            "message" : '30% discount'
                        }
                    ]
                }
            }
        }
    };
var options = {
    uri: 'https://api.bluedotinnovation.com/1/actions',
    method: 'POST',
    json: actionData
};
request(options,
    function (error, response, body) {
        if (error) {
            console.log(error);
        }
        console.log(JSON.stringify(response.body));
    }
);
package com.bluedotinnovation.action;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import com.bluedotinnovation.common.BDCommon;
/**
 * @author Bluedot Innovation
 * Copyright (c) 2016 Bluedot Innovation. All rights reserved.
 * Update Message Action client demonstrates updating an existing message action to an existing zone using JSON simple and Apache HTTP client libraries.
 */
public class UpdateMessageAction extends BDCommon {
     
    private static String bdCustomerApiKey    = "ca4c8d11-6942-11e4-ba4b-a0481cdc3311"; //This key is generated by Bluedot Point Access UI when your account is created
    private static String bdApplicationApiKey = "f5223f4c-a0f3-47be-ba59-080b6290a9d4"; //This apiKey is generated when you create an application
    private static String bdZoneId            = "dfafb7fd-d2f7-42ec-afd5-d5c7851c0396"; //This is the id of the zone being updated. This can be fetched by calling GET Zones API
    private static String bdActionId          = "26111887-4b82-42fd-a316-3ef1826208d5"; //This is the id of the action being updated. This can be fetch by calling GET Zones
    private static String bdRestUrl           = "https://api.bluedotinnovation.com/1/actions";
     
    public static void main(String[] args) throws ParseException, IOException, KeyManagementException, NoSuchAlgorithmException {
         
        CloseableHttpClient httpRestClient = HttpClients.custom().setSSLSocketFactory(getSSLContextFactory()).build();
   
        JSONParser parser    = new JSONParser();
        JSONObject bdMessageActionJSONObject = (JSONObject) parser.parse(getJsonMessageAction()); //message action json
                                 
        HttpPost postRequest = new HttpPost(bdRestUrl);
        postRequest.addHeader("content-type", "application/json");
        postRequest.setEntity(new StringEntity(bdMessageActionJSONObject.toJSONString(), Charset.defaultCharset()));
      
        HttpResponse response = httpRestClient.execute(postRequest);
                         
        if (response.getStatusLine().getStatusCode() == 200) {
            System.out.println("Message action was added to your zone successfully");
            InputStream inputStream = response.getEntity().getContent();
            byte[] bytes            = readStream(inputStream);
            String resultString     = new String(bytes); //json result
            JSONObject jsonResult   = (JSONObject)  parser.parse(resultString);
            System.out.println(jsonResult);
        } else {
            InputStream inputStream = response.getEntity().getContent();
            byte[] bytes            = readStream(inputStream);
            String resultString     = new String(bytes); //json error result
            System.out.println(resultString);
        }          
    }
     
    private static String getJsonMessageAction() {
         
        String messageActionJson =
             "{" +
                "\"security\": {" +
                    "\"apiKey\":" + "\"" + bdApplicationApiKey +"\"," +
                    "\"customerApiKey\":" +"\"" + bdCustomerApiKey + "\""+
                "}," +
                "\"content\": {" +
                    "\"zone\": {" +
                        "\"zoneId\":"+ "\"" + bdZoneId +"\"," +
                        "\"actions\": {" +
                            "\"messageActions\": [" +
                                "{" +
                                  "\"actionId\":"+ "\"" + bdActionId +"\"," +
                                    "\"title\": \"MCG Welcome Message Updated\"," +
                                    "\"message\": \"Welcome to MCG Updated Message\"" +
                                "}" +
                            "]" +
                        "}" +
                    "}" +
                "}" +
            "}";     
        return messageActionJson;
    }
}
using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Security.Cryptography.X509Certificates;
/**
 * @author Bluedot Innovation
 * Copyright (c) 2016 Bluedot Innovation. All rights reserved.
 * Update Action with conditions client shows updating an action with conditions to an existing zone using .net http web api libray
 * All conditions attached to an Action can be updated by providing the id. id has to be provided for update calls if the id is not provided then a new condition will be created
 */
namespace BluedotPublicApiClient.actionclient
{
    public class UpdateConditions
    {
        private static String bdCustomerApiKey                  = "a6598740-75f5-11e4-86ca-a0481cdc3311"; //This key is generated by Bluedot Point Access UI when your account is created
        private static String bdApplicationApiKey               = "5a9b1b78-3dd7-4f4d-8608-82408f3baf4c"; //This apiKey is generated when you create an application
        private static String bdZoneId                          = "b80e50eb-b9f9-4ed5-966e-4b2e39cc0549"; //This is the id of the zone being updated. This can be fetched by calling GET Zones API
        private static String vibrationActionId                 = "6de96865-f3c8-42cf-bdc2-38027272770a"; //This is the id of the action being updated. This can be fetch by calling GET Zones API
        private static String bdDateRangeConditionId            = "d54a7334-e937-4f20-9df0-4beb04a60f7a"; //This is the id of the condition being updated. This can be fetch by calling GET Zones API
        private static String bdPercentageCrossedConditionId    = "e4b6e498-c448-4749-abd8-15749fb683c5"; //This is the id of the condition being updated. This can be fetch by calling GET Zones API
        private static String bdTimeActiveConditionId           = "2d6563a0-59e4-44d3-abb5-ea6ea4bd05bf"; //This is the id of the condition being updated. This can be fetch by calling GET Zones API
        private static String bdRestUrl                         = "https://api.bluedotinnovation.com/1/actions";
        public void addActionWithConditions()
        {
            postToService(getJsonVibrationActionWithConditions());
        }
 
        private void postToService(String json)
        {
            WebRequestHandler handler = new WebRequestHandler();
            X509Certificate2 certificate = new X509Certificate2();
            handler.ClientCertificates.Add(certificate);
            HttpClient httpRestClient = new HttpClient(handler);
            //specify to use TLS 1.2 as default connection
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            httpRestClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpContent jsonContent = new StringContent(json);
            jsonContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            HttpResponseMessage serverResponse = httpRestClient.PostAsync(new Uri(bdRestUrl), jsonContent).Result;
            if (serverResponse.IsSuccessStatusCode)
            {
                var result = serverResponse.Content.ReadAsStringAsync().Result;
                Console.WriteLine("{0}", result);
            }
            else
            {
                Console.WriteLine("{0} ({1})", (int)serverResponse.StatusCode, serverResponse.Content.ReadAsStringAsync().Result);
            }
        }
        private static String getJsonVibrationActionWithConditions()
        {
            String vibrationActionWithCondtionsJson =
                 "{" +
                    "\"security\": {" +
                        "\"apiKey\":" + "\"" + bdApplicationApiKey + "\"," +
                        "\"customerApiKey\":" + "\"" + bdCustomerApiKey + "\"" +
                    "}," +
                    "\"content\": {" +
                        "\"zone\": {" +
                            "\"zoneId\":" + "\"" + bdZoneId + "\"," +
                            "\"actions\": {" +
                            "\"vibrationActions\": [" +
                                "{" +
                                    "\"actionId\":" + "\"" + vibrationActionId + "\"," +
                                    "\"conditions\": {" +
                                        "\"percentageCrossed\":" +
                                            "[" +
                                                "{" +
                                                   "\"conditionId\":" + "\"" + bdPercentageCrossedConditionId+ "\"," +
                                                    "\"percentage\": 50," +
                                                    "\"timeoutPeriod\": \"00:05\"" +
                                                "}" +
                                            "]," +
                                        "\"dateRange\": [" +
                                            "{" +
                                                "\"conditionId\":" + "\"" + bdDateRangeConditionId + "\"," +
                                                "\"start\": \"01/03/2014\"," +
                                                "\"end\": \"14/12/2014\"" +
                                            "}" +
                                        "]," +
                                        "\"timeActive\": [{" +
                                            "\"conditionId\":" + "\"" + bdTimeActiveConditionId + "\"," +
                                            "\"from\": {" +
                                                "\"time\": \"06:01\"," +
                                                "\"period\": \"am\" " +
                                            "}," +
                                            "\"to\": {" +
                                                "\"time\": \"11:00\"," +
                                                "\"period\": \"pm\" " +
                                            "}" +
                                        "}]" +
                                    "}" +
                                "}" +
                            "]" +
                          "}" +
                        "}" +
                    "}" +
                "}";
            return vibrationActionWithCondtionsJson;
        }
    }
}
Created by Bluedot DevOps on March 5, 2018

Start the discussion