Skip to content

Releases: didww/didww-api-3-python-sdk

v3.1.0 — SIP registration support

05 May 08:58

Choose a tag to compare

v3.1.0 — SIP registration support

DIDWW 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 v3.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 didww.resources.configuration.sip.SipConfiguration:

  • Writable: enabled_sip_registration, use_did_in_ruri, cnam_lookup, network_protocol_priority, diversion_inject_mode
  • Read-only (server-generated when sip_registration is on): incoming_auth_username, incoming_auth_password

Read-only credentials are stripped from POST/PATCH bodies automatically; 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
enabled_sip_registration = True host = None, port = None (always emitted on the wire, even on a fresh config)
enabled_sip_registration = False use_did_in_ruri = False
host = <non-blank> enabled_sip_registration = False, use_did_in_ruri = 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.)

The cascade fires only on application-driven assignments; deserialization of server responses (which are already internally consistent) bypasses it so existing combinations are not clobbered.

Credential redaction in default repr()

__repr__ is overridden on SipConfiguration and CredentialsAndIpAuthenticationMethod to replace credential field values with [FILTERED] before they reach print(), logger output, debugger inspection, or unhandled exception traces. The wire payload is unaffected — serializers continue to emit the real values.

📚 Documentation

  • New end-to-end example examples/voice_in_trunk_sip_registration.py 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: v3.0.0...v3.1.0

v3.0.0 — DIDWW API 2026-04-16

24 Apr 10:44
9790358

Choose a tag to compare

v3.0.0 — DIDWW API 2026-04-16

This release upgrades the Python SDK to DIDWW API version 2026-04-16. The SDK 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 (2.x), where future 2.x patches will be released.

Installation

pip install didww==3.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 a list 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.is_cancelled renamed to is_canceled; STATUS_CANCELLEDSTATUS_CANCELED to match wire format (status: "canceled").

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.
  • Fixtures and examples use RFC 5737 documentation IPs (203.0.113.0/24).

Tests

  • 291 tests passing on Python 3.9 – 3.13.
  • PATCH dirty-tracking coverage for polymorphic authentication_method.

Upgrading

  1. Update your dependency:
    pip install --upgrade didww==3.0.0
  2. Rename any references to requirement_validationsaddress_requirement_validations and requirementsaddress_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 is_cancelled / STATUS_CANCELLED references on Order to the Canceled spellings.
  7. Review the refreshed README and examples/ directory.

Full Changelog: v2.0.0...v3.0.0

v2.0.0

20 Mar 13:41

Choose a tag to compare

What's Changed

  • improve release README by @senid231 in #18
  • Implement dirty-only PATCH serialization with explicit null clears by @Fivell in #17
  • Add coverage badge via GitHub Pages by @Fivell in #19
  • Add JSON:API dependency note to README by @Fivell in #21
  • Export csv gz decompression by @Fivell in #20
  • Add User-Agent header to all API requests by @Fivell in #22
  • Add missing metered_channels_count to SharedCapacityGroup README example by @Fivell in #23
  • Add Requirement relationship to DidGroup by @Fivell in #26
  • Add Region relationship to NanpaPrefix by @Fivell in #25
  • Feat/nanpa prefix region relationship by @Fivell in #30
  • Add rejected address verification test fixture by @Fivell in #28
  • Add requirement relationship to DidGroup, remove unused _relationship_id methods by @Fivell in #29
  • Add cross-SDK request validator test vectors and fix URL normalization by @Fivell in #27
  • Refactor/dry cleanup by @Fivell in #31
  • Add orders_nanpa example by @Fivell in #33
  • Add DatetimeAttributeField, use it for datetime fields by @Fivell in #32

New Contributors

Full Changelog: v1.1.0...v2.0.0

v1.1.0

02 Mar 13:04

Choose a tag to compare

What's Changed

  • Improvements by @Fivell in #12
  • Add custom session support for proxy and advanced HTTP configuration by @Fivell in #13
  • Add missing relationship declarations and comprehensive include tests by @Fivell in #14
  • Clean up test fixtures and add missing tests by @Fivell in #15
  • Add X-DIDWW-API-Version header and update README link by @Fivell in #16

Full Changelog: v1.0.0...v1.1.0

v1.0.0

23 Feb 12:47

Choose a tag to compare

fix pyproject.toml