Releases: didww/didww-api-3-java-sdk
4.1.0
v4.1.0 — 2026-05-05
API version: 2026-04-16
This release adds SIP registration support, automatic field-dependency
cascade, and credential redaction in default debug output. All changes
are additive — no breaking changes since v4.0.0.
✨ Features
SIP registration on voice in trunks (API 2026-04-16)
Five new writable attributes plus two server-generated read-only
credentials are now exposed on com.didww.sdk.resource.configuration.SipConfiguration:
- Writable:
enabledSipRegistration,useDidInRuri,cnamLookup,
networkProtocolPriority,diversionInjectMode - Read-only (server-generated when sip_registration is on):
incomingAuthUsername,incomingAuthPassword
Read-only credentials are stripped from POST/PATCH bodies automatically
via Jackson's @JsonProperty(access = WRITE_ONLY); the API rejects
writes to them with 400 Param not allowed.
Auto-cascade for sip_registration field dependencies
The server enforces multi-field invariants on the sip_registration
toggle. The SDK now keeps the dependent fields aligned automatically so
caller code never has to enumerate the rule set:
| When you set | The SDK cascades |
|---|---|
setEnabledSipRegistration(true) |
host: null, port: null (always emitted on the wire, even on a fresh config) |
setEnabledSipRegistration(false) |
useDidInRuri = false |
setHost(<non-null>) |
enabledSipRegistration = false, useDidInRuri = false |
The host/port nullification fires unconditionally so a PATCH
against an existing trunk with persisted host/port is told to clear
them — a conditional cascade silently dropped the fields and the server
rejected the merged request with 422. (Fixes the re-enable PATCH flow.)
@JsonInclude(JsonInclude.Include.ALWAYS) is set on host / port
so Jackson emits explicit nulls; deserialization writes directly into
the private fields and bypasses the cascade.
Credential redaction in default debug output
toString() is overridden on SipConfiguration and
CredentialsAndIpAuthenticationMethod to replace credential field
values with [FILTERED] before they reach System.out.println,
logger output, debugger inspection, or unhandled exception traces.
The wire payload is unaffected — Jackson continues to emit the real
values.
📚 Documentation
- New end-to-end example
examples/.../VoiceInTrunkSipRegistrationExample.java
demonstrating the full create → rename → disable → re-enable flow. - README gains a SIP-registration usage section explaining the cascade
rules with copy-pasteable enable / disable snippets.
Full Changelog: 4.0.0...4.1.0
4.0.0. - 2026-04-16
What's Changed
API Version: 2026-04-16 (previously 2022-05-10)
This is a major release that upgrades the SDK to target DIDWW API version 2026-04-16. It includes breaking changes, new resources, new attributes, and emergency services support.
For the previous API version, use the https://github.com/didww/didww-api-3-java-sdk/tree/2022-05-10 branch (v3.x).
Breaking Changes
Renamed Resources
- RequirementValidation → AddressRequirementValidation
- Requirement → AddressRequirement
- AddressRequirementValidation#requirement relation → address_requirement
- DidGroup#requirement relation → address_requirement
Renamed Attributes
-
DidReservation#expireAt → expiresAt
-
EncryptedFile#expireAt → expiresAt
-
isCancelled() → isCanceled() (wire-format consistency)
Changed Types
-
AddressVerification#rejectReasons is now a List (was a single string)
Removed
-
sms_out removed from DidGroup features enum
Changed Behavior
-
Default API version is now 2026-04-16 (header X-DIDWW-API-Version)
-
Encrypted files: POST now accepts a single file per request (was array)
-
Exports: year/month filters replaced with from/to datetime range
-
VoiceInTrunk: added diversionRelayPolicy to SIP configuration
-
VoiceOutTrunk: flat credential fields replaced with polymorphic authenticationMethod (types: credentials_and_ip, twilio, ip_only)
-
Attribute values standardized to lowercase snake_case
New Resources
-
DidHistory — /v3/did_history (list, read)
-
EmergencyRequirement — /v3/emergency_requirements (list, read) — with resource-level meta (setupPrice, monthlyPrice)
-
EmergencyRequirementValidation — /v3/emergency_requirement_validations (create)
-
EmergencyCallingService — /v3/emergency_calling_services (list, read, create, update, delete) — with resource-level meta (setupPrice, monthlyPrice)
-
EmergencyVerification — /v3/emergency_verifications (list, read, create, update)
New Attributes
Did
- emergencyEnabled
- Relationships: emergencyCallingService, emergencyVerification, identity
VoiceOutTrunk
-
emergencyEnableAll, rtpTimeout
-
Relationship: emergencyDids
DidGroup
-
New features: p2p, a2p, emergency, cnam_out
-
serviceRestrictions attribute
Identity
-
Relationship: birthCountry
Other
-
externalReferenceId added to: Address, AddressVerification, Export, Order, PermanentSupportingDocument, Proof, SharedCapacityGroup, VoiceInTrunk, VoiceInTrunkGroup, VoiceOutTrunk
-
AddressVerification: rejectComment
-
Export: STATUS_PENDING and STATUS_PROCESSING constants
-
EmergencyOrderItem complex object for Order support
New PATCH Endpoints
- PATCH /v3/address_verifications/:id — update externalReferenceId
- PATCH /v3/exports/:id — update externalReferenceId
- PATCH /v3/emergency_verifications/:id — update externalReferenceId
Status Predicate Helpers
New is*() methods on:
- VoiceOutTrunk — isActive(), isBlocked(), etc.
- EmergencyCallingService — isActive(), isPending(), etc.
- AddressVerification, EmergencyVerification, Order
Other Improvements
- Fixed Javadoc warnings
- Comprehensive examples for all new resources including emergency scenario
- Added "Releasing a New Version" section to README
Full Changelog: 3.0.0...4.0.0
3.0.0
What's Changed
- Fix README examples to use enum types instead of strings by @Fivell in #34
- Add User-Agent header to file upload requests by @Fivell in #37
- Add include=requirement and include=region tests by @Fivell in #41
- Add rejected address verification test fixture by @Fivell in #40
- Fix: Change Balance fields from Double to BigDecimal by @Fivell in #35
- Fix error message to fallback to title when detail is missing by @Fivell in #36
- Add cross-SDK request validator test vectors and fix URL normalization by @Fivell in #39
- Refactor/dry cleanup by @Fivell in #42
- Fix outdated build() references in README to use withId() by @Fivell in #43
- Document date and datetime field types in README by @Fivell in #44
- Add orders_nanpa example by @Fivell in #45
Full Changelog: 2.5.0...3.0.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.1.1
What's Changed
- Add comprehensive order example with all DID item types by @Fivell in #12
- Misc/readme improvements by @Fivell in #13
- Update examples README with all available examples by @Fivell in #14
- Rename php-test/php-sdk to java-test/java-sdk in test data by @Fivell in #15
- Add DID group feature enum assertions by @Fivell in #16
Full Changelog: 1.1.0...1.1.1