Skip to content

Commit 76b0329

Browse files
authored
Merge pull request #337 from sinch/release-2.0.0
Merge release 'release-2.0.0' branch into main
2 parents cb747d4 + 70e57ed commit 76b0329

2,452 files changed

Lines changed: 68995 additions & 119665 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,6 @@ jobs:
5454
- name: Link to feature files
5555
run: |
5656
ln -s ${{ github.workspace }}/sinch-sdk-mockserver/features client/src/test/resources
57-
57+
5858
- name: Run e2e tests
5959
run: mvn -B -DskipUTs -Dspotless.check.skip=true verify --file pom.xml

.github/workflows/samples-compilation.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Samples Compilation
1+
name: Examples Compilation
22

33
on: [push]
44

@@ -18,10 +18,9 @@ jobs:
1818
- name: Building
1919
run: |
2020
mvn clean install -DskipTests=true -Dspotless.apply.skip=true -DskipUTs -DskipITs
21-
cd sample-app
22-
mvn -B clean package
23-
cd ../examples
21+
cd examples
2422
./compile.sh
23+
2524
# Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
2625
- name: Update dependency graph
2726
uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6

ARCHITECTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ This repository is composed of following directories:
55
- `core`: The core definition of models (OpenAPI contracts generated sources are based onto them)
66
- `openapi-contracts`: Open API files and dedicated sources to implement REST API calls. Sources are generated by OpenAPI generator tool and should not be modified.
77
- `client`: Sinch SDK implementation
8-
- `sample-app`: A sample application using the Sinch SDK
8+
- `examples`: Samples using the Sinch Java SDK

CHANGELOG.md

Lines changed: 312 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,312 @@
1+
# Changelog
2+
3+
All notable changes to the **Sinch Java SDK** are documented in this file.
4+
5+
> **Tag legend**
6+
> - `[feature]` — new capability
7+
> - `[fix]` — bug fix
8+
> - `[deprecation notice]` — will be removed in a future release
9+
> - `[dependency]` — third-party library update
10+
> - `[doc]` — documentation only
11+
> - `[test]` — test coverage
12+
> - `[refactor]` — internal restructuring
13+
> - `[releasing]` — release infrastructure
14+
> - `[design]` — API design change
15+
> - `[tech]` — technical improvement
16+
17+
---
18+
19+
## v2.0 – 2026-03-31
20+
21+
### Major breaking changes with major release
22+
- see [MIGRATION-GUIDE](MIGRATION-GUIDE.md#200)
23+
24+
### Chore
25+
- **[dependency]** Updated `maven-model` dependency to `3.9.14` or more recent version to fix security vulnerabilities [#8](https://github.com/sinch/sinch-sdk-java/security/dependabot/8)
26+
27+
### Conversation
28+
- **[feature]** Support `Project Settings` API
29+
- **[feature]** Support `Contacts Identity Conflicts` API
30+
- **[feature]** [Messages] Support new `direction` query parameter for `MessagesListQueryParameters`
31+
- **[feature]** [Messages] Support `listLastMessagesByChannelIdentity` API
32+
- **[feature]** [KakaoTalk] Support `COMMERCE` and `CAROUSEL_COMMERCE` channel specific message
33+
- **[feature]** [LINE] Support `NOTIFICATION_MESSAGE_TEMPLATE` channel specific message
34+
- **[deprecation notice]** [OrderDetailsSettings] [`PaymentSettings`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.7.1/com/sinch/sdk/domains/conversation/models/v1/messages/types/channelspecific/whatsapp/payment/OrderDetailsPayment.html#getPaymentSettings()) deprecated in favor of [`PaymentButtons`](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/1.7.1/com/sinch/sdk/domains/conversation/models/v1/messages/types/channelspecific/whatsapp/payment/OrderDetailsPayment.html#getPaymentButtons())
35+
36+
### Verification
37+
- **[feature]** Support `VerificationSmsDeliveredEvent` webhook events
38+
- FlashCall
39+
- **[feature]** `VerificationStartRequestFlashCall` support `interceptionTimeout` and additionalProperties
40+
- **[feature]** `VerificationStartResponseFlashCall` support additionalProperties
41+
- **[feature]** `VerificationRequestEventResponseFlashCall` support `interceptionTimeout` and additionalProperties
42+
- PhoneCall
43+
- **[feature]** `VerificationStartRequestPhoneCall` support additionalProperties
44+
- **[feature]** `VerificationRequestEventResponsePhoneCall` support additionalProperties
45+
- SMS
46+
- **[feature]** `VerificationStartResponseSms` support `codeType` and additionalProperties
47+
- **[feature]** `VerificationRequestEventResponseSms` support `codeType`, `expiry` and additionalProperties
48+
- WhatsApp
49+
- **[feature]** [BETA] Support `WhatsApp` verification method
50+
51+
### Voice
52+
- **[feature]** Support new DICE reason values
53+
54+
55+
---
56+
57+
## v1.7.1 – 2025-10-14
58+
- **[fix]** Issue #273: Fix NPE when handling 401 response without a token expired header
59+
60+
---
61+
62+
## v1.7.0 – 2025-07-16
63+
### SDK
64+
- **[dependency]** Bump Jackson dependency to '2.19.0'
65+
- **[dependency]** Bump generated sources based onto generator '7.13'
66+
- **[dependency]** Bump maven-gpg-plugin used to sign released artifacts to '1.6'
67+
- **[releasing]** Migration to replace deprecated OSSRH in favor of SonaType Central
68+
- **[test]** Activate parallel mode for unit tests
69+
70+
### Conversation
71+
- **[fix]** Specifications fixed:
72+
- `TemplateMessage.OmniTemplate` field is now requiring a `TemplateReference` with `version` field filled.
73+
- `TemplateMessage.ChannelTemplate` still use a `TemplateReference` with `version` field not required.
74+
To avoid breaking changes and namespace pollution, SDK is accepting a common `TemplateReference` instance and validation about the required `version` field won't be performed at client level by client, but will validate at backend level after having sent the request.
75+
- **[feature]** `Reason.channel_code` field added (only for supported by WhatsApp)
76+
- **[deprecation notice]** Emit a warning log onto using default region for Conversation (US). To avoid regulation issue, defaulting to US will no longer be supported in future version and defining the region will be required.
77+
- **[test]** Clean Jackson cache during unit tests
78+
79+
### Mailgun
80+
- **[feature]** `copyVersion` API based now return `version` field in place of deprecated `template` one
81+
- **[doc]** Improve Javadoc rendering by separating summary and notes
82+
- **[deprecation notice]** Emit a warning log onto using default region for Mailgun (US). To avoid regulation issue, defaulting to US will no longer be supported in future version and defining the region will be required.
83+
84+
### Numbers
85+
- **[feature]** Support Emergency Address
86+
- **[feature]** Add new API `rent(phoneNumber)` without configuration
87+
- **[feature]** Switch from 'Basic' to 'OAuth' auth
88+
- **[deprecation notice]**
89+
- [list(ActiveNumberListRequest)](https://www.javadoc.io/static/com.sinch.sdk/sinch-sdk-java/1.7.0/com/sinch/sdk/domains/numbers/api/v1/NumbersService.html#list(com.sinch.sdk.domains.numbers.models.v1.request.ActiveNumberListRequest)) replaced by [list(ActiveNumbersListQueryParameters)](https://www.javadoc.io/static/com.sinch.sdk/sinch-sdk-java/1.7.0/com/sinch/sdk/domains/numbers/api/v1/ActiveNumberService.html#list(com.sinch.sdk.domains.numbers.models.v1.request.ActiveNumbersListQueryParameters))
90+
- [searchForAvailableNumbers(AvailableNumberListRequest)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/numbers/api/v1/NumbersService.html#searchForAvailableNumbers(com.sinch.sdk.domains.numbers.models.v1.request.AvailableNumberListRequest)) replaced by [searchForAvailableNumbers(AvailableNumbersListQueryParameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/numbers/api/v1/AvailableNumberService.html#searchForAvailableNumbers(com.sinch.sdk.domains.numbers.models.v1.request.AvailableNumbersListQueryParameters))
91+
- [list(AvailableRegionListRequest)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/numbers/api/v1/AvailableRegionService.html#list(com.sinch.sdk.domains.numbers.models.v1.regions.available.request.AvailableRegionListRequest)) replaced by [list(AvailableRegionsListQueryParameters)](https://www.javadoc.io/doc/com.sinch.sdk/sinch-sdk-java/latest/com/sinch/sdk/domains/numbers/api/v1/AvailableRegionsService.html#list(com.sinch.sdk.domains.numbers.models.v1.regions.request.AvailableRegionsListQueryParameters))
92+
- **[refactor]** Voice configuration RTC is optional onto requests. No effect at SDK interface level
93+
- **[refactor]** Move to facade pattern and consume APIs from generator
94+
95+
### SMS
96+
- **[doc]** Improve Javadoc rendering by separating summary and notes
97+
- **[deprecation notice]** Emit a warning log onto using default region for SMS (US). To avoid regulation issue, defaulting to US will no longer be supported in future version and defining the region will be required.
98+
99+
### Voice
100+
- **[test]** Extend end-to-end tests against `notify`
101+
- **[feature]** Support SVAML `connectStream` action
102+
- **[feature]** Support `asynch` field for `amdRequest`
103+
- **[feature]** Define two new values for `AnsweringMachineDetection.Reason` enum
104+
105+
---
106+
107+
## v1.6.0 – 2025-04-23
108+
109+
### SDK
110+
- **[feature]** Lazy HTTP client initialization until really required
111+
112+
### Cross domains
113+
- **[feature]** Relax domains init for Webhooks when credentials are not required
114+
- **[feature]** Validation against missing required property at protocol level
115+
116+
### Conversation
117+
- **[fix]** `CardMessage.media_message` is now of `MediaMessage` type
118+
- **[feature]** New `ListMessage.media` field is supported
119+
- **[feature]** New SG (Singapore) country defined for WhatsApp order payment details
120+
- **[feature]** New `ConversationChannelCredentials.credential_ordinal_number` field is supported
121+
- **[feature]** New `LineEnterpriseCredentials` is supported
122+
- **[feature]** New `LineCredentialsField.isDefault` field is supported
123+
- **[feature]** New `SendMessageRequest.message_content_type` is supported (enum of `MessageContentType`)
124+
- **[feature]** New `ChannelSpecificMessage` classes for WhatsApp:
125+
- `OrderDetails`
126+
- `OrderStatus`
127+
- **[deprecation notice]** `CardMessageMedia` class is deprecated in favor of shared `MediaMessage`
128+
129+
### Mailgun as PREVIEW features
130+
131+
- **[feature]** Support "Emails"
132+
- **[feature]** Support "Templates"
133+
134+
### SMS
135+
136+
- **[fix]** `contentType` VS `content_type` JSON field name for `MediaMessageBodyDetails` at protocol level
137+
- **[fix]** Body requests defined as required at protocol level
138+
- **[fix]** `UpdateBinaryRequest.udh` field is required at protocol level
139+
- **[feature]** `DryRunPerRecipientDetails.encodingEnum` defined as an enum
140+
- **[feature]** List batches query parameters is accepting a list from values of code
141+
- **[deprecation notice]** List batches query parameters accepting a single from value (replaced by function above)
142+
- **[deprecation notice]** `DryRunPerRecipientDetails.encoding` is deprecated in favor of `DryRunPerRecipientDetails.encodingEnum`
143+
144+
### Voice
145+
146+
- **[feature]** Define `AnsweringMachineDetection` used by `AnsweredCallEvent` and `NotificationEvent`
147+
- **[feature]** `conferenceId` field is supported by
148+
- `AnsweredCallEvent`
149+
- `DisconnectCallEvent`
150+
- `IncomingCallEvent`
151+
- `NotificationEvent`
152+
- `PromptInputEvent`
153+
- **[feature]** `NotificationEvent` support `destination` and `amd` fields
154+
- **[deprecation notice]** `AnsweredCallEventAnsweringMachineDetection` is replaced by `AnsweringMachineDetection`
155+
- **[deprecation notice]** Following backend endpoint deprecation `applications.queryNumber` is deprecated
156+
157+
---
158+
159+
## v1.5.1 – 2025-03-04
160+
### Conversation
161+
- **[fix]** `CardMessage`
162+
- `CardMessage.media` field is of `MediaMessage` type (see Javadoc)
163+
- `CardMessageMedia` class is deprecated (see Javadoc)
164+
165+
---
166+
167+
## v1.5.0 – 2025-02-12
168+
169+
### Chore
170+
- **[dependency]** Updated Jackson dependency to jackson-jakarta-rs-providers v2.18.2
171+
172+
### SMS
173+
- **[feature]** Versioned access to SMS services
174+
- **[deprecation notice]** Un-versioned access to SMS services (see SMS migration guide)
175+
176+
### Conversation
177+
- **[fix]** Channel specific message (Messenger / FLOWS) fix for serialization/de-serialization
178+
- **[fix]** List `ChoiceItem.media` field fix for serialization/de-serialization
179+
180+
### Numbers
181+
- **[deprecation notice]** Un-versioned access to Numbers services (see Numbers migration guide)
182+
183+
### Verification
184+
- **[deprecation notice]** Un-versioned access to Verification services (see Verification migration guide)
185+
186+
### Voice
187+
- **[deprecation notice]** Un-versioned access to Voice services (see Voice migration guide)
188+
189+
---
190+
191+
## v1.4.0 – 2024-11-06
192+
193+
### Voice
194+
195+
- **[feature]** Support V1 design
196+
- **[feature]** Follow specification update for SVAML `PlayFiles.locale`, field is no longer required
197+
- **[fix]** Webhooks callbacks validation use case-insensitive headers (`validateAuthenticationHeader`)
198+
- **[test]** Extend tests coverage (introduced end-to-end tests)
199+
200+
### Numbers
201+
- **[feature]** Specification update for `VoiceConfiguration.scheduledProvisioning` defined as readOnly
202+
- **[feature]** Specification update for `SmSConfiguration.scheduledProvisioning` defined as readOnly
203+
204+
---
205+
206+
## v1.3.1 – 2024-09-30
207+
### SMS
208+
- **[fix]** Enable list of parameters grouped by duplicated keys
209+
210+
---
211+
212+
## v1.3.0 – 2024-09-27
213+
### Core
214+
215+
#### Generated sources
216+
- **[fix]** Generated sources with OptionalValue getter: guard against uninitialized value
217+
- **[feature]** Contains serializer/deserializer to be used for delegation pattern
218+
- **[feature]** Enhanced javadoc content
219+
220+
#### Versioning
221+
- **[feature]** Store SDK related information within sources
222+
223+
### Conversation
224+
- **[feature]** Support Conversation API
225+
226+
### Numbers
227+
- **[feature]** Helper function for webhook authentication header
228+
- **[feature]** `readOnly` fields are no longer sent over network
229+
230+
### SMS
231+
- **[feature]** Align with updated specs for DryRun
232+
233+
### Verification
234+
- **[fix]** Enforce webhooks validation logic for empty or missing `authorization` header
235+
236+
---
237+
238+
## v1.2.4 – 2024-09-30
239+
### SMS
240+
- **[fix]** Enable list of parameters grouped by duplicated keys
241+
242+
---
243+
244+
## v1.2.3 – 2024-09-04
245+
### Verification (SMS)
246+
- **[feature]** Support additional properties onto Start verification by SMS
247+
248+
---
249+
250+
## v1.2.2 – 2024-08-19
251+
- **[fix]** UTF-8 encoding for body payloads.
252+
253+
---
254+
255+
## v1.2.1 – 2024-07-24
256+
### Numbers
257+
- **[fix]** Add missing `WebHooksService.validateAuthenticationHeader` function for Numbers
258+
259+
---
260+
261+
## v1.2.0 – 2024-07-11
262+
263+
Starting with version `1.2`, `Numbers` domain now support versioned access by using the `v1()` API calls.
264+
The existing non-versioned services will no longer be updated with new features/fields.
265+
266+
### Numbers
267+
- **[design]** New versioned service simplified access to available or active: APIs are accessible directly under `v1()`
268+
- **[feature]** FAX & EST number's configuration. The `VoiceConfiguration` and `ScheduledVoiceProvisioning` models have been updated to reflect the "Unified Numbers" API updates: they now hold values for Fax and Elastic SIP Trunking configuration (respectively with the properties `serviceId` and `trunkId`).
269+
270+
### Verification
271+
- **[doc]** Error message related to invalid configuration (credentials) fixed
272+
273+
---
274+
275+
## v1.1.0 – 2024-06-28
276+
With version `1.1` we are moving to support versioned domain access.
277+
278+
Starting with the `Verification` domain, you can access services by using the `v1()` API calls.
279+
The existing non-versioned services will no longer be updated with new features/fields.
280+
281+
### Verification
282+
- **[feature]** [Design] Non-versioned `Verification` domain is split into dedicated Start and Report new versioned services
283+
284+
- **[feature]** Synchronization with documentation terms
285+
- `Callout` related fields and APIs are now named Phone Call
286+
- `Seamless` related fields and APIs are now named Data
287+
- **[feature]** Start Verification
288+
- `VerificationStartRequestSms`
289+
- Support `Accept-Language` option
290+
- Support `code type` option
291+
- Support `expiry` option
292+
- `VerificationStartRequestPhoneCall`
293+
- Support `speech` option
294+
- `VerificationStartResponseData`
295+
- **[fix]** `targetUri` field added
296+
- **[feature]** Verification Report
297+
- **[fix]** `VerificationReportResponse`: Report service no longer returns a common status response shared with status service, but a dedicated verification report response.
298+
299+
- **[feature]** Webhooks
300+
- **[deprecation notice]** `VerificationRequestEvent.acceptLanguage` field is deprecated
301+
302+
- **[tech]** Logs
303+
- Reduce logging severity related to phone number not compliant with E164 format
304+
305+
---
306+
307+
## v1.0.0 – 2024-04-18
308+
- **[feature]** Support Numbers API (SDK doc)
309+
- **[feature]** Support SMS API (SDK doc). Support both unified credentials (projectId) and service planId
310+
- **[feature]** Support Verification API (SDK doc)
311+
- **[feature]** Support Voice API (REST API)
312+
- **[doc]** Online javadoc

0 commit comments

Comments
 (0)