1.0.0
Initial release.
Added
- Modern REST API:
Tipalti.Payees,Tipalti.Invoices,Tipalti.Payments— full CRUD/list/stream coverage, OAuth2 client-credentials auth with automatic token caching and refresh (Tipalti.Auth.TokenServer). - Legacy SOAP API:
Tipalti.SOAP.Payee(21 operations) andTipalti.SOAP.Payer(24 operations), covering the full Payee/Payer Functions surface, with automatic HMAC-SHA256 request signing (Tipalti.SOAP.Signature) and XML fault parsing. - Procurement REST API:
Tipalti.Procurement.PurchaseOrders(list/update) andTipalti.Procurement.Employees(full 3-step CSV upload/import flow). Tipalti.Configfor credential/environment management across all three API families.Tipalti.Errorand 6 typed exception subclasses (AuthenticationError,ValidationError,APIError,RateLimitError,NetworkError,SOAPFaultError).Tipalti.HTTP: transport built on OTP's:httpc/:ssl(no external HTTP client dependency), with exponential backoff + full jitter retries and TLS verification via:public_key.cacerts_get/0.Tipalti.Pagination: genericStream-based auto-pagination, used by every REST resource'sstream/2.Tipalti.RateLimiter: optional token-bucket rate limiter for high-throughput Procurement API usage.Tipalti.Webhook: IPN notification parsing.Tipalti.Telemetry::telemetryspan instrumentation on every request.- Every read/write function has a raising
!counterpart. mix credo --strict: 0 issues (312 functions analyzed).mix dialyzer: 0 errors. Bothcredoanddialyxir(plus their small transitive deps) are pinned to git tags rather than hex.pm, for environments where the hex.pm registry isn't reachable — see the comment inmix.exs.