Repository navigation
Releases: merge-api/merge-python-client
Release list
v4.2.1
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
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
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 aSYNCINGmodel is temporarily not progressing (RATE_LIMITEDorWAITING_ON_OTHER_MODELS).data_fresh_as_ofâ the timestamp the model's synced data is current as of.
v4.0.0
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:
MergeandAsyncMergenow accept an optionalloggingparameter (aLogConfigdict or aLoggerinstance). 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-basedConfig), which emittedDeprecationWarnings on every model use under pydantic v2 and polluted application logs. The pydantic v2 code path now usesConfigDictwith 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-AfterandX-RateLimit-Resetresponse headers (up to 60 seconds) and use a larger maximum backoff (10s â 60s). This improves handling of429/5xxresponses but can lengthen the worst-case duration of a call that hits repeated retryable errors. The retry count is unchanged (default 2, still configurable viarequest_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, andformat()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
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
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
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
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
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
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).