Skip to content

Latest commit

 

History

History
387 lines (320 loc) · 29.6 KB

CHANGELOG.md

File metadata and controls

387 lines (320 loc) · 29.6 KB

Change Log of infobip-api-java-client

All notable changes to the library will be documented in this file.

The format of the file is based on Keep a Changelog and this library adheres to Semantic Versioning as mentioned in README.md file.

[ 5.1.0 ] - 2024-12-16

Added

[ 5.0.0 ] - 2024-12-06

🎉 NEW Major Version of infobip-api-java-client.

⚠️ 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 SMS API
      • Introduced /sms/3/messages (V3) replacing the /sms/2/text/advanced (V2) and /sms/2/binary/advanced (V2) endpoints.
      • Introduced /sms/3/reports (V3) replacing /sms/1/reports (V1) endpoint.
      • Introduced /sms/3/logs (V3) replacing /sms/1/logs (V1) endpoint.
    • Infobip Email API
    • Infobip Voice API

Changed

  • Fixes and changes
    • Introduced the new SmsMessage class to replace SmsTextualMessage and SmsBinaryMessage, providing a unified structure for SMS messaging.
    • Added a content field within SmsMessage to define the message content. This supports both textual and binary messages, which can be created using SmsTextContent or SmsBinaryContent, respectively.
    • Unified request classes by replacing SmsAdvancedTextualRequest and SmsAdvancedBinaryRequest with the new SmsRequest class.
    • Consolidated sending functions: use sendSmsMessages instead of the sendSmsMessage and sendBinarySmsMessage functions.
    • Changed 'sentAt', 'doneAt' field type in MmsReport from String to OffsetDateTime since it didn't correspond to the state of the endpoint.
    • Across all voice models, the 'applicationId' field has been removed and replaced with the 'platform' field, as it better reflects the state of the endpoint.
    • Removed delivery time window configuration classes (SmsDeliveryTimeWindow, MmsDeliveryTimeWindow, ViberDeliveryTimeWindow, CallRoutingAllowedTimeWindow, CallsDeliveryTimeWindow, SmsDeliveryTimeWindow, CallsTimeWindow) in favor of a unified class: DeliveryTimeWindow
    • Removed delivery time configuration classes (SmsDeliveryTimeFrom, SmsDeliveryTimeTo, MmsDeliveryTime, ViberDeliveryTime, CallsTimeWindowPoint, WebRtcTimeOfDay, CallRoutingAllowedTimeFrom, CallRoutingAllowedTimeTo, WebRtcTimeOfDay) in favor of a unified class: DeliveryTime
    • Removed URL options configuration classes (MessagesApiUrlOptions, ViberUrlOptions, WhatsAppUrlOptions) in favor of a unified class: UrlOptions
    • Removed platform configuration class (ViberPlatform, MessagesApiPlatform) in favor of a unified class: Platform
    • Removed TurkeyIys options configuration classes (MessagesApiTurkeyIysOptions, ViberTurkeyIysOptions, SmsTurkeyIysOptions) in favor of a unified class: TurkeyIysOptions
    • Removed delivery day enumeration classes (SmsDeliveryDay, MmsDeliveryDay, CallsDeliveryDay, CallRoutingAllowedDay) in favor of a unified class: DeliveryDay
    • Removed recipient type enumeration classes (SmsIysRecipientType, ViberRecipientType, MessagesApiRecipientType) in favor of a unified class: IysRecipientType
    • Removed validity period configuration classes (ViberValidityPeriod, MessagesApiValidityPeriod) in favor of a unified class: ValidityPeriod
    • Removed validity period time unit enumeration classes (ViberValidityPeriodTimeUnit, MessagesApiValidityPeriodTimeUnit) in favor of a unified class: ValidityPeriodTimeUnit

[ 4.4.0 ] - 2024-11-19

⚠️ 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

Changed

[ 4.3.2 ] - 2024-08-22

Added

  • Added mock tests to verify the correctness of request payloads and response handling.
  • Added awaitility and wiremock test dependencies.
  • snyk.yml workflow, which serves the purpose of identifying and addressing dependency vulnerabilities in the project.
  • sonar.yml workflow to analyze the source code, enhancing code quality and maintainability.
  • git-build-hook-maven-plugin plugin into the project, providing support for Git hooks.
  • pre-commit.sh hook, which automatically executes mvn spotless:apply prior to each commit, ensuring code formatting consistency.

Changed

  • Bumped jackson version to 2.17.0
  • Bumped slf4j-api version to 2.0.16
  • Bumped junit-jupiter version to 5.11.0
  • Bumped guava version to 33.3.0-jre
  • Bumped maven-gpg-plugin version to 3.2.5
  • Bumped spotless-maven-plugin version to 2.43.0

[ 4.3.1 ] - 2024-06-05

Added

Changed

[ 4.3.0 ] - 2024-03-19

⚠️ 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

Changed

  • Removed classes and unified structures
    • Removed basic url security configuration classes (CallsBasicUrlSecurityConfig, CallRoutingBasicUrlSecurityConfig) in favor of a unified class: BasicSecurityConfig
    • Removed hmac algorithm class (CallsHmacAlgorithm) in favor of a unified class: HmacAlgorithm
    • Removed hmac url security configuration classes (CallRoutingHmacUrlSecurityConfig, CallsHmacUrlSecurityConfig) in favor of a unified class: HmacSecurityConfig
    • Removed url security configuration classes (CallRoutingUrlSecurityConfig, CallsUrlSecurityConfig) in favor of a unified class: SecurityConfig
  • Fixes and changes
  • Documentation
    • Fixed Javadoc.

Removed

  • Models for Receive WhatsApp Deleted Reports webhook since it is no longer part of Infobip's product stack.
  • Unused model classes

[ 4.2.0 ] - 2024-03-07

⚠️ IMPORTANT NOTE: This release contains changes that are not compatible with Infobip HTTP API. Therefore, it is considered broken. We strongly advise to avoid using it. We are working on a new version. In the meantime, please use 4.1.2.

[ 4.1.2 ] - 2024-03-07

Fixed

  • Issue that caused the number of query parameters for 'bulkId' & 'messageId' to be squared when making getOutboundSmsMessageLogsDefinition call in SmsApi.
  • Issue that caused the number of query parameters for 'sender' to be squared when making getWhatsappSendersQualityDefinition call in WhatsAppApi.

[ 4.1.1 ] - 2024-01-03

Added

  • guava dependency to tag early-access endpoints with @Beta annotation.
  • Most recent Infobip WhatsApp API feature set.

Changed

  • Expanded WhatsAppTemplateDataContent model with additional field supporting WhatsAppTemplateCarouselContent that the API might return.
  • Early access endpoints in WhatsAppApi are tagged with @Beta annotation
  • Fixed Javadoc.

[ 4.1.0 ] - 2023-12-20

⚠️ 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

Changed

  • Removed classes and unified structures
    • Removed pagination classes (CallsPageInfo, WebRtcPageInfo) in favor of a unified class: PageInfo
    • Removed status-defining classes for messages by products (EmailStatus, MmsStatus, SmsStatus) and introduced a unified class: MessageStatus
    • Removed price-defining classes for messages by products (EmailPrice, MmsPrice, SmsPrice, EmailWebhookPrice) and replaced with a unified class: MessagePrice
    • Removed error-defining classes for query execution by different products (EmailReportError, MmsError, SmsError) and introduced a unified class: MessageError
  • Fixes and changes
    • Expanded ApiExceptionDetails model with additional fields supporting enriched error responses that the API might return.
    • Changed templateId field type from Integer to Long in EmailApi's SendEmailRequest class because of reported issue.
    • Updated WhatsAppCategory enumeration values based on report and reported issue.
    • Updated CallsErrorCode enumeration values to reflect changes on Hangup endpoint.
    • Updated ViberValidityPeriodTimeUnit enumeration values since 'DAYS' is no longer supported, use 'HOURS' instead.
    • Changed 'context' field name in CallsApplicationTransferRequest to 'customData'.
    • Changed 'days' field type in CallsDeliveryTimeWindow from List to Set to avoid duplicates.
    • Removed 'type' field in CallsDtmfTermination since it is not supported on the API side.
    • Removed 'stopOn' field in CallsSayRequest since it is not supported on the API side.
    • Removed 'sipTrunkGroupId' field in CallsSipEndpoint since it is not supported on the API side.
    • Removed 'notifyContentType' field in MmsAdvancedMessage since it is not supported on the API side.
    • Removed 'sendingSpeedLimit' field in MmsAdvancedRequest since it is not supported on the API side.
    • Fixed Viber webhook report models.
    • Changed 'results' field name in ViberWebhookReportResponse to reports.
    • Replaced 'ios' and 'android' fields in WebRtcPushConfigurationResponse with 'androidConfigured' and 'iosConfigured' since they didn't correspond to the state of the endpoint.
    • Changed 'structure' field type in WhatsAppTemplateApiResponse from 'WhatsAppTemplateStructureApiData' and 'WhatsAppDefaultTemplateStructureApiData'.
    • Changed WhatsAppTemplatePublicApiRequest by making it an abstract class, serving as a base for WhatsAppAuthenticationTemplatePublicApiRequest, WhatsAppDefaultMarketingTemplatePublicApiRequest, WhatsAppDefaultUtilityTemplatePublicApiRequest.
  • Documentation
    • Fixed Javadoc.
  • Dependencies
    • Bumped slf4j-api version to 2.0.9
    • Bumped jackson version to 2.15.2
    • Bumped okhttp version to 4.12.0

Removed

  • Unused model classes

Deprecated

[ 4.0.0 ] - 2023-03-01

🎉 NEW Major Version of infobip-api-java-client.

⚠️ IMPORTANT NOTE: This release contains 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

  • Support for Infobip MMS API.
  • Support for Infobip Voice API.
  • Support for Infobip WebRTC API.
  • Support for Infobip Viber API.
  • Most recent Infobip SMS API feature set.
  • Most recent Email feature set.
  • Most recent WhatsApp feature set.
  • Tests for the static parts of the auto-generated code. There are multiple tests phases implemented in our auto-generation pipeline. A part of the tests is now included as a library source code.
  • Base URL abstraction.
  • Api Key abstraction.
  • Deprecation notice log if deprecated or gone endpoints are used (slf4j-api dependency).
  • Snyk and Java version badges to README.

Changed

  • The library now requires Java 11 or above.
  • OkHttp dependency was bumped to version 4.10.0.
  • From this version, an ApiClient instance must be constructed and configured using the Builder pattern:
        ApiClient apiClient = ApiClient.forApiKey(givenApiKey)
              .withBaseUrl(givenBaseUrl)
              .withHttpClient(givenHttpClient)
              .withReadTimeout(givenReadTimeoutInSeconds)
              .withTempDirectoryPath(givenTempDirPath)
              .build();
    
    The additional OkHttp client configuration was removed from the library. Please check the Removed section for details.
  • API classes were refactored in a way that all functionalities are grouped under the same product. For example, SendSmsApi, ScheduledSmsApi and ReceiveSmsApi classes are replaced with a single SmsApi class.
  • API class methods that trigger an API call were rewritten using a fluent style where all required parameters must be passed to a request builder factory method. On the other hand, optional parameters may be passed using a separate request builder methods. The result can be fetched using execute or executeAsync methods. That allows us to add optional parameters without introducing a breaking change to the library. For example, in the previous version, to send a TFA pin code, we could use something like this:
        TfaStartAuthenticationResponse response = tfaApi.sendTfaPinCodeOverSms(false, request);
    
    In the new version, the following pattern applies:
        TfaStartAuthenticationResponse sendCodeResponse = tfaApi
              .sendTfaPinCodeOverSms(request)
              .ncNeeded(false)
              .execute();
    
  • Jackson (version 2.14.2) serialization library is used instead of Gson. The JSON serialization utility now uses a preconfigured Jackson's ObjectMapper. Also, the support for InputStream serialization was added.
  • All maven plugins were bumped to the most recent version. Both unneeded plugins and the obsolete configuration were removed.
  • The API request and response processing was rewritten to increase maintainability and usability.
  • The ApiException class was refactored to have fluent getters and a single accessible Builder.
  • From this version, the error response body is deserialized and stored in details property of the ApiException class.
  • The palantir-java-format is now used instead of google-java-format to have the formatting closer to our internal coding style. See the Spotless README for details.
  • Some products like Email and WhatsApp contain a few breaking changes since a new version of a few of the API endpoints was released. If you have issues when migrating the existing implementation, please check the official API documentation or submit an issue.

Removed

  • Basic, IBSSO Token Header and client credentials grant type OAuth2 authentication methods. Use API Key Header authentication method instead. The API Key should be injected into the ApiClient instance through the newly introduced forApiKey factory method. Examples can be found in the README.
  • Configuration utility class. Having static default configuration is error-prone and provides an unnecessary overhead. An ApiClient instance should always be injected in the given API class.
  • SSL settings configuration methods from the ApiClient. If you need to configure custom SSL related settings (custom client keys, disabled CA certificate and hostname verification, etc.), configure them on the OkHttpClient instance directly and pass the instance to the ApiClient using withHttpClient builder method.
  • Date format customization methods from the ApiClient. Only the default Infobip date format should be used. The date formatter instance to be used is available through the JSON class.
  • Header and cookie manipulation through ApiClient public interface. However, it can still be achieved using OkHttp interceptors if needed. Feel free to configure an OkHttpClient instance with appropriate interceptors and pass the instance to the ApiClient using withHttpClient builder method.
  • Explicit debugging option for ApiClient. HttpLoggingInterceptor can always be included by providing a preconfigured HTTP client as described above.
  • Explicit gzip support for requests. The support should be provided by the client itself like explained here.
  • Unused generated classes.
  • Default network interceptor used for tracking upload and download progress. The functionality can be re-added by using the official OkHttp recipe.
  • ...WithHttpInfo methods from API client classes. If an additional info like response headers or the response code is needed, the executeAsync method should be used. The required information is injected in the callback.
  • ...buildCall methods from API client classes. The OkHttp Call abstraction can be obtained by using the executeAsync method. We don't allow calling the API without processing the response internally anymore.

[ 3.2.0 ] - 2022-01-19

Added

Changed

  • Email sending API to match the latest version of the API.
    • Signature changed: getEmailLogs()
  • Renamed some email API models to be consistent across multiple products
    • EmailError -> EmailReportError
    • EmailLogsResult -> EmailLogsResponse

Fixed

  • Minor SMS API changes (some field became readonly)
  • Improved Javadoc comments

[ 3.1.0 ] - 2021-06-16

Added

  • Support for Infobip Email API
  • email.md which contains basic example of Email API usage

[ 3.0.1 ] - 2021-02-16

Changed

  • README.md which now contains more details about supported authentication methods & updated examples of library usage for webhooks

Removed

  • Unused model classes
  • Unused utility classes
  • Unused dependency

Fixed

[ 3.0.0 ] - 2021-02-03

🎉 NEW Major Version of infobip-api-java-client.

⚠️ IMPORTANT NOTE: This release contains breaking changes!

In this release the infobip-api-java-client library is updated and modernized. It is auto-generated and completely different from the previous version.

Added

Changed

  • Models, structure, examples, etc. for Infobip SMS API
  • Library dependencies
  • README.md which contains necessary data and examples for quickstart as well as some other important pieces of information on versioning, licensing, etc.

Removed

  • Support for Infobip Omni API (to be included back in one of the next releases)