Skip to content

Releases: merge-api/merge-python-client

v4.2.1

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 05 Oct 16:50
f240f08

Merge Python SDK Release Notes - Version [4.2.1]

This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog

v4.2.0

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 16 Sep 20:54
10384ee

Merge Python SDK Release Notes - Version [4.2.0]

This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog

v4.1.0

Choose a tag to compare

@aekupor aekupor released this 24 Jul 16:32
e781e47

Merge Python SDK Release Notes - Version [4.1.0]

Adds two new optional fields to the SyncStatus object across all categories:

  • sync_status_reason — why a SYNCING model is temporarily not progressing (RATE_LIMITED or WAITING_ON_OTHER_MODELS).
  • data_fresh_as_of — the timestamp the model's synced data is current as of.

v4.0.0

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 17 Jul 14:50
44aff10

Merge Python SDK Release Notes - Version [4.0.0]

This release upgrades the SDK's code generation, resolves the pydantic v2 deprecation warnings that were polluting customer logs (#117), improves retry and rate-limit handling, and adds optional SDK logging. It also raises the minimum supported Python version to 3.10.

Breaking Changes

Python 3.10 or later is now required. Support for Python 3.8 and 3.9 has been dropped; the package will not install on those interpreters. Projects on 3.8/3.9 must upgrade Python or remain on the 3.x line of the SDK.

# Before
python = "^3.8"
# After
python = "^3.10"

New Features

  • Configurable logging: Merge and AsyncMerge now accept an optional logging parameter (a LogConfig dict or a Logger instance). Logging is silent by default, so existing behavior is unchanged unless you opt in.
from merge import Merge

client = Merge(
    api_key="...",
    account_token="...",
    logging={"level": "debug", "silent": False},
)

Bug Fixes

  • Removed pydantic v2 deprecation warnings (#117). The base model previously used a v1-style configuration (smart_union, allow_population_by_field_name, and class-based Config), which emitted DeprecationWarnings on every model use under pydantic v2 and polluted application logs. The pydantic v2 code path now uses ConfigDict with current keys. No code changes are required — the warnings simply stop.

Behavior Changes

These do not require code changes, but may be observable.

  • Retry backoff now respects rate-limit headers. Retries honor the Retry-After and X-RateLimit-Reset response headers (up to 60 seconds) and use a larger maximum backoff (10s → 60s). This improves handling of 429/5xx responses but can lengthen the worst-case duration of a call that hits repeated retryable errors. The retry count is unchanged (default 2, still configurable via request_options).

  • Enum members stringify to their value on Python 3.11+. Generated enums now derive from StrEnum. On Python 3.11+, str(SomeEnum.MEMBER), f-strings, and format() return the bare value (e.g. "ADMIN") instead of "SomeEnum.ADMIN". Equality with the string value (member == "ADMIN") and data returned from the API are unaffected — this only matters if you stringify an enum member object directly, for example when logging or building display strings. There is no change on Python 3.10.

v3.1.0

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 22 Jun 16:04
0984161

Merge Python SDK Release Notes - Version [3.1.0]

This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog

v3.1.0a1

v3.1.0a1 Pre-release
Pre-release

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 11 Jun 12:54
d1b3979

Merge Python SDK Release Notes - Version [3.1.0a1]

This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog

v3.0.1

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 15 May 18:34
23865bb

Merge Python SDK Release Notes - Version [3.0.1]

This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog

v3.0.0

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 14 May 00:17
d0d58ce

Merge Python SDK Release Notes - Version [3.0.0]

This release includes support for all of the latest updates to the Merge API. For more information, see https://www.merge.dev/changelog


Breaking Changes

Expand Parameter Type Changes:

Expand parameters changed from large string union enums to individual enum items that accept a single value or a list. Old pre-combined enum values (e.g. TicketsListRequestExpand.ACCOUNT_ASSIGNEES_CREATOR) have been
removed.

  # v2.x — single combined enum value
  client.ticketing.tickets.list(
      expand=TicketsListRequestExpand.ACCOUNT_ASSIGNEES_CREATOR,
  )

  # v3.x — single item or list of individual items
  from merge.resources.ticketing.resources.tickets import TicketsListRequestExpandItem

  client.ticketing.tickets.list(
      expand=[
          TicketsListRequestExpandItem.ACCOUNT,
          TicketsListRequestExpandItem.ASSIGNEES,
          TicketsListRequestExpandItem.CREATOR,
      ],
  )

  # Single expand still works
  client.ticketing.tickets.list(expand=TicketsListRequestExpandItem.ACCOUNT)

  # Passing a string is unchanged
  client.ticketing.tickets.list(expand="account,assignees,creator")

Affected types: all *ListRequestExpand and *RetrieveRequestExpand types have been replaced with *ListRequestExpandItem and *RetrieveRequestExpandItem equivalents across Accounting, ATS, Chat, CRM, File Storage,
HRIS, Knowledge Base, and Ticketing modules. The API request format (?expand=a,b,c) is unchanged — only the Python input shape changed.

ats.candidates.ignore_create Signature Change:

The reason and message keyword arguments were collapsed into a single request body model.

  # v2.x
  client.ats.candidates.ignore_create(
      model_id,
      reason=IgnoreCommonModelRequestReason.GENERAL_CUSTOMER_REQUEST,
      message="Customer requested ignore",
  )

  # v3.x
  from merge.resources.ats import IgnoreCommonModelRequest, IgnoreCommonModelRequestReason

  client.ats.candidates.ignore_create(
      model_id,
      request=IgnoreCommonModelRequest(
          reason=IgnoreCommonModelRequestReason.GENERAL_CUSTOMER_REQUEST,
          message="Customer requested ignore",
      ),
  )
  

IgnoreCommonModelRequestReason also moved from merge.resources.ats.resources.candidates to merge.resources.ats. The top-level category import works in both 2.x and 3.x; only the deep resource-scoped import path was
removed.

v3.0.0a1

v3.0.0a1 Pre-release
Pre-release

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 12 May 18:11
8fbc4bc

Merge Python SDK Release Notes - Version [3.0.0a1]

Breaking Changes

The per-resource *RequestExpand enums (which baked in every relation combination, e.g. TicketsListRequestExpand.ASSIGNEES_ACCOUNT_CREATOR) have been replaced by *RequestExpandItem enums of single values. Pass a list of items
for multiple relations, or a string for direct control. Wire-level request to Merge is unchanged.

# Before
from merge.resources.ticketing.resources.tickets import TicketsListRequestExpand

client.ticketing.tickets.list(expand=TicketsListRequestExpand.ACCOUNT)
client.ticketing.tickets.list(expand=TicketsListRequestExpand.ASSIGNEES_ACCOUNT_CREATOR)

# After
from merge.resources.ticketing.resources.tickets import TicketsListRequestExpandItem

client.ticketing.tickets.list(expand=TicketsListRequestExpandItem.ACCOUNT)
client.ticketing.tickets.list(expand=[
    TicketsListRequestExpandItem.ASSIGNEES,
    TicketsListRequestExpandItem.ACCOUNT,
    TicketsListRequestExpandItem.CREATOR,
])

# Strings continue to work unchanged
client.ticketing.tickets.list(expand="account")
client.ticketing.tickets.list(expand="account,assignees,creator")

Same pattern applies in every category (accounting, ats, crm, hris, filestorage, knowledgebase, chat, ticketing).

v2.6.4

Choose a tag to compare

@niteshsandal-merge niteshsandal-merge released this 07 May 03:16
3f6bca0

Merge Python SDK Release Notes - Version [2.6.4]

Improvements

  • Chat: Added visible_history_start_datetime to the Member model, exposing the earliest message a member can access in a conversation (null indicates full history).