All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- HTTP: Fixed stale pooled connection reuse by adding connection TTL, idle/expired eviction and inactivity validation to reduce intermittent
Connection reseterrors when reusing long-livedVonageClientinstances
- No changes, had to create to trigger a rebuild due to build system problem
- Exceptions: Added
getRawRequest()andgetRawResponse()methods toVonageApiResponseExceptionfor debugging API errors - Messages: RCS TTL is now publicly settable on all RCS message types, with validation between 300 and 2592000 seconds
- Video: Added post-call transcription options
- Video: Added connections list calls
- Verify v2: Added support for
template_idparameter
- Added deprecation notice for Java 8/1.8 users. Version 9.x will be the final version to support Java 8.
- Accounts: Internally switched to supporting only Basic Authorization header authentication
- Conversion: Internally switched to supporting only Basic Authorization header authentication
- Identity Insights: Added new API, covers Formatting, SimSwap, Original and Current Carrier checks
- Messages: Added
trusted_recipientto SMS, MMS, and RCS - Messages: Added support for Typing Indicators in WhatsApp
- Messages: Added
pool_idsupport - Number Insights: Internally switched to supporting only Basic Authorization header authentication
- Verify v1: Internally switched to supporting only Basic Authorization header authentication
- Verify: Deprecates the
sandboxparameter - Voice: Websocket Connections can now include custom authorization headers
- Voice: Answer Webhook adds support for SIP User-To-User incoming headers
- Voice: Add support for
shakensigning on calls - Voice: Added support for
sip_codeon incoming event webhooks - Voice: Added support for Transfer NCCO action
- Voice: Added support for Wait NCCO action
- Added native RCS message types (card, carousel) and suggestions support to eliminate need for custom message type
- MMS caption length increased on 3000
- Added new RCS param for messages to set the category
- Added additional whatsapp information for deserializing incoming messages that contain pricing.
- Added
trusted-numberto SMS
- Added missing supported languages (Lithuanian and Marathi) to
TextToSpeechLanguageenum
- Fixed typo for verify to correct the call to next workflow
- Added
bidirectionalflag for websockets to support the new Bi-Directional Audio Connector
- Fixed
CustomClientreturn type validation (normalise toVoidif unknown) - Deprecated Verify v1, SIM Swap and Number Verification APIs
- Added support for native failover in Messages API
- Added support for setting additional request headers in
HttpConfig - Allow setting
HttpClientandHttpConfigonHttpWrapper - Bumped Jackson version to 2.19.0
- Added custom HTTP requests support via
CustomClient(see README for details)
- Removed deprecations (classes, methods, constructors, packages etc.)
- Removed Meetings, Proactive Connect and Number Insight v2 APIs
- Removed Pricing API (was contained in
com.vonage.client.account.*) - Refactored
RequestSigningandcom.vonage.client.auth.hashutils.*classes (mostly internal changes) - Standardised handling of query parameters using
AbstractQueryParamsRequestclass - Removed
public static fromJson(String)methods from all non-webhook classes - Moved most enums from inner classes to their own file / class
- Standardised enum parsing (see
Jsonable.fromString(String, Class<E>))- Removed
UNKNOWNenums where it is not an actual value - Invalid enums now return
nullinstead of throwingIllegalArgumentExceptionto facilitate parsing response data
- Removed
- Unified
Psd2Request.WorkflowandVerifyRequest.Workflowenums (moved to upper level) - Removed WhatsApp Interactive (Codeless) workflow support in Verify v2 API
- Refactored Number Insight API to properly support Advanced insights
- Removed
asyncparameter fromAdvancedInsightRequest - Added
AdvancedAsyncInsightRequestandAdvancedAsyncInsightResponseclasses - Made
callbackparameter mandatory inAdvancedAsyncInsightRequest.Builder - Added
InsightClient.getAdvancedAsyncNumberInsight(AdvancedInsightAsyncRequest)method
- Removed
- Refactored Application API capabilities to make adding webhooks more declarative and correct by construction
- All capabilities now have explicit methods for specifying valid webhook types
addWebhookandremoveWebhookmethods have been removed -nullparameters are now used to remove webhooks
- Added
Application.builder(String)as an option for updating an application by ID from scratch - Removed
StreamCompositionLayout.Builder- replaced by three valid presets as static methods instead - Added
Verify2Client#isValidVerificationCode(UUID, String)method to simplify checking verification codes - Renamed
com.vonage.client.voice.EndpointtoCallEndpoint - Renamed
com.vonage.client.voice.ncco.EndpointtoConnectEndpoint - Refactored
CallInfoPageto be aligned with other HAL responses (now extendsHalPageResponse)- Now returns the embedded calls directly as a list rather than array
- Added
getprefix toVideoStreamandHlsSettingsaccessors NumbersClient#listNumbersnow returnsList<OwnedNumber>instead ofListNumbersResponseNumbersClient#linkNumbernow assigns the number to the application by ID- Use stronger data types in responses:
Applicationidnow usesUUIDOwnedNumberfeaturesuses enumCallInforateandpricenow useDoubleCallInfoandCalluseInstantfor timestampsWebSocketEndpointcontentTypeusesWebSocket.ContentTypeenumCallanswerMethodnow usesEventMethodenumCallEndpointandConnectEndpointtypenow usesEndpointTypeenumListUsersRequest.SortOrderuses enum fromcom.vonage.client.common.SortOrdercom.vonage.client.messages.MessageTypereplaced bycom.vonage.client.common.MessageTypeenum
- Removed
brandlength limit in Verify v2 request
- Added
quantizationParameterto Video Archive - Fixed custom event type parsing and creation in Conversation API
- Added support for the following event types in Conversation API:
member:invitedmember:joinedmember:leftrtc:hangupsip:hangup
- Added start / stop text-to-speech and audio stream endpoints to Conversation API
- Exposed
StreamPayloadin Voice API and added Builder - Added builder and custom headers for
MemberChannelin Conversation API - Added support for the following event types in Conversation API:
audio:dtmfaudio:record:doneaudio:speaking:offaudio:speaking:onmember:mediartc:answerrtc:answeredrtc:ringingrtc:statusrtc:transfersip:amd_machinesip:answeredsip:machinesip:ringing
- Added MMS Text, File and Content outbound message types
- Added
getFileNameandgetFileCaptiontocom.vonage.client.messages.InboundMessage
- Added user/domain name support to
com.vonage.client.voice.ncco.SipEndpoint - Improved Voice API documentation
- Deprecated primitive wrapper methods in NCCO action builders
- Deprecated singleton URL / Endpoint array/collection methods in Voice API
- Refactored
com.vonage.client.voice.CallsFilterto extendHalFilterRequest- Deprecated
java.util.Date-based methods getOrder()returns acom.vonage.client.common.SortOrderinstead ofCallOrder
- Deprecated
- Made constructors for response objects in Voice API package-private
- Basic auth header in Number Insight v1 requests instead of query parameters
- Added
disconnected_byenum tocom.vonage.client.voice.EventWebhook - Changed
AnswerWebhook#getUuid()return type to String - Updated Voice
Calldocumentation
- Removed mandatory
fromparameter for event creation in Conversation API - Re-added URL domain validation in
VoiceClient.downloadRecordingRaw - Bumped JWT library version to 2.0.1
- Added
commons-codecto runtime classpath to fix WS-2019-0379 warning
- Added logging for requests & responses based on
java.util.logging - Improved SMS API documentation
- Deprecated Number Insight v2 / Fraud Score API
- Deprecated
real_time_datain Number Insight API - Minor internal refactoring based on code coverage improvements
- Removed hardcoded domain validation from
VoiceClient.downloadRecordingRaw
- Added proxy support to
HttpConfig.Builder - Basic auth in header instead of query params in SMS API
- Close HTTP responses to prevent resource leaks
- Added
RedactResponseExceptionand deprecatedVonageBadRequestException - Added
maxBitratetocom.vonage.client.video.Archive - Added varargs
removeCapabilitiesmethod toApplication.Builder
- Added support for Verify custom templates
- Added
network_apiscapability to Application API - Added
modeproperty toInputActionNCCO - Refactored
InputAction.Builderand added constructor validation - Added
endpoint_typetoAnswerWebhook - Added
@JsonCreatorannotation to webhook classes'fromJson(String)method - Added
app_idtocom.vonage.client.numbers.OwnedNumber - Fixed Viber Video message TTL field being set incorrectly
- Fixed incorrect serialisation of outbound WhatsApp Location message
- Added end-to-end encryption support for Video sessions
- Added
leg_persistence_timeto Application Voice capability - Added
signed_callbacksto Application RTC capability - Added
namefield tocom.vonage.client.video.RenderResponse
- Added custom user agent property setting to
HttpConfig - Added RCS channel to Messages API
- Added
ackInboundMessageandrevokeOutboundMessagemethods toMessagesClient - Fixed
viber_servicedeserialization incom.vonage.client.messages.Channel - Added
thumbnail_url,video_url,image_url,ctwa_clidandmedia_typeto WhatsAppReferral - Added
_self.hrefproperty tocom.vonage.client.messages.InboundMessage - Added
reactionandbuttontypes to WhatsApp messages - Added
contentproperty toInboundMessagefor MMS messages - Removed
com.vonage.client.messages.internal.Text - Factored out common properties & validation for text, media and custom messages into
MessageRequest - Added interfaces for text and media
MessageRequestbuilders
- Added
targetApiKeyfor buy & cancel number endpoints - Added Builder for
UpdateNumberRequestand deprecated setters - Added
app_idproperty toUpdateNumberRequest(replacesmessagesCallbackValue) - Added
applicationIdandhasApplicationtoListNumbersFilter - Builders for
ListNumbersFilterandSearchNumbersFilter - Improved / added missing documentation in Numbers API
- Deprecated setters in Numbers API
statenot included in Number Verification auth URL if null- Deprecated Meetings API
- Fixed UUID validation in
ConversationAction.Builder#canHearandcanSpeak- Changed signature of
canHearandcanSpeakmethods to return Strings instead of UUIDs
- Changed signature of
- Validation for
endpoint,limitandtimeOutinConnectAction - Added Builder to
DtmfSettingswith validation
- Made
com.vonage.client.conversations.GenericEventpublic - Bumped
commons-codecandcommons-lang3versions
- Refactoring to accommodate using v2.0.0 of Vonage JWT library
- Made
timestampoptional in Conversion API - Added response object to
Verify2Client.checkVerificationCode - Fixed
SpeechSettings.Language.NEPALI(de)serialisation fromRandomNumbertrue iffromis not specified inCall.Builder- Fixed
com.vonage.client.voice.EventWebhookdeserialisation issuegetCallUuid()andgetRecordingUuid()now return String instead of UUID
- Fixed parsing issue in
ConversationsClient#listEvents bodymethod inCustomEvent.Builderis now accessible- Bumped JWT library version to 1.1.3
- Added
User-to-Userheader in Voice Connect SIP endpoint - Added missing custom
headersfield incom.vonage.client.voice.SipEndpoint - Added Number Verification API
- Refactored Network auth
- Reduced Verify v2 minimum channel timeout
- Fixes Maven POM metadata
- Refactored auth
- Split
TokenAuthMethodintoApiKeyQueryParamsAuthMethodandApiKeyHeaderAuthMethod AuthMethod#apply(RequestBuilder)removed to decouple from Apache HttpClient- Refactored
RequestSigning- Deprecated methods that use
NameValuePairand modify the input collection
- Deprecated methods that use
- Improved testing of auth method application
- Introduced intermediate interfaces
- Split
- Added Vonage Network Auth API (intended for internal use only)
- Added SIM Swap API
- Migrated to Maven from Gradle
- Added missing supported languages to
TextToSpeechLanguageenum - Added
ttlfield to outbound MMS messages - Added message reply context to Whatsapp outbound requests
- Added network code to
InboundMessage
- Added Experience Composer to Video API
- Fixed regression in
createSessionVideo endpoint muteSessionVideo endpoint now returnsProjectDetails- Added Verify capability to Application API
- Added Live Captions and Audio Connector endpoints to Video API
- Added
publisheronlyrole to Video API - Added Verify v2 "Next Workflow" endpoint
- Updated validation logic for Verify v2
brandand SMSfromparameters - Removed
com.vonage.client.sms.HexUtil - Global configuration for Jackson in
Jsonable#createDefaultObjectMapper()- Removed annotations on domain classes
- Added
createJsonObjectMapper()configuration override mechanism toJsonableBaseObject
- Added Conversation API implementation
- Type inference for User channels (
com.vonage.client.users.channels)- Added
com.vonage.client.common.ChannelTypeenum - Added
@JsonSubTypesfor improved deserialisation support - Added
typefield toChannel- Methods
setTypeField()andremoveTypeField()for automatically setting / unsetting based on the class
- Methods
- Added
- New class
com.vonage.client.common.HalFilterRequest- Added
com.vonage.client.common.SortOrder - Used for grouping common "List*Request" fields
- Added
- Bumped Jackson version to 2.17.0
- Bumped JWT library version to 1.1.1
- Made
fromparameter mandatory in Verify v2 WhatsApp workflows - Added
com.vonage.client.sms.MessageEventfor SMS webhooks- Deprecated SMS classes in
com.vonage.client.incomingpackage
- Deprecated SMS classes in
- Added Number Insight v2 API implementation
- New webhook deserialisation POJOs for Voice:
AnswerWebhookandEventWebhook toString,equalsandhashCodeimplemented for all domain response objects- Added
content_idandentity_idparameters for Verify v2 SMS workflow - Added Builder for Verify v2 SMS & Silent Auth workflow requests
- Updated Voice NCCOs:
- Added
mute,canSpeakandcanHeartoConversationAction - Added support for call recording transcription
- Added
randomFromNumberandringbackTonetoConnectAction - Improved
SpeechSettings:- Added
sensitivityandsaveAudio - Builder for (setters and constructor are now deprecated)
endOnSilenceis now a Double instead of Integer- Validation for parameter boundaries
- Added
- Added
- Added various missing fields in Messages API:
webhook_versionandwebhook_urlfor all outbound messages- MMS vCard
caption(outbound) - MMS image
caption(inbound) - Whatsapp file
name(outbound) - Whatsapp
context_statusandreferral(inbound) - SMS
count_totalandnetwork_code(inbound) - SMS
ttl,encoding_type,content_idandentity_id(outbound) - Whatsapp conversation type and ID (status update)
- Added optional
fromparameter to Verify v2 SMS workflow - Fixed
lengthnot being set inVerifyClient.verifyoverload method - Fixed incorrect HTTP method for updating Video Broadcast layout
- Internal refactoring of Video API implementation
- Added
redirect_urlparameter toSilentAuthWorkflow - Bumped Jackson version to 2.16.0
- Use String instead of UUID in
VoiceClientcall modification methods - Added public
verifyRequestSignaturemethod toRequestSigning - Replaced custom
Localeenum in Verify v2 withjava.util.Locale
- Removed packages:
com.vonage.client.legacyutilscom.vonage.client.loggingcom.vonage.client.sns
- Removed all references to
snsBaseUri - All future releases from v8.0.0 onwards will be to
com.vonage:server-sdkMaven coordinates
- Deprecated SNS client,
legacyutilsandLoggingUtils - Un-deprecated Redact client
- Published relocation information in artifact metadata
- Includes Video API from
8.0.0-beta4 - Removed deprecations:
- Removed dependency on
jakarta.servletand all methods which useHttpServletRequest- Including
com.vonage.client.voice.servletandcom.vonage.client.sms.callback.AbstractMOServlet
- Including
- Removed dependency
jackson-dataformat-hal- Refactored
ListSecretsResponse
- Refactored
- Various public classes, methods & constructors have been removed from public view
ip_addressinAdvancedInsightRequestandCheckRequestLineTypeinVerifyRequestCallpublic no-args constructor- Setter methods in Voice API
ModifyCallResponseandRecordingclassesmodifyCallmethod inVoiceClient
LogoUploadsUrlResponseuses String instead ofjavax.activation.MimeType
- Removed dependency on
- Added
verifySignatureutility method to Voice and Messages clients - Added
applicationId(UUID)overload toVonageClient.Builder - Added direct call modification methods to
VoiceClient - Added
downloadRecordingRawandsaveRecordingmethods toVoiceClient - Deprecated
ModifyCallResponseandVoiceClient.modifyCall - Deprecated
VoiceClient.downloadRecordingandRecordingclass - Internal refactoring of Voice API implementation
- Bumped
com.vonage:jwtversion to 1.1.0
- Added more locales for Verify v2 and Meetings APIs
- Added
check_urltoVerificationResponseto support synchronous Silent Authentication - Removed previously deprecated internal classes & methods
- Internal refactoring of Proactive Connect and Meetings API implementations
- Bumped Jackson version to 2.15.3
- Migrated all remaining tests to JUnit 5 and removed dependency on
vintage-engine
- Added
get-full-pricingimplementation of Pricing API inAccountClient - Added master API key default overloads for secret management in Account API
- Deprecated public internal request classes in Account API
- Internal refactoring of Verify v1 and Account API implementations
- Added
/v1to Meetings API endpoint URL paths - Migrated assertions and test dependencies to JUnit 5
- Added capability to configure request timeouts (default is 60 seconds)
- Deprecated custom HTTP client implementation setting
- Internal refactoring of Numbers, Conversion and Number Insight API implementations
- Added Users API implementation
- Major refactoring of how endpoints are implemented internally
- SMS, SNS, Redact, Verify v2, Subaccounts, Messages, Application have been refactored
- Introduced
JsonableandQueryParamsin addition toDynamicEndpointto reduce boilerplate - Added missing fields to Application, capabilities and webhooks
- Removed
PageList(replaced byHalPageResponse) - Improved documentation for Application API implementation
- Relaxed UUID validation in
VoiceClient
- Added Proactive Connect API implementation
- Added Meetings API implementation
- Updated Subaccounts name & secret validation logic
- Added Subaccounts API implementation
- Added custom PIN functionality to Verify v1
- Fixed Silent Auth action URL webhook deserialization issue
- Added Verify v2 API implementation
- Added Advanced Machine Detection to Voice API
- Fixed VbcEndpoint NCCO
- Removed dependency on
jakarta.xml.bind - Made
jakarta.servletan optional dependency - Deprecated all methods and classes that use
javax.servlet.HttpServletRequest
- Viber video message now requires setting duration and file size
- Numbers API now uses Basic auth in header rather than query params
- Made
jakarta.servlet-apia required dependency (replacingjavax.servletas compileOnly) - Use
jakarta.xml.bind-apiinstead ofjavax.xml.bind - Added
premiumandlevelfields to Start Talk request - Refactored
TalkPayloadto use Builder pattern - Added
vbcandappendpoint types for voice calls - Fixed incorrect serialisation of
random_from_number - Added Builder for constructing
Callrequest - Added validation for UUIDs, URLs and request objects in
VoiceClient - Made internal request classes for Voice API package-private
- Deprecated public-facing usages of
CallModifer&ModifyCallPayload - Deprecated setters on classes in Voice API in favour of builders / constructors
com.vonage.client.voice.WebSocketEndpointnow uses Map for headers
- Updates to Messages v1:
- Added
InboundMessagewebhook class - Fixed timestamp format deserialization for MessageStatus (now returns an Instant)
- Added Viber file and video message types
- Added Action button support to Viber image and text messages
- Added WhatsApp Sticker message type
- Added WhatsApp Location custom message type
- Added WhatsApp Product custom message types
client_refcharacter limit increased to 100- Expanded valid message types to accommodate webhooks (MMS text, WhatsApp order, reply & unsupported)
- Added
- Deprecated Pay NCCO action (removed in 8.x)
- Deprecated WAPPush SMS (removed in 8.x)
- Bumped dependency versions
- Removed Payments over the Phone NCCO
- Added SIP functionality to video API
- Added Broadcast functionality to video API
- Refactored Archives for consistency with Broadcast
- Use UUID as return type for IDs where applicable
- Removed
WAPPushSMS message type - Fixed token generation (added missing claim & role as string)
- Fixed incorrect responses for
muteSessionandmuteStream(they don't return anything) - Improved handling of 200 / 204 responses for video endpoints which don't return anything
- Added token generation capability to
VideoClient - Added varargs for
SetStreamLayoutRequest listArchivesendpoint takes as inputListArchivesRequestusing builder pattern- Simplified
muteSessionandmuteStreaminvocation
- Bumped Jackson version to 2.14
- Maven artifact moved to
com.vonage:server-sdk - Initial implementation of Vonage Video API, with following functionality:
- Create sessions
- Retrieve or update stream layouts in a session
- Create, retrieve, delete archives
- Add / remove streams from archive
- Change archive layout
- Mute streams or individual participants in a session
- Disconnect participants from a session
- Send signal to participants in a session
- Fixed parsing
MessageResponseExceptionwhen entity body is empty - Added toggle for using Messages API Sandbox to
MessagesClient - Deprecated
request_typeinVerifyRequest - Deprecated
ip_addressinCheckRequest - Fixed incorrect
Content-Typeheader inVerifyEndpoint(issue #405) andCheckEndpoint - Added
networkfield toVerifyResponse - Added
estimated_price_messages_senttoCheckResponseandVerifyDetails - Updated
VerifyStatusenum values - Added missing documentation and validation to requests and responses in Verify API
- Removed SMS Search API
- Deprecated Redact client
- Use
vonage-jwt-jdk:1.0.2library instead ofnexmo-jwt-jdk:1.0.1 - Ensure
User-Agentis set in request headers - Allow alphanumeric characters for SMS and MMS sender fields in Messages API
WhatsappRequestsender must now be an E164 number- Fixed incorrect restrictions on
WhatsappTemplateRequest- Policy is now optional
- Default locale is now
en - Locale is now an enum rather than String
parametersis nowList<String>
- Removed dependency on
commons-ioandcommons-lang3 - Ensured User-Agent is set in request headers
- Added Premium text-to-speech flag in
TalkActionNCCO - Removed support for legacy
voiceNameparameter - Updated SMS error status codes
- Added support for voice payments using NCCO action
- Updated NCCO classes
- Fixed Action deserialization (issue #373)
- Permit Object values for
WebSocketEndpointheaders - Removed varargs
headersmethod inWebSocketEndpoint.Builder - Made Builder constructors package-private
- Added
headersfield toSipEndpoint - Use
java.net.URIinstead of String for URI fields
- Updated Number Insight to be consistent with API specification
- Deprecated IP Address
- Added missing
InsightStatuscodes - Added documentation to Insight Response fields
- Moved AdvancedInsight enums to separate files
- Added
real_time_datato AdvancedInsightResponse
- Added Messages v1 API implementation
- Added
get-full-pricingendpoint - Added
Content-TypeandAcceptheaders in requests where applicable - Substantial internal refactoring
- Added
call_uuidto webhook call event. - Bumped dependency versions
- Adding Random From Number Feature for the Voice API, if set to
true, thefromnumber will be randomly selected from the pool of numbers available to the application making the call. - adjusting operator used to check json payloads
- Adding extra parsing for top level Roaming Status in Advanced Number Insights
- Added parsing for JSON payloads when reading inbound SMS signatures
- Adding ContentId and EntityId to message class for DLT
- Adding Detail enum and string for certain voice webhooks
- Adding Language and Style to the Voice Talk Action and the Talk Request
- Marking VoiceName as Deprecated
- ASR (Automatic Speech Recognition)
- Refactored Application v2 requests to remove duplicated code
- Deprecated Product.MESSAGE from RedactRequest. Use Product.MESSAGES instead
- Deprecated InsightClient#getStandardNumberInsight(number, country, cnam). Use InsightClient#getStandardNumberInsight(StandardInsightRequest) instead
- Deprecated InsightClient.getAdvancedNumberInsight(number, country, ipAddress, cnam). Use InsightClient#getAdvancedNumberInsight(AdvancedInsightRequest) instead
- Deprecated InsightClient.getAdvancedNumberInsight(number, country, ipAddress). Use InsightClient#getAdvancedNumberInsight(AdvancedInsightRequest) instead
- Deprecated public constructors and setters in VerifyRequest use VerifyRequest.Builder instead
- Deprecated MD5Util use HashUtil instead
- Removed setters from BaseRequest. Set fields in the builders of Psd2Request or VerifyRequest instead.
- NotifyEvent structure for Notify Actions
- SHA256 hashing option
- Changed application requests to use basic auth in header for authentication
- Fixed error throw when trying to log No Content responses
- Nexmo rebranded to Vonage
- Added support for PSD2 verification
- Added AppEndpoint support for ConnectAction.
- Added the ability to log the API response in when logger is set to debug mode.
- Added ability to override base url for:
- Modify Call
- Send DTMF
- Stop Talk
- Added support for new voice names added to the Voice API for Text to Speech
- Improved error handling when there are apparent networking issues
- Added new workflows in
VerifyRequest
- Added support for verification workflows inside of
VerifyRequest. - Added support for transfer to NCCO via
VoiceClient#transferCall.
VerifyClienthad methods that were still claiming to throw anIOException. This has been removed as it is not possible for it to be thrown.
- Added support for setting an application id as a messages callback value in updating a number.
- Added support for specifying a number type when searching for a number to purchase.
- Added support for updating account settings (delivery receipt URL and inbound SMS URL)
- Added support for Async Number Insights by setting the property
asyncandcallbackon theAdvancedInsightRequestobject. - Add
ringbacksupport to theonAnswerpart of thePhoneEndpoint.
- Changed from Auth0 to the Nexmo JWT Library.
- Renamed the
com.nexmo.client.applicationspackage tocom.nexmo.client.application ApplicationClientnow supports the Applications v2 API. This change has resulted in some backwards incompatibility.NexmoClientExceptionis now aRuntimeException. The various sub client methods will still declare that it is being thrown, but it is no longer a requirement to catch the exception. Additionally, theIOExceptionthat was being thrown in each method has been converted to aNexmoResponseParseExceptionto more accurately reflect when it is thrown. This is also an unchecked exception and catching is no longer required.- The
NexmoUnacceptableAuthExceptionwill now add which parameters are missing instead of which internal auth methods.
- Added new voice 'MATTHEW' to
VoiceNameenum.
- Fix UTF-8 Encoding for endpoints using JSON bodies.
- Added
NotifyActionfor use inNCCO.
- Added header (application/json) for Redact client.
- Fixed Application Update to send json body as it is what the API now expects.
- Fixed the product name in Redact API for
messages.
- Missing builders for
StreamAction,AdvancedInsightRequest,StandardInsightRequest, andBasicInsightRequest.
AbstractMethodwill force UTF-8 charset for requests usingStringEntity.- Tests will now run using static builder methods for each of the classes that use builders for construction.
- Added static
buildermethods toActionclasses to reduce some of the verbosity around using them. You can now doTalkAction action = TalkAction.builder("Hello World!").build();instead of justTalkAction action = new TalkAction.Builder("Hello World).build();. - Added static
buildermethods toNexmoClientto reduce some of the verbosity around instantiating the client. - Added
nccoproperty to theCallobject for use in theVoiceClient.createCallmethod. You can now send anNccodirectly to the API instead of defining ananswer_url.
channelsproperty toRecordActionas it was unintentionally removed during the version 4 release.
- Added
Nccoclass to wrapCollection<Action>and handle the serialization of NCCO json throughtoJson. - Added the following
Builderclasses:ConnectAction.BuilderConversationAction.BuilderInputAction.BuilderRecordAction.BuilderStreamAction.BuilderTalkAction.Builder
- Added
PhoneEndpointtocom.nexmo.voice.nccopackage for use withConnectAction. - Added
WebSocketEndpointtocom.nexmo.voice.nccopackage for use withConnectAction. - Added
SipEndpointtocom.nexmo.voice.nccopackage for use withConnectAction. - Added
EventMethodenumeration to replace the usage of strings. - Added
EventTypeenumeration and the ability to specify theeventTypeproperty ofConnectAction. - Added
NexmoClient.Builderto allow for fluent creation ofNexmoClient. - Added
getBasicNumberInsight,getStandardNumberInsight, andgetAdvancedNumberInsighttoInsightClientwhich takes a respective*InsightRequest. - Added
CallerIdentitydata object to be used in number insight. - Added
BuildertoCallsFilterclass to make filtering search results more intuative.
- Renamed all
Nccoclasses toActionclasses:- Renamed
Nccointerface toAction - Renamed
ConnectNccotoConnectAction - Renamed
ConversationNccotoConversationAction - Renamed
InputNccotoInputAction - Renamed
RecordNccotoRecordAction - Renamed
StreamNccotoStreamAction - Renamed
TalkNccotoTalkAction
- Renamed
- All
Actionclasses now must be constructed through the providedBuilderclass. - All
Actionclasses are now immutable. - The
eventUrlproperty ofConnectAction,ConversationAction,InputAction, andRecordActionis now aCollection<String>instead of an array. - The
eventMethodproperty ofConnectAction,ConversationAction,InputAction, andRecordActionis now anEventMethodenum instead of a String. - Removed
ConnectWebSocketNccoas it is built intoConnectAction. VerifyClientwill now return*Responseinstead of*Resultobjects.- Refactored
com.nexmo.client.voice.endpointsto be part of thecom.nexmo.client.voicepackage. - Made all
*Endpointand*Methodclasses package scoped. Users should always go through the appropriateClientclasses. - Moved
AbstractMethodto the root package. - Removed legacy
setUrimethods from the variousVoiceClientendpoints. This should be done throughHttpConfig. - Changed
BasicInsightRequest,StandardInsightRequest, andAdvancedInsightRequestto use builders as constructor telescoping is clunky. Added some static factory methods to these classes to allow shortcutting through the builder for "simple" requests. - Updated
BasicInsightEndpoint,StandardInsightEndpoint, andAdvancedInsightEndpointto a more restrictive scope and moved them to thecom.nexmo.client.insightpackage. - Changed
statusproperty ofBasicInsightResponseto anInsightStatusenumeration. - Changed
SendMessageEndpointfrom XML to JSON. It now returns aSmsSubmissionResponseinstead of an array result.
- Added the ability to specify the number of channels to record in
RecordNcco
- Update base uri to always have the version string appended to it.
- Added missing voices to
VoiceNameenum. - Added configuration object to be used with
HttpWrapperto allow for customization. - Added the ability to customize the base URI used for the various endpoints.
- Added
ConnectWebSocketNccoto handle connecting to WebSocket endpoints similar toConnectNccoto maintain backwards compatibility. - Added
getDisplayNamemethod toVoiceNameto represent the name that is used in serialization.
TalkNccoto useVoiceNameobject instead ofStringHttpWrappernow uses system properties by default.
- Added
com.nexmo.client.incoming.MessageEventto assist with the deserialization of the JSON payload used for incoming messages. - Added
com.nexmo.client.incoming.CallEventto assist with the deserialization of the JSON payload used for call events. - Added
com.nexmo.client.incoming.InputEventto assist with the deserialization of the JSON payload used for input events. - Added
com.nexmo.client.incoming.RecordEventto assist with the deserialization of the JSON payload used for record events. - Added secret management methods to
AccountClientin the form of the following methods:listSecretsfor listing all secrets.getSecretfor getting information on a specific secret.revokeSecretfor revoking a secret.createSecretfor creating a new secret.
- User Agent String now includes the Java version in addition to the client version.
enumclasses that are used to deserialize JSON have been updated to return anUNKNOWNvalue instead of throwing anIllegalArgumentExceptionwhen the value cannot be deserialized. Theseenums are:RecordingFormatMachineDetectionModifyCallActionCallDirectionCallStatusRoamingDetails.RoamingStatusAdvancedInsightResponse.PortedStatusAdvancedInsightResponse.ValidityAdvancedInsightResponse.Reachability
- Updated
StreamNcco'sstreamUrlto serialize into an array for use in the Voice API.
- Added
RedactClientand the ability to interact with the Nexmo Redact API.
TalkNcconow usesVoiceNameinternally instead ofStringfor thevoiceNameproperty.
- Added
getSmsPricetoAccountClientfor getting SMS pricing for a country. - Added
getVoicePricetoAccountClientfor getting voice pricing for a country. - Added
getPrefixPricetoAccountClientfor getting SMS and voice pricing for a prefix. - Added
topUptoAccountClientfor topping up your account which has auto-reload enabled. - Added
getSmstoSmsClientfor searching for a single message by id. - Added
ConversionClientand the ability to interact with the Nexmo Conversion API.
-
Updated
VerifyClientto use the JSON endpoints instead of XML. -
Updated endpoints which are used by
VerifyClientfrom public to package scope in order to encourage usage throughVerifyClient. -
Deprecated XML version of the following endpoints:
VerifyEndpointCheckEndpointSearchEndpoint
-
Deprecated the following XML results:
VerifyResultshould useVerifyResponseCheckResultshould useCheckResponseSearchResultshould useSearchVerifyResponse
-
Deprecated the following XML methods:
VerifyCheckMethod
- Added
VerifyStatusenumeration to use for statuses coming back from the verify endpoint. - Added
VerifyResponse,CheckResponse, andSearchVerifyResponsefor JSON responses to match other JSON using endpoints. - Added
VerifyMethod,CheckMethod, andSearchMethodfor better segregation between endpoint and method classes. - Add
splitattribute to theRecordNccoobject.
- Updated
ConversationNcco'smusicOnHoldUrlto serialize into an array for use in the Voice API.
- Updated Jackson Databind dependency to newer version.
- Modify call now works with the API again, returning
null(because the API now returns 204 No Content) - VerifyRequest now supports all supported parameters.
- Client-side validation for the
fromparameter's length on theMessageclass has been removed.
- Add
levelattribute to theTalkNccoobject.
- Add signature authentication support to the API endpoints which support it.
- Add
NexmoClient.generateJwt - Add
VoiceClient.downloadRecording
- Made exceptions from
AuthCollection'sgetAuthandgetAcceptableAuthMethodmore specific. (Backwards compatible change)
ModifyCallPayload.actionis now a value of the enumModifyCallPayload.Action.- All calls now throw
HttpResponseExceptionif an abnormal HTTP status code is returned from the Nexmo API.
- Added missing values for CallStatus: FAILED, REJECTED, BUSY & CANCELLED
- Add missing setter for the Message.statusReportRequired property.
- Add
AccountClient.getBalancemethod for getting an account balance. - Add
NumbersClient.listNumbersmethod. - Add
NumbersClient.searchNumbersmethod. - Add
NumbersClient.cancelNumbermethod. - Add
NumbersClient.buyNumbermethod. - Add
NumbersClient.updateNumberandNumbersClient.linkNumber. - Add the ability to mute, unmute, earmuff, unearmuff and transfer an ongoing call.
- Add
VerifyClient.advanceVerificationandVerifyClient.cancelVerification - Add
ApplicationClientend methods for creating, updating, deleting, listing and getting configured applications. - Add extra endpoints for searching SMS messages.
- All URL-encoded PUT and POST requests are now UTF-8 instead of ISO-8859-1.
- The event url is properly set on a
Call
- Number Insight now supports the
cnamparameter for Standard and Advanced requests.
- Made servlet-api an optional dependency, so it isn't bundled in WAR files. (This could result in class conflicts in Tomcat.)
- Nexmo Voice API
- Automated testing and code quality with Travis CI, Codecov and Codacy
- Publishing to Maven Central
- Complete refactoring and reorganisation of the library. All classes are now
under the
com.nexmo.clientpackage.
- New Insight API using non-deprecated endpoints.
- Migrate to Gradle
- Internal refactoring for unit testing
- Removed example code. See nexmo-community/nexmo-java-quickstart instead.
- Support for USSD submission
- Include LICENSE.txt file and license in all source files
- Updated signature generation/verification in line with updates to Nexmo Service
- Include the 'network' field in the SmsSubmissionResult object
- Migrate to apache httpclient 4.1
- Switch from use of username/password to 'api_key' / 'api_secret'
- Add support for 'signed' requests (using
NexmoSmsClientSignedRequests) - Message submissions can now specify a protocol-id value where required
- Add support for supplying a ValidityPeriod along with a Message when submitting a snsRequest
- Add support for performing reachability checks if the feature is enabled on your account
- Message submissions can now specify a message-class using the enum
com.nexmo.messaging.sdk.messages.parameters.MessageClass - Add support for supplying a network code to override the Nexmo automatic network detection (Feature must be enabled on your account)
- Adding constants for all current response codes
- Adding 'destination' and 'reachability' values to response object
- Correcting some comments and log statements
- Fix some small things reported by findbugs
- Re-factor NexmoSmsClient. There are now subclasses of this client class depending on the level of security required
com.nexmo.messaging.sdk.NexmoSmsClient: The default clientcom.nexmo.messaging.sdk.NexmoSmsClientSSL: Uses SSL / HTTPS to encrypt the requestscom.nexmo.messaging.sdk.NexmoSmsClientSignedRequests: Signs the requests using the secret key assigned to your accountcom.nexmo.messaging.sdk.NexmoSmsClientSignedRequestsSSL: Signs the requests and uses SSL / HTTPS to encrypt
- Add https support to message submissions
- Add 'ant example-https' example task
- Add support for 'messagePrice' in the api response
- Add reporting of remaining-balance and message-price in the example scripts
- Add support for nexmo SNS service
- Ams submission - report comms-failure as an error response, not as an exception
- Ams submission - add support for 'remainingBalance' in the api response