Skip to content

Releases: didww/didww-v3-ruby

v6.2.1

Choose a tag to compare

@Skumring Skumring released this 08 Oct 08:23
9f85642

v6.2.1 — Callback secret

DIDWW API version: 2026-04-16

DIDWW::Callback::RequestValidator is now documented and named around the callback secret enabled in the DIDWW User Panel (APIs → DIDWW API 3 → Callback Secrets). No breaking changes since v6.2.0.

Installation

gem install didww-v3 -v 6.2.1

Changed

  • DIDWW::Callback::RequestValidator.new(callback_secret): the constructor argument is renamed from api_key to callback_secret. It is positional, so existing code keeps working. Pass the callback secret value.
  • The signature algorithm and the X-DIDWW-Signature header are unchanged.
  • README: the callback validation example and its introduction say where the callback secret comes from.

v6.2.0

Choose a tag to compare

@Fivell Fivell released this 14 Jun 10:06
25cd0f6

What's Changed

  • docs: add FILTERS.md server-side filter reference by @Fivell in #83
  • fix: rename propated_mrc → prorated_mrc on DID/Capacity order items by @Fivell in #84
  • feat: add rtp_ping attribute to VoiceOutTrunk by @Fivell in #85
  • chore(fixtures): refresh meta.api_version to 2026-04-16 by @Fivell in #87
  • feat: add description attribute to DidReservation by @Fivell in #86
  • fix(fixtures): correct malformed and production hosts in recorded responses by @Fivell in #88
  • fix: relax json_api_client pin to support Ruby 4.0 by @Fivell in #90
  • chore(release): 6.2.0 by @Fivell in #91

Full Changelog: v6.1.1...v6.2.0

v6.1.1

Choose a tag to compare

@Fivell Fivell released this 04 May 21:59
d95dc84

What's Changed

  • chore(gemspec): bound dependency versions and expand description by @Fivell in #81
  • fix(sip-cascade): always emit host:nil and port:nil when enabling sip_registration by @Fivell in #82

Full Changelog: v6.1.0...v6.1.1

v6.1.0

Choose a tag to compare

@Fivell Fivell released this 04 May 19:20
866d9f5

v6.1.0 — SIP Registration support (API 2026-04-16)

Backward-compatible feature release. Completes the SipConfiguration attribute set introduced in API 2026-04-16 — the previous 6.0.0 rollout shipped the
X-DIDWW-API-Version: 2026-04-16 default header but missed the SIP-registration attribute set from the server's voice-in trunk form (which is also absent from
the public Postman collection). This release closes that gap, adds default-output credential redaction, and ships an auto-cascade for the server-enforced field
dependencies on the SIP-registration toggle.

No breaking changes. Upgrade is a drop-in.

Highlights

1. Complete the SipConfiguration attribute set

Five new writable attributes:

Attribute Type Notes
enabled_sip_registration bool Enables SIP registration. When true, the API generates incoming_auth_* and the trunk's host / port must be
blank.
use_did_in_ruri bool Uses the DID number in R-URI. Requires enabled_sip_registration to be true.
network_protocol_priority string enum force_ipv4 / force_ipv6 / any / prefer_ipv4 / prefer_ipv6. Constants: NETWORK_PROTOCOL_PRIORITY_* /
NETWORK_PROTOCOL_PRIORITIES.
diversion_inject_mode string enum none / did_number. Constants: DIVERSION_INJECT_MODE_* / DIVERSION_INJECT_MODES.
cnam_lookup bool Enables CNAM resolution for inbound calls.

Two new read-only attributes:

  • SipConfiguration#incoming_auth_username
  • SipConfiguration#incoming_auth_password

These are server-generated SIP authentication credentials returned on voice_in_trunks when enabled_sip_registration is true. The API rejects writes with
400 Param not allowed, so the SDK strips them from any PATCH/POST payload — round-tripping a loaded configuration is now safe.

ComplexObject::Base.property accepts a new read_only: true option to support that contract for any future read-only attribute.

2. Auto-cascade for server-enforced field dependencies

The server validates a small set of cross-field invariants on SipConfiguration and rejects mismatches with 422. The SDK now applies the cascades on
assignment so caller code does not have to enumerate the rule set:

Setter call Cascade
enabled_sip_registration = true host and port set to nil (only when previously set)
enabled_sip_registration = false use_did_in_ruri = false
host = <non-blank> enabled_sip_registration = false, use_did_in_ruri = false

Constructor / []= assignments bypass the cascade so server responses (which are already internally consistent) deserialize as-is.

# Enable: just flip the toggle. The cascade handles host / port.
trunk.configuration = DIDWW::ComplexObject::SipConfiguration.new.tap do |c|                                                                                     
  c.enabled_sip_registration = true
  c.use_did_in_ruri          = true                                                                                                                             
end                                                                                                                                                             
 
# Disable: just set host. The cascade flips both toggles to false.                                                                                              
trunk.configuration = DIDWW::ComplexObject::SipConfiguration.new.tap do |c|
  c.host = 'sip.example.com'                                                                                                                                    
end

3. Credential redaction in default #inspect

ComplexObject::Base.property accepts a new sensitive: true option. The default #inspect representation replaces those values with [FILTERED] so credentials
never leak through default logging / REPL / unhandled exception output. The wire payload is unchanged — #as_json still emits the real values.

Marked as sensitive in this release:

  • SipConfiguration#auth_password
  • SipConfiguration#incoming_auth_username / #incoming_auth_password
  • AuthenticationMethod::CredentialsAndIp#username / #password
config.inspect                                                                                                                                                  
# => #<DIDWW::ComplexObject::SipConfiguration host="sip.example.com" auth_password="[FILTERED]" incoming_auth_username="[FILTERED]" ...>

                                                                                                                                                                
config.as_json[:attributes][:auth_password]            
# => "actual-password" (wire format unaffected)                                                                                                                 

Documentation

  • New "SIP Registration (2026-04-16)" subsection in the README — explains the cascade rules, shows the enable / disable examples.
  • examples/voice_in_trunks.rb updated to surface the new attributes when reading a SIP trunk and to show a commented-out SIP-registration create snippet.

v6.0.0 — DIDWW API 2026-04-16

Choose a tag to compare

@Fivell Fivell released this 24 Apr 09:56
8188702

v6.0.0 — DIDWW API 2026-04-16

This release upgrades the Ruby SDK to DIDWW API version 2026-04-16. The gem now sends X-DIDWW-API-Version: 2026-04-16 with every request by default.

Users staying on API 2022-05-10 should pin to the 2022-05-10 branch (5.x), where future 5.x patches will be released.

Installation

# Gemfile
gem 'didww-v3', '~> 6.0'

Or:

gem install didww-v3 -v 6.0.0

Breaking Changes

API / resource renames

  • Default X-DIDWW-API-Version header is now 2026-04-16.
  • Resource requirement_validations renamed to address_requirement_validations.
  • Resource requirements renamed to address_requirements.
  • AddressRequirementValidation#requirement relationship renamed to address_requirement.
  • DidGroup#requirement relationship renamed to address_requirement.
  • DidReservation#expire_at renamed to expires_at.
  • EncryptedFile#expire_at renamed to expires_at.

Attribute / value changes

  • AddressVerification#reject_reasons is now an array of strings.
  • Dropped sms_out from DidGroup features.
  • EncryptedFile POST now accepts a single file per request.
  • Export year/month filters replaced with from/to datetime range (from inclusive, to exclusive).
  • VoiceInTrunk SIP configuration gains diversion_relay_policy.
  • Attribute values standardized to lowercase snake_case on the wire (status/area-level enums, etc.).
  • Order#cancelled? renamed to canceled?; Order::STATUS_CANCELLED → STATUS_CANCELED to match wire format (status: "canceled").
  • DidGroup: removed features_human and FEATURES constant.

VoiceOutTrunk authentication

Flat credentials (username / password / auth_type) replaced with a polymorphic authentication_method relationship. Supported types:

  • CredentialsAuthenticationMethod
  • IpAuthenticationMethod
  • CredentialsAndIpAuthenticationMethod
  • TwilioAuthenticationMethod
  • GenericAuthenticationMethod (forward-compatible fallback for unknown types)

New Resources

  • DidHistory — /v3/did_history, with meta.billing_cycles_count_changed.
  • EmergencyRequirement — /v3/emergency_requirements.
  • EmergencyRequirementValidation — /v3/emergency_requirement_validations.
  • EmergencyCallingService — /v3/emergency_calling_services, with address has-one relationship.
  • EmergencyVerification — /v3/emergency_verifications.

New Attributes & Relationships

external_reference_id

Added to Address, AddressVerification, Export, EmergencyVerification, Order, PermanentSupportingDocument, Proof, SharedCapacityGroup, VoiceInTrunkGroup, VoiceInTrunk, VoiceOutTrunk.

PATCH supported on:

  • PATCH /v3/address_verifications/:id
  • PATCH /v3/exports/:id
  • PATCH /v3/emergency_verifications/:id

VoiceOutTrunk

  • emergency_enable_all attribute
  • rtp_timeout attribute
  • emergency_dids has-many relationship
  • Status predicate helpers

Did

  • emergency_enabled attribute
  • emergency_calling_service has-one relationship
  • emergency_verification has-one relationship
  • identity has-one relationship
  • Supports PATCH to unassign emergency_calling_service

Identity

  • birth_country has-one relationship

DidGroup

  • New features: p2p, a2p, emergency, cnam_out
  • service_restrictions attribute

AddressVerification

  • reject_comment attribute

Order

  • New EmergencyOrderItem complex object

Helpers & Polish

  • Status predicate helpers added to VoiceOutTrunk, EmergencyCallingService, AddressVerification, EmergencyVerification, and Order.
  • Export now exposes STATUS_PENDING and STATUS_PROCESSING.
  • Unknown authentication_method types are wrapped in Generic for forward compatibility.
  • Resource-level meta support for EmergencyCallingService and EmergencyRequirement.
  • randomize_cli added to OnCliMismatchAction constants.
  • Fixtures and examples use RFC 5737 documentation IPs (203.0.113.0/24).

Examples

New examples

  • did_history
  • emergency_requirements
  • emergency_requirement_validations
  • emergency_calling_services
  • emergency_verifications
  • address_verifications
  • orders_emergency
  • emergency_scenario — end-to-end emergency flow

Updated examples

  • voice_out_trunks — polymorphic authentication_method
  • exports — new from/to filter semantics
  • identities_and_proofs — includes birth_country
  • orders, shared_capacity_groups, voice_in_trunk_groups, dids, did_groups — demonstrate external_reference_id and 2026-04-16 fields

Tests

  • 510 examples, 99.6% line coverage.
  • Shared rspec examples extracted for PATCH external_reference_id and requirement validations POST→204.
  • PATCH dirty-tracking coverage for polymorphic authentication_method.

Upgrading

  1. Update your Gemfile:
    gem 'didww-v3', '~> 6.0'
    then bundle update didww-v3.
  2. Rename any references to requirement_validations → address_requirement_validations and requirements → address_requirements.
  3. Migrate VoiceOutTrunk credentials to the new polymorphic authentication_method relationship.
  4. Replace expire_at with expires_at on DidReservation and EncryptedFile.
  5. Update Export filters from year/month to from/to datetime range.
  6. Update any cancelled? / STATUS_CANCELLED references on Order to the Canceled spellings.
  7. If you used DidGroup#features_human or FEATURES, migrate to raw features — those helpers were removed.
  8. Review the refreshed README and examples/ directory.

Full Changelog: v5.3.1...v6.0.0

v5.3.1

Choose a tag to compare

@Fivell Fivell released this 17 Apr 21:01
0405a69

What's Changed

  • fix: correct VoiceOutTrunk constant wire values by @Fivell in #75

Full Changelog: v5.3.0...v5.3.1

v5.3.0

Choose a tag to compare

@senid231 senid231 released this 07 Apr 11:56

What's Changed

  • add customize_connection for Faraday connection setup by @senid231 in #73

Full Changelog: v5.2.0...v5.3.0

v5.2.0

Choose a tag to compare

@Fivell Fivell released this 20 Mar 12:54
54177a2

What's Changed

  • Fix README examples to match actual API usage by @Fivell in #56
  • Fix: Use timing-safe comparison for callback signatures by @Fivell in #59
  • Fix: Change is_expired boolean to expires_at date on Proof by @Fivell in #58
  • Fix: Limit encryption fingerprint to first two public keys by @Fivell in #64
  • Revert "Fix: Limit encryption fingerprint to first two public keys" by @Fivell in #66
  • Fix: Add User-Agent header to export download by @Fivell in #63
  • Fix date type attributes to use :time for ISO 8601 timestamps by @Fivell in #67
  • Add requirement relationship to DidGroup by @Fivell in #62
  • Add missing resource fields: reference, permanent, iso, contact_email by @Fivell in #61
  • Add rejected address verification test fixture by @Fivell in #65
  • Skip Api-Key header on public_keys endpoint by @Fivell in #68
  • Add cross-SDK request validator test vectors and fix URL normalization by @Fivell in #57
  • Refactor/dry cleanup by @Fivell in #69
  • Document date and datetime field types in README by @Fivell in #70
  • Add examples by @Fivell in #71
  • bump 5.2.0 by @Fivell in #72

Full Changelog: v.5.1.0...v5.2.0

v.5.1.0

Choose a tag to compare

@Fivell Fivell released this 09 Mar 15:17

What's Changed

  • Rename test fixtures from sample_N to self-descriptive names by @Fivell in #46
  • Add X-DIDWW-API-Version header and update README link by @Fivell in #47
  • Add coverage badge via GitHub Pages by @Fivell in #48
  • Add JSON:API dependency note to README by @Fivell in #50
  • Add missing client accessors and resource tests with fixtures by @Fivell in #53
  • Exclusive relationship and dirty tracking by @Fivell in #52
  • Export csv gz decompression by @Fivell in #51
  • Add VoiceOutTrunk CRUD tests and wire up unused fixture files by @Fivell in #54

Full Changelog: v5.0.0...v5.1.0

v5.0.0

Choose a tag to compare

@Fivell Fivell released this 27 Feb 20:17
1592c38

What's Changed

  • Fix CI, update dependencies and CI for current Ruby/Rails versions by @Fivell in #44
  • Remove H323 and IAX2 trunk configuration support by @Fivell in #43
  • Add missing relationship declarations and tests for included resources by @Fivell in #45

Full Changelog: v4.1.0...v5.0.0