# Rent and configure your virtual number using Java After searching for a number, rent and configure that number for SMS. Note: Before you can get started, you need the following already set up: - - [JDK 8 or later](https://www.oracle.com/java/technologies/downloads/) and a familiarity with how to create a new Java application. - [Apache Maven](https://maven.apache.org/install.html) and a familiarity with how to use the Maven CLI. - A virtual number you have [confirmed to be available](/docs/numbers/getting-started/java-sdk/searchavailable). Steps: 1. [Set up](#set-up-your-java-application) your Java application 2. [Rent and configure the virtual number](#rent-and-configure-the-virtual-number) for SMS. ## Set up your Java application To quickly get started setting up a simple client application using the Java SDK: 1. If you haven't already, clone the [sinch-sdk-java-quickstart](https://github.com/sinch/sinch-sdk-java-quickstart) repository. 2. Navigate to the `sinch-sdk-java-quickstart/getting-started/numbers/rent-and-configure/client/src/main/resources` folder. 3. Open the `config.properties` [file](https://github.com/sinch/sinch-sdk-java-quickstart/blob/main/getting-started/numbers/rent-and-configure/client/src/main/resources/config.properties). Using the [access key credentials](https://dashboard.sinch.com/settings/access-keys) from your Sinch Build Dashboard, populate the following fields with your values: | Field | Description | | --- | --- | | SINCH_PROJECT_ID | The unique ID of your Project. | | SINCH_KEY_ID | The unique ID of your access key. | | SINCH_KEY_SECRET | The secret that goes with your access key. **Note:** For security reasons, this secret is only visible right after access key creation. | 1. Save the file. ### Modify your application 1. Navigate to the `getting-started/numbers/rent-and-configure/client/src/main/java/numbers` folder and open the `Snippet.java` [file](https://github.com/sinch/sinch-sdk-java-quickstart/blob/main/getting-started/numbers/rent-and-configure/client/src/main/java/numbers/Snippet.java). Snippet.java // Use this code to rent and configure a virtual number with the Java SDK. package numbers; import com.sinch.sdk.domains.numbers.api.v1.NumbersService; import com.sinch.sdk.domains.numbers.models.v1.ActiveNumber; import com.sinch.sdk.domains.numbers.models.v1.Capability; import com.sinch.sdk.domains.numbers.models.v1.NumberType; import com.sinch.sdk.domains.numbers.models.v1.SmsConfiguration; import com.sinch.sdk.domains.numbers.models.v1.request.AvailableNumberRentAnyRequest; import java.util.Collections; import java.util.logging.Logger; public class Snippet { private static final Logger LOGGER = Logger.getLogger(Snippet.class.getName()); static void execute(NumbersService numbersService) { String servicePlanId = "YOUR_service_plan_id"; String regionCode = "YOUR_region_code"; Capability capability = Capability.SMS; NumberType numberType = NumberType.LOCAL; LOGGER.info( String.format( "Sending request to rent the first available number and configure it with the" + " pre-configured service plan id '%s' to use the SMS capability", servicePlanId)); ActiveNumber response = numbersService.rentAny( AvailableNumberRentAnyRequest.builder() .setCapabilities(Collections.singletonList(capability)) .setType(numberType) .setRegionCode(regionCode) .setSmsConfiguration( SmsConfiguration.builder().setServicePlanId(servicePlanId).build()) .build()); LOGGER.info(String.format("Rented number: %s", response)); } } 1. The code provided in **Snippet.java** includes placeholder parameters. Replace the following values for these parameters with your own values: | Parameter | Your value | | --- | --- | | `YOUR_service_plan_id` | Your [SMS service plan ID](https://dashboard.sinch.com/sms/api/rest)This is only required for SMS configuration. | | `YOUR_phone_number` | The virtual phone number that you previously searched for and would like to rent. | 1. Save the file. ### Package the application Now that you've modified the application, you need to use the Maven CLI to create a package that you can then execute. Open a command prompt or terminal to the `sinch-sdk-java-quickstart/getting-started/numbers/rent-and-configure/client` folder and run the following command: ```Shell mvn package ``` This command creates the `target` folder and application. ## Rent and configure the virtual number Now you can run the code with the following command: ```Shell java -jar target/sinch-java-sdk-client-application-1.0-SNAPSHOT-jar-with-dependencies.jar ``` ### Response You should get a response similar to this one: ```json { "phoneNumber": "+12025550134", "projectId": "51bc3f40-f266-4ca8-8938-a1ed0ff32b9a", "displayName": "string", "regionCode": "US", "type": "MOBILE", "capability": [ "SMS" ], "money": { "currencyCode": "USD", "amount": "2.00" }, "paymentIntervalMonths": 0, "nextChargeDate": "2019-08-24T14:15:22Z", "expireAt": "2019-08-24T14:15:22Z", "smsConfiguration": { "servicePlanId": "82b42acf74924bd687ef9fb212f2060c", "scheduledProvisioning": { "servicePlanId": "82b42acf74924bd687ef9fb212f20611", "status": "WAITING", "lastUpdatedTime": "2019-08-24T14:15:22Z", "campaignId": "string", "errorCodes": [ "INTERNAL_ERROR" ] }, "campaignId": "string" }, "voiceConfiguration": { "appId": "string", "scheduledVoiceProvisioning": { "appId": "string", "status": "WAITING", "lastUpdatedTime": "2019-08-24T14:15:22Z" }, "lastUpdatedTime": "2019-08-24T14:15:22Z" } } ``` ## Next steps Send a message to yourself using the SMS API to verify that the configuration was successful. - [Send an SMS message](/docs/sms/getting-started). ## Additional resources - Explore the [API specification](/docs/numbers/api-reference/numbers) to test more endpoints. - Follow the number rental process [in the Sinch Build Dashboard](https://dashboard.sinch.com/numbers/buy-numbers) UI rather than through this API.