# Sinch Java SDK for Conversation The Sinch Java SDK allows you to quickly interact with the from inside your Java applications. When using the Java SDK, the code representing requests and queries sent to and responses received from the are structured similarly to those that are sent and received using the . The fastest way to get started with the SDK is to check out our [getting started](/docs/conversation/getting-started/node-sdk/send-message) guides. There you'll find all the instructions necessary to download, install, set up, and start using the SDK. Note: You can also view the generated JavaDocs for the Java SDK [here](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/package-summary.html). ## Syntax Note: This guide describes the syntactical structure of the Java SDK for the Conversation API, including any differences that may exist between the API itself and the SDK. For a full reference on Conversation API calls and responses, see the [Conversation REST API Reference](/docs/conversation/api-reference/). The code sample below is an example of how to use the Java SDK to send a text message on the SMS channel of a Conversation API app. We've also provided an example that accomplishes the same task using the REST API. SDK send-message.js package conversation; import com.sinch.sdk.domains.conversation.api.v1.ConversationService; import com.sinch.sdk.domains.conversation.api.v1.MessagesService; import com.sinch.sdk.domains.conversation.models.v1.*; import com.sinch.sdk.domains.conversation.models.v1.messages.*; import com.sinch.sdk.domains.conversation.models.v1.messages.request.*; import com.sinch.sdk.domains.conversation.models.v1.messages.response.SendMessageResponse; import com.sinch.sdk.domains.conversation.models.v1.messages.types.text.*; import java.util.*; 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(ConversationService conversationService) { MessagesService messagesService = conversationService.messages(); String appId = "YOUR_app_id"; String from = "YOUR_sms_sender"; String to = "RECIPIENT_number"; String body = "This is a test Conversation message using the Sinch Java SDK."; String smsSender = "SMS_SENDER"; ChannelRecipientIdentities recipients = ChannelRecipientIdentities.of( ChannelRecipientIdentity.builder() .setChannel(ConversationChannel.SMS) .setIdentity(to) .build()); AppMessage message = AppMessage.builder() .setBody(TextMessage.builder().setText(body).build()) .build(); SendMessageRequest request = SendMessageRequest.builder() .setAppId(appId) .setRecipient(recipients) .setMessage(message) .setChannelProperties(Collections.singletonMap(smsSender, from)) .build(); LOGGER.info("Sending SMS Text using Conversation API"); SendMessageResponse value = messagesService.sendMessage(request); LOGGER.info("Response: " + value); } } REST API ```Java // Find your App ID at dashboard.sinch.com/convapi/apps // Find your Project ID at dashboard.sinch.com/settings/project-management // Get your Access Key and Access Secret at dashboard.sinch.com/settings/access-keys import java.net.*; import java.net.http.*; import java.util.*; public class App { public static void main(String[] args) throws Exception { var httpClient = HttpClient.newBuilder().build(); var payload = String.join("\n" , "{" , " \"app_id\": \"{APP_ID}\"," , " \"recipient\": {" , " \"identified_by\": {" , " \"channel_identities\": [" , " {" , " \"channel\": \"{CHANNEL}\"," , " \"identity\": \"{IDENTITY}\"" , " }" , " ]" , " }" , " }," , " \"message\": {" , " \"text_message\": {" , " \"text\": \"This is a text message.\"" , " }" , " }" , "}" ); var host = "https://{region}.conversation.api.sinch.com"; var projectId = "YOUR_project_id_PARAMETER"; var region = "us"; var pathname = "/v1/projects/%7Bproject_id%7D/messages:send"; var request = HttpRequest.newBuilder() .POST(HttpRequest.BodyPublishers.ofString(payload)) .uri(URI.create(host + pathname )) .header("Content-Type", "application/json") .header("Authorization", "Basic " + Base64.getEncoder().encodeToString((":").getBytes())) .build(); var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } } ``` This example highlights the following required to successfully make a Conversation API call using the Sinch Java SDK: - [Client initialization](#client) - [Conversation domain access](#conversation-domain) - [Endpoint usage](#endpoint-categories) - [Field population](#request-and-query-parameters) ## Client When using the Sinch Java SDK, you initialize communication with the Sinch backend by initializing the Java SDK's main client class. This client allows you to access the functionality of the Sinch Java SDK. ### Initialization To successfully initialize the Sinch client class, you must provide a valid access key ID and access key secret combination. You must also provide your Project ID. For example: ```java package conversation.sdk; import com.sinch.sdk.SinchClient; public class App { public static String access_key = "YOUR_access_key"; public static String access_secret = "YOUR_access_secret"; public static String project_id = "YOUR_project_id" public static void main(String[] args) { SinchClient client = new SinchClient(Configuration.builder() .setKeyId(access_key) .setKeySecret(access_secret) .setProjectId(project_id) .build()); } ``` Note: The above sample defaults to the US region. If you want to specify the European region, you can use `.setConversationRegion(ConversationRegion.EU)`. If you want to specify the Brazil region, you can use `.setConversationRegion(ConversationRegion.BR)`. If you want to re-specify the US region, you can use `setConversationRegion(ConversationRegion.US)`. ## Conversation domain The Sinch Java SDK organizes different functionalities in the Sinch product suite into domains. These domains are accessible through the client. For example, `client.conversation().v1().[endpoint_category()].[method()]` or `client.conversation().templates().[templates_version()].[method()]`. In the Sinch Java SDK, Conversation API endpoints are accessible through the client (either a general client or a Conversation-specific client). The naming convention of the endpoint's representation in the SDK matches the API: - `v1().messages()` - `v1().app()` - `v1().contact()` - `v1().events()` - `v1().transcoding()` - `v1().capability()` - `templates.v1().templates()` - `templates.v2().templates()` - `v1().webhooks()` - `v1().conversation()` For example: ```Java SendMessageResponse response = client.conversation().v1().messages().sendMessage(SendMessageRequest.builder() .setAppId("YOUR_app_id") .setRecipient(ChannelRecipientIdentities.of(ChannelRecipientIdentity.builder().setChannel(ConversationChannel.SMS).setIdentity("RECIPIENT_number").build())) .setMessage(AppMessage.builder().setBody(TextMessage.builder().setText("This is a test Conversation message using the Sinch Java SDK.").build()).build()) .setChannelProperties(Collections.singletonMap("SMS_SENDER", "YOUR_sms_sender")) .build()); ``` The `messages` category of the Java SDK corresponds to the [messages](/docs/conversation/api-reference/conversation/messages/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [Send a message](/docs/conversation/api-reference/conversation/messages/messages_sendmessage) | [sendMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)), or you could use any of the following message-specific methods: | | | [sendCardMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendCardMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | | [sendCarouselMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendCarouselMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | | [sendChoiceMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendChoiceMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | | [sendContactInfoMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendContactInfoMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | | [sendListMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendListMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | | [sendLocationMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendLocationMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | | [sendMediaMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendMediaMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | | [sendTemplateMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendTemplateMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | | [sendTextMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#sendTextMessage(com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest)) | | [Get a message](/docs/conversation/api-reference/conversation/messages/messages_getmessage) | [get](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#get(java.lang.String)) | | [Delete a message](/docs/conversation/api-reference/conversation/messages/messages_deletemessage) | [delete](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#delete(java.lang.String)) | | [List messages](/docs/conversation/api-reference/conversation/messages/messages_listmessages) | [list](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#list(com.sinch.sdk.domains.conversation.models.v1.messages.request.MessagesListRequest)) | | [Update a message's metadata](/docs/conversation/api-reference/conversation/messages/messages_updatemessagemetadata) | [update](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/MessagesService.html#list(com.sinch.sdk.domains.conversation.models.v1.messages.request.MessagesListRequest)) | The `app` category of the Java SDK corresponds to the [apps](/docs/conversation/api-reference/conversation/app/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [List all apps for a given project](/docs/conversation/api-reference/conversation/app/app_listapps) | [list](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/AppService.html#list()) | | [Create an app](/docs/conversation/api-reference/conversation/app/app_createapp) | [create](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/AppService.html#create(com.sinch.sdk.domains.conversation.models.v1.app.request.AppCreateRequest)) | | [Get an app](/docs/conversation/api-reference/conversation/app/app_getapp) | [get](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/AppService.html#get(java.lang.String)) | | [Delete an app](/docs/conversation/api-reference/conversation/app/app_deleteapp) | [delete](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/AppService.html#delete(java.lang.String)) | | [Update an app](/docs/conversation/api-reference/conversation/app/app_updateapp) | [update](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/AppService.html#update(java.lang.String,com.sinch.sdk.domains.conversation.models.v1.app.request.AppUpdateRequest)) | [This class](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/models/v1/credentials/ConversationChannelCredentialsBuilderFactory.html) will help you define channel credentials when creating or updating an app. Each channel is represented by a corresponding method, and invoking that method will allows you to more easily determine the information that is required to create the credentials. The `contact` category of the Java SDK corresponds to the [contacts](/docs/conversation/api-reference/conversation/contact/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [List contacts](/docs/conversation/api-reference/conversation/contact/contact_listcontacts) | [list](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ContactService.html#list(com.sinch.sdk.domains.conversation.models.v1.contact.request.ContactListRequest)) | | [Create a contact](/docs/conversation/api-reference/conversation/contact/contact_createcontact) | [create](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ContactService.html#create(com.sinch.sdk.domains.conversation.models.v1.contact.request.ContactCreateRequest)) | | [Get a contact](/docs/conversation/api-reference/conversation/contact/contact_getcontact) | [get](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ContactService.html#get(java.lang.String)) | | [Delete a contact](/docs/conversation/api-reference/conversation/contact/contact_deletecontact) | [delete](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ContactService.html#delete(java.lang.String)) | | [Update a contact](/docs/conversation/api-reference/conversation/contact/contact_updatecontact) | [update](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ContactService.html#update(java.lang.String,com.sinch.sdk.domains.conversation.models.v1.contact.Contact)) | | [Merge two contacts](/docs/conversation/api-reference/conversation/contact/contact_mergecontact) | [mergeContact](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ContactService.html#mergeContact(java.lang.String,java.lang.String)) | | [Get channel profile](/docs/conversation/api-reference/conversation/contact/contact_getchannelprofile) | [getChannelProfileByContactId](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ContactService.html#getChannelProfileByContactId(com.sinch.sdk.domains.conversation.models.v1.contact.request.ContactGetChannelProfileByContactIdRequest)) or [getChannelProfileByChannelIdentity](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ContactService.html#getChannelProfileByChannelIdentity(com.sinch.sdk.domains.conversation.models.v1.contact.request.ContactGetChannelProfileByChannelIdentityRequest)) | The `conversations` category of the Java SDK corresponds to the [conversations](docs/conversation/api-reference/conversation/conversation/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [List conversations](/docs/conversation/api-reference/conversation/conversation/conversation_listconversations) | [list](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#list(com.sinch.sdk.domains.conversation.models.v1.conversation.request.ConversationsListRequest)) | | [Create a conversation](/docs/conversation/api-reference/conversation/conversation/conversation_createconversation) | [create](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#create(com.sinch.sdk.domains.conversation.models.v1.conversation.request.CreateConversationRequest)) | | [Get a conversation](/docs/conversation/api-reference/conversation/conversation/conversation_getconversation) | [get](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#get(java.lang.String)) | | [Delete a conversation](/docs/conversation/api-reference/conversation/conversation/conversation_deleteconversation) | [delete](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#delete(java.lang.String)) | | [Update a conversation](/docs/conversation/api-reference/conversation/conversation/conversation_updateconversation) | [update](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#update(java.lang.String,com.sinch.sdk.domains.conversation.models.v1.request.MetadataUpdateStrategy,com.sinch.sdk.domains.conversation.models.v1.conversation.Conversation)) | | [Stop conversation](/docs/conversation/api-reference/conversation/conversation/conversation_stopactiveconversation) | [stopActive](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#stopActive(java.lang.String)) | | [Inject a message](/docs/conversation/api-reference/conversation/conversation/conversation_injectmessage) | [injectMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#injectMessage(java.lang.String,com.sinch.sdk.domains.conversation.models.v1.conversation.request.InjectMessageRequest)) | | [Inject an event](/docs/conversation/api-reference/conversation/conversation/events_injectevent) | [injectEvent](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#injectEvent(java.lang.String,com.sinch.sdk.domains.conversation.models.v1.conversation.request.InjectEventRequest)) | | [List recent conversations](/docs/conversation/api-reference/conversation/conversation/conversation_listrecentconversations) | [listRecent](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/ConversationsService.html#listRecent(com.sinch.sdk.domains.conversation.models.v1.conversation.request.ConversationsListRecentRequest)) | The `events` category of the Java SDK corresponds to the [events](/docs/conversation/api-reference/conversation/events/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [Send an event](/docs/conversation/api-reference/conversation/events/events_sendevent) | [send](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/EventsService.html#send(com.sinch.sdk.domains.conversation.models.v1.events.request.SendEventRequest)) | | [Get an event](/docs/conversation/api-reference/conversation/events/events_getevent) | [get](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/EventsService.html#get(java.lang.String)) | | [Delete an event](/docs/conversation/api-reference/conversation/events/events_deleteevents) | [delete](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/EventsService.html#delete(java.lang.String)) | | [List events](/docs/conversation/api-reference/conversation/events/events_listevents) | [list](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/EventsService.html#list(com.sinch.sdk.domains.conversation.models.v1.events.request.EventsListRequest)) | The `transcoding` category of the Java SDK corresponds to the [messages:transcode](/docs/conversation/api-reference/conversation/transcoding/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [Transcode a message](/docs/conversation/api-reference/conversation/transcoding/transcoding_transcodemessage) | [transcodeMessage](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/TranscodingService.html#transcodeMessage(com.sinch.sdk.domains.conversation.models.v1.transcoding.request.TranscodeMessageRequest)) | The `capability` category of the Java SDK corresponds to the [capability](/docs/conversation/api-reference/conversation/capability/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [Capability lookup](/docs/conversation/api-reference/conversation/capability/capability_querycapability) | [lookup](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/CapabilityService.html#lookup(com.sinch.sdk.domains.conversation.models.v1.capability.request.QueryCapabilityRequest)) | The `webhooks` category of the Java SDK corresponds to the [webhooks](/docs/conversation/api-reference/conversation/webhooks/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [List webhooks](/docs/conversation/api-reference/conversation/webhooks/webhooks_listwebhooks) | [list](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/WebHooksService.html#list(java.lang.String)) | | [Create a new webhook](/docs/conversation/api-reference/conversation/webhooks/webhooks_createwebhook) | [create](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/WebHooksService.html#create(com.sinch.sdk.domains.conversation.models.v1.webhooks.Webhook)) | | [Get a webhook](/docs/conversation/api-reference/conversation/webhooks/webhooks_getwebhook) | [get](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/WebHooksService.html#get(java.lang.String)) | | [Update an existing webhook](/docs/conversation/api-reference/conversation/webhooks/webhooks_updatewebhook) | [update](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/WebHooksService.html#update(java.lang.String,com.sinch.sdk.domains.conversation.models.v1.webhooks.Webhook)) | | [Delete an existing webhook](/docs/conversation/api-reference/conversation/webhooks/webhooks_deletewebhook) | [delete](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/WebHooksService.html#delete(java.lang.String)) | | No corresponding operation. You can use this function to authenticate information received from payloads. This function takes the `secret` parameter, which is the Secret token to be used to validate the received request. | [validateAuthenticationHeader](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/WebHooksService.html#validateAuthenticationHeader(java.lang.String,java.util.Map,java.lang.String)) | | No corresponding operation. You can use this function to deserialize payloads received from callbacks. This function takes the `jsonPayload` parameter, which is the received payload. | [parseEvent](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/v1/WebHooksService.html#parseEvent(java.lang.String)) | The `templates` (version 1) category of the Java SDK corresponds to the [Templates](/docs/conversation/api-reference/template/templates-v1/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [List all templates belonging to a project ID](/docs/conversation/api-reference/template/templates-v1/templates_listtemplates) | [list](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v1/TemplatesServiceV1.html#list()) | | [Creates a template](/docs/conversation/api-reference/template/templates-v1/templates_createtemplate) | [create](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v1/TemplatesServiceV1.html#create(com.sinch.sdk.domains.conversation.templates.models.v1.TemplateV1)) | | [Updates a template](/docs/conversation/api-reference/template/templates-v1/templates_updatetemplate) | [update](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v1/TemplatesServiceV1.html#update(java.lang.String,com.sinch.sdk.domains.conversation.templates.models.v1.TemplateV1)) | | [Get a template](/docs/conversation/api-reference/template/templates-v1/templates_gettemplate) | [get](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v1/TemplatesServiceV1.html#get(java.lang.String)) | | [Delete a template](/docs/conversation/api-reference/template/templates-v1/templates_deletetemplate) | [delete](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v1/TemplatesServiceV1.html#delete(java.lang.String)) | The `templates` (version 2) category of the Java SDK corresponds to the [Templates-V2](/docs/conversation/api-reference/template/templates-v2/) endpoint. The mapping between the API operations and corresponding methods are described below: | API operation | SDK method | | --- | --- | | [List all templates belonging to a project ID](/docs/conversation/api-reference/template/templates-v2/templates_v2_listtemplates) | [list](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v2/TemplatesServiceV2.html#list()) | | [Creates a template](/docs/conversation/api-reference/template/templates-v2/templates_v2_createtemplate) | [create](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v2/TemplatesServiceV2.html#create(com.sinch.sdk.domains.conversation.templates.models.v2.TemplateV2)) | | [Lists translations for a template](/docs/conversation/api-reference/template/templates-v2/templates_v2_deletetemplate) | [listTranslations](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v2/TemplatesServiceV2.html#listTranslations(java.lang.String,com.sinch.sdk.domains.conversation.templates.models.v2.request.TranslationListRequest)) | | [Updates a template](/docs/conversation/api-reference/template/templates-v2/templates_v2_updatetemplate) | [update](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v2/TemplatesServiceV2.html#update(java.lang.String,com.sinch.sdk.domains.conversation.templates.models.v2.TemplateV2)) | | [Get a template](/docs/conversation/api-reference/template/templates-v2/templates_v2_gettemplate) | [get](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v2/TemplatesServiceV2.html#get(java.lang.String)) | | [Delete a template](/docs/conversation/api-reference/template/templates-v2/templates_v2_deletetemplate) | [delete](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/conversation/api/templates/v2/TemplatesServiceV2.html#delete(java.lang.String)) | Requests and queries made using the Java SDK are similar to those made using the Conversation API. Many of the fields are named and structured similarly. For example, consider the representation of a Conversation API channel. One field is represented in our Java SDK, and the other is using the REST API: SDK ```Java ConversationChannel.SMS ``` REST API ```Java " \"channel\": \"SMS\"," ``` Note that the fields have similar names, and many fields in the Java SDK are rendered as enums in data models. Additionally, path parameters, request body parameters, and query parameters that are used in the API are all passed as arguments to the corresponding method. For example, consider this example in which the `get` method of `messages` is invoked: SDK ```Java var response = client.conversation().v1().messages().get("YOUR_message_id", "CONVERSATION_SOURCE"); ``` REST API ```Java var host = "https://{region}.conversation.api.sinch.com"; var projectId = "YOUR_project_id_PARAMETER"; var messageId = "YOUR_message_id_PARAMETER"; var region = "us"; var pathname = "/v1/projects/%7Bproject_id%7D/messages/%7Bmessage_id%7D"; var request = HttpRequest.newBuilder() .GET() .uri(URI.create(host + pathname )) .header("Authorization", "Basic " + Base64.getEncoder().encodeToString((":").getBytes())) .build(); var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); ``` When using the Conversation API, `message_id` would be included as a path parameter, and `messages_source` would be included as a query parameter in the JSON payload. With the Java SDK, both parameters are included as arguments in the `get` method. Response fields match the API responses. They are delivered as Java objects.