# Migrating to Versioned Java SDK

Sinch offers a Unified Java SDK ([com.sinch.sdk.sinch-sdk-java](https://mvnrepository.com/artifact/com.sinch.sdk/sinch-sdk-java)). This guide provides information on how to migrate from the initial release of the Sinch Unified Java SDK to the versioned release.

## Migration to versioned SDK

The initial Sinch Unified Java SDK was based on adapter layers; each programmatic API required its own business logic.

To reduce overhead and complexity, the SDK implemented "versioned" layers with v1.5.

To provide a smooth transition, the un-versioned APIs are still supported. However, they will be tagged as `@Deprecated`, and will be removed with the next major release. With fewer layers, the SDK decreases memory consumption and increases performance.

The versioned APIs are accessible from domains within the `SinchClient` (e.g. `client.sms()`) for SMS, but with an added `vX` suffix pointing to the version *namespace*.

For example, previous calls to `client.sms().batches()` (using the inital, un-versioned SDK) are now available by addressing `client.sms().v1().batches()` (using the first versioned SDK). This also impacts packages and classes names.

Tables providing mappings between un-versioned calls and versioned calls are below. The corresponding JavaDocs are linked for easy reference.

## Client

| Product | Un-versioned | Versioned |
|  --- | --- | --- |
| Voice | [client.voice()](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/VoiceService.html) | [client.voice().v1()](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/VoiceService.html) |


## Voice

In addition to the table below, you can review the [corresponding syntax reference guide](/docs/voice/sdk/java/syntax-reference/) and [API reference guide](/docs/voice/api-reference/voice).

### Applications

| Method | Un-versioned | Versioned |
|  --- | --- | --- |
| assignNumbers | [void assignNumbers(ApplicationsAssignNumbersRequestParameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ApplicationsService.html#assignNumbers(com.sinch.sdk.domains.voice.models.requests.ApplicationsAssignNumbersRequestParameters)) | [void assignNumbers(UpdateNumbersRequest parameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ApplicationsService.html#assignNumbers(com.sinch.sdk.domains.voice.models.v1.applications.request.UpdateNumbersRequest)) |
| getCallbackUrls | [CallbackUrls getCallbackUrls(String)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ApplicationsService.html#getCallbackUrls(java.lang.String)) | [Callbacks getCallbackUrls(String applicationKey)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ApplicationsService.html#getCallbackUrls(java.lang.String)) |
| listNumbers | [AssignedNumbers listNumbers()](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ApplicationsService.html#listNumbers()) | [OwnedNumbersResponse listNumbers()](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ApplicationsService.html#listNumbers()) |
| queryNumber | [NumberInformation queryNumber(E164PhoneNumber)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ApplicationsService.html#queryNumber(com.sinch.sdk.models.E164PhoneNumber)) | [QueryNumberResponse queryNumber(String number)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ApplicationsService.html#queryNumber(java.lang.String)) |
| unassignNumber | [void unassignNumber(E164PhoneNumber, String)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ApplicationsService.html#unassignNumber(com.sinch.sdk.models.E164PhoneNumber,java.lang.String)) | [void unassignNumber(UnAssignNumberRequest parameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ApplicationsService.html#unassignNumber(com.sinch.sdk.domains.voice.models.v1.applications.request.UnAssignNumberRequest)) |
| updateCallbackUrls | [void updateCallbackUrls(String, CallbackUrls)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ApplicationsService.html#updateCallbackUrls(java.lang.String,com.sinch.sdk.domains.voice.models.CallbackUrls)) | [void updateCallbackUrls(String applicationKey, Callbacks parameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ApplicationsService.html#updateCallbackUrls(java.lang.String,com.sinch.sdk.domains.voice.models.v1.applications.Callbacks)) |


### Callouts

| Method | Un-versioned | Versioned |
|  --- | --- | --- |
| call | [String call(CalloutRequestParameter)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/CalloutsService.html#call(com.sinch.sdk.domains.voice.models.requests.CalloutRequestParameters)) | [String call(CalloutRequest parameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/CalloutsService.html#call(com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequest)) |
| conference | [String conference(CalloutRequestParametersConference)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/CalloutsService.html#conference(com.sinch.sdk.domains.voice.models.requests.CalloutRequestParametersConference)) | [String conference(CalloutRequestConference parameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/CalloutsService.html#conference(com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestConference)) |
| custom | [String custom(CalloutRequestParametersCustom)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/CalloutsService.html#custom(com.sinch.sdk.domains.voice.models.requests.CalloutRequestParametersCustom)) | [String custom(CalloutRequestCustom parameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/CalloutsService.html#custom(com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestCustom)) |
| textToSpeech | [String textToSpeech(CalloutRequestParametersTTS)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/CalloutsService.html#textToSpeech(com.sinch.sdk.domains.voice.models.requests.CalloutRequestParametersTTS)) | [String textToSpeech(CalloutRequestTTS parameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/CalloutsService.html#custom(com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestCustom)) |


### Calls

| Method | Un-versioned | Versioned |
|  --- | --- | --- |
| get | [CallInformation get(String)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/CallsService.html#get(java.lang.String)) | [CallInformation get(String)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/CallsService.html#get(java.lang.String)) |
| manageWithCallLeg | [void manageWithCallLeg(String, CallLegType, SVAMLControl)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/CallsService.html#manageWithCallLeg(java.lang.String,com.sinch.sdk.domains.voice.models.CallLegType,com.sinch.sdk.domains.voice.models.svaml.SVAMLControl)) | [void manageWithCallLeg(String, CallLeg, SvamlControl)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/CallsService.html#manageWithCallLeg(java.lang.String,com.sinch.sdk.domains.voice.models.v1.calls.request.CallLeg,com.sinch.sdk.domains.voice.models.v1.svaml.SvamlControl)) |
| update | [void update(String, SVAMLControl)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/CallsService.html#update(java.lang.String,com.sinch.sdk.domains.voice.models.svaml.SVAMLControl)) | [void update(String, SvamlControl)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/CallsService.html#update(java.lang.String,com.sinch.sdk.domains.voice.models.v1.svaml.SvamlControl)) |


### Conferences

| Method | Un-versioned | Versioned |
|  --- | --- | --- |
| call | [`String call(CalloutRequestParametersConference)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ConferencesService.html#call(com.sinch.sdk.domains.voice.models.requests.CalloutRequestParametersConference)) | [`String call(CalloutRequestConference)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ConferencesService.html#call(com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestConference)) |
| get | [`Collection&lt;ConferenceParticipant&gt; get(String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ConferencesService.html#get(java.lang.String)) | [`GetConferenceInfoResponse get(String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ConferencesService.html#get(java.lang.String)) |
| kickAll | [`void kickAll(String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ConferencesService.html#kickAll(java.lang.String)) | [`void kickAll(String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ConferencesService.html#kickAll(java.lang.String)) |
| kickParticipant | [`void kickParticipant(String, String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ConferencesService.html#kickParticipant(java.lang.String,java.lang.String)) | [`void kickParticipant(String, String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ConferencesService.html#kickParticipant(java.lang.String,java.lang.String)) |
| manageParticipant | [`void manageParticipant(String, String, ConferenceManageParticipantRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/ConferencesService.html#manageParticipant(java.lang.String,java.lang.String,com.sinch.sdk.domains.voice.models.requests.ConferenceManageParticipantRequestParameters)) | [`void manageParticipant(String, String, ManageConferenceParticipantRequest)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/ConferencesService.html#manageParticipant(java.lang.String,java.lang.String,com.sinch.sdk.domains.voice.models.v1.conferences.request.ManageConferenceParticipantRequest)) |


### Webhooks

| Method | Un-versioned | Versioned |
|  --- | --- | --- |
| unserializeWebhooksEvent | [`unserializeWebhooksEvent(String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/WebHooksService.html#serializeWebhooksResponse(com.sinch.sdk.domains.voice.models.svaml.SVAMLControl)) | [`VoiceWebhookEvent parseEvent(String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/WebHooksService.html#parseEvent(java.lang.String)) |
| serializeWebhooksResponse | [`String serializeWebhooksResponse(SVAMLControl)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/WebHooksService.html#unserializeWebhooksEvent(java.lang.String)) | [`String serializeResponse(SvamlControl)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/WebHooksService.html#serializeResponse(com.sinch.sdk.domains.voice.models.v1.svaml.SvamlControl)) |
| validateAuthenticatedRequest | [`boolean validateAuthenticatedRequest(String, String, Map&lt;String,String&gt;, String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.3.1/com/sinch/sdk/domains/voice/WebHooksService.html#validateAuthenticatedRequest(java.lang.String,java.lang.String,java.util.Map,java.lang.String)) | [`boolean validateAuthenticationHeader(String, String, Map&lt;String,String&gt;, String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/voice/api/v1/WebHooksService.html#validateAuthenticationHeader(java.lang.String,java.lang.String,java.util.Map,java.lang.String)) |