REST SMS API: C# Code Samples
- Text Messages
- Sending SMS Messages
- Receiving SMS Messages (Incoming API)
- Inbox & Folders
- Keywords
- Credits
- Contacts
- Groups
Text Messages
Sending SMS Messages
Sends SMS text messages to a single phone number or an array of phone numbers.
Code Samples
C# - XMLServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex1 { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/sending/messages?format=xml"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh&PhoneNumbers[]=2123456785&PhoneNumbers[]=2123456786&PhoneNumbers[]=2123456787&PhoneNumbers[]=2123456788&Subject=From Winnie&Message=I am a Bear of Very Little Brain, and long words bother me&StampToSend=1305582245"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); isSuccesResponse = false; } } XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: "+response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); if (isSuccesResponse) { System.Console.Out.WriteLine("Message ID: " + response.SelectSingleNode("Response/Entry/ID").InnerText); System.Console.Out.WriteLine("Subject: " + response.SelectSingleNode("Response/Entry/Subject").InnerText); System.Console.Out.WriteLine("Message: " + response.SelectSingleNode("Response/Entry/Message").InnerText); System.Console.Out.WriteLine("Total Recipients: " + response.SelectSingleNode("Response/Entry/RecipientsCount").InnerText); System.Console.Out.WriteLine("Credits Charged: " + response.SelectSingleNode("Response/Entry/Credits").InnerText); System.Console.Out.WriteLine("Time To Send: " + response.SelectSingleNode("Response/Entry/StampToSend").InnerText); System.Console.Out.WriteLine("Phone Numbers: " + ImplodeList(response.SelectNodes("Response/Entry/PhoneNumbers/*"))); System.Console.Out.WriteLine("Locally Opted Out Numbers: " + ImplodeList(response.SelectNodes("Response/Entry/LocalOptOuts/*"))); System.Console.Out.WriteLine("Globally Opted Out Numbers: " + ImplodeList(response.SelectNodes("Response/Entry/GlobalOptOuts/*"))); } else { System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex1J { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/sending/messages?format=json"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh&PhoneNumbers[]=2123456785&PhoneNumbers[]=2123456786&PhoneNumbers[]=2123456787&PhoneNumbers[]=2123456788&Subject=From Winnie&Message=I am a Bear of Very Little Brain, and long words bother me&StampToSend=1305582245"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); if (isSuccesResponse) { System.Console.Out.WriteLine("Message ID: " + response.SelectToken("Response.Entry.ID")); System.Console.Out.WriteLine("Subject: " + response.SelectToken("Response.Entry.Subject")); System.Console.Out.WriteLine("Message: " + response.SelectToken("Response.Entry.Message")); System.Console.Out.WriteLine("Total Recipients: " + response.SelectToken("Response.Entry.RecipientsCount")); System.Console.Out.WriteLine("Credits Charged: " + response.SelectToken("Response.Entry.Credits")); System.Console.Out.WriteLine("Time To Send: " + response.SelectToken("Response.Entry.StampToSend")); System.Console.Out.WriteLine("Phone Numbers: " + response.SelectToken("Response.Entry.PhoneNumbers")); System.Console.Out.WriteLine("Locally Opted Out Numbers: " + response.SelectToken("Response.Entry.LocalOptOuts")); System.Console.Out.WriteLine("Globally Opted Out Numbers: " + response.SelectToken("Response.Entry.GlobalOptOuts")); } else { System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Inbox & Folders Back to top
Inbox & Folders
When working with the Inbox and Folder you can perform nine actions: Post (Add New Folder), Put (Update A Folder/Move A Message Between Folders), Delete (Delete A Message/Folder), Get (Get Inbox Message/Folder By ID), Index (Get All Messages/All Folders). The code samples below use shared libraries.
You can download them, along with the code samples here: CsharpLib.zip.
Code Samples - Inbox Messages
C# - XMLusing System; using System.Collections.Generic; using System.Linq; using System.Text; using SmsTexting; namespace SmsTextingApiExamples { class IncomingMessages { static void Main(string[] args) { var sms = new SmsTextingRestClient("demouser", "password", SmsTextingRestClient.XML); System.Console.Out.WriteLine("XML encoding."); var incomingMessages = sms.GetIncomingMessages(null, null, null, null, null, null); System.Console.Out.WriteLine("Get incomingMessages:"); incomingMessages.ForEach(t => System.Console.Out.WriteLine(t)); sms.MoveIncomingMessages(incomingMessages.Select(m => m.ID).ToList(), "77"); System.Console.Out.WriteLine("IncomingMessages Move."); var msg = incomingMessages.First(); sms.MoveIncomingMessage(msg.ID, "77"); System.Console.Out.WriteLine("IncomingMessage Move."); var incomingMessage = sms.GetIncomingMessage(msg.ID); System.Console.Out.WriteLine("IncomingMessage get: " + incomingMessage); sms.DeleteIncomingMessage(incomingMessage.ID); System.Console.Out.WriteLine("IncomingMessage delete."); try { sms.DeleteIncomingMessage(incomingMessage.ID); } catch (Exception e) { System.Console.Out.WriteLine("Get Exception after delete not existent incomingMessage: " + e.Message); } } } }C# - JSON
using System; using System.Collections.Generic; using System.Linq; using System.Text; using SmsTexting; namespace SmsTextingApiExamples { class IncomingMessages { static void Main(string[] args) { var sms = new SmsTextingRestClient("demouser", "password", SmsTextingRestClient.JSON); System.Console.Out.WriteLine("JSON encoding."); incomingMessages = sms.GetIncomingMessages(null, null, null, null, null, null); System.Console.Out.WriteLine("Get incomingMessages:"); incomingMessages.ForEach(t => System.Console.Out.WriteLine(t)); sms.MoveIncomingMessages(incomingMessages.Select(m => m.ID).ToList(), "77"); System.Console.Out.WriteLine("IncomingMessages Move."); msg = incomingMessages.First(); sms.MoveIncomingMessage(msg.ID, "77"); System.Console.Out.WriteLine("IncomingMessage Move."); incomingMessage = sms.GetIncomingMessage(msg.ID); System.Console.Out.WriteLine("IncomingMessage get: " + incomingMessage); sms.DeleteIncomingMessage(incomingMessage.ID); System.Console.Out.WriteLine("IncomingMessage delete."); try { sms.DeleteIncomingMessage(incomingMessage.ID); } catch (Exception e) { System.Console.Out.WriteLine("Get Exception after delete not existent incomingMessage: " + e.Message); } } } }
Code Samples - Inbox Folders
C# - XMLusing System; using System.Collections.Generic; using System.Linq; using System.Text; using SmsTexting; namespace SmsTextingApiExamples { class InboxFolders { static void Main(string[] args) { var sms = new SmsTextingRestClient("demouser", "password", SmsTextingRestClient.XML); System.Console.Out.WriteLine("XML encoding."); var inboxFolders = sms.GetInboxFolders(); System.Console.Out.WriteLine("Get inboxFolders:"); inboxFolders.ForEach(t => System.Console.Out.WriteLine(t)); var inboxFolder = new InboxFolder("Customers"); inboxFolder = sms.CreateInboxFolder(inboxFolder); System.Console.Out.WriteLine("InboxFolder create: " + inboxFolder); var inboxFolderId = inboxFolder.ID; inboxFolder = sms.GetInboxFolder(inboxFolderId); System.Console.Out.WriteLine("InboxFolder get: " + inboxFolder); inboxFolder.Name = "Customers2"; inboxFolder.ID = inboxFolderId; sms.UpdateInboxFolder(inboxFolder); System.Console.Out.WriteLine("InboxFolder update. "); inboxFolder = sms.GetInboxFolder(inboxFolderId); System.Console.Out.WriteLine("InboxFolder get: " + inboxFolder); sms.DeleteInboxFolder(inboxFolderId); System.Console.Out.WriteLine("InboxFolder delete."); try { sms.DeleteInboxFolder(inboxFolderId); } catch (Exception e) { System.Console.Out.WriteLine("Get Exception after delete not existent inboxFolder: " + e.Message); } } } }C# - JSON
using System; using System.Collections.Generic; using System.Linq; using System.Text; using SmsTexting; namespace SmsTextingApiExamples { class InboxFolders { static void Main(string[] args) { var sms = new SmsTextingRestClient("demouser", "password", SmsTextingRestClient.JSON); System.Console.Out.WriteLine("JSON encoding."); inboxFolders = sms.GetInboxFolders(); System.Console.Out.WriteLine("Get inboxFolders:"); inboxFolders.ForEach(t => System.Console.Out.WriteLine(t)); inboxFolder = new InboxFolder("Customers"); inboxFolder = sms.CreateInboxFolder(inboxFolder); System.Console.Out.WriteLine("InboxFolder create: " + inboxFolder); inboxFolderId = inboxFolder.ID; inboxFolder = sms.GetInboxFolder(inboxFolderId); System.Console.Out.WriteLine("InboxFolder get: " + inboxFolder); inboxFolder.Name = "Customers2"; inboxFolder.ID = inboxFolderId; sms.UpdateInboxFolder(inboxFolder); System.Console.Out.WriteLine("InboxFolder update. "); inboxFolder = sms.GetInboxFolder(inboxFolderId); System.Console.Out.WriteLine("InboxFolder get: " + inboxFolder); sms.DeleteInboxFolder(inboxFolderId); System.Console.Out.WriteLine("InboxFolder delete."); try { sms.DeleteInboxFolder(inboxFolderId); } catch (Exception e) { System.Console.Out.WriteLine("Get Exception after delete not existent inboxFolder: " + e.Message); } } } }
Keywords Back to top
Check Keyword Availability
Check whether a Keyword is available to rent on Group Texting.
Code Samples
C# - XMLServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex2 { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords/new?format=xml&Keyword=honey&User=winnie&Password=the-pooh"); try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: " + response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); if (isSuccesResponse) { System.Console.Out.WriteLine("Keyword: " + response.SelectSingleNode("Response/Entry/Keyword").InnerText); System.Console.Out.WriteLine("Availability: " + response.SelectSingleNode("Response/Entry/Available").InnerText); } else { System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex2J { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords/new?format=json&Keyword=honey&User=winnie&Password=the-pooh"); try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); if (isSuccesResponse) { System.Console.Out.WriteLine("Keyword: " + response.SelectToken("Response.Entry.Keyword")); System.Console.Out.WriteLine("Availability: " + response.SelectToken("Response.Entry.Available")); } else { System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Rent Keyword
Rents a Keyword for use on Group Texting. You may rent a Keyword using a credit card you have stored in your Group Texting account, or you may pass credit card details when you call the API.
Code Samples - Stored Card
C# - XMLusing System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex3_saved { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords?format=xml"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=demo&Password=texting121212&Keyword=honey222&StoredCreditCard=1111"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: " + response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); if (isSuccesResponse) { System.Console.Out.WriteLine("Keyword ID: " + response.SelectSingleNode("Response/Entry/ID").InnerText); System.Console.Out.WriteLine("Keyword: " + response.SelectSingleNode("Response/Entry/Keyword").InnerText); System.Console.Out.WriteLine("Is double opt-in enabled: " + response.SelectSingleNode("Response/Entry/EnableDoubleOptIn").InnerText); System.Console.Out.WriteLine("Confirm message: " + response.SelectSingleNode("Response/Entry/ConfirmMessage").InnerText); System.Console.Out.WriteLine("Join message: " + response.SelectSingleNode("Response/Entry/JoinMessage").InnerText); System.Console.Out.WriteLine("Forward email: " + response.SelectSingleNode("Response/Entry/ForwardEmail").InnerText); System.Console.Out.WriteLine("Forward url: " + response.SelectSingleNode("Response/Entry/ForwardUrl").InnerText); System.Console.Out.WriteLine("Groups: " + ImplodeList(response.SelectNodes("Response/Entry/ContactGroupIDs/*"))); } else { System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex3J_saved { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords?format=json"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=demo&Password=texting121212&Keyword=honey222&StoredCreditCard=1111"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); if (isSuccesResponse) { System.Console.Out.WriteLine("Keyword ID: " + response.SelectToken("Response.Entry.ID")); System.Console.Out.WriteLine("Keyword: " + response.SelectToken("Response.Entry.Keyword")); System.Console.Out.WriteLine("Is double opt-in enabled: " + response.SelectToken("Response.Entry.EnableDoubleOptIn")); System.Console.Out.WriteLine("Confirm message: " + response.SelectToken("Response.Entry.ConfirmMessage")); System.Console.Out.WriteLine("Join message: " + response.SelectToken("Response.Entry.JoinMessage")); System.Console.Out.WriteLine("Forward email: " + response.SelectToken("Response.Entry.ForwardEmail")); System.Console.Out.WriteLine("Forward url: " + response.SelectToken("Response.Entry.ForwardUrl")); System.Console.Out.WriteLine("Groups: " + response.SelectToken("Response.Entry.ContactGroupIDs")); } else { System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Code Samples - Non-Stored Card
C# - XMLServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex3 { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords?format=xml"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh&Keyword=honey&FirstName=Winnie&LastName=The Pooh&Street=Hollow tree, under the name of Mr. Sanders&City=Hundred Acre Woods&State=New York&Zip=12345&Country=US&CreditCardTypeID=Visa&Number=4111111111111111&expm=11&SecurityCode=123&ExpirationMonth=10&ExpirationYear=2017"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: " + response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); if (isSuccesResponse) { System.Console.Out.WriteLine("Keyword ID: " + response.SelectSingleNode("Response/Entry/ID").InnerText); System.Console.Out.WriteLine("Keyword: " + response.SelectSingleNode("Response/Entry/Keyword").InnerText); System.Console.Out.WriteLine("Is double opt-in enabled: " + response.SelectSingleNode("Response/Entry/EnableDoubleOptIn").InnerText); System.Console.Out.WriteLine("Confirm message: " + response.SelectSingleNode("Response/Entry/ConfirmMessage").InnerText); System.Console.Out.WriteLine("Join message: " + response.SelectSingleNode("Response/Entry/JoinMessage").InnerText); System.Console.Out.WriteLine("Forward email: " + response.SelectSingleNode("Response/Entry/ForwardEmail").InnerText); System.Console.Out.WriteLine("Forward url: " + response.SelectSingleNode("Response/Entry/ForwardUrl").InnerText); System.Console.Out.WriteLine("Groups: " + ImplodeList(response.SelectNodes("Response/Entry/ContactGroupIDs/*"))); } else { System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex3J { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords?format=json"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh&Keyword=honey&FirstName=Winnie&LastName=The Pooh&Street=Hollow tree, under the name of Mr. Sanders&City=Hundred Acre Woods&State=New York&Zip=12345&Country=US&CreditCardTypeID=Visa&Number=4111111111111111&expm=11&SecurityCode=123&ExpirationMonth=10&ExpirationYear=2017"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); if (isSuccesResponse) { System.Console.Out.WriteLine("Keyword ID: " + response.SelectToken("Response.Entry.ID")); System.Console.Out.WriteLine("Keyword: " + response.SelectToken("Response.Entry.Keyword")); System.Console.Out.WriteLine("Is double opt-in enabled: " + response.SelectToken("Response.Entry.EnableDoubleOptIn")); System.Console.Out.WriteLine("Confirm message: " + response.SelectToken("Response.Entry.ConfirmMessage")); System.Console.Out.WriteLine("Join message: " + response.SelectToken("Response.Entry.JoinMessage")); System.Console.Out.WriteLine("Forward email: " + response.SelectToken("Response.Entry.ForwardEmail")); System.Console.Out.WriteLine("Forward url: " + response.SelectToken("Response.Entry.ForwardUrl")); System.Console.Out.WriteLine("Groups: " + response.SelectToken("Response.Entry.ContactGroupIDs")); } else { System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Setup A Keyword
Configures an active Keyword for use on Group Texting.
Code Samples
C# - XMLServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex4 { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords/honey?format=xml"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh&EnableDoubleOptIn=1&ConfirmMessage=Reply Y to join our sweetest list&JoinMessage=The only reason for being a bee that I know of, is to make honey. And the only reason for making honey, is so as I can eat it.&[email protected]&ForwardUrl=http://bear-alliance.co.uk/honey-donations/&ContactGroupIDs[]=honey lovers"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: " + response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); if (isSuccesResponse) { System.Console.Out.WriteLine("Keyword ID: " + response.SelectSingleNode("Response/Entry/ID").InnerText); System.Console.Out.WriteLine("Keyword: " + response.SelectSingleNode("Response/Entry/Keyword").InnerText); System.Console.Out.WriteLine("Is double opt-in enabled: " + response.SelectSingleNode("Response/Entry/EnableDoubleOptIn").InnerText); System.Console.Out.WriteLine("Confirm message: " + response.SelectSingleNode("Response/Entry/ConfirmMessage").InnerText); System.Console.Out.WriteLine("Join message: " + response.SelectSingleNode("Response/Entry/JoinMessage").InnerText); System.Console.Out.WriteLine("Forward email: " + response.SelectSingleNode("Response/Entry/ForwardEmail").InnerText); System.Console.Out.WriteLine("Forward url: " + response.SelectSingleNode("Response/Entry/ForwardUrl").InnerText); System.Console.Out.WriteLine("Groups: " + ImplodeList(response.SelectNodes("Response/Entry/ContactGroupIDs/*"))); } else { System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex4J { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords/honey?format=json"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh&EnableDoubleOptIn=1&ConfirmMessage=Reply Y to join our sweetest list&JoinMessage=The only reason for being a bee that I know of, is to make honey. And the only reason for making honey, is so as I can eat it.&[email protected]&ForwardUrl=http://bear-alliance.co.uk/honey-donations/&ContactGroupIDs[]=honey lovers"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); if (isSuccesResponse) { System.Console.Out.WriteLine("Keyword ID: " + response.SelectToken("Response.Entry.ID")); System.Console.Out.WriteLine("Keyword: " + response.SelectToken("Response.Entry.Keyword")); System.Console.Out.WriteLine("Is double opt-in enabled: " + response.SelectToken("Response.Entry.EnableDoubleOptIn")); System.Console.Out.WriteLine("Confirm message: " + response.SelectToken("Response.Entry.ConfirmMessage")); System.Console.Out.WriteLine("Join message: " + response.SelectToken("Response.Entry.JoinMessage")); System.Console.Out.WriteLine("Forward email: " + response.SelectToken("Response.Entry.ForwardEmail")); System.Console.Out.WriteLine("Forward url: " + response.SelectToken("Response.Entry.ForwardUrl")); System.Console.Out.WriteLine("Groups: " + response.SelectToken("Response.Entry.ContactGroupIDs")); } else { System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Cancel A Keyword
Cancels an active Keyword on Group Texting.
Code Samples
C# - XMLServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex5 { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; HttpStatusCode retStatus = HttpStatusCode.Unused; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords/honey?format=xml&_method=DELETE"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { retStatus = r.StatusCode; } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { retStatus = ((HttpWebResponse)ex.Response).StatusCode; ret = GetResponseString(ex.Response); } } System.Console.Out.WriteLine("Status: " + retStatus); if (!isSuccesResponse && ret.Length > 0) { XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: " + response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex5J { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; HttpStatusCode retStatus = HttpStatusCode.Unused; WebRequest w = WebRequest.Create("https://app.grouptexting.com/keywords/honey?format=json&_method=DELETE"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { retStatus = r.StatusCode; } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { retStatus = ((HttpWebResponse)ex.Response).StatusCode; ret = GetResponseString(ex.Response); } } System.Console.Out.WriteLine("Status: " + retStatus); if (!isSuccesResponse) { // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Credits Back to top
Check Credit Balance
Checks credit balances on your account.
Code Samples
C# - XMLServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex6 { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/billing/credits/get?format=xml&User=winnie&Password=the-pooh"); try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: " + response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); if (isSuccesResponse) { System.Console.Out.WriteLine("Plan credits: " + response.SelectSingleNode("Response/Entry/PlanCredits").InnerText); System.Console.Out.WriteLine("Anytime credits: " + response.SelectSingleNode("Response/Entry/AnytimeCredits").InnerText); System.Console.Out.WriteLine("Total: " + response.SelectSingleNode("Response/Entry/TotalCredits").InnerText); } else { System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex6J { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/billing/credits/get?format=json&User=winnie&Password=the-pooh"); try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { ret = GetResponseString(ex.Response); } } // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); if (isSuccesResponse) { System.Console.Out.WriteLine("Plan credits: " + response.SelectToken("Response.Entry.PlanCredits")); System.Console.Out.WriteLine("Anytime credits: " + response.SelectToken("Response.Entry.AnytimeCredits")); System.Console.Out.WriteLine("Total: " + response.SelectToken("Response.Entry.TotalCredits")); } else { System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Buy Credits
Buys more credits for your account. You may purchase credits using a credit card you have stored in your Group Texting account, or you may pass credit card details when you call the API.
Code Samples - Stored Card
C# - XMLusing System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex7_saved { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/billing/credits?format=xml"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=demo&Password=texting121212&NumberOfCredits=1000&CouponCode=honey2011&StoredCreditCard=1111"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { System.Console.Out.WriteLine(((HttpWebResponse)ex.Response).StatusCode); ret = GetResponseString(ex.Response); } } if (ret.Length > 0) { XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: " + response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); if (isSuccesResponse) { System.Console.Out.WriteLine("Credits purchased: " + response.SelectSingleNode("Response/Entry/BoughtCredits").InnerText); System.Console.Out.WriteLine("Amount charged, $: " + response.SelectSingleNode("Response/Entry/Amount").InnerText); System.Console.Out.WriteLine("Discount, $: " + response.SelectSingleNode("Response/Entry/Discount").InnerText); System.Console.Out.WriteLine("Plan credits: " + response.SelectSingleNode("Response/Entry/PlanCredits").InnerText); System.Console.Out.WriteLine("Anytime credits: " + response.SelectSingleNode("Response/Entry/AnytimeCredits").InnerText); System.Console.Out.WriteLine("Total: " + response.SelectSingleNode("Response/Entry/TotalCredits").InnerText); } else { System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex7J_saved { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/billing/credits?format=json"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=demo&Password=texting121212&NumberOfCredits=1000&CouponCode=honey2011&StoredCreditCard=1111"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { System.Console.Out.WriteLine(((HttpWebResponse)ex.Response).StatusCode); ret = GetResponseString(ex.Response); } } if (ret.Length > 0) { // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); if (isSuccesResponse) { System.Console.Out.WriteLine("Credits purchased: " + response.SelectToken("Response.Entry.BoughtCredits")); System.Console.Out.WriteLine("Amount charged, $: " + response.SelectToken("Response.Entry.Amount")); System.Console.Out.WriteLine("Discount, $: " + response.SelectToken("Response.Entry.Discount")); System.Console.Out.WriteLine("Plan credits: " + response.SelectToken("Response.Entry.PlanCredits")); System.Console.Out.WriteLine("Anytime credits: " + response.SelectToken("Response.Entry.AnytimeCredits")); System.Console.Out.WriteLine("Total: " + response.SelectToken("Response.Entry.TotalCredits")); } else { System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Code Samples - Non-Stored Card
C# - XMLServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using System.Xml; namespace RESTex7 { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/billing/credits?format=xml"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh&NumberOfCredits=1000&CouponCode=honey2011&FirstName=Winnie&LastName=The Pooh&Street=Hollow tree, under the name of Mr. Sanders&City=Hundred Acre Woods&State=New York&Zip=12345&Country=US&CreditCardTypeID=Visa&Number=4111111111111111&SecurityCode=123&ExpirationMonth=10&ExpirationYear=2017"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { System.Console.Out.WriteLine(((HttpWebResponse)ex.Response).StatusCode); ret = GetResponseString(ex.Response); } } if (ret.Length > 0) { XmlDocument response = new XmlDocument(); response.LoadXml(ret); System.Console.Out.WriteLine("Status: " + response.SelectSingleNode("Response/Status").InnerText); System.Console.Out.WriteLine("Code: " + response.SelectSingleNode("Response/Code").InnerText); if (isSuccesResponse) { System.Console.Out.WriteLine("Credits purchased: " + response.SelectSingleNode("Response/Entry/BoughtCredits").InnerText); System.Console.Out.WriteLine("Amount charged, $: " + response.SelectSingleNode("Response/Entry/Amount").InnerText); System.Console.Out.WriteLine("Discount, $: " + response.SelectSingleNode("Response/Entry/Discount").InnerText); System.Console.Out.WriteLine("Plan credits: " + response.SelectSingleNode("Response/Entry/PlanCredits").InnerText); System.Console.Out.WriteLine("Anytime credits: " + response.SelectSingleNode("Response/Entry/AnytimeCredits").InnerText); System.Console.Out.WriteLine("Total: " + response.SelectSingleNode("Response/Entry/TotalCredits").InnerText); } else { System.Console.Out.WriteLine("Errors: " + ImplodeList(response.SelectNodes("Response/Errors/*"))); } } } static string ImplodeList(XmlNodeList list) { string ret = ""; foreach (XmlNode node in list) { ret += ", " + node.InnerText; } return ret.Length > 2 ? ret.Substring(2) : ret; } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }C# - JSON
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; using System; using System.Net; using System.IO; using System.Text; using Newtonsoft.Json.Linq; namespace RESTex7J { class Program { static void Main(string[] args) { bool isSuccesResponse = true; string ret = string.Empty; WebRequest w = WebRequest.Create("https://app.grouptexting.com/billing/credits?format=json"); w.Method = "POST"; w.ContentType = "application/x-www-form-urlencoded"; using (Stream writeStream = w.GetRequestStream()) { byte[] bytes = Encoding.UTF8.GetBytes("User=winnie&Password=the-pooh&NumberOfCredits=1000&CouponCode=honey2011&FirstName=Winnie&LastName=The Pooh&Street=Hollow tree, under the name of Mr. Sanders&City=Hundred Acre Woods&State=New York&Zip=12345&Country=US&CreditCardTypeID=Visa&Number=4111111111111111&SecurityCode=123&ExpirationMonth=10&ExpirationYear=2017"); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse r = (HttpWebResponse)w.GetResponse()) { ret = GetResponseString(r); } } catch (System.Net.WebException ex) { isSuccesResponse = false; if (ex.Status == WebExceptionStatus.ProtocolError) { System.Console.Out.WriteLine(((HttpWebResponse)ex.Response).StatusCode); ret = GetResponseString(ex.Response); } } if (ret.Length > 0) { // use free Json.NET library (http://json.codeplex.com/) for JSON handling JObject response = JObject.Parse(ret); System.Console.Out.WriteLine("Status: " + response.SelectToken("Response.Status")); System.Console.Out.WriteLine("Code: " + response.SelectToken("Response.Code")); if (isSuccesResponse) { System.Console.Out.WriteLine("Credits purchased: " + response.SelectToken("Response.Entry.BoughtCredits")); System.Console.Out.WriteLine("Amount charged, $: " + response.SelectToken("Response.Entry.Amount")); System.Console.Out.WriteLine("Discount, $: " + response.SelectToken("Response.Entry.Discount")); System.Console.Out.WriteLine("Plan credits: " + response.SelectToken("Response.Entry.PlanCredits")); System.Console.Out.WriteLine("Anytime credits: " + response.SelectToken("Response.Entry.AnytimeCredits")); System.Console.Out.WriteLine("Total: " + response.SelectToken("Response.Entry.TotalCredits")); } else { System.Console.Out.WriteLine("Errors: " + response.SelectToken("Response.Errors")); } } } static string GetResponseString(WebResponse response) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { return readStream.ReadToEnd(); } } } } }
Contacts Back to top
Contacts
When working with Contacts you can perform five actions: Post (Add New Contact), Put (Update/Edit A Contact), Delete (Delete A Contact), Get (Get Contact By ID), Index (Get All Contacts). The code samples below use shared libraries and packages.
You can download them, along with the code samples here: CsharpLib.zip.
Code Samples
C# - XMLusing System; using System.Collections.Generic; using System.Linq; using System.Text; using SmsTexting; namespace SmsTextingApiExamples { class Contacts { static void Main(string[] args) { var sms = new SmsTextingRestClient("demouser", "password", SmsTextingRestClient.XML); System.Console.Out.WriteLine("XML encoding."); var contacts = sms.GetContacts(null, null, null, "Honey Lovers", null, null, null, null); System.Console.Out.WriteLine("Get contacts:"); contacts.ForEach(t => System.Console.Out.WriteLine(t)); var contact = new Contact("2123456899", "Piglet", "P.", "[email protected]", "It is hard to be brave, when you are only a Very Small Animal.", null); contact = sms.CreateContact(contact); System.Console.Out.WriteLine("Contact create: " + contact); contact = sms.GetContact(contact.ID); System.Console.Out.WriteLine("Contact get: " + contact); contact.Note = "The note"; contact.Groups.Add("Friends"); contact.Groups.Add("Neighbors"); contact = sms.UpdateContact(contact); System.Console.Out.WriteLine("Contact update: " + contact); sms.DeleteContact(contact.ID); System.Console.Out.WriteLine("Contact delete."); try { sms.DeleteContact(contact.ID); } catch (Exception e) { System.Console.Out.WriteLine("Get Exception after delete not existent contact: " + e.Message); } } } }C# - JSON
using System; using System.Collections.Generic; using System.Linq; using System.Text; using SmsTexting; namespace SmsTextingApiExamples { class Contacts { static void Main(string[] args) { var sms = new SmsTextingRestClient("demouser", "password", SmsTextingRestClient.JSON); System.Console.Out.WriteLine("JSON encoding."); var contacts = sms.GetContacts(null, null, null, "Honey Lovers", null, null, null, null); System.Console.Out.WriteLine("Get contacts:"); contacts.ForEach(t => System.Console.Out.WriteLine(t)); var contact = new Contact("2123456899", "Piglet", "P.", "[email protected]", "It is hard to be brave, when you are only a Very Small Animal.", null); contact = sms.CreateContact(contact); System.Console.Out.WriteLine("Contact create: " + contact); contact = sms.GetContact(contact.ID); System.Console.Out.WriteLine("Contact get: " + contact); contact.Note = "The note"; contact.Groups.Add("Friends"); contact.Groups.Add("Neighbors"); contact = sms.UpdateContact(contact); System.Console.Out.WriteLine("Contact update: " + contact); sms.DeleteContact(contact.ID); System.Console.Out.WriteLine("Contact delete."); try { sms.DeleteContact(contact.ID); } catch (Exception e) { System.Console.Out.WriteLine("Get Exception after delete not existent contact: " + e.Message); } } } }
Groups Back to top
Groups
When working with Groups you can perform five actions: Post (Add New Group), Put (Update/Edit A Group), Delete (Delete A Group), Get (Get Group By ID), Index (Get All Groups). The code samples below use shared libraries.
You can download them, along with the code samples here: CsharpLib.zip.
Code Samples
C# - XMLusing System; using System.Collections.Generic; using System.Linq; using System.Text; using SmsTexting; namespace SmsTextingApiExamples { class Groups { static void Main(string[] args) { var sms = new SmsTextingRestClient("demouser", "password", SmsTextingRestClient.XML); System.Console.Out.WriteLine("XML encoding."); var groups = sms.GetGroups("Name", "asc", "10", "1"); System.Console.Out.WriteLine("Get groups:"); groups.ForEach(t => System.Console.Out.WriteLine(t)); var group = new Group("Tubby Bears", "A bear, however hard he tries, grows tubby without exercise"); group = sms.CreateGroup(group); System.Console.Out.WriteLine("Group create: " + group); group = sms.GetGroup(group.ID); System.Console.Out.WriteLine("Group get: " + group); group.Note = "The note"; group = sms.UpdateGroup(group); System.Console.Out.WriteLine("Group update: " + group); sms.DeleteGroup(group.ID); System.Console.Out.WriteLine("Group delete."); try { sms.DeleteGroup(group.ID); } catch (Exception e) { System.Console.Out.WriteLine("Get Exception after delete not existent group: " + e.Message); } } } }C# - JSON
using System; using System.Collections.Generic; using System.Linq; using System.Text; using SmsTexting; namespace SmsTextingApiExamples { class Groups { static void Main(string[] args) { var sms = new SmsTextingRestClient("demouser", "password", SmsTextingRestClient.JSON); System.Console.Out.WriteLine("JSON encoding."); var groups = sms.GetGroups("Name", "asc", "10", "1"); System.Console.Out.WriteLine("Get groups:"); groups.ForEach(t => System.Console.Out.WriteLine(t)); var group = new Group("Tubby Bears", "A bear, however hard he tries, grows tubby without exercise"); group = sms.CreateGroup(group); System.Console.Out.WriteLine("Group create: " + group); group = sms.GetGroup(group.ID); System.Console.Out.WriteLine("Group get: " + group); group.Note = "The note"; group = sms.UpdateGroup(group); System.Console.Out.WriteLine("Group update: " + group); sms.DeleteGroup(group.ID); System.Console.Out.WriteLine("Group delete."); try { sms.DeleteGroup(group.ID); } catch (Exception e) { System.Console.Out.WriteLine("Get Exception after delete not existent group: " + e.Message); } } } }