{"id":20364339,"url":"https://github.com/bandwidth/ruby-bandwidth-iris","last_synced_at":"2026-04-06T18:00:36.762Z","repository":{"id":32847080,"uuid":"36440676","full_name":"Bandwidth/ruby-bandwidth-iris","owner":"Bandwidth","description":"Ruby SDK for Bandwidth Phone Number Dashboard (AKA: Dashboard, Iris)","archived":false,"fork":false,"pushed_at":"2026-04-02T21:02:55.000Z","size":236,"stargazers_count":6,"open_issues_count":3,"forks_count":18,"subscribers_count":15,"default_branch":"master","last_synced_at":"2026-04-03T09:33:25.536Z","etag":null,"topics":["sdk"],"latest_commit_sha":null,"homepage":"http://bandwidth.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bandwidth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-05-28T13:36:49.000Z","updated_at":"2026-04-02T21:02:32.000Z","dependencies_parsed_at":"2023-07-15T14:09:18.710Z","dependency_job_id":"f0f77e8d-feb2-4682-8b9d-0a09d5ed63e2","html_url":"https://github.com/Bandwidth/ruby-bandwidth-iris","commit_stats":null,"previous_names":["bandwidthcom/ruby-bandwidth-iris"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/Bandwidth/ruby-bandwidth-iris","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fruby-bandwidth-iris","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fruby-bandwidth-iris/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fruby-bandwidth-iris/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fruby-bandwidth-iris/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bandwidth","download_url":"https://codeload.github.com/Bandwidth/ruby-bandwidth-iris/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fruby-bandwidth-iris/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31483380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sdk"],"created_at":"2024-11-15T00:11:21.378Z","updated_at":"2026-04-06T18:00:36.731Z","avatar_url":"https://github.com/Bandwidth.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ruby-bandwidth-iris\n\n[![Build Status](https://travis-ci.org/bandwidthcom/ruby-bandwidth-iris.svg)](https://travis-ci.org/bandwidthcom/ruby-bandwidth-iris)\n\nRuby Client library for IRIS / BBS API\n\n## Release Notes\n\n| Release Version | Notes |\n|--|--|\n| 1.0.5 | Fixed incorrect generation of XML for a Disconnect request |\n| 2.0.0 | Added `importTnOrders`, `removeImportedTnOrders`, `inserviceNumbers`, and `importTnChecker` endpoints. This release also changed the response body of `BandwidthIris::InServiceNumber.list()`. Please make sure to update your code to include this change. |\n| 2.0.1 | Updated gem dependencies to be less restrictive |\n| 2.1.0 | Added `csrs` endpoints |\n| 2.2.0 | Added `loas` endpoints to `importTnOrders` |\n| 2.2.0           | Added `loas` endpoints to `importTnOrders`                                                                                                                                                                                                                  |\n| 2.3.0           | Added `get_tns_by_order_id` to the Orders class                                                                                                                                                                                                             |\n| 2.4.0.pre       | Added application management and sippeer products endpoints                                                                                                                                                                                                 |\n| 2.5.0           | Added `get_order_response` to pull full `\u003cOrderResponse\u003e` object from API, added `id` back to order object on get requests. Fixed TN Reservation and updated tests to match reality  |\n| 2.6.0 | Added Emergency Calling Notification, Emergeny Notification Group, Emergency Notification Endpoint, and Alternate End User Identity methods |\n| 2.7.0 | Added TNOptions endpoints |\n| 3.0.0 | Removed functionality that causes an error to be raised when some type of `error` field is returned in the XML body response. This change reduces the situations that cause an error to be thrown to simply be 4XX and 5XX http responses. This change was made to improve communication when an error is found. Please update your code to handle this change. |\n| 3.0.2 | Fixed an incorrect retrieval of DLDA objects |\n| 4.0.0 | Removed certify gem. Users will now need to set their own SSL settings |\n| 4.1.0 | Added support for SIP credentials.\n\n### 3.x.x release\n\n```ruby\nfailed_import_tn_order = \"some_id\"\nbegin\n    response = BandwidthIris::ImportTnOrders.get_import_tn_order(failed_import_tn_order)\n    puts response[0]\nrescue BandwidthIris::Errors::GenericError =\u003e e\n    puts e\nend\n```\n\n#### 2.x.x result\n\n```\nMessaging route of External Third Party TNs is not configured.\n```\n\n#### 3.x.x result\n\n```\n{:customer_order_id=\u003e\"custom_id\", :order_create_date=\u003eMon, 02 Mar 2020 20:56:48 +0000, :account_id=\u003e123, :created_by_user=\u003e\"user\", :order_id=\u003e\"0f2\", :last_modified_date=\u003eMon, 02 Mar 2020 20:56:48 +0000, :site_id=\u003e123, :subscriber=\u003e{:name=\u003e\"Company INC\", :service_address=\u003e{:house_number=\u003e123, :street_name=\u003e\"Street\", :city=\u003e\"City\", :state_code=\u003e\"XY\", :zip=\u003e12345, :county=\u003e\"County\", :country=\u003e\"Country\", :address_type=\u003e\"Service\"}}, :loa_authorizing_person=\u003e\"Person\", :telephone_numbers=\u003e{:telephone_number=\u003e\"5554443333\"}, :processing_status=\u003e\"FAILED\", :errors=\u003e{:error=\u003e{:code=\u003e19005, :description=\u003e\"Messaging route of External Third Party TNs is not configured.\", :telephone_numbers=\u003e{:telephone_number=\u003e\"5554443333\"}}}, :sip_peer_id=\u003e123}\n```\n\n## Install\n\nRun\n\n```\ngem install ruby-bandwidth-iris\n```\n\n## Run Tests\n\nRun\n\n```\nbundle install\nrake spec\n```\n\nto run the tests\n\n## Usage\n\n```ruby\nrequire 'ruby-bandwidth-iris'\n\n# Using  directly\nclient = BandwidthIris::Client.new('accountId', 'userName', 'password') # Basic Auth\nclient = BandwidthIris::Client.new({access_token: 'accessToken'}) # Bearer Token Auth\nclient = BandwidthIris::Client.new({client_id: 'clientId', client_secret: 'clientSecret'}) # OAuth 2 using Client Credentials\nsites = BandwidthIris::Site.list(client)\n\n# Or you can use default client instance (do this only once)\nBandwidthIris::Client.global_options = {\n  :account_id =\u003e 'accountId',\n  :username =\u003e 'userName',\n  :password =\u003e 'password',\n  :access_token =\u003e 'accessToken',\n  :access_token_expiration =\u003e Time.now + 3600\n  :client_id =\u003e 'client_id',\n  :client_secret =\u003e 'client_secret'\n}\n\n# Now you can call any functions without first arg 'client'\n\nsites = BandwidthIris::Site.list()\n\n```\n\n## Examples\nThere is an 'examples' folder in the source tree that shows how each of the API objects work with simple example code.  To run the examples:\n\n```bash\n$ cd examples\n$ cp config.yml.example config.yml\n```\nEdit the config.yml to match your IRIS credentials and run the examples individually.  e.g.\n\n```bash\nruby covered_rate_centers.rb\n```\nIf the examples take command line parameters, you will get the usage by just executing the individual script.\n\n\n## API Objects\n### General principles\nWhen fetching objects from the API, it will always return an object that has the client\ninstantiated so that you can call dependent methods as well as update, delete.\n\nExample:\n\n```ruby\nsite = BandwidthIris::Site.create({siteObject})\n\n# or\n\nsite = BandwidthIris::Site.create(client, {siteObject})\n\n```\n\nEach entity has a get, list, create, update and delete method if appropriate.\n\nAll properties are underscored and low-cased for Ruby readability, and are converted on the fly to the proper\ncase by the internals of the API when converted to XML.\n\n## Available Numbers\n\n```Ruby\nlist = BandwidthIris::AvailableNumber.list(query)\n```\n\n## Available NpaNxx\n```ruby\nlist = BandwidthIris::AvailableNpaNxx.list({:area_code =\u003e \"818\", :quantity =\u003e5})\n```\n\n## Cities\n```ruby\nlist = BandwidthIris::City.list({:available =\u003e true, :state =\u003e\"CA\"})\n```\n\n## Covered Rate Centers\n```ruby\nBandwidthIris::CoveredRateCenter.list({:zip =\u003e \"27601\"})\n```\n\n## Disconnected Numbers\nRetrieves a list of disconnected numbers for an account\n```ruby\nBandwidthIris::DiscNumber.list({:area_code =\u003e \"919\"})\n```\n\n## Disconnect Numbers\nThe Disconnect object is used to disconnect numbers from an account.  Creates a disconnect order that can be tracked\n\n### Create Disconnect\n```ruby\norder = BandwidthIris::Disconnect.create(\"Disconnect Order Name\", [\"9195551212\", \"9195551213\"])\n```\n\n### Add Note to Disconnect\n```ruby\norder.add_note({:user_id =\u003e \"my id\", :description =\u003e \"Test\"})\n```\n\n### Get Notes for Disconnect\n```ruby\norder.get_notes()\n```\n\n## Dlda\n\n### Create Ddla\n```ruby\ndlda_data = {\n  :customer_order_id =\u003e \"Your Order Id\",\n  :dlda_tn_groups =\u003e [\n    :dlda_tn_group =\u003e {\n      :telephone_numbers =\u003e [\"9195551212\"],\n      :subscriber_type =\u003e \"RESIDENTIAL\",\n      :listing_type =\u003e \"LISTED\",\n      :listing_name =\u003e {\n        :first_name =\u003e \"John\",\n        :last_name =\u003e \"Smith\"\n      },\n      :list_address =\u003e true,\n      :address =\u003e {\n        :house_number =\u003e \"123\",\n        :street_name =\u003e \"Elm\",\n        :street_suffix =\u003e \"Ave\",\n        :city =\u003e \"Carpinteria\",\n        :state_code =\u003e \"CA\",\n        :zip =\u003e \"93013\",\n        :address_type =\u003e \"DLDA\"\n      }\n    }\n  ]\n}\n\nBandwidthIris::Dlda.create(dlda_data)\n```\n\n### Get Dlda\n```ruby\ndlda = Bandwidth::Dlda.get(\"dlda_id\")\n```\n\n### Get Dlda History\n```ruby\ndlda.get_history()\n```\n\n### List Dldas\n```ruby\nBandwidthIris::Dlda.list({:telephone_number =\u003e \"9195551212\"})\n```\n\n## Import To Account\nThis path is generally not available to Bandwidth accounts, and as such is not documented in this API\n\n## In Service Numbers\n\n### List InService Numbers\n```ruby\nBandwidthIris::InServiceNumber.list({:area_code =\u003e \"919\"})\n```\n\n### Get InService Number Detail\n```ruby\nBandwidthIris::InServiceNumber.get(\"9195551212\")\n```\n\n## Lidb\n\n### Create\n```ruby\ndata = {\n  :customer_order_id =\u003e \"A test order\",\n  :lidb_tn_groups =\u003e {\n    :lidb_tn_group =\u003e {\n      :telephone_numbers =\u003e [\"8048030097\", \"8045030098\"],\n      :subscriber_information =\u003e \"Joes Grarage\",\n      :use_type =\u003e \"RESIDENTIAL\",\n      :visibility =\u003e \"PUBLIC\"\n    }\n  }\n}\nBandwidthIris::Lidb.create(data)\n```\n### Get Lidb\n```ruby\nBandwidthIris::Lidb.get(\"lidb_id\")\n```\n### List Lidb\n```ruby\nBandwidthIris::Lidb.list({:telephone_number =\u003e \"9195551212\"})\n```\n\n## LNP Checker\n### Check LNP\n```ruby\nnumbers = [\"9195551212\", \"9195551213\"]\nfull_check = true\nBandwidthIris::LnpChecker.check(numbers, full_check)\n```\n\n## LSR Orders\n### Create LSR Order\n```ruby\ndata = {\n  :pon =\u003e \"Some Pon\",\n  :customer_order_id =\u003e \"MyId5\",\n  'sPID' =\u003e \"123C\",\n  :billing_telephone_number =\u003e \"9192381468\",\n  :requested_foc_date =\u003e \"2015-11-15\",\n  :authorizing_person =\u003e \"Jim Hopkins\",\n  :subscriber =\u003e {\n    :subscriber_type =\u003e \"BUSINESS\",\n    :business_name =\u003e \"BusinessName\",\n    :service_address =\u003e {\n      :house_number =\u003e \"11\",\n      :street_name =\u003e \"Park\",\n      :street_suffix =\u003e \"Ave\",\n      :city =\u003e \"New York\",\n      :state_code =\u003e \"NY\",\n      :zip =\u003e \"90025\"\n    },\n    :account_number =\u003e \"123463\",\n    :pin_number =\u003e \"1231\"\n  },\n  :list_of_telephone_numbers =\u003e {\n    :telephone_number =\u003e [\"9192381848\", \"9192381467\"]\n  }\n}\n\nBandwidthIris::LsrOrder.create(data)\n```\n### Get LSR Order\n```ruby\nBandwidthIris::LsrOrder.get(\"lsr_order_response_id\")\n```\n### List LSR Orders\n```ruby\nBandwidthIris::LsrOrder.list({:pon =\u003e\"Some Pon\"})\n```\n### Update LSR Order\n```ruby\norder.requestedFocDate = \"2015-11-16\"\nBandwidthIris::LsrOrder.update(order)\n```\n### Get LSR Order History\n```ruby\norder.get_history()\n```\n### Get LSR Order Notes\n```ruby\norder.get_notes()\n```\n### Add LSR Order Note\n```ruby\nnote = {:user_id =\u003e \"my id\", :description =\u003e \"Test\"}\norder.add_note(note)\n```\n\n## Orders\n### Create Order\n```ruby\norder_data = {\n  :name =\u003e \"A Test Order\",\n  :site_id =\u003e 1111,\n  :existing_telephone_number_order_type =\u003e {\n    :telephone_number_list =\u003e\n      {\n        :telephone_number =\u003e [\"9195551212\"]\n      }\n\n  }\n}\n\nBandwidthIris::Order.create(order_data)\n```\n### Get Order\n```ruby\norder = BandwidthIris::Order.get(\"order_id\")\n```\n\n### Get Order Response\n\nThe order response object contains more details returned in the `GET` `/orders/order-id` API.\n\n```ruby\norder = BandwidthIris::Order.get_order_response(client, \"101\")\ncompleted_number = order.completed_numbers[:telephone_number][:full_number]\n```\n\n### List Orders\n```ruby\nBandwidthIris::Order.list(query)\n```\n### Order Instance Methods\n```ruby\n// get Area Codes\norder.get_area_codes()\n\n// add note to order\nnote = {:user_id =\u003e \"my id\", :description =\u003e \"Test\"}\norder.add_note(note)\n\n//get Npa Nxxs\norder.get_npa_nxx()\n\n// get number totals\norder.get_totals()\n\n// get all Tns for an order\norder.get_tns()\n##Use the below method to grab TNs via an already existing Order ID##\nBandwidthIris::Order.get_tns_by_order_id(\"id\")\n\n// get order history\norder.get_history()\n\n// get order notes\norder.get_notes()\n```\n\n## Port Ins\n\n### List Portins\n```ruby\npage = BandwidthIris::PortIn.list(client, {'page': 1, 'size': 5})\n```\n### Create PortIn\n```ruby\ndata = {\n  :site_id =\u003e1234,\n  :peer_id =\u003e 5678,\n  :billing_telephone_number =\u003e \"9195551212\",\n  :subscriber =\u003e {\n    :subscriber_type =\u003e \"BUSINESS\",\n    :business_name =\u003e \"Company\",\n    :service_address =\u003e {\n      :house_number =\u003e \"123\",\n      :street_name =\u003e \"EZ Street\",\n      :city =\u003e \"Raleigh\",\n      :state_code =\u003e \"NC\",\n      :county =\u003e \"Wake\"\n    }\n  },\n  :loa_authorizing_person =\u003e \"Joe Blow\",\n  :list_of_phone_numbers =\u003e {\n    :phone_number =\u003e [\"9195551212\"]\n  },\n  :billing_type =\u003e \"PORTIN\"\n}\n\nportin_response = BandwidthIris::PortIn.create(data)\n```\n## Get PortIn\n```ruby\nportIn = BandwidthIris::PortIn.get(\"portin_id\", callback)\n```\n\n### PortIn Instance methods\n```ruby\nportIn.update(data)\nportIn.delete()\n```\n### PortIn File Management\n```ruby\n\n# Add File\nportIn.create_file(IO.read(\"myFile.txt\"))\n\n# Update File\nportIn.update_file(\"myFile.txt\", IO.read(\"myFile.txt\"))\n\n# Get File\nportIn.get_file(\"myFile.txt\")\n\n# Get File Metadata\nportIn.get_file_metadata(\"myFile.txt\")\n\n# Get Files\nportIn.get_files()\n```\n\n## Port Out\n### List PortOuts\n```ruby\nquery = {:status =\u003e \"complete\"}\nlist = BandwidthIris::PortOut.list(query)\n```\n### Get PortOut\n```ruby\nportout = BandwidthIris::PortOut.get(\"portout_id\")\n```\n\n## Rate Centers\n### List Ratecenters\n```ruby\nquery = {:available =\u003e true, :state =\u003e \"CA\"}\nBandwidthIris::RateCenter.list(query)\n```\n\n## SIP Peers\n### Create SIP Peer\nA Sip Peer is what is called Location in the web UI.\n```ruby\ndata = {\n  :peer_name =\u003e \"A New SIP Peer\",\n  :is_default_peer =\u003e false,\n  :short_messaging_protocol =\u003e\"SMPP\",\n  :site_id =\u003e selectedSite,\n  :voice_hosts =\u003e\n    {\n      :host =\u003e [{\n        :host_name =\u003e \"1.1.1.1\"\n      }]\n    },\n  :sms_hosts =\u003e\n    {\n      :host =\u003e [{\n        :host_name =\u003e \"1.1.1.1\"\n      }]\n    },\n  :termination_hosts =\u003e\n    {\n        :termination_host =\u003e[{\n        :host_name =\u003e \"1.1.1.1\",\n        :port =\u003e 5060\n      }]\n    }\n\n}\n\nBandwidthIris::SipPeer.create(data)\n```\n### Get SIP Peer\n```ruby\nsipPeer = BandwidthIris::SipPeer.get(\"sippeer_id\")\n```\n### List SIP Peers\n```ruby\nBandwidthIris::SipPeer.list(sipPeer.siteId)\n```\n### Delete SIP Peer\n```ruby\nsipPeer.delete()\n```\n\n### SipPeer Attributes\n```ruby\n#peer_id\nsipPeer.peer_id\n\n#peer_name\nsipPeer.peer_name\n\n#is_default_peer\nsipPeer.is_default_peer\n\n#products\nsipPeer.products\n\n#ss_send_to_customer\nsipPeer.ss_send_to_customer\n\n#site_id\nsipPeer.site_id\n```\n\n### SipPeer TN Methods\n```ruby\n# get TN for this peer\nsipPeer.get_tns(number)\n\n# get all TNs for this peer\nsipPeer.get_tns()\n\n# Update TNs for this peer\ntns = {:full_number =\u003e \"123456\", :rewrite_user =\u003e \"test\"}\nsipPeer.update_tns(number, tns)\n\n#  Move Tns to new peer\nnumbers_to_move = [\"9195551212\", \"9195551213\"]\nsipPeer.move_tns(numbers_to_move)\n```\n\n## Sites\n\n### Create A Site\nA site is what is called Sub-Account in the web UI.\n```ruby\nsite = {\n  :name =\u003e\"A new site\",\n  :description =\u003e\"A new description\",\n  :address =\u003e {\n    :house_number =\u003e \"123\",\n    :street_name =\u003e \"Anywhere St\",\n    :city =\u003e \"Raleigh\",\n    :state_code =\u003e\"NC\",\n    :zip =\u003e \"27609\",\n    :address_type =\u003e \"Service\"\n  }\n};\nsite = BandwidthIris::Site.create(site)\n```\n\n### Get A Site\n```ruby\nsite = BandwidthIris::Site.get(\"site_id\")\n```\n\n### Updating a Site\n```ruby\nsite.update({:name =\u003e \"New name\"})\n```\n### Deleting a Site\n```ruby\nsite.delete()\n```\n### Listing All Sites\n```ruby\nBandwidthIris::Site.list()\n```\n\n### Site SipPeer Methods\n```ruby\n# get Sip Peers\nsite.get_sip_peers()\n\n# get Sip Peer\nsite.get_sip_peer(\"sip_peer_id\")\n\n# create Sip Peer\nsip_peer = {:name =\u003e\"SIP Peer\"}\nsite.create_sip_peer(sipPeer)\n```\n\n## Subscriptions\n### Create Subscription\n```ruby\nsubscription = {\n  :order_type =\u003e \"orders\",\n  :callback_subscription =\u003e {\n    :URL =\u003e \"http://mycallbackurl.com\",\n    :user =\u003e \"userid\",\n    :expiry =\u003e 12000\n  }\n}\nBandwidthIris::Subscription.create(subscription)\n```\n### Get Subscription\n```ruby\nBandwidthIris::Subscription.get(\"subscription_id\")\n```\n### List Subscriptions\n```ruby\nBandwidthIris::Subscription.list(query)\n```\n### Subscription Instance Methods\n```ruby\n# update subscription\nupdatedData = {:order_type =\u003e \"portins\"}\nsubscription.update(updatedData)\n\n# delete subscription\nsubscription.delete()\n});\n```\n\n## TNs\n### Get TN\n```ruby\ntn = BandwidthIris::Tn.get(\"9195555555\")\n```\n### List TNs\n```ruby\nBandwidthIris::Tn.list(query)\n```\n### TN Instance Methods\n```ruby\n# Get TN Details\ntn = tn.geti_tn_details()\n\n# Get Sites\ntn.get_sites()\n\n# Get Sip Peers\ntn.get_sip_peers()\n\n# Get Rate Center\ntn.get_rate_center()\n```\n\n## TN Reservation\n\n### Create TN Reservation\n```ruby\nBandwidthIris::TnReservation.create(\"9195551212\")\n```\n\n### Get TN Reservation\n```ruby\ntn = BandwidthIris::TnReservation.get(\"tn_reservation_id\")\n```\n\n### Delete TN Reservation\n```ruby\ntn.delete()\n```\n\n## Hosted Messaging\n\n### Create Import TN Order\n```ruby\nimport_tn_order = {\n    :customer_order_id =\u003e \"id\",\n    :site_id =\u003e \"12345\",\n    :sip_peer_id =\u003e \"23456\",\n    :subscriber =\u003e {\n        :service_address =\u003e {\n            :city =\u003e \"city\",\n            :house_number =\u003e \"1\",\n            :street_name =\u003e \"Street\",\n            :state_code =\u003e \"XY\",\n            :zip =\u003e \"54345\",\n            :county =\u003e \"County\"\n        },\n        :name =\u003e \"Company INC\"\n    },\n    :loa_authorizing_person =\u003e \"Test Person\",\n    :telephone_numbers =\u003e {\n        :telephone_number =\u003e [\"5554443333\"]\n    }\n}\nresponse = BandwidthIris::ImportTnOrders.create_import_tn_order(import_tn_order)\nputs response\n```\n\n### Get Import TN Orders\n```ruby\nresponse = BandwidthIris::ImportTnOrders.get_import_tn_orders({\n    :createdDateFrom =\u003e \"2013-10-22T00:00:00.000Z\",\n    :createdDateTo =\u003e \"2013-10-25T00:00:00.000Z\"}\n)\nputs response\n```\n\n### Get Import TN Order By ID\n```ruby\nresponse = BandwidthIris::ImportTnOrders.get_import_tn_order(\"id\")\nputs response\n```\n\n### Get Import TN Order History\n```ruby\nresponse = BandwidthIris::ImportTnOrders.get_import_tn_order_history(\"id\")\nputs response\n```\n\n### Check TNs Portability\n```ruby\nresponse = BandwidthIris::ImportTnChecker.check_tns_portability({\n    :telephone_numbers =\u003e {\n        :telephone_number =\u003e [\"5554443333\", \"5553334444\"]\n    }\n})\nputs response\n```\n\n### List InService Numbers (2.0.0 release)\n```ruby\nresponse = BandwidthIris::InServiceNumber.list()\nputs response[0]\n#{:total_count=\u003e2, :links=\u003e{:first=\u003e\"Link=\u003chttps://dashboard.bandwidth.com:443/v1.0/accounts/99/inserviceNumbers?page=1\u0026size=500\u003e;rel=\\\"first\\\";\"}, :telephone_numbers=\u003e{:count=\u003e2, :telephone_number=\u003e[\"5554443333\", \"5554442222\"]}}\n```\n\n### Get Remove Imported TN Orders\n```ruby\nresponse = BandwidthIris::RemoveImportedTnOrders.get_remove_imported_tn_orders({\n    :createdDateFrom =\u003e \"2013-10-22T00:00:00.000Z\",\n    :createdDateTo =\u003e \"2013-10-25T00:00:00.000Z\"\n})\nputs response\n```\n\n### Get Remove Imported TN Order\n```ruby\nresponse = BandwidthIris::RemoveImportedTnOrders.get_remove_imported_tn_order(\"order_id\")\nputs response\n```\n\n### Get Remove Imported TN Order History\n```ruby\nresponse = BandwidthIris::RemoveImportedTnOrders.get_remove_imported_tn_order_history(\"order_id\")\nputs response\n```\n\n### Create Remove Imported TN Order\n```ruby\nremove_imported_tn_order = {\n    :customer_order_id =\u003e \"custom string\",\n    :telephone_numbers =\u003e {\n        :telephone_number =\u003e [\"5554443333\", \"5554442222\"]\n    }\n}\n\nresponse = BandwidthIris::RemoveImportedTnOrders.create_remove_imported_tn_order(remove_imported_tn_order)\nputs response\n```\n\n### Get LOAs\n```ruby\nresponse = BandwidthIris::ImportTnOrders.get_loa_files(\"order_id\")\nputs response[0][:result_message]\nputs response[0][:file_names] #this can be a single string (if there's 1 file) or an array of strings (if there's multiple files)\n```\n\n### Upload LOA\nValid `mime_types` can be found on the [Dashboard API Reference](https://dev.bandwidth.com/numbers/apiReference.html) under `/accounts /{accountId} /importTnOrders /{orderid} /loas`\n\nMime types are expected to be in the format `x/y`, such as `application/pdf` or `text/plain`\n\n```ruby\nBandwidthIris::ImportTnOrders.upload_loa_file(\"order_id\", \"binary_file_contents\", \"mime_type\")\n```\n\n```ruby\nf = open(\"loa.pdf\", \"rb\")\nfile_content = f.read\nf.close()\n\nBandwidthIris::ImportTnOrders.upload_loa_file(\"order_id\", file_content, \"application/pdf\")\n```\n\n### Download LOA\nNote: Make sure to grab the desired file ID from the response of `BandwidthIris::ImportTnOrders.get_loa_files(\"order_id\")` in the field `response[0][:file_names]`\n\n```ruby\nf = open(\"write.pdf\", \"wb\")\nresponse = BandwidthIris::ImportTnOrders.download_loa_file(\"order_id\", \"file_id\")\nf.puts(response)\nf.close()\n```\n\n### Replace LOA\n```ruby\nBandwidthIris::ImportTnOrders.replace_loa_file(\"order_id\", \"file_id\", \"binary_file_contents\", \"mime_type\")\n```\n\n### Delete LOA\n```ruby\nBandwidthIris::ImportTnOrders.delete_loa_file(\"order_id\", \"file_id\")\n```\n\n### Get LOA Metadata\n```ruby\nresponse = BandwidthIris::ImportTnOrders.get_loa_file_metadata(\"order_id\", \"file_id\")\nputs response[0][:document_name]\nputs response[0][:file_name]\n```\n\n### Update LOA Metadata\n```ruby\nmetadata = {\n    :document_name =\u003e \"file_name\",\n    :document_type =\u003e \"LOA\"\n}\nBandwidthIris::ImportTnOrders.update_loa_file_metadata(\"order_id\", \"file_id\", metadata)\n```\n\n### Delete LOA Metadata\n```ruby\nBandwidthIris::ImportTnOrders.delete_loa_file_metadata(\"order_id\", \"file_id\")\n```\n\n## CSR\n\n### Create CSR Order\n\n```ruby\ncsr_data = {\n    :customer_order_id =\u003e \"order id\",\n    :working_or_billing_telephone_number =\u003e \"5554443333\"\n}\n\nresponse = BandwidthIris::Csr.create(csr_data)\nputs response[0][:order_id]\n```\n\n### Replace CSR Order\n\n```ruby\ncsr_data = {\n    :customer_order_id =\u003e \"order id\",\n    :working_or_billing_telephone_number =\u003e \"5554443333\"\n}\n\nresponse = BandwidthIris::Csr.replace(\"csr_id\", csr_data)\nputs response[0][:order_id]\n```\n\n### Get CSR Order\n\n```ruby\nresponse = BandwidthIris::Csr.get(\"csr_id\")\nputs response[0][:order_id]\n```\n\n### Get CSR Order Notes\n\n```ruby\nresponse = BandwidthIris::Csr.get_notes(\"csr_id\")\nputs response[0][:note][0][:id]\n```\n\n### Add CSR Order Note\n\n```ruby\nnote_data = {\n    :user_id =\u003e \"id\",\n    :description =\u003e \"description\"\n}\n\nBandwidthIris::Csr.add_note(\"csr_id\", note_data)\n```\n\n### Update CSR Order Note\n\n```ruby\nnote_data = {\n    :user_id =\u003e \"id\",\n    :description =\u003e \"description\"\n}\n\nBandwidthIris::Csr.update_note(\"csr_id\", \"note_id\", note_data)\n```\n\n## Application Management\n\n### Create Application\n\n```ruby\ndata = {\n  :service_type =\u003e \"Messaging-V2\",\n  :app_name =\u003e \"Name\",\n  :msg_callback_url =\u003e \"https://test.com\"\n}\napplication = BandwidthIris::Applications.create_application(data)\nputs application\n```\n\n### Get Applications\n\n```ruby\napplications = BandwidthIris::Applications.get_applications()\nputs applications[0]\n```\n\n### Get An Application\n\n```ruby\napplication = BandwidthIris::Applications.get_application(\"id\")\nputs application\n```\n\n### Partially Update An Application\n\n```ruby\ndata = {\n  :app_name =\u003e \"Name2\"\n}\napplication = BandwidthIris::Applications.partial_update_application(\"id\", data)\nputs application\n```\n\n### Completely Update An Application\n\n```ruby\ndata = {\n  :service_type =\u003e \"Messaging-V2\",\n  :app_name =\u003e \"Name2\",\n  :msg_callback_url =\u003e \"https://test2.com\"\n}\napplication = BandwidthIris::Applications.complete_update_application(\"id\", data)\nputs application\n```\n\n### Remove An Application\n\n```ruby\nBandwidthIris::Applications.delete_application(\"id\")\n```\n\n### List Application Sippeers\n\n```ruby\nsippeers = BandwidthIris::Applications.get_application_sippeers(\"id\")\nputs sippeers[0]\n```\n\n## SipPeer Products\n\n### Get Origination Settings\n\n```ruby\nputs BandwidthIris::SipPeerProducts.get_origination_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Create Origination Settings\n\n```ruby\ndata = {\n  :voice_protocol =\u003e \"HTTP\"\n}\nputs BandwidthIris::SipPeerProducts.create_origination_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Update Origination Settings\n\n```ruby\ndata = {\n  :voice_protocol =\u003e \"HTTP\"\n}\nBandwidthIris::SipPeerProducts.update_origination_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Get Termination Settings\n\n```ruby\nputs BandwidthIris::SipPeerProducts.get_termination_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Create Termination Settings\n\n```ruby\ndata = {\n  :voice_protocol =\u003e \"HTTP\"\n}\nputs BandwidthIris::SipPeerProducts.create_termination_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Update Termination Settings\n\n```ruby\ndata = {\n  :voice_protocol =\u003e \"HTTP\"\n}\nBandwidthIris::SipPeerProducts.update_termination_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Get Sms Feature Settings\n\n```ruby\nputs BandwidthIris::SipPeerProducts.get_sms_feature_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Create Sms Feature Settings\n\n```ruby\ndata = {\n  :sip_peer_sms_feature_settings =\u003e {\n    :toll_free =\u003e true,\n    :protocol =\u003e \"HTTP\",\n    :zone_1 =\u003e true,\n    :zone_2 =\u003e false,\n    :zone_3 =\u003e false,\n    :zone_4 =\u003e false,\n    :zone_5 =\u003e false\n  },\n  :http_settings =\u003e {}\n}\n\nputs BandwidthIris::SipPeerProducts.create_sms_feature_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Update Sms Feature Settings\n\n```ruby\ndata = {\n  :sip_peer_sms_feature_settings =\u003e {\n    :toll_free =\u003e true,\n    :protocol =\u003e \"HTTP\",\n    :zone_1 =\u003e true,\n    :zone_2 =\u003e false,\n    :zone_3 =\u003e false,\n    :zone_4 =\u003e false,\n    :zone_5 =\u003e false\n  },\n  :http_settings =\u003e {}\n}\n\nputs BandwidthIris::SipPeerProducts.update_sms_feature_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Delete Sms Feature Settings\n\n```ruby\nBandwidthIris::SipPeerProducts.delete_sms_feature_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Get Mms Feature Settings\n\n```ruby\nputs BandwidthIris::SipPeerProducts.get_mms_feature_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Create Mms Feature Settings\n\n```ruby\ndata = {\n  :mms_settings =\u003e {\n    :protocol =\u003e \"HTTP\"\n  },\n  :protocols =\u003e {\n    :HTTP =\u003e {\n      :http_settings =\u003e {}\n    }\n  }\n}\n\nputs BandwidthIris::SipPeerProducts.create_mms_feature_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Update Mms Feature Settings\n\n```ruby\ndata = {\n  :mms_settings =\u003e {\n    :protocol =\u003e \"HTTP\"\n  },\n  :protocols =\u003e {\n    :HTTP =\u003e {\n      :http_settings =\u003e {}\n    }\n  }\n}\n\nBandwidthIris::SipPeerProducts.update_mms_feature_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Delete Mms Feature Settings\n\n```ruby\nBandwidthIris::SipPeerProducts.delete_mms_feature_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Get Mms Feature Mms Settings\n\n```ruby\nputs BandwidthIris::SipPeerProducts.get_mms_feature_mms_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Get Messaging Application Settings\n\n```ruby\nputs BandwidthIris::SipPeerProducts.get_messaging_application_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Update Messaging Application Settings\n\n```ruby\ndata = {\n  :http_messaging_v2_app_id =\u003e \"4-d-4-8-5\"\n}\n\nputs BandwidthIris::SipPeerProducts.update_messaging_application_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n### Get Messaging Settings\n\n```ruby\nputs BandwidthIris::SipPeerProducts.get_messaging_settings(\"site_id\", \"sippeer_id\")\n```\n\n### Update Messaging Settings\n\n```ruby\ndata = {\n  :break_out_countries =\u003e {\n    :country =\u003e \"CAN\"\n  }\n}\n\nputs BandwidthIris::SipPeerProducts.update_messaging_settings(\"site_id\", \"sippeer_id\", data)\n```\n\n## Emergency Notification Recipients\n\n### Create Emergency Notification Recipient\n\n```ruby\ndata = {\n  :description =\u003e \"Email to Bldg. 3 Front Desk\",\n  :type =\u003e \"EMAIL\",\n  :email_address =\u003e \"foo@bar.com\"\n}\n\nenr = BandwidthIris::EmergencyNotificationRecipients.create_emergency_notification_recipient(data)\nputs enr\n```\n### Get Emergency Notification Recipients\n\n```ruby\nenrs = BandwidthIris::EmergencyNotificationRecipients.get_emergency_notification_recipients()\nputs enrs\n```\n\n### Get Emergency Notification Recipient\n\n```ruby\nenr = BandwidthIris::EmergencyNotificationRecipients.get_emergency_notification_recipient(\"id\")\nputs enr\n```\n\n### Replace Emergency Notification Recipient\n\n```ruby\ndata = {\n  :description =\u003e \"Email to Bldg. 3 Front Desk\",\n  :type =\u003e \"EMAIL\",\n  :email_address =\u003e \"foo@bar.com\"\n}\n\nenr = BandwidthIris::EmergencyNotificationRecipients.replace_emergency_notification_recipient(\"id\", data)\nputs enr\n```\n\n### Delete Emergency Notification Recipient\n\n```ruby\nBandwidthIris::EmergencyNotificationRecipients.delete_emergency_notification_recipient(\"id\")\n```\n\n## Emergeny Notification Group\n\n### Create Emergency Notification Group Order\n\n```ruby\ndata = {\n  :customer_order_id =\u003e \"value\",\n  :added_emergency_notification_group =\u003e {\n    :description =\u003e \"description\",\n    :added_emergency_notification_recipients =\u003e {\n      :emergency_notification_recipient =\u003e [\n        {\n          :identifier =\u003e \"123\"\n        }\n      ]\n    }\n  }\n}\n\norder = BandwidthIris::EmergencyNotificationGroups.create_emergency_notification_group_order(data)\nputs order\n```\n\n### Get Emergency Notification Group Orders\n\n```ruby\norders = BandwidthIris::EmergencyNotificationGroups.get_emergency_notification_group_orders()\nputs orders\n```\n\n### Get Emergency Notification Group Order\n\n```ruby\norder = BandwidthIris::EmergencyNotificationGroups.get_emergency_notification_group_order(\"id\")\nputs order\n```\n\n### Get Emergency Notification Groups\n\n```ruby\ngroups = BandwidthIris::EmergencyNotificationGroups.get_emergency_notification_groups()\nputs groups\n```\n\n### Get Emergency Notification Group\n\n```ruby\ngroup = BandwidthIris::EmergencyNotificationGroups.get_emergency_notification_group(\"id\")\nputs group\n```\n\n## Emergency Notification Endpoint\n\n### Create Emergency Notification Endpoint Order\n\n```ruby\ndata = {\n  :customer_order_id =\u003e \"123\",\n  :emergency_notification_endpoint_associations =\u003e {\n    :emergency_notification_group =\u003e {\n      :identifier =\u003e \"456\"\n    }\n  }\n}\n\norder = BandwidthIris::EmergencyNotificationEndpoints.create_emergency_notification_endpoint_order(data)\nputs order\n```\n\n### Get Emergency Notification Endpoint Orders\n\n```ruby\norders = BandwidthIris::EmergencyNotificationEndpoints.get_emergency_notification_endpoint_orders()\nputs orders\n```\n\n### Get Emergency Notification Endpoint Order\n\n```ruby\norder = BandwidthIris::EmergencyNotificationEndpoints.get_emergency_notification_endpoint_order(\"id\")\nputs order\n```\n\n## Alternate End User Identiy\n\n### Get Alternate End User Information\n\n```ruby\naeuis = BandwidthIris::AlternateEndUserIdentity.get_alternate_end_user_information()\nputs aeuis\n```\n\n### Get Alternate Caller Information\n\n```ruby\naeui = AlternateEndUserIdentity.get_alternate_caller_information(\"id\")\nputs aeui\n```\n\n## TN Option Orders\n\n### Get TN Option Orders\n\n```ruby\norders = BandwidthIris::TnOptions.get_tn_option_orders()\nputs orders\n```\n\n### Get TN Option Order\n\n```ruby\norder = BandwidthIris::TnOptions.get_tn_option_order(\"order_id\")\nputs order\n```\n\n### Get TN Option Order (error)\n\n```ruby\nbegin\n  order = BandwidthIris::TnOptions.get_tn_option_order(\"error_id\")\nrescue BandwidthIris::Errors::GenericError =\u003e e\n  puts e\nend\n```\n\n### Create PortOut Passcode\n\n```ruby\ndata = {\n  :customer_order_id =\u003e \"custom order\",\n  :tn_option_groups =\u003e {\n    :tn_option_group =\u003e [\n      {\n        :port_out_passcode =\u003e \"12abd38\",\n        :telephone_numbers =\u003e {\n          :telephone_number =\u003e [\"2018551020\"]\n        }\n      }\n    ]\n  }\n}\n\n\norder = BandwidthIris::TnOptions.create_tn_option_order(data)\nputs order\n```\n\n### Create Call Forward Number\n\n```ruby\ndata = {\n  :customer_order_id =\u003e \"custom order\",\n  :tn_option_groups =\u003e {\n    :tn_option_group =\u003e [\n      {\n        :call_forward =\u003e \"2018551022\",\n        :telephone_numbers =\u003e {\n          :telephone_number =\u003e [\"2018551020\"]\n        }\n      }\n    ]\n  }\n}\n\n\norder = BandwidthIris::TnOptions.create_tn_option_order(data)\nputs order\n```\n### Enable SMS\n\n```ruby\ndata = {\n  :customer_order_id =\u003e \"custom order\",\n  :tn_option_groups =\u003e {\n    :tn_option_group =\u003e [\n      {\n        :sms =\u003e \"on\",\n        :telephone_numbers =\u003e {\n          :telephone_number =\u003e [\"2018551020\"]\n        }\n      }\n    ]\n  }\n}\n\n\norder = BandwidthIris::TnOptions.create_tn_option_order(data)\nputs order\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbandwidth%2Fruby-bandwidth-iris","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbandwidth%2Fruby-bandwidth-iris","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbandwidth%2Fruby-bandwidth-iris/lists"}