ECI Solutions · AsyncAPI Specification
Eci Solutions Lasso Registrant Webhooks
Version
View Spec
View on GitHub
AccountingBuilding SupplyBusiness ManagementCRMConstructionDistributionE-CommerceERPField ServiceInventoryManufacturingPaymentsRetailShippingAsyncAPIEvents
AsyncAPI Specification
generated: '2026-09-06'
method: searched
source: >-
https://platform.lassocrm.com/api/lasso.yml — the "Lasso Event System" section of
info.description and the RegistrantWebhookEvent component schema
provider: ECI Solutions
providerId: eci-solutions
api: eci-solutions:eci-solutions-lasso-crm
type: Webhooks
asyncapi_published: false
asyncapi_note: >-
ECI publishes NO AsyncAPI document for any product. Lasso CRM is the only ECI surface with an
event system at all, and it is described in prose plus one component schema inside the REST
OpenAPI, not as a separate event contract. This artifact captures that webhook catalog verbatim
from the contract. Nothing here is generated: the trigger list, the envelope fields and the
`changed` enumeration are all copied from what Lasso publishes. No AsyncAPI was authored on the
provider's behalf.
transport: https-webhook
delivery: push to registered integrations
subscription:
detail: >-
Subscriptions are not created by the API. A registrant is ASSOCIATED with an external system by
POST /registrants/{registrantId}/integrations with an ExternalId body; the integration type is
inferred from the API key used. The webhook endpoint URL itself, and any static customParams,
are configured on the Lasso project-level webhook configuration page, not through the API.
operations:
- operationId: post_registrants_integrations
method: POST
path: /registrants/{registrantId}/integrations
description: Associate an external customer id with a Lasso registrant so integration-specific triggers fire.
- operationId: delete_registrants_integrations
method: DELETE
path: /registrants/{registrantId}/integrations
description: Remove the association.
- operationId: delete_registrants_external
method: DELETE
path: /registrants/{registrantId}/external/{externalId}
description: Detach one external id mapping.
envelope:
schema: RegistrantWebhookEvent
fields:
- name: timestamp
type: string
format: ISO 8601 UTC
description: Time of the event.
- name: id
type: string
description: The Lasso registrantId. Present even when entity is null (deleted events).
- name: externalId
type: string
description: The external system's id for this registrant, matching RegistrantRead.externalId.
- name: action
type: string
enum: [inserted, updated, deleted]
description: entity is set on inserted and updated; NOT set on deleted.
- name: customParams
type: array
description: >-
Static key/value pairs configured on the project-level webhook configuration and passed
through unchanged — e.g. communityId=12345 — so a consumer can map the event into its own
tenancy without a lookup.
- name: changed
type: array of string
description: >-
On update events only, the RegistrantRead field names that triggered the webhook. Empty on
inserted and deleted. A stateless consumer can skip irrelevant updates without diffing the
entity — e.g. when changed is only ["history"].
allowed_values:
- person
- rating
- excludeFromTraffic
- registrationDate
- followUpProcess
- sourceType
- secondarySourceType
- questions
- notes
- assignedSalesReps
- history
caveat: >-
Internal metadata changes (status, LastModified, activities, emailOptedStatus) DO trigger a
webhook but never appear in `changed`. A consumer will therefore receive update events whose
changed array is empty for reasons it cannot see.
- name: entity
type: RegistrantRead
description: The full registrant, embedded. Null on deleted.
events:
- name: registrant.inserted
action: inserted
trigger: Create Registrant
- name: registrant.deleted
action: deleted
trigger: Delete Registrant
- name: registrant.updated
action: updated
trigger: >-
Update of any of the following registrant attributes — person.firstName, person.lastName,
person.nameTitle, person.contactPreference, person.company, person.birthday, person.gender,
person.jobTitle, person.nickname, person.ssnSin, Rating, SourceType, SecondarySourceType,
FollowUpProcess, registrationDate, emails, phones, addresses, notes, questions,
excludeFromTraffic, status, relationships, assignedSalesReps.
note: >-
Explicitly NOT every write fires an event — Lasso states that only actions on certain
registrant attributes trigger a webhook.
known_behaviour:
- >-
Changelog v1.0.30 (2018-10-10): specifying an externalId on POST /registrants no longer
generates a webhook event for all integration types except lassoLeadCapture.
retries: not documented
signing: not documented
replay: not documented
gaps:
- No signature or shared-secret verification scheme is documented for the webhook payload.
- No retry/backoff policy, no delivery log, and no replay endpoint are documented.
- No webhook surface exists on ANY ECI Manufacturing product. The ERP, JobBOSS² and M1 APIs are poll-only; the documented incremental mechanism is the rowVersion cursor (see conventions/).
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/eci-solutions-lasso-registrant-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.