Bandwidth Java Numbers

Java SDK for Bandwidth Numbers

License

License

GroupId

GroupId

com.bandwidth.sdk
ArtifactId

ArtifactId

numbers
Last Version

Last Version

0.3.0
Release Date

Release Date

Type

Type

jar
Description

Description

Bandwidth Java Numbers
Java SDK for Bandwidth Numbers
Project URL

Project URL

https://github.com/Bandwidth/numbers-java-sdk
Source Code Management

Source Code Management

https://github.com/Bandwidth/numbers-java-sdk/tree/master

Download numbers

How to add to project

<!-- https://jarcasting.com/artifacts/com.bandwidth.sdk/numbers/ -->
<dependency>
    <groupId>com.bandwidth.sdk</groupId>
    <artifactId>numbers</artifactId>
    <version>0.3.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.bandwidth.sdk/numbers/
implementation 'com.bandwidth.sdk:numbers:0.3.0'
// https://jarcasting.com/artifacts/com.bandwidth.sdk/numbers/
implementation ("com.bandwidth.sdk:numbers:0.3.0")
'com.bandwidth.sdk:numbers:jar:0.3.0'
<dependency org="com.bandwidth.sdk" name="numbers" rev="0.3.0">
  <artifact name="numbers" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.bandwidth.sdk', module='numbers', version='0.3.0')
)
libraryDependencies += "com.bandwidth.sdk" % "numbers" % "0.3.0"
[com.bandwidth.sdk/numbers "0.3.0"]

Dependencies

runtime (5)

Group / Artifact Type Version
com.fasterxml.jackson.datatype : jackson-datatype-jdk8 jar 2.8.6
org.asynchttpclient : async-http-client jar 2.6.0
com.google.guava : guava jar 27.0-jre
com.fasterxml.jackson.datatype : jackson-datatype-guava jar 2.9.5
com.fasterxml.jackson.dataformat : jackson-dataformat-xml jar 2.9.4

test (3)

Group / Artifact Type Version
org.assertj : assertj-core jar 3.11.1
org.mockito : mockito-core jar 2.23.0
junit : junit jar 4.12

Project Modules

There are no modules declared in this project.

Bandwidth Numbers Java SDK

Java SDK for Bandwidth's number management API.

Release Notes

Version Notes
0.3.0 Fixed quantity and tollFreeWildCardPattern for search requests

Dependency

Maven

<dependency>
    <groupId>com.bandwidth.sdk</groupId>
    <artifactId>numbers</artifactId>
    <version>(put desired version here)</version>
</dependency>

Gradle

compile 'com.bandwidth.sdk:numbers:(put desired version here)'

Quick Start

All objects in the SDK follow the Builder pattern for easy construction. To search for and order numbers, construct the relevant request and pass it to the appropriate client method.

Construct the client

Instances of the NumbersClient must be closed, typically on application shutdown to avoid resource leaks. Use the provided close method. The client also implements the AutoClosable interface for convenient use in try-with-resources blocks.

The client builder exposes a configuration method that allows access to the underlying AsyncHttpClient configuration should you want to configure it. See the documentation for that project to see what can be configured.

NumbersClientImpl numbersClient = NumbersClientImpl.builder()
   .account("1")
   .username("username")
   .password("password")
   .build();

// Optionally an AsyncHttpClientConfig may be provided to fine tune settings
NumbersClientImpl numbersClient = NumbersClientImpl.builder()
   .account("1")
   .username("username")
   .password("password")
   .config(
       new DefaultAsyncHttpClientConfig.Builder()
      .setRequestTimeout(60_000)
      .build())
   .build();

Search for available telephone numbers

AvailableNumberSearchRequest availableNumberSearchRequest = AvailableNumberSearchRequest.builder()
   .state("NC")
   .city("CARY")
   .enableTNDetail(false)
   .quantity(10)
   .tollFreeWildCardPattern("8**")
   .build();

SearchResult searchResult = numbersClient.getAvailableTelephoneNumbers(availableNumberSearchRequest);

Place an order for telephone numbers

Placing an order is a synchronous operation that will submit an order request to bandwidth and poll until the order has completed behind the scenes. One invocation may result in several API calls in the background before control returns to the calling thread.

// Each order type has a separate implementation
ExistingTelephoneNumberOrderType existingTelephoneNumberOrderType = ExistingTelephoneNumberOrderType.builder()
   .addTelephoneNumberList("8042994451")
   .build();

// Wrap the order type in an Order wrapper and choose site id and peer for numbers to be associated with
Order order = Order.builder()
   .siteId("1")
   .peerId("500539")
   .existingTelephoneNumberOrderType(existingTelephoneNumberOrderType)
   .build();

OrderResponse orderResponse = numbersClient.orderTelephoneNumbers(order);

Important Links

public class MyAwesomeBandwidthNumbersApp {
    
    public static void main(String[] args) {
       
          try (NumbersClientImpl numbersClient = NumbersClientImpl.builder()
             .account("1")
             .username("username")
             .password("password")
             .build()) {
    
             AvailableNumberSearchRequest availableNumberSearchRequest = AvailableNumberSearchRequest.builder()
                .state("NC")
                .city("CARY")
                .enableTNDetail(false)
                .quantity(10)
                .build();
    
             SearchResult searchResult = numbersClient.getAvailableTelephoneNumbers(availableNumberSearchRequest);
    
             // putting it all together, place an order for numbers returned from a number search
             ExistingTelephoneNumberOrderType existingTelephoneNumberOrderType =
                ExistingTelephoneNumberOrderType.builder()
                   .addAllTelephoneNumberList(searchResult.getTelephoneNumberList())
                   .build();
    
             Order order = Order.builder()
                .siteId("1")
                .peerId("500539")
                .existingTelephoneNumberOrderType(existingTelephoneNumberOrderType)
                .build();
    
             OrderResponse orderResponse = numbersClient.orderTelephoneNumbers(order);
          }
       }
}
com.bandwidth.sdk

Bandwidth

Bandwidth Open Source

Versions

Version
0.3.0
0.2.0
0.1.0