Contracting & Hierarchies API

hierarchyProducerRelationshipTerminated

WEBHOOK

Delivered when a producer’s hierarchy relationship ends - its contract
assignment transitions into a terminal status. The data.terminationReason
is the terminal status name (e.g. Terminated, Expired, Declined) and
data.terminationDate is the date the relationship ended.

The upline and commission values reflect the placement as it existed when
the relationship ended.

post

Body

application/json

HierarchyProducerRelationshipTerminatedWebhookEvent

Common wrapper present on every outbound webhook event. The data field
is polymorphic; its schema depends on the value of type.

idstringrequired

Globally unique event identifier. Uses the TypeID format with the
prefix whe_ followed by a UUIDv7-derived suffix
(e.g. whe_01j8e4k2abc123def456). Use this field to deduplicate
deliveries if your endpoint receives the same event more than once.

Example:whe_01j8e4k2abc123def456

typestringrequired

Dot-notation event type string. Use this field to route the event to
the appropriate handler in your integration.

Allowed values:contract.producer_status.updatedcontract.assignment.updatedcontract.assignment.deletedcontract.assignment_change.updatedcontract.assignment_change.deletedcontract.packet.submittedcontract.updatedcontract.deletedcontract.responsible_party.updatedhierarchy.producer.addedhierarchy.producer.changedhierarchy.producer.relationship.terminated

Example:contract.assignment.updated

dataobjectrequired

Payload for the hierarchy.producer.relationship.terminated event. Describes
a producer’s hierarchy placement - its upline and commission level - at the
point its contract assignment transitioned into a terminal status, along with
why (terminationReason) and when (terminationDate). Values reflect the
placement as it existed when the relationship ended; no prior value is included.

Show Child Parameters

Response

200

Customer endpoint acknowledged the event.

200

ContractV2

object

A contract sent from an agency to a carrier on behalf of a producer.

idstring(uuid)required

The contract id.

agencyOrganizationIdstring(uuid)required

The agency organization the contract is sent from.

carrierOrganizationIdstring(uuid)required

The carrier organization the contract is sent to.

personIdstring(uuid)required

The individual producer the contract is on behalf of.

firmIdstring(uuid)

The firm the contract is on behalf of, if any.

responsibleUplineFirmIdstring(uuid)

The upline firm responsible for the contract, if any.

assignmentStatusIdstring(uuid)

The contract’s assignment status id.

assignmentStatusNamestring

The human-readable assignment status (inlined so no follow-up lookup is needed).

activebooleanrequired

Whether the contract is currently active based on its assignments.

effectiveDatestring(date)

The effective date of the contract (yyyy-MM-dd).

endDatestring(date)

The end date of the contract (yyyy-MM-dd).

displayNumberstringrequired

The human-readable contract number.

parentContractIdstring(uuid)

The parent contract id, if this is a subsidiary contract.

contractResponsiblePartiesarray[object]required

One responsible-party window on a contract. Both bounds are inclusive. Windows do not overlap, with
two exceptions: two windows may meet on a single shared day (one window’s endDate equal to the
next window’s startDate), and a window whose startDate equals its endDate is a retired record
rather than a live one-day assignment. To resolve who is responsible on a given day, ignore windows
where startDate equals endDate, and on a shared boundary day prefer the window that starts that
day over the one that ends it. The current window is the one with no endDate; there is at most one
per contract.

Show Child Parameters
createdAtstring(date-time)

RFC3339 UTC creation timestamp.

updatedAtstring(date-time)

RFC3339 UTC last-modified timestamp.

userDefined1string
userDefined2string
userDefined3string
userDefined4string
userDefined5string
userDefined6string
userDefined7string
userDefined8string
userDefined9string
userDefined10string
Example

ContractResponsiblePartyV2

object

One responsible-party window on a contract. Both bounds are inclusive. Windows do not overlap, with
two exceptions: two windows may meet on a single shared day (one window’s endDate equal to the
next window’s startDate), and a window whose startDate equals its endDate is a retired record
rather than a live one-day assignment. To resolve who is responsible on a given day, ignore windows
where startDate equals endDate, and on a shared boundary day prefer the window that starts that
day over the one that ends it. The current window is the one with no endDate; there is at most one
per contract.

idstring(uuid)required

The responsible-party window id.

responsiblePartyIdstring(uuid)required

The person responsible for the contract during this window.

startDatestring(date)required

The first day the responsible party is responsible (yyyy-MM-dd).

endDatestring | null(date)

The last day the responsible party is responsible (yyyy-MM-dd). Absent on the current,
open-ended window.

Example

ProducerV2

object

A producer in the calling customer’s organization. A producer is either an individual
(type = AGENT, identified by personId) or a firm (type = FIRM, identified by
firmId); fields that do not apply to the other kind are null.

typestringrequired

The producer kind.

Allowed values:AGENTFIRM

personIdstring(uuid)

The individual’s id (null for firms).

firmIdstring(uuid)

The firm’s id (null for individuals).

firstNamestring

The individual’s first name (null for firms).

middleNamestring

The individual’s middle name (null for firms). On this list item it comes from the
contracting record’s own copy, which can lag the Identity API; the by-id endpoint reads
it live.

lastNamestring

The individual’s last name (null for firms).

suffixstring
firmNamestring

The firm’s name (null for individuals).

npnstring

National Producer Number.

emailstring

The individual’s email (null for firms).

organizationIdstring(uuid)
organizationNamestring
roleNamestring
statusIdstring(uuid)
statusNamestring

The human-readable producer status (inlined). Null for firms, which carry no status.

activeboolean

Whether the producer is active. Always true for firms.

divisionsarray[string]
userDefined1string
userDefined2string
userDefined3string
userDefined4string
userDefined5string
userDefined6string
userDefined7string
userDefined8string
userDefined9string
userDefined10string
createdAtstring(date-time)

RFC3339 UTC creation timestamp.

updatedAtstring(date-time)

RFC3339 UTC last-modified timestamp.

Example

ProducerV2Page

object

A token-paginated page of producers (plain envelope, no HAL wrappers).

itemsarray[object]required

A producer in the calling customer’s organization. A producer is either an individual
(type = AGENT, identified by personId) or a firm (type = FIRM, identified by
firmId); fields that do not apply to the other kind are null.

Show Child Parameters
pageobjectrequired

Pagination metadata for a V2 list response.

Show Child Parameters
Example