# 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 |
|  --- | --- | --- |
| Verification | [`client.verification()`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationService.html) | [`client.verification().v1()`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationService.html) |


## Verification

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

### Verifications

| Method | Un-versioned | Versioned |
|  --- | --- | --- |
| reportCallout-ById | [`VerificationReportCallout reportCalloutById(VerificationId, VerificationReportCalloutRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#reportCalloutById(com.sinch.sdk.domains.verification.models.VerificationId,com.sinch.sdk.domains.verification.models.requests.VerificationReportCalloutRequestParameters)) | [`VerificationReportResponsePhoneCall reportPhoneCallById(String, VerificationReportRequestPhoneCall)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationReportService.html#reportPhoneCallById(java.lang.String,com.sinch.sdk.domains.verification.models.v1.report.request.VerificationReportRequestPhoneCall)) |
| reportCallout-ByIdentity | [`VerificationReportCallout reportCalloutByIdentity(NumberIdentity, VerificationReportCalloutRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#reportCalloutByIdentity(com.sinch.sdk.domains.verification.models.NumberIdentity,com.sinch.sdk.domains.verification.models.requests.VerificationReportCalloutRequestParameters)) | [`VerificationReportResponsePhoneCall reportPhoneCallByIdentity(NumberIdentity, VerificationReportRequestPhoneCall)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationReportService.html#reportPhoneCallByIdentity(com.sinch.sdk.domains.verification.models.v1.NumberIdentity,com.sinch.sdk.domains.verification.models.v1.report.request.VerificationReportRequestPhoneCall)) |
| reportFlashCall-ById | [`VerificationReportFlashCall reportFlashCallById(VerificationId, VerificationReportFlashCallRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#reportFlashCallById(com.sinch.sdk.domains.verification.models.VerificationId,com.sinch.sdk.domains.verification.models.requests.VerificationReportFlashCallRequestParameters)) | [`VerificationReportResponseFlashCall reportFlashCallById(String, VerificationReportRequestFlashCall)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationReportService.html#reportFlashCallById(java.lang.String,com.sinch.sdk.domains.verification.models.v1.report.request.VerificationReportRequestFlashCall)) |
| reportFlashCall-ByIdentity | [`VerificationReportFlashCall reportFlashCallByIdentity(NumberIdentity, VerificationReportFlashCallRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#reportFlashCallByIdentity(com.sinch.sdk.domains.verification.models.NumberIdentity,com.sinch.sdk.domains.verification.models.requests.VerificationReportFlashCallRequestParameters)) | [`VerificationReportResponseFlashCall reportFlashCallByIdentity(NumberIdentity, VerificationReportRequestFlashCall)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationReportService.html#reportFlashCallByIdentity(com.sinch.sdk.domains.verification.models.v1.NumberIdentity,com.sinch.sdk.domains.verification.models.v1.report.request.VerificationReportRequestFlashCall)) |
| reportSmsById | [`VerificationReportSMS reportSmsById(VerificationId, VerificationReportSMSRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#reportSmsById(com.sinch.sdk.domains.verification.models.VerificationId,com.sinch.sdk.domains.verification.models.requests.VerificationReportSMSRequestParameters)) | [`VerificationReportResponseSms reportSmsById(String, VerificationReportRequestSms)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationReportService.html#reportSmsById(java.lang.String,com.sinch.sdk.domains.verification.models.v1.report.request.VerificationReportRequestSms)) |
| reportSmsByIdentity | [`VerificationReportSMS reportSmsByIdentity(NumberIdentity, VerificationReportSMSRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#reportSmsByIdentity(com.sinch.sdk.domains.verification.models.NumberIdentity,com.sinch.sdk.domains.verification.models.requests.VerificationReportSMSRequestParameters)) | [`VerificationReportResponseSms reportSmsByIdentity(NumberIdentity, VerificationReportRequestSms)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationReportService.html#reportSmsByIdentity(com.sinch.sdk.domains.verification.models.v1.NumberIdentity,com.sinch.sdk.domains.verification.models.v1.report.request.VerificationReportRequestSms)) |
| startCallout | [`StartVerificationResponseCallout startCallout(StartVerificationCalloutRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#startCallout(com.sinch.sdk.domains.verification.models.requests.StartVerificationCalloutRequestParameters)) | [`VerificationStartResponsePhoneCall startPhoneCall(VerificationStartRequestPhoneCall parameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationStartService.html#startPhoneCall(com.sinch.sdk.domains.verification.models.v1.start.request.VerificationStartRequestPhoneCall)) |
| startFlashCall | [`StartVerificationResponseFlashCall startFlashCall(StartVerificationFlashCallRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#startFlashCall(com.sinch.sdk.domains.verification.models.requests.StartVerificationFlashCallRequestParameters)) | [`VerificationStartResponseFlashCall startFlashCall(VerificationStartRequestFlashCall parameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationStartService.html#startFlashCall(com.sinch.sdk.domains.verification.models.v1.start.request.VerificationStartRequestFlashCall)) |
| startSeamless | [`StartVerificationResponseSeamless startSeamless(StartVerificationSeamlessRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#startSeamless(com.sinch.sdk.domains.verification.models.requests.StartVerificationSeamlessRequestParameters)) | [`VerificationStartResponseData startData(VerificationStartRequestData parameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationStartService.html#startData(com.sinch.sdk.domains.verification.models.v1.start.request.VerificationStartRequestData)) |
| startSms | [`StartVerificationResponseSMS startSms(StartVerificationSMSRequestParameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationsService.html#startSms(com.sinch.sdk.domains.verification.models.requests.StartVerificationSMSRequestParameters)) | [`VerificationStartResponseSms startSms(VerificationStartRequestSms parameters)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationStartService.html#startSms(com.sinch.sdk.domains.verification.models.v1.start.request.VerificationStartRequestSms)) |


### Verification Status

| Method | Un-versioned | Versioned |
|  --- | --- | --- |
| getById | [`VerificationReport getById(VerificationId id)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationStatusService.html#getById(com.sinch.sdk.domains.verification.models.VerificationId)) | [`VerificationStatusResponse getById(String id)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationStatusService.html#getById(java.lang.String)) |
| getByIdentity | [`VerificationReport getByIdentity(NumberIdentity identity, VerificationMethodType method)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationStatusService.html#getByIdentity(com.sinch.sdk.domains.verification.models.NumberIdentity,com.sinch.sdk.domains.verification.models.VerificationMethodType)) | [`VerificationStatusResponse getByIdentity(NumberIdentity identity, VerificationMethod method)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationStatusService.html#getByIdentity(com.sinch.sdk.domains.verification.models.v1.NumberIdentity,com.sinch.sdk.domains.verification.models.v1.VerificationMethod)) |
| getBy-Reference | [`VerificationReport getByReference(VerificationReference reference)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/VerificationStatusService.html#getByReference(com.sinch.sdk.domains.verification.models.VerificationReference)) | [`VerificationStatusResponse getByReference(String reference)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/VerificationStatusService.html#getByReference(java.lang.String)) |


### Webhooks

| Method | Un-versioned | Versioned |
|  --- | --- | --- |
| parseEvent | [`VerificationEvent parseEvent(String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/WebHooksService.html#parseEvent(java.lang.String)) | [`VerificationEvent parseEvent(String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/WebHooksService.html#parseEvent(java.lang.String)) |
| serializeResponse | [`String serializeResponse(VerificationResponse)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/WebHooksService.html#serializeResponse(com.sinch.sdk.domains.verification.models.webhooks.VerificationResponse)) | [`String serializeResponse(VerificationRequestEventResponse)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/WebHooksService.html#serializeResponse(com.sinch.sdk.domains.verification.models.v1.webhooks.VerificationRequestEventResponse)) |
| validateAuthenticationHeader | [`boolean validateAuthenticationHeader(String  String, Map&lt;String,String&gt;, String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.0.0/com/sinch/sdk/domains/verification/WebHooksService.html#validateAuthenticationHeader(java.lang.String,java.lang.String,java.util.Map,java.lang.String)) | [`boolean validateAuthenticationHeader(String, String path, Map&lt;String,String&gt;, String)`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.5.0/com/sinch/sdk/domains/verification/api/v1/WebHooksService.html#validateAuthenticationHeader(java.lang.String,java.lang.String,java.util.Map,java.lang.String)) |