Skip to content

Latest commit

 

History

History
81 lines (66 loc) · 3.57 KB

File metadata and controls

81 lines (66 loc) · 3.57 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Changed

  • The API base URL is now addressed as https://api.sendly.link (same host as the former msg-api.actio.pl, renamed for brand consistency). Override it with SENDLY_BASE_URL if you need the old hostname.
  • License changed from Apache-2.0 to MIT.

Fixed

  • Fixed the SENDLY_*/ACTIO_* environment variable fallback so that an empty string is treated as unset, instead of shadowing a real legacy ACTIO_* value.
  • Added typed errors for unexpected 200 responses (non-JSON body, or a body missing the documented message_id / message_ids fields), instead of a raw JSONDecodeError or KeyError.
  • Fixed validation in send_sms_multi so an unhashable element in to (e.g. a nested list) raises SendlyValidationError instead of a raw TypeError.
  • Disabled following HTTP redirects, so a redirect response now surfaces as a typed SendlyApiError instead of being silently followed with the Authorization header attached to the new host.
  • An empty explicit token argument now falls back to the environment (consistent with the other clients), instead of raising immediately.

[2.0.0] - 2026-06-11

Changed

  • Rebranding actio -> sendly (breaking change): the pip package actio-client is now sendly-client, the import package actio is now sendly, and the classes ActioClient / ActioError / ActioValidationError / ActioApiError are now named SendlyClient / SendlyError / SendlyValidationError / SendlyApiError.
  • The User-Agent header now has the form sendly-python-client/<version> (Python/<major>.<minor>), e.g. sendly-python-client/2.0.0 (Python/3.14).
  • The package version now comes from sendly.__version__ (the setuptools dynamic version now points at the new import package).
  • The REST endpoint remains unchanged: https://msg-api.actio.pl.

Added

  • Environment variables SENDLY_TOKEN / SENDLY_BASE_URL with a fallback to the legacy ACTIO_TOKEN / ACTIO_BASE_URL: the legacy variable is read only when the corresponding SENDLY_* variable is not set; when both are set, SENDLY_* wins. Tests cover the fallback and precedence.

[1.0.0] - 2026-06-10

Added

  • ActioClient with send_sms (POST /api/sms) and send_sms_multi (POST /api/sms-multi) methods, typed results (SendResult, MultiSendResult).
  • parse_webhook returning typed models IncomingMessage / DeliveryNotification.
  • Client-side validation (ActioValidationError) and typed API errors (ActioApiError with status_code, a parsed errors map, and the raw raw body).
  • Configuration via constructor arguments or the ACTIO_TOKEN / ACTIO_BASE_URL environment variables; configurable HTTP timeout (30 s by default); no automatic retries.
  • User-Agent: actio-python-client/<version> (Python/<major>.<minor>) header on every outgoing request to the API.
  • X-Request-Id header with a fresh UUID v4 on every outgoing request to the API (a correlation identifier for support purposes and clarifying suspected double-sends).
  • Per-call overridable timeout in send_sms and send_sms_multi, falling back to the client's default value.
  • Single source of truth for the package version: actio.__version__ wired into the package metadata via the setuptools dynamic version.
  • GitHub Actions CI workflow (pytest on Python 3.10-3.14).