Skip to content

Releases: adsefid/sdk-python

adsefid v0.6.0

Choose a tag to compare

@moeen moeen released this 13 Oct 10:23
5faf342

Aligns SMS and Messenger cancellation with the updated API contract.

Changed

  • Cancellation requests with more than 2,000 distinct IDs across both lists fail locally with AdsefidValidationError. Duplicate IDs count once within each list.

Verified against adsefid.com Web Service API documentation v1.14.0.

adsefid v0.5.0

Choose a tag to compare

@moeen moeen released this 12 Sep 10:54
72eefa1

Adds compatibility with adsefid.com Web Service API documentation v1.13.0, including structured error details and partial acceptance for bulk and P2P requests.

Breaking changes

  • AdsefidApiError.details is now ApiErrorDetails | None instead of an untyped dictionary or list; read errors and items from the typed model.

Added

  • Added ApiErrorDetails, ApiFieldError, and ApiItemError dataclasses.
  • Added INVALID_MESSAGE_IDS (2046) and FILE_TOO_LARGE (2047).

Changed

  • Bulk and P2P requests now defer item-level validation to the API so valid siblings can be accepted independently.

Verified against adsefid.com Web Service API documentation v1.13.0.

adsefid v0.4.0

Choose a tag to compare

@moeen moeen released this 09 Sep 09:09
48a2a6b

A caller-supplied httpx client now works without its own base_url, malformed success payloads surface as SDK errors, and every model is importable from the top-level package. Upgrade if you inject your own httpx.Client or build requests by hand.

Added

  • Every request and result dataclass is exported from adsefid (for example from adsefid import AdsefidClient, SendSingleSmsRequest); the adsefid.models.* modules keep working.
  • error_code on BulkReceptorResult, P2pMessageResult, MessengerBulkReceptorResult and MessengerP2pReceptorResult, naming the WebServiceResponseCode when that one item was rejected.
  • Typing :: Typed classifier; CI covers Python 3.10 and 3.13.

Changed

  • Every request carries the absolute URL built from base_url, so an http_client you supply needs no base_url of its own.

Fixed

  • A success payload of the wrong JSON shape raised a bare TypeError or KeyError from a model's from_dict; it now raises AdsefidTransportError.

Verified against adsefid.com Web Service API documentation v1.12.0.

adsefid v0.3.0

Choose a tag to compare

@moeen moeen released this 08 Sep 08:32
9de618a

Webhook verification now succeeds against real deliveries, message length limits match the service, and the package ships with tests and an MIT licence. Upgrade if you verify webhooks or send messages near the length limit.

Breaking changes

  • A webhook secret that is not valid Base64 is rejected. Pass the secret exactly as the adsefid.com panel shows it; no change is needed for callers already doing so.

Added

  • MIT licence.
  • Test suite, run in CI.
  • More examples: account and client configuration, bulk and peer-to-peer sends with partial-success handling, templates, status, cancel, inbound, and messenger file upload.
  • README table of the four error.details shapes: validation, single send, bulk with per-item errors, and cancel.

Changed

  • A template parameter declared as number may be sent as a JSON number or a JSON string. A string keeps the exact digits, so "001234" keeps its leading zeros and "1.50" its trailing zero.

Fixed

  • Webhook verification never succeeded for genuine deliveries: the HMAC was keyed with the UTF-8 bytes of the Base64 secret instead of the decoded bytes. A raw-key entry point is available if you store the decoded key yourself.
  • Message length limits are counted in UTF-16 code units, so an emoji costs two. Messages near the limit were accepted locally and then rejected by the service.
  • GET /v1/sms/receive rejects count outside 1..499; 0 was previously accepted.
  • A blank or whitespace-only local_id is treated as not supplied instead of rejected.

Verified against adsefid.com Web Service API documentation v1.11.0.

adsefid v0.2.0

Choose a tag to compare

@moeen moeen released this 08 Sep 05:52
2894a09

Fractional prices, costs, and credit are no longer truncated, and every request now identifies the SDK in its User-Agent header.

Breaking changes

  • cost, total_cost, and credit values are float instead of int; callers annotating int must update.

Added

  • Default User-Agent of adsefid-python/<version>, replaceable through the user_agent client argument. A blank value or one containing a line break is rejected.

Changed

  • Fractional price, cost, and credit values are preserved exactly as the service returns them.

Verified against adsefid.com Web Service API documentation v1.11.0.

adsefid v0.1.0

Choose a tag to compare

@moeen moeen released this 07 Sep 08:35
v0.1.0
00b4d38

Initial public release of adsefid, a client for the adsefid.com SMS Web Service API.

Added

  • SMS: single send, bulk and peer-to-peer send, template send, status lookup, cancel, and inbound receive.
  • Messenger: send with file upload and status lookup.
  • Account: credit and line information.
  • Typed errors for validation, API, rate-limit, and transport failures.
  • Webhook signature verification and event parsing for receive, status, and messenger.status.

Verified against adsefid.com Web Service API documentation v1.11.0.