REST Email Marketing API DocumentationExample 3 — Manage subscriptions
This example shows a technique for fetching all the topics that the email address is currently either subscribed to or unsubscribed from. This list could be used to generate some HTML for display. |
private class SubscriptionListData { public string topicName; public int topicId; public bool subscribed; public System.DateTime subscribeDate; public System.DateTime unsubscribeDate; } private static void RestExample3() { try { string url = "http://www.example.com/api/rest/Subscriptions/List?accountName=acme&login=ApiUser&emailAddress=joe@example.com"; System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); request.Headers.Add("Password", "xdfgdf7dfa67dfgsdfg"); string results; using (System.Net.WebResponse response = request.GetResponse()) using (Stream responseStream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8)) results = reader.ReadToEnd(); if ( !results.StartsWith("[")) { System.Console.WriteLine("Error: {0}", results); return; } System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer(); System.Collections.Generic.List<SubscriptionListData> rd = jss.Deserialize<System.Collections.Generic.List<SubscriptionListData>>(results); foreach (SubscriptionListData row in rd) { //format these in HTML for the user to view and change. We'll just print them. System.Console.WriteLine(row.topicName + " " + row.subscribed); } // we'll assume now that we have the list of topics to subscribe and unsubscribe for the user. string data = "{'accountName':'acme','login':'ApiUser','password':'xdfgdf7dfa67dfgsdfg', 'emailAddress':'joe@example.com',"; data += "'unsubscribedTopics':['Samsung News'],"; data += "'subscribedTopics':['Apple News']}"; url = "http://www.example.com/api/rest/Subscriptions/Change"; request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = data.Length; using (Stream webStream = request.GetRequestStream()) using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII)) requestWriter.Write(data); using (System.Net.WebResponse webResponse = request.GetResponse()) using (Stream webStream = webResponse.GetResponseStream()) using (StreamReader responseReader = new StreamReader(webStream)) results = responseReader.ReadToEnd(); // The return data indicates the topic and the change, so you can echo this back // to the user, if desired. System.Console.WriteLine(results); } catch (System.Exception e) { System.Diagnostics.Debug.Fail(e.Message); } }
# encoding: utf-8 require 'rest-client' require 'json' url = "http://www.example.com/api/rest/Subscriptions/List?accountName=acme&login=ApiUser&emailAddress=joe@example.com" resp = RestClient.get url, {:Password => "vsdjhsdv7fsahsfd7sgd"} if resp.code != 200 puts "Subscription list failed!" puts resp.code return elsif resp.body[0] != '[' puts 'Error: ' + resp.body return end data = JSON.parse(resp.body) for row in data #format these in HTML for the user to view and change. We'll just puts them. puts row["topicName"] + " " + row["subscribed"].to_s end #we'll assume now that we have the list of topics to subscribe and unsubscribe from. args = {"accountName":"acme","login":"ApiUser","password":"vsdjhsdv7fsahsfd7sgd", "emailAddress":"joe@example.com", 'unsubscribedTopics':['Samsung News'], 'subscribedTopics':['Apple News']} url = "http://www.example.com/api/rest/Subscriptions/Change" resp = RestClient.post url, args.to_json, {"Content-Type": "application/json"} if resp.code != 200 puts "Subscription list failed!" puts resp.code return end puts resp.body # The return data indicates the topic and the change, so you can echo this back # to the user, if desired.
import requests import json def subscriptions(): url = "http://www.example.com/api/rest/Subscriptions/List?accountName=acme&login=ApiUser&emailAddress=joe@example.com" headers = {'Password':'xfgsd7w47te8dfngad'} resp = requests.get(url, headers=headers) if resp.status_code != 200: print "Subscription list failed!" print resp.status_code return data = json.loads(resp.text) for row in data: #format these in HTML for the user to view and change. We'll just print them. print (row["topicName"] + " " + str(row["subscribed"])) #we'll assume now that we have the list of topics to subscribe and unsubscribe from. args = {"accountName":"acme","login":"ApiUser","password":"sdvjusv7svdhsd7", "emailAddress":"joe@example.com", 'unsubscribedTopics':['Business News'], 'subscribedTopics':['Apple News']} url = "http://www.example.com/api/rest/Subscriptions/Change" resp = requests.post(url, json=args, headers=headers) if resp.status_code != 200: print "Subscription list failed!" print resp.status_code return print resp.text # The return data indicates the topic and the change, so you can echo this back # to the user, if desired. subscriptions()