Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
123 changes: 122 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,127 @@ All notable changes to the library will be documented in this file.
The format of the file is based on [Keep a Changelog](http://keepachangelog.com/)
and this library adheres to [Semantic Versioning](http://semver.org/) as mentioned in [README.md][readme] file.

## [ [6.2.0](https://github.com/infobip/infobip-api-java-client/releases/tag/6.2.0) ] - 2025-10-27

⚠️ **IMPORTANT NOTE:** This release contains compile time breaking changes.
All changes, including breaking changes, are addressed and explained in the list bellow.
If you find out that something was not addressed properly, please submit an issue.

### Added
* Most recent feature set for:
* [Infobip Messages API](https://www.infobip.com/docs/api/platform/messages-api).
* [Infobip Voice API](https://www.infobip.com/docs/api/channels/voice).
* [Infobip SMS API](https://www.infobip.com/docs/api/channels/sms).
* [Infobip 2FA API](https://www.infobip.com/docs/api/platform/2fa).
* [Infobip Email API](https://www.infobip.com/docs/api/channels/email).
* [Infobip WhatsApp API](https://www.infobip.com/docs/api/channels/whatsapp).
* [Infobip Viber API](https://www.infobip.com/docs/api/channels/viber).
* [Infobip WebRTC API](https://www.infobip.com/docs/api/channels/webrtc-calls).
* [Infobip Moments](https://www.infobip.com/docs/api/customer-engagement/moments).
* [Infobip MMS API](https://www.infobip.com/docs/api/channels/mms).

### Changed

* **Email:**
* For `getIpPool` method response type changed from `EmailIpPoolResponse` to `EmailIpPoolDetailResponse`
* Removed `returnPathAddress` field from `EmailAddDomainRequest`, `EmailDomainResponse` model
* `/email/1/domains/{domainName}/return-path` - This endpoint has been is no longer supported in the SDK.
* Fixed `bulks` field in `EmailBulkScheduleResponse` and `EmailBulkStatusResponse`, now initialized as an empty list due to field change from optional to required
* Extended `EmailDomainResponse` model with `blocklistConfigrationLevel` field
* Extended `EmailIpDetailResponse`, `EmailIpResponse` model with `ipAddresses` field
* Fixed `messages` field in `EmailSendResponse`, now initialized as an empty list due to field change from optional to required
* Fixed `reason` field type in `EmailValidationResponse` from `String` to `EmailValidationReason`
* Fixed `risk` field type in `EmailValidationResponse` from `String` to `EmailValidationApiRisk`
* Extended `EmailWebhookTrackingPayload` model with `eventId` and `sender` field support
* JavaDoc fixes
* **MessagesApi**:
* Extended `MessagesApiDefaultMessageRequestOptions` with `messageOrdering` field support
* Extended `MessagesApiMessageBody` with `FORM`, `ORDER_REQUEST`, `ORDER_STATUS` and `TIME_PICKER` body type support
* Extended `MessagesApiMessageButton` with `DIAL_PHONE` and `SHOW_LOCATION` button type support
* Extended `MessagesApiMessageOpenUrlButton` model with `postbackData` and `openIn` field support
* Extended `MessagesApiMessageOptions` model with `transliteration` and `correlationData` field support
* Extended `MessagesApiOutboundTemplateChannel` model with `VIBER_BM` type support
* Extended `MessagesApiWebhookEventContent` model with `FORM_RESPONSE` and `PAYMENT_RESPONSE` event type support
* Extended `MessagesApiWebhookEvent` with `messageCount` and `metadata` field support
* JavaDoc fixes
* **Mms**:
* Cursor-based pagination support in `getOutboundMmsMessageLogs` function with `useCursor` and `cursor` parameters.
* Extended `MmsLogsResponse` model with `cursor` field
* JavaDoc fixes
* **Moments**:
* Fixed `FlowExceptionResponse` model with adding missing fields: `type`, `title`, `status`, `detail`, `instance`
* JavaDoc fixes
* **Sms**:
* Unified `SmsWebhookInboundReport` with the existing `SmsInboundMessage` model
* Unified `SmsWebhookInboundReportResponse` with the existing `SmsInboundMessageResult` model
* JavaDoc fixes
* **Tfa**:
* Extended `TfaCreateEmailMessageRequest`, `TfaMessage`, `TfaUpdateEmailMessageRequest` and `TfaEmailMessage` with `landingPageId` field support
* Extended `TfaStartEmailAuthenticationRequest` with `landingPagePlaceholders` field support
* JavaDoc fixes
* **Viber**:
* Cursor-based pagination support in `getOutboundViberMessageLogs` function with `useCursor` and `cursor` parameters.
* Extended `ViberLogsResponse` model with `cursor` field
* Extended `ViberMessageDeliveryReporting` with `receiveTriggeredFailoverReports` field support
* Extended `ViberOutboundFileContent` and `ViberOutboundFileContentType` with a `CAROUSEL` support
* JavaDoc fixes
* **Voice**:
* Class replaced in `updateConferenceCall` method from `CallsUpdateRequest` to `CallsUpdateCallRequest` to better reflect its specific usage
* Extended `Call`, `CalLog`, `CallRequest` models with new field: `externalId`
* Extended `CallEndpoint`, `CallRoutingEndpoint` models with `WHATSAPP` type support
* Extended `CallRoutingDestination` model with `APPLICATION` type support
* Extended `CallRecordingRequest` model with new field: `channels`
* Extended `CallRoutingPhoneEndpoint` model with new field: `ringbackGeneration`
* Extended `CallRoutingRouteResponse` model with new fields: `status` and `order`
* Extended `CallRoutingSipEndpoint` model with new field: `from`
* Extended `CallsAddExistingCallRequest` model with new fields: `role` and `customData`
* Extended `CallsAddNewCallRequest` with `role` support
* Extended `CallsMachineDetection` model with `machineDetection` support
* Extended `CallsDialogState` with `TRANSFERRING` state support
* Removed `UNKOWN` enum value from `CallsDetectionResult` enum
* Removed `creationMethod` field from `CallsFile` model
* Extended `CallsLanguage` with multiple new language options
* Extended `CallsMachineDetectionProperties` with `confidenceRating` field support
* Extended `CallsMachineDetectionRequest` with `detectionTime` field support
* Extended `CallsParticipant` with `role` field support
* Extended `CallsSearchResponse`, `CallsUpdateScenarioRequest`, `CallsUpdateScenarioResponse` model with new fields: `notifyUrl` and `notifyContentType`
* Fixed `CallsSpeechCaptureRequest` keyPhrases now are null instead of being initialized as a new LinkedHashSet to reflect field change from required to optional
* Extended `CallsTranscription` model with new fields: `customDictionary` and `advancedFormatting`
* Extended `CallsUpdateRequest`, `CallsVideoMediaProperties` model with new `blind` field support
* Extended `CallsVoiceData` with new field support: `answeredBy`
* Extended `CallsWebsocketEndpointConfigRequest.SampleRateEnum` with new rate values: `24000` and `32000`
* Extended `CallVoice` with new voices
* JavaDoc fixes
* **Number Masking**:
* Extended `NumberMaskingStatusRequest` with `machineDetectionResult` field support
* JavaDoc fixes
* **WebRtc**:
* Removed `capabilites` field from `WebRtcTokenRequestModel` to reflect the current behaviour of the endpoint
* Extended `WebRtcParticipant` with `state` and `direction` field support
* JavaDoc fixes
* **WhatsApp**:
* Extended `WhatsAppWebhookType` with new types: `INTERACTIVE_CALL_PERMISSION_REPLY` and `REACTION`
* Extended `WhatsAppVideoMessage`, `WhatsAppAudioMessage`, `WhatsAppContactsMessage`, `WhatsAppDocumentMessage`, `WhatsAppImageMessage`, `WhatsAppInteractiveButtonsMessage`, `WhatsAppInteractiveFlowMessage`, `WhatsAppInteractiveListMessage`, `WhatsAppInteractiveLocationRequestMessage`, `WhatsAppInteractiveMultiProductMessage`, `WhatsAppInteractiveOrderDetailsMessage`, `WhatsAppTextMessage`, `WhatsAppInteractiveOrderStatusMessage`, `WhatsAppStickerMessage`, `WhatsAppMessage`, `WhatsAppLocationMessage`, `WhatsAppInteractiveProductMessage`, `WhatsAppInteractiveUrlButtonMessage` models with `context` field support
* Removed `allowCategoryChange` field from `WhatsAppTemplatePublicApiRequest` model to reflect the current behaviour of the endpoint
* Extended `WhatsAppTemplateEditPublicApiRequest`, `WhatsAppDefaultUtilityTemplateApiResponse` models with `subCategory` field support
* Extended `WhatsAppTemplateDataContent` model with `orderStatus` field support
* Extended `WhatsAppSenderLimit` model with additional value (`LIMIT_2K`)
* Fixed `callbackData` field type in `WhatsAppPayment` model from `List<String>` to `Object` reflecting the current behaviour of the endpoint
* Extended `WhatsAppLanguage` with multiple new language options
* Extended `WhatsAppInteractiveUrlButtonHeaderContent` with `DOCUMENT, `IMAGE` and `VIDEO` type support
* Extended `WhatsAppInteractiveOrderUPIPGRazorpayPaymentDetails` with callbackData field support
* Extended `WhatsAppInteractiveOrderPaymentStatus` with `BRAZIL_BOLETO` status support
* Extended `WhatsAppInteractiveAllowedOrderPaymentDetails` with `BRAZIL_BOLETO` and `BRAZIL_PAYMENTS` type support
* Extended `WhatsAppDefaultTemplateStructureApiData` with `callPermissionRequest` field support
* Extended `WhatsAppButtonApiData` with `ORDER_DETAILS` and `VOICE_CALL` type support
* JavaDoc fixes

* **General**:
* Updated tests

### Removed
- Unused `EmailReturnPathAddressRequest`, `CallsCreationMethod`, `WebRtcCapabilities`, `WebhookMessageCount` and `WebRtcRecording` classes are removed

## [ [6.1.1](https://github.com/infobip/infobip-api-java-client/releases/tag/6.1.1) ] - 2025-06-20

### Added
Expand Down Expand Up @@ -586,4 +707,4 @@ In this release the infobip-api-java-client library is updated and modernized. I
### Removed
- Support for [Infobip Omni API](https://www.infobip.com/docs/api#channels/omni-failover) (to be included back in one of the next releases)

[readme]: README.md
[readme]: README.md
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Simply add the following in your project's POM file under `dependencies` tag:
<dependency>
<groupId>com.infobip</groupId>
<artifactId>infobip-api-java-client</artifactId>
<version>6.1.1</version>
<version>6.2.0</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.infobip</groupId>
<artifactId>infobip-api-java-client</artifactId>
<version>6.1.1</version>
<version>6.2.0</version>
<packaging>jar</packaging>

<name>infobip-api-java-client</name>
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/infobip/RequestFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
*/
final class RequestFactory {

private static final String USER_AGENT_HEADER_VALUE = "infobip-api-client-java/6.1.1";
private static final String USER_AGENT_HEADER_VALUE = "infobip-api-client-java/6.2.0";

private final ApiKey apiKey;
private final BaseUrl baseUrl;
Expand Down
42 changes: 13 additions & 29 deletions src/main/java/com/infobip/api/CallsApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@
import com.infobip.model.CallsStartMediaStreamRequest;
import com.infobip.model.CallsStartTranscriptionRequest;
import com.infobip.model.CallsStopPlayRequest;
import com.infobip.model.CallsUpdateCallRequest;
import com.infobip.model.CallsUpdateRequest;
import java.io.File;
import java.time.OffsetDateTime;
Expand Down Expand Up @@ -4411,7 +4412,6 @@ private RequestDefinition getCallsHistoryDefinition(
CallDirection direction,
CallState status,
OffsetDateTime startTimeAfter,
OffsetDateTime endTimeBefore,
String conferenceId,
String dialogId,
String bulkId,
Expand Down Expand Up @@ -4445,9 +4445,6 @@ private RequestDefinition getCallsHistoryDefinition(
if (startTimeAfter != null) {
builder.addQueryParameter(new Parameter("startTimeAfter", startTimeAfter));
}
if (endTimeBefore != null) {
builder.addQueryParameter(new Parameter("endTimeBefore", endTimeBefore));
}
if (conferenceId != null) {
builder.addQueryParameter(new Parameter("conferenceId", conferenceId));
}
Expand Down Expand Up @@ -4478,7 +4475,6 @@ public class GetCallsHistoryRequest {
private CallDirection direction;
private CallState status;
private OffsetDateTime startTimeAfter;
private OffsetDateTime endTimeBefore;
private String conferenceId;
private String dialogId;
private String bulkId;
Expand Down Expand Up @@ -4575,17 +4571,6 @@ public GetCallsHistoryRequest startTimeAfter(OffsetDateTime startTimeAfter) {
return this;
}

/**
* Sets endTimeBefore.
*
* @param endTimeBefore Date and time for when the call has been finished. Has the following format: &#x60;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS+ZZZZ&#x60;. (optional)
* @return GetCallsHistoryRequest
*/
public GetCallsHistoryRequest endTimeBefore(OffsetDateTime endTimeBefore) {
this.endTimeBefore = endTimeBefore;
return this;
}

/**
* Sets conferenceId.
*
Expand Down Expand Up @@ -4657,7 +4642,6 @@ public CallLogPage execute() throws ApiException {
direction,
status,
startTimeAfter,
endTimeBefore,
conferenceId,
dialogId,
bulkId,
Expand All @@ -4682,7 +4666,6 @@ public okhttp3.Call executeAsync(ApiCallback<CallLogPage> callback) {
direction,
status,
startTimeAfter,
endTimeBefore,
conferenceId,
dialogId,
bulkId,
Expand Down Expand Up @@ -8242,10 +8225,10 @@ public UpdateConferenceRequest updateConference(String conferenceId, CallsUpdate
}

private RequestDefinition updateConferenceCallDefinition(
String conferenceId, String callId, CallsUpdateRequest callsUpdateRequest) {
String conferenceId, String callId, CallsUpdateCallRequest callsUpdateCallRequest) {
RequestDefinition.Builder builder = RequestDefinition.builder(
"PATCH", "/calls/1/conferences/{conferenceId}/call/{callId}")
.body(callsUpdateRequest)
.body(callsUpdateCallRequest)
.requiresAuthentication(true)
.accept("application/json")
.contentType("application/json");
Expand All @@ -8265,14 +8248,15 @@ private RequestDefinition updateConferenceCallDefinition(
public class UpdateConferenceCallRequest {
private final String conferenceId;
private final String callId;
private final CallsUpdateRequest callsUpdateRequest;
private final CallsUpdateCallRequest callsUpdateCallRequest;

private UpdateConferenceCallRequest(String conferenceId, String callId, CallsUpdateRequest callsUpdateRequest) {
private UpdateConferenceCallRequest(
String conferenceId, String callId, CallsUpdateCallRequest callsUpdateCallRequest) {
this.conferenceId =
Objects.requireNonNull(conferenceId, "The required parameter 'conferenceId' is missing.");
this.callId = Objects.requireNonNull(callId, "The required parameter 'callId' is missing.");
this.callsUpdateRequest = Objects.requireNonNull(
callsUpdateRequest, "The required parameter 'callsUpdateRequest' is missing.");
this.callsUpdateCallRequest = Objects.requireNonNull(
callsUpdateCallRequest, "The required parameter 'callsUpdateCallRequest' is missing.");
}

/**
Expand All @@ -8283,7 +8267,7 @@ private UpdateConferenceCallRequest(String conferenceId, String callId, CallsUpd
*/
public CallsActionResponse execute() throws ApiException {
RequestDefinition updateConferenceCallDefinition =
updateConferenceCallDefinition(conferenceId, callId, callsUpdateRequest);
updateConferenceCallDefinition(conferenceId, callId, callsUpdateCallRequest);
return apiClient.execute(
updateConferenceCallDefinition, new TypeReference<CallsActionResponse>() {}.getType());
}
Expand All @@ -8296,7 +8280,7 @@ public CallsActionResponse execute() throws ApiException {
*/
public okhttp3.Call executeAsync(ApiCallback<CallsActionResponse> callback) {
RequestDefinition updateConferenceCallDefinition =
updateConferenceCallDefinition(conferenceId, callId, callsUpdateRequest);
updateConferenceCallDefinition(conferenceId, callId, callsUpdateCallRequest);
return apiClient.executeAsync(
updateConferenceCallDefinition, new TypeReference<CallsActionResponse>() {}.getType(), callback);
}
Expand All @@ -8309,12 +8293,12 @@ public okhttp3.Call executeAsync(ApiCallback<CallsActionResponse> callback) {
*
* @param conferenceId Conference ID. (required)
* @param callId Call ID. (required)
* @param callsUpdateRequest (required)
* @param callsUpdateCallRequest (required)
* @return UpdateConferenceCallRequest
*/
public UpdateConferenceCallRequest updateConferenceCall(
String conferenceId, String callId, CallsUpdateRequest callsUpdateRequest) {
return new UpdateConferenceCallRequest(conferenceId, callId, callsUpdateRequest);
String conferenceId, String callId, CallsUpdateCallRequest callsUpdateCallRequest) {
return new UpdateConferenceCallRequest(conferenceId, callId, callsUpdateCallRequest);
}

private RequestDefinition updateMediaStreamConfigDefinition(
Expand Down
Loading
Loading