Changelog¶
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¶
- CLI:
list viewrenamed tolist getfor consistency with other entity commands. - CLI:
--completed/--not-completedboolean flag pattern forreminder update(replaces separate flags). - CLI: Removed API version mentions from help text (implementation detail).
- CLI:
interaction lsnow requires an entity ID (--person-id,--company-id, or--opportunity-id) and defaults to last 7 days with visible warning (API max: 1 year). - CLI: Unified
person field,company field,opportunity fieldcommands replaceset-field,set-fields, andunset-fieldcommands. New syntax:--set FIELD VALUE,--unset FIELD,--json '{...}',--get FIELD.
Removed¶
- CLI:
person set-field,person set-fields,person unset-fieldcommands (useperson fieldinstead). - CLI:
company set-field,company set-fields,company unset-fieldcommands (usecompany fieldinstead). - CLI:
opportunity set-field,opportunity set-fields,opportunity unset-fieldcommands (useopportunity fieldinstead).
Added¶
- CLI: Top-level
entrycommand group as shorthand forlist entry(e.g.,xaffinity entry getinstead ofxaffinity list entry get). - CLI:
--query/-qflag forperson ls,company ls, andopportunity lsto enable free-text search (V1 API). - CLI:
--company-idand--opportunity-idoptions forinteraction ls. - CLI:
-Ashort flag for--allon all paginated list commands. - CLI:
-nshort flag for--max-resultson all commands with result limits. - CLI:
-sshort flag for--page-sizeon all pagination commands. - CLI:
-tshort flag for--typeon interaction commands. - SDK:
OpportunityService.search(),search_pages(),search_all()methods for V1 opportunity search. - SDK: Async versions of opportunity search methods in
AsyncOpportunityService. - SDK:
InteractionService.list()now acceptscompany_idandopportunity_idparameters.
Fixed¶
- CLI: Help text formatting - added missing spaces in command examples (~78 instances).
- CLI: Improved
--cursorhelp text explaining incompatibility with--page-size. - CLI: Clarified
--csvhelp text to indicate it writes to file while stdout format is unchanged.
0.4.8 - 2025-12-31¶
Added¶
- CLI:
xaffinity field historyfor viewing field value change history. - CLI: Session caching for pipeline optimization via
AFFINITY_SESSION_CACHEenvironment variable. - CLI:
session start/end/statuscommands for managing session cache lifecycle. - CLI:
--session-cacheand--no-cacheglobal flags for cache control. - CLI: Cache hit/miss visibility with
--traceflag. - CLI:
config check-key --jsonnow includespatternfield showing key source. - SDK: Client-side filtering for list entries (V2 API does not support server-side filtering).
Changed¶
- CLI:
--filteron list entry commands now applies client-side with warning (V2 API limitation). - CLI: Removed
--opportunity-idfromlist entry add(opportunities are created atomically viaopportunity create --list-id).
Fixed¶
- SDK: Client-side filter parsing handles whitespace-only and unparseable filters gracefully.
- CLI:
--filteron list entries now returns proper field values (V2 API format).
0.4.0 - 2025-12-30¶
Added¶
- CLI:
config check-keycommand to check if an API key is configured (checks environment, .env, and config.toml). - CLI:
config setup-keycommand for secure API key configuration with hidden input, validation, and automatic .gitignore management. - CLI:
set-field,set-fields,unset-fieldcommands for person, company, opportunity, and list entry entities. - CLI:
list entry getcommand with field metadata display. - CLI: Enhanced
--expand-filtersyntax with OR (|), AND (&), NOT (!), NULL checks (=*,!=*), and contains (=~). - SDK:
list_entriesfield added toPersonmodel. - SDK: Unified filter parser with
parse()function andmatches()method for client-side filter evaluation.
Changed¶
- CLI: Authentication error hints now reference
config check-keyandconfig setup-keycommands. - CLI: Authentication documentation updated with Quick Setup section.
Fixed¶
- CLI: Default
--page-sizereduced from 200 to 100 to match Affinity API limit. - SDK: Async
merge()parameter names corrected (primaryCompanyId/duplicateCompanyId). - SDK: Cache invalidation added to async create/update/delete in
CompanyService.
Removed¶
- CLI: Deprecated
field-valueandfield-value-changescommand groups removed (use entity-specific field commands instead). - CLI: Deprecated
update-fieldandbatch-updatelist entry commands removed (useset-field/set-fieldsinstead).
0.3.0 - 2025-12-30¶
Added¶
- CLI:
xaffinity list export --expandfor exporting list entries with entity field expansion (company/person/opportunity fields). - CLI:
xaffinity field-value-changes lsfor viewing field value change history. - CLI:
xaffinity company get(id/URL/resolver selectors) with--all-fieldsand--expand lists|list-entries|people. - CLI:
xaffinity person get(id/URL/resolver selectors) with--all-fieldsand--expand lists|list-entries. - CLI:
xaffinity person lsandxaffinity company lswith search flags. - CLI:
xaffinity opportunitycommand group withls/get/create/update/delete. - CLI:
xaffinity note,xaffinity reminder, andxaffinity interactioncommand groups. - CLI:
xaffinity file uploadcommand for file uploads. - CLI: Write/merge/field operations for list entries.
- CLI:
--max-resultsand--allcontrols for pagination and expansions. - CLI: Progress reporting for all paginated commands.
- CLI: Rate limit visibility via SDK event hook.
- CLI:
--traceflag for debugging SDK requests. - SDK:
client.files.download_stream_with_info(...)exposes headers/filename/size alongside streamed bytes. - SDK: v1-only company association helpers
get_associated_person_ids(...)andget_associated_people(...). - SDK: List-scoped opportunity resolution helpers
resolve(...)andresolve_all(...). - SDK: Async parity for company and person services.
- SDK: Async parity for V1-only services.
- SDK: Async list and list entry write helpers.
- SDK: Pagination support for person resolution in
PersonServiceandAsyncPersonService. - SDK:
client.clear_cache()method for cache invalidation. - SDK: Field value changes service with
client.field_value_changes. - SDK: Detailed exception handling for
ConflictError,UnsafeUrlError, andUnsupportedOperationError. - SDK: Webhook
sent_attimestamp validation. - SDK: Request pipeline with policies (read-only mode, transport injection).
- SDK:
on_errorhook for error observability. - Inbound webhook parsing helpers:
parse_webhook(...),dispatch_webhook(...), andBodyRegistry. - Claude Code plugin for SDK/CLI documentation and guidance.
Changed¶
- CLI: Enum fields now display human-readable names instead of integers (type, status, direction, actionType).
- CLI: Datetimes render in local time with timezone info in column headers.
- CLI: Human/table output renders dict-shaped results as sections/tables (no JSON-looking panels).
- CLI:
--jsonoutput now uses section-keyeddataandmeta.pagination. - CLI: List-entry fields tables default to list-only fields; use
--list-entry-fields-scope allfor full payloads. - CLI: Domain columns are now linkified in table output.
- CLI: Output only pages when content would scroll.
FieldValueTypeis now V2-first and string-based (e.g.dropdown-multi,ranked-dropdown,interaction).ListEntry.entityis now discriminated byentity_type.- Rate limit API unified across sync and async clients.
Fixed¶
- SDK:
ListService.get()now uses V1 API to return correctlist_size. - CLI: JSON serialization now handles datetime objects correctly.
- Sync entity file download
deadline_secondshandling. - File downloads now use public services for company expansion pagination.
0.2.0 - 2025-12-17¶
Added¶
- Initial public release.
client.files.download_stream(...)andclient.files.download_to(...)for chunked file downloads.client.files.upload_path(...)andclient.files.upload_bytes(...)for ergonomic uploads.client.files.all(...)/client.files.iter(...)for auto-pagination over files.
Changed¶
- File downloads now follow redirects without forwarding credentials and use the standard retry/diagnostics policy.
client.files.list(...)andclient.files.upload(...)now require exactly one ofperson_id,organization_id, oropportunity_id(per API contract).