verification
use it
# add to stunt.yaml
services:
hubspot:
adapter: embedded:hubspot-style
# then
$ stunt upThe embedded: source extracts this adapter from the binary — no git clone, fully offline.
how to mock the HubSpot CRM API locally
Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of HubSpot CRM API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real HubSpot CRM API v3 surface — the data is fake, the behavior is real.
backing stores
contactscompaniesdealsticketsassociations
api surface (33)
generated from the adapter manifest — exactly what boots, nothing more · covers 4% of the real API's 564 routes (derived from sdk hubspot-node @ 14.0.1 (floor))
33 routes
GET/crm/v3/objects/contacts
POST/crm/v3/objects/contacts
GET/crm/v3/objects/contacts/{id}
PATCH/crm/v3/objects/contacts/{id}
DELETE/crm/v3/objects/contacts/{id}
POST/crm/v3/objects/contacts/{id}/associations/{toObjectType}/batch/create
POST/crm/v3/objects/contacts/{id}/associations/{toObjectType}/batch/archive
PUT/crm/v3/objects/contacts/{id}/associations/{toObjectType}/{toObjectId}/{associationType}
GET/crm/v3/objects/contacts/{id}/associations/{toObjectType}
GET/crm/v3/objects/companies
POST/crm/v3/objects/companies
GET/crm/v3/objects/companies/{id}
PATCH/crm/v3/objects/companies/{id}
DELETE/crm/v3/objects/companies/{id}
GET/crm/v3/objects/deals
POST/crm/v3/objects/deals
GET/crm/v3/objects/deals/{id}
PATCH/crm/v3/objects/deals/{id}
DELETE/crm/v3/objects/deals/{id}
GET/crm/v3/objects/tickets
POST/crm/v3/objects/tickets
GET/crm/v3/objects/tickets/{id}
PATCH/crm/v3/objects/tickets/{id}
DELETE/crm/v3/objects/tickets/{id}
POST/crm/v3/objects/{objectType}/search
POST/crm/v3/objects/{objectType}/batch/create
POST/crm/v3/objects/{objectType}/batch/read
POST/crm/v3/objects/{objectType}/batch/update
POST/crm/v3/objects/{objectType}/batch/archive
POST/crm/v3/objects/{objectType}/{id}/restore
POST/crm/v3/objects/{objectType}/{id}/associations/{toObjectType}/batch/create
POST/crm/v3/objects/{objectType}/{id}/associations/{toObjectType}/batch/archive
DELETE/crm/v3/objects/{objectType}/{id}/associations/{toObjectType}/{toObjectId}/{associationType}
SDK-verified behaviors (5)
- ✓basicApi.create assigns an id and echoes properties
- ✓basicApi.getById round-trips
- ✓basicApi.update patches a property
- ✓searchApi.doSearch finds the record by name
- ✓archive hides the record from reads
Not implemented (4)
- No webhook subscriptions or signed deliveries (X-HubSpot-Signature-v3 documented only)
- No owners, line_items, products, quotes, or custom object types
- No engagements (calls, emails, meetings, notes, tasks) endpoints
- No properties, pipelines, or import/export endpoints
want more of the HubSpot CRM API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.