View Source Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
0.1.0 - 2026-07-31
First Hex release of ExPipedrive, a v2-first fork of LineDrive.
Added
Client foundation
- Pipedrive API v2 client foundation (
Client,Request, default/api/v2; explicitapi_version: :v1where needed) - Header API token auth (
x-api-token); legacy query auth viaauth: :query - Structured
ExPipedrive.Error/Responsemapping Page/Cursor.streamfor cursor pagination (limit clamped to 500)- OAuth
Tokenbundles,ensure_fresh, pluggableTokenStore(no Ecto in core) - Rate-limit aware retry middleware + request telemetry
(
ExPipedrive.Middleware.Retry,ExPipedrive.Middleware.Telemetry,ExPipedrive.RateLimit); Client opts:retry,:telemetry,:middleware ExPipedrive.Resourcebehaviour + CRUD/list/stream helpers;ProductsandStagesadopt the patternExPipedrive.Raw.request/4escape hatch for unsupported endpoints
Resources (API v2 unless noted)
- Deals and Persons: list/stream (cursor), get, create, update; deal delete
- Organizations, Activities, Pipelines, Stages, Products: list/stream, get, create, update, delete (product variations deferred)
- Search:
ExPipedrive.Searchover/api/v2/itemSearchwith cursor pages/stream and typedSearchResult - Deal, Person, and Organization Fields list/page/stream plus
ExPipedrive.Fieldsfor resolving custom-field hashes and labels - Leads / Notes: explicit API v1 shims with map-based create helpers and
get/2,create/2,list/2aliases - Webhooks:
ExPipedrive.Webhookssubscription list/create/delete (API v1 management);Webhook.Event/Webhook.Handlerinbound surface (optional Plug; Basic auth; package extract deferred)
Docs & tooling
- Fake Pipedrive server fixtures for v2 resources used in tests
- MVP README flows: stream open deals; create person then deal
- CI matrix, ExDoc, Hex publish-on-release workflow
Changed
- Package / OTP app / modules rebranded from LineDrive →
ex_pipedrive/ExPipedrive - Core deps slimmed (Timex removed; Plug optional for webhooks only)
- Silent OTP Application/Registry coupling removed
Migrating from LineDrive
- Depend on
{:ex_pipedrive, "~> 0.1.0"}instead of:line_drive. - Rename modules
LineDrive.*→ExPipedrive.*. - Prefer
ExPipedrive.client/2(header token) and v2 helpers (Deals.stream/2,Deals.create/2,Persons.create/2, …) over legacy v1 list APIs. - OAuth: persist
ExPipedrive.Oauth.Tokenvia yourTokenStoreimplementation; build clients withClient.from_token/2orfrom_token_store/4. - Use
ExPipedrive.Raw.request/4for endpoints not yet wrapped.