{"id":20364358,"url":"https://github.com/bandwidth/node-numbers","last_synced_at":"2026-01-06T23:22:28.269Z","repository":{"id":36937286,"uuid":"231657494","full_name":"Bandwidth/node-numbers","owner":"Bandwidth","description":"Node SDK for Bandwidth Numbers","archived":false,"fork":false,"pushed_at":"2024-06-04T21:18:38.000Z","size":303,"stargazers_count":1,"open_issues_count":9,"forks_count":5,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-09T19:53:15.831Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://dev.bandwidth.com","language":"JavaScript","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","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}},"created_at":"2020-01-03T20:09:09.000Z","updated_at":"2024-06-04T21:17:56.000Z","dependencies_parsed_at":"2024-06-19T06:10:52.104Z","dependency_job_id":"8ea3603d-6523-411d-8ef3-5235587ef80c","html_url":"https://github.com/Bandwidth/node-numbers","commit_stats":{"total_commits":136,"total_committers":14,"mean_commits":9.714285714285714,"dds":0.5735294117647058,"last_synced_commit":"92b6fe6e10a29ba6e8df59ca73e15f6bd053590f"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fnode-numbers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fnode-numbers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fnode-numbers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bandwidth%2Fnode-numbers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bandwidth","download_url":"https://codeload.github.com/Bandwidth/node-numbers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248519357,"owners_count":21117756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-15T00:11:24.383Z","updated_at":"2026-01-06T23:22:28.232Z","avatar_url":"https://github.com/Bandwidth.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# node-numbers\n\nNodeJs Client library for Bandwidth Numbers API\n\n## Developer Docs\n* [Bandwidth API Developer Docs](https://dev.bandwidth.com)\n\n## Other Node SDKs\n* Messaging: https://github.com/Bandwidth/node-messaging\n* Voice: https://github.com/Bandwidth/node-voice\n\n## Supported Versions\nThis SDK stable for node versions 7 and above\n\n| Version | Support Level |           |\n|:--------|:--------------|:----------|\n| \u003c7      | Unsupported   |           |\n| \u003e 7     |               | Supported |\n\n## Release Notes\n| Version | Notes                                                                                                                                     |\n|:--------|:------------------------------------------------------------------------------------------------------------------------------------------|\n| 1.1.0   | Added import tn functionality, added promise based `Async` functions                                                                      |\n| 1.2.0   | Added CSR lookup functionality                                                                                                            |\n| 1.2.1   | Fixed Subscription List functionality. Example code at: [examples/subscription_list_and_delete](examples/subscription_list_and_delete.js) |\n| 1.2.2   | Readme Typo for `RemoveImportedTnOrder`                                                                                                   |\n| 1.3.0 | Added Emergency Calling Notification endpoints                                                                                              |\n| 1.4.0   | Added TnOptions endpoints and functionality, along with SMS options on sip peers.                                                         |\n| 1.6.0 | Added create origination settings for sip peers |\n| 1.7.0 | Added get products to account |\n| 1.7.1 | Fix TnOptions.create() callback bug |\n\n\n## Install\n\nRun\n\n```\nnpm install @bandwidth/numbers\n```\n\n## Usage\n\n```js\nvar numbers = require(\"@bandwidth/numbers\");\n\n//Using client directly\nvar client = new numbers.Client(\"accountId\", \"userName\", \"password\");\nnumbers.Site.list(client, function(err, sites){...});\n\n//Or you can use default client instance (do this only once)\nnumbers.Client.globalOptions.accountId = \"accountId\";\nnumbers.Client.globalOptions.userName = \"userName\";\nnumbers.Client.globalOptions.password = \"password\";\n\n//Now you can call any functions without first arg 'client'\n\nnumbers.Site.list(function(err, sites){\n  //Default client will be used to do this call\n});\n\n```\n\n## Async Methods\n\nEach API Call also contains an async method that returns a promise for use with `.then` or `async`/`await`.\n\nThe async method is the original method name with `Async` added.\n\n### Some Examples\n\n* `numbers.Site.create` : `numbers.Site.createAsync`\n* `numbers.AvailableNumbers.list` : `numbers.AvailableNumbers.listAsync`\n* `numbers.Order.create`: `numbers.Order.createAsync`\n\n### Example for listing Available Numbers\n\n#### Callbacks\n\n```js\n// Callbacks\nnumbers.AvailableNumbers.list(query, (err, availableNumbers) =\u003e {\n  if (err) {\n    console.log(err);\n  }\n  else {\n    console.log(availableNumbers);\n  }\n});\n```\n\n#### Promise Chaining\n```js\n//Promise chaining\nnumbers.AvailableNumbers.listAsync(query)\n.then(availableNumbers =\u003e {\n  console.log(availableNumbers);\n})\n.catch(e =\u003e {\n  console.log(e);\n});\n\n```\n\n#### Async/Await\n```js\n//Async/await\ntry {\n  const availableNumbers = await numbers.AvailableNumbers.listAsync(query);\n  console.log(availableNumbers);\n}\ncatch (e) {\n  console.log(e)\n}\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.js.example config.js\n```\nEdit the config.js to match your IRIS credentials and run the examples individually.  e.g.\n\n```bash\nnode coveredRateCenters-sample.js\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```Javascript\nnumbers.Site.create({siteObject}, function(err,item){\n  console.log(\"the site ID is: \" + item.id);\n  item.delete(function(err,res){ //no need to pass the client again\n  });\n});\n```\n\nEach entity has a get, list, create, update and delete method if appropriate.\n\nAll properties are camel-cased for Javascript readability, and are converted on the fly to the proper\ncase by the internals of the API when converted to XML.\n\n## Account\n### Get Move Tns Orders\n\n```js\nvar orders = numbers.Account.getMoveTnsOrders(function(err, res){\n    if (err){\n        console.log(err)\n    };\n    console.log(res);\n});\n```\n\n### Create Move Tns Order\n\n```js\nnumbers = [\"19195551234\", \"19195554321\"]\ndata = {\n  CustomerOrderId: \"abc123\",\n  SiteId: \"12345\",    // DESTINATION sub-account (site)\n  SipPeerId: \"54321\"    // DESTINATION location (sip-peer) (optional - if not inclided, tn(s) will provision to default sip-peer)\n}\ndata.telephoneNumbers = [numbers.map(number =\u003e {return {telephoneNumber: number}})];\nnumbers.account.moveTns(client, data, callback);\n```\n\n### Get Move Tns Order Information\n\n```js\nnumbers.account.getMoveTnsOrder(client, 'my-order-id-12345', callback);\n```\n\n### Get Move Tns Order History\n\n```js\nnumbers.account.getMoveTnsOrderHistory(client, 'my-order-id-12345', callback);\n```\n\n## Applications\n### Create Voice Application\n\n```Javascript\nvar data = {\n  appName:\"test app\",\n  callInitiatedCallbackUrl: \"http://example.com\",\n  callInitiatedMethod: \"POST\",\n  callStatusCallbackUrl: \"http://example.com\",\n  callStatusMethod: \"POST\"\n  callbackCreds: {\n    userId: 'my-id',\n    password: 'my-password'\n  }\n};\n\nnumbers.Application.createVoiceApplication(data, callback);\n```\n\n### Create Messaging Application\n\n```Javascript\nvar data = {\n  appName:\"test app\",\n  msgCallbackUrl: \"http://example.com\",\n  callbackCreds: {\n    userId: 'my-id',\n    password: 'my-password'\n  }\n};\n\nnumbers.Application.createMessagingApplication(data, callback);\n```\n\n### List All Applications\n\n```Javascript\nnumbers.Application.list(callback);\n```\n\n### Get an Application\n```Javascript\nnumbers.Application.get(id, callback);\n```\n\n### Update an Application\n```Javascript\nnumbers.Application.get(id, (err, app) =\u003e {\n  app.appName = \"new name\";\n  app.update(app, callback);\n});\n```\n\n### Delete an Application\n```Javascript\nnumbers.Application.get(id, (err, app) =\u003e {\n  app.delete(callback)\n});\n```\n\n### Get SipPeers Associated With and Application\n```Javascript\nnumbers.Application.get(id, (err, app) =\u003e {\n  app.getSipPeers(callback);\n});\n```\n\n## Available Numbers\n\n### Available Numbers Area Code\n\n```Javascript\nvar res = await numbers.AvailableNumbers.listAsync({areaCode:\"919\", quantity:\"5\"});\nconsole.log(res);\n```\n\n### Available Numbers Area Code And Local Vanity\n\n```Javascript\nvar res = await numbers.AvailableNumbers.listAsync({areaCode:\"919\", localVanity:\"298\", quantity:\"5\"});\nconsole.log(res);\n\nres = await numbers.AvailableNumbers.listAsync({areaCode:\"919\", localVanity:\"2982\", quantity:\"5\"});\nconsole.log(res);\n\nres = await numbers.AvailableNumbers.listAsync({areaCode:\"919\", localVanity:\"29822\", quantity:\"5\"});\nconsole.log(res);\n\nres = await numbers.AvailableNumbers.listAsync({areaCode:\"919\", localVanity:\"298227\", quantity:\"5\"});\nconsole.log(res);\n\nres = await numbers.AvailableNumbers.listAsync({areaCode:\"919\", localVanity:\"2982272\", quantity:\"5\"});\nconsole.log(res);\n```\n\n## Available NpaNxx\n\n```Javascript\nnumbers.AvailableNpaNxx.list({areaCode:\"818\", quantity:5}, callback);\n```\n\n## Cities\n\n```Javascript\nnumbers.City.list({\"available\":true, \"state\":\"CA\"}, callback);\n```\n\n## Covered Rate Centers\n\n```Javascript\nnumbers.CoveredRateCenter.list({\"zip\":\"27601\"}, callback);\n```\n\n## Disconnected Numbers\nRetrieves a list of disconnected numbers for an account\n\n```Javascript\nnumbers.DiscNumber.list({\"areaCode\":\"919\"}, callback);\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\n```Javascript\nnumbers.Disconnect.create(\"Disconnect Order Name\", [\"9195551212\", \"9195551213\"], callback);\n```\n\n### Get Disconnect\n\n```Javascript\nnumbers.Disconnect.get(\"orderId\", {tnDetail:true}, callback);\n```\n\n### Add Note to Disconnect\n\n```Javascript\nvar note = {userId: \"my id\", description: \"Test\"};\nnumbers.Disconnect.get(\"orderId\", {tnDetail:true}, function(err,order){\n  order.addNote(note, callback);\n});\n```\n\n### Get Notes for Disconnect\n\n```Javascript\nnumbers.Disconnect.get(\"orderId\", {tnDetail:true}, function(err,order){\n  order.getNotes(callback);\n});\n```\n\n## Dlda\n\n### Create Ddla\n\n```Javascript\nvar dlda = {\n  customerOrderId:\"Your Order Id\",\n  dldaTnGroups: [\n    dldaTnGroup: {\n      telephoneNumbers: [\"9195551212\"],\n      subscriberType: \"RESIDENTIAL\",\n      listingType: \"LISTED\",\n      listingName:{\n        firstName:\"John\",\n        lastName:\"Smith\"\n      },\n      listAddress:true,\n      address:{\n        houseNumber: \"123\",\n        streetName: \"Elm\",\n        streetSuffix: \"Ave\",\n        city: \"Carpinteria\",\n        stateCode:\"CA\",\n        zip:\"93013\",\n        addressType: \"DLDA\"\n      }\n    }\n  ]\n}\n\nnumbers.Dlda.create(dlda, callback);\n```\n\n### Get Dlda\n\n```Javascript\nnumbers.Dlda.get(id, callback);\n```\n\n### Get Dlda History\n\n```Javascript\nnumbers.Dlda.get(id, function(err,dlda){\n  dlda.getHistory(callback);\n});\n```\n\n### List Dldas\n\n```Javascript\nnumbers.Dlda.list({telephoneNumber:\"9195551212\"}, callback);\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\n```Javascript\nnumbers.InServiceNumber.list({\"areaCode\":\"919\"}, callback);\n```\n\n### Get InService Number Detail\n\n```Javascript\nnumbers.InServiceNumber.get(\"9195551212\", callback);\n```\n\n## Lidb\n\n### Create\n\n```Javascript\nvar data = {\n  customerOrderId:\"A test order\",\n  lidbTnGroups:{\n    lidbTnGroup:{\n      telephoneNumbers:[\"8048030097\", \"8045030098\"],\n      subscriberInformation:\"Joes Grarage\",\n      useType: \"RESIDENTIAL\",\n      visibility: \"PUBLIC\"\n    }\n  }\n}\nnumbers.Lidbs.create(data, callback);\n```\n### Get Lidb\n\n```Javascript\nnumbers.Lidbs.get(id, callback);\n```\n### List Lidbs\n\n```Javascript\nnumbers.Lidbs.list({telephoneNumber:\"9195551212\"}, callback);\n```\n\n## LNP Checker\n### Check LNP\n\n```Javascript\nvar numbersList = [\"9195551212\", \"9195551213\"];\nvar fullCheck = true;\nnumbers.LnpChecker.check(numbersList, fullCheck, callback);\n```\n\n## LSR Orders\n### Create LSR Order\n\n```Javascript\nvar data = {\n  pon:\"Some Pon\",\n  customerOrderId: \"MyId5\",\n  sPID:\"123C\",\n  billingTelephoneNumber:\"9192381468\",\n  requestedFocDate: \"2015-11-15\",\n  authorizingPerson: \"Jim Hopkins\",\n  subscriber:{\n    subscriberType:\"BUSINESS\",\n    businessName:\"BusinessName\",\n    serviceAddress: {\n      houseNumber:\"11\",\n      streetName: \"Park\",\n      streetSuffix: \"Ave\",\n      city:\"New York\",\n      stateCode: \"NY\",\n      zip: \"90025\"\n    },\n    accountNumber:\"123463\",\n    pinNumber:\"1231\"\n  },\n  listOfTelephoneNumbers: {\n    telephoneNumber:[\"9192381848\", \"9192381467\"]\n  }\n};\n\nnumbers.LsrOrder.create(data, callback);\n```\n\n### Get LSR Order\n\n```Javascript\nnumbers.LsrOrder.get(id, callback);\n```\n\n### List LSR Orders\n\n```Javascript\nnumbers.LsrOrder.list({pon:\"Some Pon\"}, callback);\n```\n\n### Update LSR Order\n\n```Javascript\nnumbers.LsrOrder.get(\"id\", function(err, order){\n  order.requestedFocDate = \"2015-11-16\";\n  numbers.LsrOrder.update(order, callback);\n})\n```\n### Get LSR Order History\n\n```Javascript\nnumbers.LsrOrder.get(\"id\", function(err, order){\n  order.getHistory(callback);\n});\n```\n\n### Get LSR Order Notes\n\n```Javascript\nnumbers.LsrOrder.get(\"id\", function(err,order){\n  order.getNotes(callback);\n});\n```\n\n### Add LSR Order Note\n\n```Javascript\nvar note = {userId: \"my id\", description: \"Test\"};\nnumbers.LsrOrder.get(\"id\", function(err, order){\n  order.addNote(note, callback);\n});\n```\n\n## Orders\n### Create Order\n\n```Javascript\nvar order = {\n  name:\"A Test Order\",\n  siteId: 1111,\n  existingTelephoneNumberOrderType: {\n    telephoneNumberList:[\n      {\n        telephoneNumber:\"9195551212\"\n      }\n    ]\n  }\n};\n\nnumbers.Order.create(order, callback);\n```\n\n### Get Order\n\n```Javascript\nnumbers.Order.get(id, callback);\n```\n\n### List Orders\n\n```Javascript\nnumbers.Order.list(query, callback);\n```\n\n### List Area Codes for Order\n\n```Javascript\nnumbers.Order.get(id, function(err, order){\n  order.getAreaCodes(callback);\n});\n\n```\n\n### Order Instance Methods\n\n```Javascript\n// get Area Codes\norder.getAreaCodes(callback);\n\n// add note to order\nvar note = {userId: \"my id\", description: \"Test\"};\norder.addNote(note,callback);\n\n//get Npa Nxxs\norder.getNpaNxx(callback);\n\n// get number totals\norder.getTotals(callback);\n\n// get all Tns for an order\norder.getTns(callback)\n\n// get order history\norder.getHistory(callback);\n\n// get order notes\norder.getNotes(callback);\n```\n\n## Port Ins\n### Create PortIn\n```Javascript\nvar data = {\n  siteId:1234,\n  peerId:5678,\n  billingTelephoneNumber: \"9195551212\",\n  subscriber: {\n    subscriberType: \"BUSINESS\",\n    businessName: \"Company\",\n    serviceAddress: {\n      houseNumber: \"123\",\n      streetName: \"EZ Street\",\n      city: \"Raleigh\",\n      stateCode: \"NC\",\n      county: \"Wake\"\n    }\n  },\n  loaAuthorizingPerson: \"Joe Blow\",\n  listOfPhoneNumbers: {\n    phoneNumber:[\"9195551212\"]\n  },\n  billingType: \"PORTIN\"\n};\n\nnumbers.PortIn.create(data, callback);\n```\n\n## Get PortIn\n\n```Javascript\nnumbers.PortIn.get(\"id\", callback)\n```\n\n## List PortIns\n\n``` Javascript\nvar query = {pon:\"a pon\"};\nnumbers.PortIn.list(query, function(err, list){\n  console.log(JSON.stringify(list));\n});\n```\n\n### PortIn Instance methods\n\n```Javascript\n// fetch instance using PortIn.get(callback, portIn)\nportIn.update(data, callback);\nportIn.delete(callback);\nportIn.getAreaCodes(callback);\nportIn.getNpaNxx(callback);\nportIn.getTotals(callback);\nportIn.getTns(callback);\nportIn.getNotes(callback);\nportIn.addNote(callback);\nportIn.getActivationStatus(callback);\n```\n\n### PortIn File Management\n\n```Javascript\n\nnumbers.PortIn.get(\"id\", function(err, portIn){\n  // Add File\n  portIn.createFile(fs.createReadStream(\"myFile.txt\"), callback);\n\n  // Update File\n  portIn.updateFile(\"myFile.txt\", fs.createReadStream(\"myFile.txt\"), callback);\n\n  // Get File\n  portIn.getFile(\"myFile.txt\", callback);\n\n  // Get File Metadata\n  portIn.getFileMetadata(\"myFile.txt\", callback);\n\n  // Get Files\n  portIn.getFiles(callback);\n});\n```\n\n## Port Out\n### List PortOuts\n\n```Javascript\nvar query = {\"status\":\"complete\"}\nnumbers.PortOut.list(query, callback);\n```\n\n### Get PortOut\n\n```Javascript\nnumbers.PortOut.get(id, callback);\n```\n\n## Rate Centers\n### List Ratecenters\n\n```Javascript\nvar query = {\"available\":true, \"state\":\"CA\"}\nnumbers.RateCenter.list(query, callback);\n```\n\n## SIP Peers\n### Create SIP Peer\n\n```Javascript\nvar data = {\n  peerName:\"A New SIP Peer\",\n  isDefaultPeer:false,\n  shortMessagingProtocol:\"SMPP\",    // `HTTP` for use with the v2 messaging API\n  siteId:selectedSite,\n  voiceHosts:[    // optional\n    {\n      host:{\n        hostName:\"1.1.1.1\"\n      }\n    }\n  ],\n  smsHosts:[    // optional\n    {\n      host:{\n        hostName:\"1.1.1.1\"\n      }\n    }\n  ]\n};\n\nnumbers.SipPeer.create(data, callback);\n```\n\n### Get SIP Peer\n\n```Javascript\nnumbers.SipPeer.get(siteId, sipPeerId, callback);\n```\n\n### List SIP Peers\n\n```Javascript\nnumbers.SipPeer.list(siteId, callback);\n```\n\n### Update SIP Peer\n\n```Javascript\nsipPeer.peerName = \"Some new name\";\nsipPeer.update(sipPeer, callback);\n```\n\n### Delete SIP Peer\n\n```Javascript\nnumbers.SipPeer.get(function(err, sipPeer){\n  sipPeer.delete(callback);\n});\n```\n\n### SipPeer TN Methods\n\n```Javascript\nnumbers.SipPeer.get(function(err,sipPeer){\n  // get TN for this peer\n  sipPeer.getTns(number, callback);\n\n  // get all TNs for this peer\n  sipPeer.getTns(callback);\n\n  // Update TNs for this peer\n  var tns = {fullNumber: \"123456\", rewriteUser: \"test\"};\n  sipPeer.updateTns(number, tns, callback);\n\n  // Move Tns to new peer\n  var numbersToMove = [\"9195551212\", \"9195551213\"];\n  sipPeer.moveTns(numbersToMove, callback);\n});\n```\n\n### SipPeer link Application Methods\n\n```Javascript\nnumbers.SipPeer.get(function(err,sipPeer){\n  // List application associated with this peer\n  sipPeer.listApplication(callback);\n\n  // Associate an application with this peer\n  var appId = \"my-application-id\";\n  sipPeer.editApplication({httpMessagingV2AppId: appId}, callback);\n\n  // Dissociate all applications with this peer\n  sipPeer.removeApplication(callback);\n```\n\n### SipPeer SMS settings\n\n```Javascript\nnumbers.SipPeer.get(function(err,sipPeer){\n  // Get the sms settings associated with the peer\n  sipPeer.getSmsSettings(callback);\n\n  var desiredsettings = {\n    sipPeerSmsFeatureSettings: {\n      tollFree: true,\n      zone1: false,\n      zone2: true,\n      protocol: \"HTTP\"\n    }\n  };\n  //Change settings\n  sipPeer.editSmsSettings(desiredsettings, callback);\n\n  //Create settings\n  sipPeer.createSmsSettings(desiredsettings, callback);\n\n  //Delete\n  sipPeer.deleteSmsSettings(callback);\n```\n\n### SipPeer SMS settings\n\n```Javascript\nnumbers.SipPeer.get(function(err,sipPeer){\n  // Get the mms settings associated with the peer\n  sipPeer.getMmsSettings(callback);\n\n  var desiredsettings = {\n      mmsSettings: {\n        protocol: 'HTTP'\n      },\n      protocols: {\n        HTTP: {\n          httpSettings: {\n            proxyPeerId: 500017\n          }\n        }\n      }\n    }\n  //Change settings\n  sipPeer.editMmsSettings(desiredsettings, callback);\n\n  //Create settings\n  sipPeer.createMmsSettings(desiredsettings, callback);\n\n  //Delete\n  sipPeer.deleteMmsSettings(callback);\n```\n\n\n\n## Sites\n\n### Create A Site\nA site is what is called Sub-Account in the web UI.\n\n```Javascript\nvar site = {\n  name:\"A new site\",\n  description:\"A new description\",\n  address:{\n    houseNumber: \"123\",\n    streetName: \"Anywhere St\",\n    city: \"Raleigh\",\n    stateCode:\"NC\",\n    zip: \"27609\",\n    addressType: \"Service\"\n  }\n};\nnumbers.Site.create(site, callback);\n```\n\n### Updating a Site\n\n```Javascript\nsite.name = \"Some new name\";\nsite.update(site, callback);\n```\n\n### Deleting a Site\n\n```Javascript\nsite.delete(callback);\n```\n### Listing All Sites\n```Javascript\nnumbers.Site.list(callback);\n```\n\n### Site Instance Methods\n\n```Javascript\nnumbers.Site.get(id, function(err,site){\n  // getInService numbers\n  site.getInserviceNumbers(query, callback);\n\n  // get Orders\n  site.getOrders(query, callback);\n\n  // get PortIns\n  site.getPortIns(query, callback);\n\n  // get Total Tns\n  site.getTotalTns(query, callback);\n});\n```\n### Site SipPeer Methods\n\n```Javascript\nnumbers.Site.get(id, function(err,site){\n  // get Sip Peers\n  site.getSipPeers(callback);\n\n  // get Sip Peer\n  site.getSipPeer(id, callback);\n\n  // create Sip Peer\n  var sipPeer = {name:\"SIP Peer\"};\n  site.createSipPeer(sipPeer, callback);\n});\n```\n\n## Subscriptions\n### Create Subscription\n\n```Javascript\nvar subscription = {\n  orderType:\"orders\",\n  callbackSubscription: {\n    URL:\"http://mycallbackurl.com\",\n    user:\"userid\",\n    expiry: 12000\n  }\n};\nnumbers.Subscription.create(subscription, callback);\n```\n\n### Get Subscription\n\n```Javascript\nnumbers.Subscription.get(id, callback);\n```\n\n### List Subscriptions\n\n```Javascript\nnumbers.Subscription.list(query, callback);\n```\n\n### Subscription Instance Methods\n\n```Javascript\nnumbers.Subscription.get(id, function(err, subscription){\n  // update subscription\n  var updatedData = {orderType:\"portins\"};\n  subscription.update(updatedData, callback)\n\n  // delete subscription\n  subscription.delete(callback);\n});\n```\n\n## TNs\n### Get TN\n\n```Javascript\nnumbers.Tn.get(fullNumber, callback);\n```\n\n### List TNs\n\n```Javascript\nnumbers.Tn.list(query, callback);\n```\n\n### TN Instance Methods\n\n```Javascript\nnumbers.Tn.get(fullNumber, function(err, tn){\n  // Get TN Details\n  tn.getTnDetails(callback);\n\n  // Get Sites\n  tn.getSites(callback);\n\n  // Get Sip Peers\n  tn.getSipPeers(callback);\n\n  // Get Rate Center\n  tn.getRateCenter(callback)\n});\n```\n\n## TN Reservation\n### Create TN Reservation\n\n```Javascript\nnumbers.TnReservation.create({\"reservedTn\":\"9195551212\"}, callback);\n```\n\n### Get TN Reservation\n\n```Javascript\nnumbers.TnReservation.get(id, callback);\n```\n\n### Delete TN Reservation\n\n```Javascript\nnumbers.TnReservation.get(id, function(err, tn){\n  tn.delete(callback);\n});\n```\n## TN Options\n\n### List TN Options\n\n```js\nconst query = {\n  createdDateFrom : \"2013-10-22T00:00:00.000Z\",\n  orderDetails: true,\n  tn: 123456789\n}\nnumbers.TnOption.list(client, query, (err, tnOptions) =\u003e {\n  if (err) {\n    console.error(err);\n  }\n  console.log(tnOptions);\n})\n```\n\n### Find a specific TN Option Order\n\n```js\nconst tnOptionOrderId = 'fakeOrderId';\nnumbers.TnOption.get(tnOptionOrderId, (err, tnOption) =\u003e {\n  if (err) {\n    console.error(err);\n  }\n  console.log(tnOptions);\n})\n```\n\n### Add a PortOutPasscode\n\n```js\nconst tnOptionsOrder = {\n  customerOrderId: 'myOrderId',\n  tnOptionGroups: [\n    {\n      portOutPasscode: 'mypass1',\n      telephoneNumbers: ['1234567890']\n    }\n  ]\n}\nnumbers.TnOption.create(tnOptionsOrder, callback) //for callback example see TnOption.get\n```\n\n### Create Call Forward Number\n\n```js\nconst tnOptionsOrder = {\n  customerOrderId: 'myOrderId',\n  tnOptionGroups: [\n    {\n      callForward: '2345678901',\n      telephoneNumbers: ['1234567890']\n    }\n  ]\n}\nnumbers.TnOption.create(tnOptionsOrder, callback) //for callback example see TnOption.get\n```\n\n### Enable SMS\n\n```js\nconst tnOptionsOrder = {\n  customerOrderId: 'myOrderId',\n  tnOptionGroups: [\n    {\n      sms: 'on',\n      telephoneNumbers: ['1234567890']\n    }\n  ]\n}\nnumbers.TnOption.create(tnOptionsOrder, callback) //for callback example see TnOption.get\n```\n\n\n## Hosted Messaging\n\n### Check importability\n\n```js\nconst numbers = [\"1111\", \"2222\"];\n\ntry {\n  const importResults = await ImportTnChecker.checkAsync(numbers);\n  console.log(importResults);\n}\ncatch (e) {\n  console.log(e)\n}\n```\n\n### Create importTNOrder\n\n```js\nconst numbers = [\"1111\", \"2222\"];\n\nconst data = {\n  customerOrderId: \"1111\",\n  siteId: \"222\",\n  sipPeerId: \"333\",\n  loaAuthorizingPerson: \"LoaAuthorizingPerson\",\n  subscriber: {\n    name: \"ABC Inc.\",\n    serviceAddress: {\n      houseNumber: \"11235\",\n      streetName: \"StreetName\",\n      stateCode: \"NC\",\n      city: \"City\",\n      county: \"county\",\n      zip: \"27606\"\n    }\n  }\n};\n\ntry {\n  const importTnOrder = await ImportTnOrder.createAsync(numbers);\n  console.log(importTnOrder);\n}\ncatch (e) {\n  console.log(e)\n}\n```\n\n### Create removeImportedTnOrder\n\nTo restore the messaging functionality to the original owner, create a `removeImportedTnOrder` order to remove the numbers from your account.\n\n```js\nconst numbers = [\"1111\", \"2222\"];\nconst customerOrderId = \"customerOrderId\"\n\ntry {\n  const importTnOrder = await RemoveImportedTnOrder.createAsync(customerOrderId, numbers);\n  console.log(importTnOrder);\n}\ncatch (e) {\n  console.log(e)\n}\n```\n\n## CSR Lookup\n\n### Create CSR Order\n\n```js\nconst data = {\n  customerOrderId: \"MyId5\",\n  WorkingOrBillingTelephoneNumber:\"9198675309\",\n  accountNumber:\"123463\",\n  endUserPIN:\"1231\"\n};\n\ntry {\n  const csrOrderResponse = await CsrOrder.createAsync(data);\n  console.log(csrOrderResponse.orderId);\n  //31e0b16b-4720-4f2e-bb99-1399eeb2ff9e\n}\ncatch (e) {\n  console.log(e);\n}\n```\n\n### Fetch Existing CSR Order\n\nIf the CSR order is in an FAILED state, the SDK will throw an error\n\n#### COMPLETE or PROCESSING resposne\n\n```js\nconst csrOrderId = \"1234-abc\"\n\ntry {\n  const csrOrderData = await CsrOrder.getAsync(csrOrderId);\n  console.log(csrOrderData.status);\n  //COMPLETE\n}\ncatch (e) {\n  console.log(e);\n}\n```\n\n#### FAILED response\n\n```js\nconst csrOrderId = \"1234-abc\"\n\ntry {\n  const csrOrderData = await CsrOrder.getAsync(csrOrderId);\n  console.log(csrOrderData.status);\n  //Won't fire, as request is failed\n}\ncatch (e) {\n  console.log(e);\n// [BandwidthError: CSR is not available for this TN] {\n//   code: 26500,\n//   message: 'CSR is not available for this TN',\n//   httpStatus: 200\n// }\n}\n```\n\n## Emergency Notification\n\n### List Recipients\n\n```js\ntry {\n  const response = await EmergencyNotification.listRecipientsAsync(client, {\"Size\": \"20\"} );\n  console.log(response.emergencyNotificationRecipients.emergencyNotificationRecipient.length);\n  //4\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Get Recipient\n\n```js\ntry {\n  const response = await EmergencyNotification.getRecipientAsync(client, \"enrid\" );\n  console.log(response.emergencyNotificationRecipient.identifier);\n  //63865500-0904-46b1-9b4f-7bd237a26363\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Replace Recipient\n\n```js\nvar en = new EmergencyNotification();\nen.enrid = 123;\n\ntry {\n  const response = await en.replaceRecipientAsync(client, recipient);\n  console.log(response.emergencyNotificationRecipient.identifier);\n  //63865500-0904-46b1-9b4f-7bd237a26363\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Create Recipient\n\n```js\ntry {\n  const response = await EmergencyNotification.createRecipientAsync(client, recipient);\n  console.log(response.emergencyNotificationRecipient.identifier);\n  //63865500-0904-46b1-9b4f-7bd237a26363\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Delete Recipient\n\n```js\nvar en = new EmergencyNotification();\nen.enrid = 123;\n\ntry {\n  const response = await en.deleteRecipientAsync(client);\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### List Group Orders\n\n```js\ntry {\n  const response = await EmergencyNotification.listGroupOrdersAsync(helper.createClient(), {Size: \"20\"});\n  console.log(response.emergencyNotificationGroupOrders.emergencyNotificationGroupOrder.length);\n  //20\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Get Group Order\n\n```js\ntry {\n  const response = await EmergencyNotification.getGroupOrderAsync(helper.createClient(), \"orderId\");\n  console.log(response.emergencyNotificationGroup.orderId);\n  //orderId\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Create Group Order\n\n```js\ntry {\n  const response = EmergencyNotification.createGroupOrderAsync(helper.createClient(), groupOrder);\n  console.log(response.OrderId);\n  //900b3646-18df-4626-b237-3a8de648ebf6\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### List Group\n\n```js\ntry {\n  const response = await EmergencyNotification.listGroupsAsync(client, {\"Size\": \"20\"} );\n  console.log(response.emergencyNotificationGroups.emergencyNotificationGroup.length);\n  //20\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Get Group\n\n```js\ntry {\n  const response = await EmergencyNotification.getGroupAsync(client, \"engid\");\n  console.log(response.emergencyNotificationGroup.identifier);\n  //63865500-0904-46b1-9b4f-7bd237a26363\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### List Endpoint Orders\n\n```js\ntry {\n  const response = await EmergencyNotification.listEnpointOrdersAsync(client, {\"Size\": \"20\"} );\n  console.log(response.emergencyNotificationEndpointOrders.emergencyNotificationEndpointOrder.length);\n  //20\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Get Endpoint Order\n\n```js\ntry {\n  const response = await EmergencyNotification.getEndpointOrderAsync(client, \"orderId\" );\n  console.log(response.emergencyNotificationEndpointOrder.orderId);\n  //orderId\n}\ncatch (e) {\n  console.log(e);\n}\n```\n### Create Endpoint Orders\n\n```js\ntry {\n  const response = await EmergencyNotification.createEndpointOrderAsync(client, endpoint );\n  console.log(response.emergencyNotificationEndpointOrder.orderId);\n  //3e9a852e-2d1d-4e2d-84c3-87223a78cb70\n}\ncatch (e) {\n  console.log(e);\n}\n```\n\n\n## Geocoding\n### Make a geocode request\n\n```Javascript\nvar data = data = {\n  addressLine1: \"900 Main Campus Dr\",\n  city: 'raleigh',\n  stateCode: 'nc',\n  zip: 27606\n}\n\nnumbers.Geocode.request(data, function(error, address) {\n  if (error) {\n    return callback(error)\n  }\n  console.log(address.stateCode, address.houseNumber, address.streetName, address.streetSuffix, address.city)\n  //NC, 900, Main Campus, Dr, Raleigh\n});\n```\n\n## Aeuis\n\n### List Aeuis's\n\n```js\ntry {\n  const response = await Aeuis.listAsync(client, {Size: 20} );\n  console.log(response.AlternateEndUserIdentifiers.AlternateEndUserIdentifier.length);\n  //20\n}\ncatch (e) {\n  console.log(e);\n}\n```\n\n### Get Aeuis's\n\n```js\ntry {\n  const response = await Aeuis.getAsync(client, \"acid\" );\n  console.log(response.AlternateEndUserIdentifier.Identifier);\n  //acid\n}\ncatch (e) {\n  console.log(e);\n}\n```\n\n## Set SipPeer Origination Settings\n\n```js\nvar sipPeer = \u003ccreate/get sip peer\u003e;\n\nvar voiceHttpSettings = {\n  httpVoiceV2AppId: \"abcd-1234\"\n}\nawait sipPeer.createOriginationSettingsAsync({voiceProtocol: \"HTTP\", httpSettings: voiceHttpSettings})\n```\n\n## Get Account Products\n\n```js\nconsole.log(await numbers.Account.getProductsAsync());\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbandwidth%2Fnode-numbers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbandwidth%2Fnode-numbers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbandwidth%2Fnode-numbers/lists"}