Bandwidth C# SDK uses Nuget for Package Management
Run
nuget install Bandwidth.Iris
Or install Bandwidth.Iris via UI in Visual Studio
- Install Bandwidth.Iris
- Get an account ID, user name and password from Bandwidth for your account
- Configure the Client
varclient=Client.GetInstance("accountId","username","password","apiEndpoint")//Or//Uses the System Environment Variables as detailed belowvarclient=Client.GetInstance()| Environment Variable | Definition |
|---|---|
| BANDWIDTH_API_ACCOUNT_ID | Your Bandwidth Account Id |
| BANDWIDTH_API_USERNAME | Your Bandwidth username |
| BANDWIDTH_API_PASSWORD | Your Bandwidth password |
| BANDWIDTH_API_ENDPOINT | https://dashboard.bandwidth.com/api |
| BANDWIDTH_API_VERSION | v1.0 |
All static functions support 2 ways to be called: With a client instance as the first arg or without the client instance (default client instance will then be used)
varsite=awaitSite.get(client,"siteId");//Orvarsite=awaitSite.get("siteId");//This will use the default client where supportedWhen using the objects, there are generally static methods for Create, Get and List of each entity. Once you have an instance of any entity, you can call the instance methods of that entity to perform additional operations.
varsites=awaitSite.List(client);varsite=awaitSite.Get(client,"siteId");varnewSite=awaitSite.Create(client,newSite(){Name="MyTest Site"});varsipPeers=awaitsite.GetSipPeers();site.Delete();When making making API calls the client can throw an AggregateException this will normally contain a BandwidthIrisException. A suggested way to handle the API calls is to catch the AggregateException that API calls can create and #Handle the BandwidthIrisException. Example:
try{varsite=awaitSite.Get(client,"siteId");}catch(AggregateExceptione){e.Handle((x)=>{if(xisBandwidthIrisException){//Do something returntrue;}returnfalse;});}varquery=newDictionary<string,object>();query.Add("areaCode","805");query.Add("quantity",3);varitems=awaitAvailableNpaNxx.List(_client,query);foreach(AvailableNpaNxxnpaNxxinitems){Console.WriteLine(string.Format("NpaNxx: {0}",npaNxx.Npa+npaNxx.Nxx));}varquery=newDictionary<string,object>();query.Add("areaCode","805");query.Add("quantity",3);varresult=awaitAvailableNumbers.List(_client,query);foreach(stringnumberinresult.TelephoneNumberList){Console.WriteLine(string.Format("Number: {0}",number));}varquery=newDictionary<string,object>();query.Add("state","CA");query.Add("available",true);varresult=awaitCity.List(_client,query);foreach(Citycityinresult){Console.WriteLine("City Name: {0}",city.Name);}varquery=newDictionary<string,object>();query.Add("state","CA");query.Add("available",true);varresult=awaitRateCenter.List(query);foreach(RateCenterrateCenterinresult){Console.WriteLine("RateCenter Name: {0}",rateCenter.Name);}varquery=newDictionary<string,object>();query.Add("zip","27609");varresult=awaitCoveredRateCenter.List(_client,query);foreach(CoveredRateCenterrateCenterinresult){Console.WriteLine("RateCenter Name: {0}",rateCenter.Name);}varresult=awaitOrder.Create(_client,newOrder{Name="Test Order",SiteId="SiteId",CustomerOrderId="SomeCustomerId",LataSearchAndOrderType=newLataSearchAndOrderType{Lata="224",Quantity=1}});varorder=awaitOrder.Get("orderId");order.Update()
order.AddNote(varnote);order.GetNotes();order.GetAreaCodes();order.GetNpaNxx();order.GetTotals();order.GetTns();order.GetHistory();varquery=newDictionary<string,object>();query.Add("page","1");query.Add("size","10");query.Add("zip","27516");OrderListResponseorderListResponse=awaitOrder.List(client,query);orderListResponse.Orders.TotalCount;orderListResponse.Orders.Links.First;orderListResponse.Orders.Links.Next;orderListResponse.Orders.Links.Last;orderListResponse.Orders.OrderDetails.Count;orderListResponse.Orders.OrderDetails[0].CountOfTns;orderListResponse.Orders.OrderDetails[0].OrderStatus;orderListResponse.Orders.OrderDetails[0].OrderId;orderListResponse.Orders.OrderDetails[0].LastModifiedDate;orderListResponse.Orders.OrderDetails[0].OrderDate;orderListResponse.Orders.OrderDetails[0].UserId;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.States.Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.States[0].Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.States[0].State;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.RateCenters.Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.RateCenters[0].Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.RateCenters[0].RateCenter;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Cities.Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Cities[0].Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Cities[0].City;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Tiers.Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Tiers[0].Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Tiers[0].Tier;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Vendors.Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Vendors[0].Count;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Vendors[0].VendorId;orderListResponse.Orders.OrderDetails[0].TelephoneNumberDetailsWithCount.Vendors[0].VendorName;varapplication=newApplication{ApplicationId="d3e418e9-1833-49c1-b6c7-ca1700f79586",ServiceType="Voice-V2",AppName="v1",CallbackCreds=newCallbackCreds{UserId="login123"},CallStatusMethod="GET",CallInitiatedMethod="GET",CallInitiatedCallbackUrl="https://a.com",CallStatusCallbackUrl="https://b.com"};varresponse=awaitApplication.Create(client,application);varresponse=awaitApplication.List(client);varresponse=awaitApplication.Get(client,applicationId);varapplication=newApplication{AppName="XgRIdP"};varresponse=awaitApplication.PartialUpdate(client,applicationId,application);varapplication=newApplication{ServiceType="Voice-V2",AppName="v1",CallbackCreds=newCallbackCreds{UserId="login123"},CallStatusMethod="GET",CallInitiatedMethod="GET",CallInitiatedCallbackUrl="https://a.com",CallStatusCallbackUrl="https://b.com"};varresponse=awaitApplication.FullUpdate(client,applicationId,application);varresponse=awaitApplication.Delete(client,applicationId);varresponse=awaitApplication.ListAssociatedSippeers(client,applicationId);For LNP Checker, send one number at a time when using the C# SDK.
try{varresult=awaitLnpChecker.Check(client,newstring[]{"555555"});Console.WriteLine(result);}catch(Bandwidth.Iris.BandwidthIrisExceptionerror){Console.WriteLine(error.Message);}catch(Exceptione){ExceptioninnerEx=e;while(innerEx!=null){stringmsg=innerEx.Message;Console.WriteLine(msg);innerEx=innerEx.InnerException;}}vardata=newPortIn{BillingTelephoneNumber="+1-202-555-0158",Subscriber=newSubscriber{SubscriberType="BUSINESS",BusinessName="Company",FirstName="John",LastName="Doe",ServiceAddress=newAddress{City="City",StateCode="State",Country="Country"}},PeerId=sipPeer.Id,SiteId=site.Id};varorder=awaitPortIn.Create(_client,data);varportInOrder=PortIn.Get("orderId");varportIn=newPortIn{Id="1"};portIn.SetClient(client);varfileMetadata=newFileMetadata{DocumentType="INVOICE",DocumentName="docName"};varr=portIn.PutFileMetadata("test",fileMetadata).Result;portInOrder.Update();portInOrder.Delete();portInOrder.AddNote(Noten);portInOrder.GetNotes();portInOrder.CreateFile(Streams,stringmediaType);portInOrder.CreateFile(byte[]buffer,stringmediaType);portInOrder.UpdateFile(stringfileName,Streams,stringmediaType);portInOrder.UpdateFile(stringfileName,byte[]buffer,stringmediaType);portInOrder.GetFileMetaData(stringfileName);PutFileMetadata(stringfileName,FileMetadatafileMetadata);portInOrder.DeleteFile(stringfileName);portInOrder.GetFiles(boolmetaData);portInOrder.GetFile(stringfileName);varnewSite=awaitSite.Create(_client,newSite(){Name="Csharp Test Site",Description="A site from the C# Example",Address=newAddress(){HouseNumber="123",StreetName="Anywhere St",City="Raleigh",StateCode="NC",Zip="27609",AddressType="Service"}});varsites=awaiteSite.List();site.Delete();varsipPeerHost="1.2.3.4";varnewSipPeer=awaitSipPeer.Create(_client,newSipPeer(){IsDefaultPeer=true,ShortMessagingProtocol="SMPP",SiteId= "SiteId,
VoiceHosts=new[]{newHostData{HostName=sipPeerHost}},SmsHosts=new[]{newHostData{HostName=sipPeerHost}},TerminationHosts=newTerminationHost[]{newTerminationHost(){HostName=sipPeerHost,Port=5060}}});varsipPeer=awaitSipPeer.Get("sipPeerId");varsipPeer=awaitSipPeer.Get("sipPeerId");sipPeer.Delete();sipPeer.GetTn(number);sipPeer.UpdateTns(number,data);sipPeer.MoveTns(newstring[] numbers);varsipPeerOriginationSettingsResponse=awaitSipPeer.GetOriginationSettings(siteId,sipPeerId);varsipPeerOriginationSettings=newSipPeerOriginationSettings{VoiceProtocol="HTTP",HttpSettings=newHttpSettings{HttpVoiceV2AppId="469ebbac-4459-4d98-bc19-a038960e787f"}};varsipPeerOriginationSettingsResponse=awaitSipPeer.SetOriginationSettings(siteId,sipPeerId,sipPeerOriginationSettings);varsipPeerOriginationSettings=newSipPeerOriginationSettings{VoiceProtocol="HTTP",HttpSettings=newHttpSettings{HttpVoiceV2AppId="469ebbac-4459-4d98-bc19-a038960e787f"}};SipPeer.UpdateOriginationSettings(siteId,sipPeerId,SipPeerOriginationSettings).Wait();varsipPeerTerminationSettingsResponse=awaitSipPeer.GetTerminationSetting(siteId,sipPeerId);varsipPeerTerminationSettings=newSipPeerTerminationSettings{VoiceProtocol="HTTP",HttpSettings=newHttpSettings{HttpVoiceV2AppId="469ebbac-4459-4d98-bc19-a038960e787f"}};varsipPeerTerminationSettingsResponse=awaitSipPeer.GetTerminationSetting(siteId,sipPeerId,sipPeerTerminationSettings);varsipPeerTerminationSettings=newSipPeerTerminationSettings{VoiceProtocol="HTTP",HttpSettings=newHttpSettings{HttpVoiceV2AppId="469ebbac-4459-4d98-bc19-a038960e787f"}};SipPeer.UpdateTerminationSettings(client,siteId,sipPeerId,SipPeerTerminationSettings).Wait();varsipPeerSmsFeatureResponse=awaitSipPeer.GetSMSSetting(siteId,sipPeerId);varsipPeerSmsFeature=newSipPeerSmsFeature{SipPeerSmsFeatureSettings=newSipPeerSmsFeatureSettings{TollFree=true},SmppHosts=newSmppHost[]{newSmppHost{HostName="Host"}}};varsipPeerSmsFeatureResponse=awaitSipPeer.CreateSMSSettings(siteId,sipPeerId,sipPeerSmsFeature);varsipPeerSmsFeature=newSipPeerSmsFeature{SipPeerSmsFeatureSettings=newSipPeerSmsFeatureSettings{TollFree=true},SmppHosts=newSmppHost[]{newSmppHost{HostName="Host"}}};varsipPeerSmsFeatureResponse=awaitSipPeer.UpdateSMSSettings(siteId,sipPeerId,sipPeerSmsFeature);SipPeer.DeleteSMSSettings(siteId,sipPeerId).Wait();varMmsFeatureResponse=awaitSipPeer.GetMMSSetting(siteId,sipPeerId);varmmsFeature=newMmsFeature{Protocols=newProtocols{MM4=newMM4{Tls="OFF"}}};varMmsFeatureResponse=awaitSipPeer.CreateMMSSettings(siteId,sipPeerId,mmsFeature);varmmsFeature=newMmsFeature{Protocols=newProtocols{MM4=newMM4{Tls="OFF"}}};SipPeer.UpdateMMSSettings(siteId,sipPeerId,MmsFeature).Wait();SipPeer.DeleteMMSSettings(siteId,sipPeerId).Wait();varapplicationsSettingsResponse=awaitSipPeer.GetApplicationSetting(siteId,sipPeerId);varapplicationSettings=newApplicationsSettings{HttpMessagingV2AppId="c3b0f805-06ab-4d36-8bf4-8baff7623398"};SipPeer.UpdateApplicationSettings(siteId,sipPeerId,applicationSettings).Wait();SipPeer.RemoveApplicationSettings(siteId,sipPeerId).Wait();varsubscription=awaitSubscription.Create(newSubscription(){OrderType="orders",OrderId="100",EmailSubscription=newEmailSubscription{Email="test@test",DigestRequested="NONE"}};varsubscription=awaitSubscription.Get("subscriptionId");var list = await Subscription.List(new Dictionary<string,object>{{"orderType", "orders"}})
subscription.Update();subscription.Delete();varresult=awaitTn.Get("9195551212");vardetails=awaitresult.GetDetails();varresult=awaitTn.List(newDictionary<string,object>{{{"npa","919"}})varitem=awaitTnReservation.Create(newTnReservation(){AccountId="accountId",ReservedTn="9195551212",ReservationExpires=0};varreservation=awaitTnReservation.Get("Id");reservation.Delete();vardlda=newDlda{CustomerOrderId="Your Order Id",DldaTnGroups=new[]{newDldaTnGroup{TelephoneNumbers=newTelephoneNumbers{Numbers=new[]{"9195551212"}},SubscriberType="RESIDENTIAL",ListingType="LISTED",ListingName=newListingName{FirstName="John",LastName="Smith"},ListAddress=true,Address=newAddress{HouseNumber="123",StreetName="Elm",StreetSuffix="Ave",City="Carpinteria",StateCode="CA",Zip="93013",AddressType="DLDA"}}}};awaitDlda.Create(dlda);vardlda=awaitDlda.Get(id);varlist=awaitDlda.GetHistory();varitem=newLidb{CustomerOrderId="A Test order",LidbTnGroups=new[]{newLidbTnGroup{TelephoneNumbers=new[]{"8048030097","8045030098"},SubscriberInformation="Joes Grarage",UseType="RESIDENTIAL",Visibility="PUBLIC"}}};awaitLidb.Create(item);varitem=awaitLidb.Get(id);varlist=awaitLidb.List();varitem=newTnLineOptions{TelephoneNumber="5209072451",CallingNameDisplay="off"};varnumbers=awaitLineOptionOrder.Create(item);varlist=awaitInServiceNumber.List(newDictionary<string,object>{{"city","Cary"}});vartotals=awaitInServiceNumber.GetTotals();varlist=awaitDiscNumber.List(newDictionary<string,object>{{"type","NPA"}});vartotals=awaitDiscNumber.GetTotals();varlist=awaitHost.List(newDictionary<string,object>{{"type","SMS"}});varorder=newImportTnOrder{OrderId="fbd17609-be44-48e7-a301-90bd6cf42248",AccountId="account",SipPeerId=1,SiteId=2};varresponse=awaitImportTnOrder.Create(client,order);varresponse=awaitImportTnOrder.List(client,newDictionary<string,object>{{"accountId","1"}});varresponse=awaitImportTnOrder.Get(client,orderId);varresponse=awaitImportTnOrder.GetHistory(client,orderId)varorder=newRemoveImportedTnOrder{OrderId="fbd17609-be44-48e7-a301-90bd6cf42248",AccountId="account"};varresponse=awaitRemoveImportedTnOrder.Create(client,order);varresponse=awaitRemoveImportedTnOrder.List(client,newDictionary<string,object>{{"accountId","1"}});varresponse=awaitRemoveImportedTnOrder.Get(client,orderId);varresponse=awaitRemoveImportedTnOrder.GetHistory(client,orderId)varpayload=newImportTnCheckerPayload{TelephoneNumbers=newTelephoneNumber[]{newTelephoneNumber{FullNumber="3032281000"}}};varresponse=awaitImportTnChecker.Create(client,payload);varcsr=newCsr{AccountId="accountId"//Additional information};varresponse=awaitCsr.Create(client,csr);varresponse=awaitCsr.Get(client,orderId);varcsr=newCsr{AccountId="new accountId"//Additional information};varresponse=awaitCsr.Replace(client,orderId,csr);varresponse=awaitCsr.ListNotes(client,orderId);varnote=newNote{Description="Description goes here"};Csr.CreateNote(client,orderId,note);varnote=newNote{Description="Updated description goes here"};Csr.UpdateNote(client,orderId,noteId,note);varresult=awaitEmergencyNotification.GetRecipients(client,orderId);varresult=awaitEmergencyNotification.ListRecipients(client,newDictionary<string,Object>{{"EnrNotificationType","SMS"}});varresult=awaitEmergencyNotification.CreateRecipients(client,newEmergencyNotificationRecipient{ModifiedByUser="testuser",Type="EMAIL",EmailAddress="test@example.com"});varresult=awaitEmergencyNotification.UpdateRecipients(client,id,newEmergencyNotificationRecipient{ModifiedByUser="testuser",Type="EMAIL",EmailAddress="test@example.com"});EmergencyNotification.DeleteRecipients(client,id).Wait();varresult=awaitEmergencyNotification.GetGroupOrders(client,id);varresult=awaitEmergencyNotification.ListGroupOrders(client,newDictionary<string,Object>{{"EnrNotificationType","TTS"}});varresult=awaitEmergencyNotification.CreateGroupOrders(client,newEmergencyNotificationGroupOrder{CustomerOrderId="test",AddedEmergencyNotificationGroup=newEmergencyNotificationGroup{CreatedBy="samwise"}});varresult=awaitEmergencyNotification.GetGroups(client,id);varresult=awaitEmergencyNotification.ListGroups(client,newDictionary<string,Object>{{"EnrDetails","true"},{"EnrEmailAddress","test@example.com"}});varresult=awaitEmergencyNotification.GetEndpointOrders(client,id);varresult=awaitEmergencyNotification.ListEndpointOrders(client,newDictionary<string,Object>{{"EepTns","404"}});varresult=awaitEmergencyNotification.CreateEndpointOrders(client,endpointOrder);varresponse=awaitAeui.Get(client,id);varresponse=awaitAeui.List(client);Create TN Option order(s) to assign line features to the telephone number
varorder=newTnOptionOrder{CustomerOrderId="customerOrderId",TnOptionGroups=newList<TnOptionGroup>{newTnOptionGroup{PortOutPasscode="a1b2c3",TelephoneNumbers=newList<string>{"2018551020","2018551025"}}}};varresult=awaitTnOptions.Create(client,order);varorder=newTnOptionOrder{CustomerOrderId="customerOrderId",TnOptionGroups=newList<TnOptionGroup>{newTnOptionGroup{Sms="on",TelephoneNumbers=newList<string>{"2018551020","2018551025"}}}};varresult=awaitTnOptions.Create(client,order);varorder=newTnOptionOrder{CustomerOrderId="customerOrderId",TnOptionGroups=newList<TnOptionGroup>{newTnOptionGroup{CallForward="6042661720",TelephoneNumbers=newList<string>{"2018551020","2018551025"}}}};varresult=awaitTnOptions.Create(client,order);TnOptionOrderresponse=null;try{response=awaitTnOptions.Get(client,orderId);}catch(Exceptionex){//No error thrown}Console.WriteLine(response.OrderCreateDate);//"2016-01-15T11:22:58.789Z"TnOptionOrderresponse=null;try{response=awaitTnOptions.Get(client,orderId);}catch(Exceptionex){if(ex.InnerExceptionisBandwidthIrisException){varexInner=(BandwidthIrisException)ex.InnerException;Console.WriteLine(exInner.Message);//"Telephone number is not available"Console.WriteLine(exInner.Body);// <TnOptionOrders><TotalCount>2</TotalCount><TnOptionOrder>..........</TnOptionOrder></TnOptionOrders>}}varresult=awaitTnOptions.List(client,newDictionary<string,Object>{{"status","9199918388"}});