Transport & auth
- All endpoints are served over HTTPS under one versioned base URL.
- Every request requires
Authorization: Bearer <token>; a bad token returns401. - The token is read-only and can be revoked/rotated independently.
Envelope & paging
- Every collection returns
{ "data": [...], "has_more": <bool> }. -
has_moreistrueonly when another page exists, andfalseon the last page. - Endpoints honour
page(1-based) andlimit=100. - An empty result returns
200with{ "data": [], "has_more": false }— never404. - No record appears on two pages of the same run; pages never repeat.
Required endpoints
-
GET /pipelinesreturns pipelines with nestedstages[]. - Every stage’s
kindis exactlyopen,won, orlost. -
GET /usersreturns your managers. -
GET /contactsreturns contacts. -
GET /leadsreturns deals withpipeline_id+stage_id.
Optional endpoints
-
/events,/tasks, and/callsare either implemented or return404. - Every
/callsrecord has alead_idor acontact_id.
Incremental sync
-
/contacts,/leads,/tasks,/calls,/eventsacceptupdated_sinceand filter onupdated_at >= updated_since. - Those endpoints return records ordered by
updated_atascending. - Every record carries a valid
updated_at, andupdated_atchanges on every modification — including stage moves and soft-deletes. -
/pipelinesand/usersreturn the full list every time (they get noupdated_since).
IDs & references
- Every record has a stable
idthat never changes for the life of the record. - Cross-references (
pipeline_id,stage_id,responsible_user_id,contact_ids,lead_id) use those same ids.
Data expectations
-
priceon leads is in one consistent currency per connection (currency is not stored). - The most representative contact is first in
contact_ids(only the first is kept). - Deletions you need reflected are sent as
is_deleted: trueon leads (no soft-delete exists for other entities). - Timestamps are ISO-8601; you have reviewed the truncation limits for your longest text fields.
Errors
-
429responses include aRetry-Afterheader where possible. - Transient failures return
5xx; genuine client errors return4xx.
All ticked? Hand your base URL, token, and rate to the business owner and proceed to
Go live.