Min scope — the scope your extension must be granted before the event is delivered to it. Scope is re-checked at send time, so a revoked consent stops delivery mid-flight rather than at the next install.
PII tier — how sensitive the payload is. Payloads are deliberately thin: ids plus a little denormalized context. Fetch detail through the Gateway under a scope check rather than expecting it inline.
Version — the payload contract version. Payloads evolve additively only: a schema may gain optional fields, and the version increments to signal that. A breaking change ships as a new event name, so a contract you have integrated against never changes shape underneath you.
Payloads
building.config.changed
Version 1 · PII tier NONE · requires BUILDING_SETTINGS_VIEW
| Field | Type | Required | Description |
|---|
| changedKeys | string[] | yes | — |
Example payload
{
"changedKeys": [
"booking.enabled",
"feed.moderation"
]
}
building.unit.assigned
Version 1 · PII tier LOW · requires BUILDING_SETTINGS_VIEW
| Field | Type | Required | Description |
|---|
| unitId | string | yes | — |
| membershipId | string | null | yes | — |
| userId | string | null | yes | — |
Example payload
{
"unitId": "unit_2",
"membershipId": "mem_1",
"userId": "usr_1"
}
building.unit.created
Version 1 · PII tier LOW · requires BUILDING_SETTINGS_VIEW
| Field | Type | Required | Description |
|---|
| unitId | string | yes | — |
| label | string | null | yes | — |
Example payload
{
"unitId": "unit_2",
"label": "PH-1"
}
calendar.event.cancelled
Version 1 · PII tier LOW · requires CALENDAR_VIEW
| Field | Type | Required | Description |
|---|
| eventId | string | yes | — |
Example payload
{
"eventId": "evt_1"
}
calendar.event.created
Version 1 · PII tier LOW · requires CALENDAR_VIEW
| Field | Type | Required | Description |
|---|
| eventId | string | yes | — |
| startsAt | string | yes | — |
| endsAt | string | null | yes | — |
Example payload
{
"eventId": "evt_1",
"startsAt": "2026-08-01T17:00:00.000Z",
"endsAt": "2026-08-01T18:00:00.000Z"
}
calendar.event.updated
Version 1 · PII tier LOW · requires CALENDAR_VIEW
| Field | Type | Required | Description |
|---|
| eventId | string | yes | — |
| startsAt | string | yes | — |
| endsAt | string | null | yes | — |
Example payload
{
"eventId": "evt_1",
"startsAt": "2026-08-01T18:00:00.000Z",
"endsAt": null
}
concierge.guest_pass.issued
Version 1 · PII tier LOW · requires GUEST_PASS_MANAGE
| Field | Type | Required | Description |
|---|
| guestPassId | string | yes | — |
| unitId | string | null | yes | — |
| purpose | string | null | yes | — |
| validUntil | string | null | yes | — |
Example payload
{
"guestPassId": "gp_1",
"unitId": "unit_2",
"purpose": "GUEST",
"validUntil": "2026-08-02T00:00:00.000Z"
}
concierge.guest_pass.revoked
Version 1 · PII tier LOW · requires GUEST_PASS_MANAGE
| Field | Type | Required | Description |
|---|
| guestPassId | string | yes | — |
| unitId | string | null | yes | — |
Example payload
{
"guestPassId": "gp_1",
"unitId": "unit_2"
}
concierge.incident.created
Version 1 · PII tier LOW · requires INCIDENT_MANAGE
| Field | Type | Required | Description |
|---|
| incidentId | string | yes | — |
| category | string | yes | — |
| severity | string | yes | — |
Example payload
{
"incidentId": "inc_1",
"category": "SECURITY",
"severity": "HIGH"
}
concierge.incident.resolved
Version 1 · PII tier LOW · requires INCIDENT_MANAGE
| Field | Type | Required | Description |
|---|
| incidentId | string | yes | — |
| resolvedByUserId | string | null | yes | — |
Example payload
{
"incidentId": "inc_1",
"resolvedByUserId": "usr_9"
}
concierge.shift_note.recorded
Version 1 · PII tier LOW · requires SHIFT_NOTES
| Field | Type | Required | Description |
|---|
| shiftNoteId | string | yes | — |
| category | string | yes | — |
| authorId | string | null | yes | — |
Example payload
{
"shiftNoteId": "sn_1",
"category": "HANDOFF",
"authorId": "usr_9"
}
concierge.visitor.checked_in
Version 1 · PII tier LOW · requires VISITOR_MANAGE
| Field | Type | Required | Description |
|---|
| visitorId | string | yes | — |
| unitId | string | null | yes | — |
| guestPassId | string | null | yes | — |
| purpose | string | null | yes | — |
Example payload
{
"visitorId": "vis_1",
"unitId": "unit_2",
"guestPassId": "gp_1",
"purpose": "DELIVERY"
}
concierge.visitor.checked_out
Version 1 · PII tier LOW · requires VISITOR_MANAGE
| Field | Type | Required | Description |
|---|
| visitorId | string | yes | — |
| unitId | string | null | yes | — |
Example payload
{
"visitorId": "vis_1",
"unitId": "unit_2"
}
deposit.ledger.deducted
Version 1 · PII tier MODERATE · requires DEPOSIT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| depositId | string | yes | — |
| amountCents | number | yes | — |
| reason | string | null | yes | — |
Example payload
{
"depositId": "dep_1",
"amountCents": 5000,
"reason": "DAMAGE"
}
deposit.ledger.recorded
Version 1 · PII tier LOW · requires DEPOSIT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| depositId | string | yes | — |
| leaseId | string | null | yes | — |
| amountCents | number | yes | — |
Example payload
{
"depositId": "dep_1",
"leaseId": "lease_1",
"amountCents": 105000
}
deposit.ledger.refunded
Version 1 · PII tier LOW · requires DEPOSIT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| depositId | string | yes | — |
| amountCents | number | yes | — |
Example payload
{
"depositId": "dep_1",
"amountCents": 100000
}
deposit.ledger.transferred
Version 1 · PII tier LOW · requires DEPOSIT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| depositId | string | yes | — |
| leaseId | string | null | yes | — |
| fromUserId | string | null | yes | — |
| toUserId | string | null | yes | — |
Example payload
{
"depositId": "dep_1",
"leaseId": "lease_1",
"fromUserId": "usr_1",
"toUserId": "usr_2"
}
document.file.categorized
Version 1 · PII tier LOW · requires DOCUMENT_VIEW
| Field | Type | Required | Description |
|---|
| documentId | string | yes | — |
| categoryId | string | null | yes | — |
| previousCategoryId | string | null | yes | — |
Example payload
{
"documentId": "doc_1",
"categoryId": "cat_3",
"previousCategoryId": null
}
document.file.deleted
Version 1 · PII tier LOW · requires DOCUMENT_VIEW
| Field | Type | Required | Description |
|---|
| documentId | string | yes | — |
Example payload
{
"documentId": "doc_1"
}
document.file.uploaded
Version 1 · PII tier LOW · requires DOCUMENT_VIEW
| Field | Type | Required | Description |
|---|
| documentId | string | yes | — |
| categoryId | string | null | yes | — |
| mimeType | string | null | yes | — |
Example payload
{
"documentId": "doc_1",
"categoryId": "cat_3",
"mimeType": "application/pdf"
}
extension.installation.config_changed
Version 1 · PII tier NONE · requires EXTENSION_MANAGE
| Field | Type | Required | Description |
|---|
| installationId | string | yes | — |
| extensionId | string | yes | — |
| extensionSlug | string | yes | — |
| scopeType | BUILDING | MANAGEMENT_ORG | JURISDICTION | GLOBAL | yes | — |
| scopeId | string | yes | — |
Example payload
{
"installationId": "inst_1",
"extensionId": "ext_1",
"extensionSlug": "acme-screening",
"scopeType": "BUILDING",
"scopeId": "bld_1"
}
extension.installation.installed
Version 1 · PII tier NONE · requires EXTENSION_MANAGE
| Field | Type | Required | Description |
|---|
| installationId | string | yes | — |
| extensionId | string | yes | — |
| extensionSlug | string | yes | — |
| versionId | string | yes | — |
| scopeType | BUILDING | MANAGEMENT_ORG | JURISDICTION | GLOBAL | yes | — |
| scopeId | string | yes | — |
Example payload
{
"installationId": "inst_1",
"extensionId": "ext_1",
"extensionSlug": "acme-screening",
"versionId": "ver_1",
"scopeType": "BUILDING",
"scopeId": "bld_1"
}
extension.installation.resumed
Version 1 · PII tier NONE · requires EXTENSION_MANAGE
| Field | Type | Required | Description |
|---|
| installationId | string | yes | — |
| extensionId | string | yes | — |
| extensionSlug | string | yes | — |
| scopeType | BUILDING | MANAGEMENT_ORG | JURISDICTION | GLOBAL | yes | — |
| scopeId | string | yes | — |
Example payload
{
"installationId": "inst_1",
"extensionId": "ext_1",
"extensionSlug": "acme-screening",
"scopeType": "BUILDING",
"scopeId": "bld_1"
}
extension.installation.suspended
Version 1 · PII tier NONE · requires EXTENSION_MANAGE
| Field | Type | Required | Description |
|---|
| installationId | string | yes | — |
| extensionId | string | yes | — |
| extensionSlug | string | yes | — |
| scopeType | BUILDING | MANAGEMENT_ORG | JURISDICTION | GLOBAL | yes | — |
| scopeId | string | yes | — |
| reason | string | null | yes | — |
Example payload
{
"installationId": "inst_1",
"extensionId": "ext_1",
"extensionSlug": "acme-screening",
"scopeType": "BUILDING",
"scopeId": "bld_1",
"reason": "billing hold"
}
extension.installation.uninstalled
Version 1 · PII tier NONE · requires EXTENSION_MANAGE
| Field | Type | Required | Description |
|---|
| installationId | string | yes | — |
| extensionId | string | yes | — |
| extensionSlug | string | yes | — |
| scopeType | BUILDING | MANAGEMENT_ORG | JURISDICTION | GLOBAL | yes | — |
| scopeId | string | yes | — |
Example payload
{
"installationId": "inst_1",
"extensionId": "ext_1",
"extensionSlug": "acme-screening",
"scopeType": "BUILDING",
"scopeId": "bld_1"
}
extension.installation.upgraded
Version 1 · PII tier NONE · requires EXTENSION_MANAGE
| Field | Type | Required | Description |
|---|
| installationId | string | yes | — |
| extensionId | string | yes | — |
| extensionSlug | string | yes | — |
| scopeType | BUILDING | MANAGEMENT_ORG | JURISDICTION | GLOBAL | yes | — |
| scopeId | string | yes | — |
| fromVersionId | string | yes | — |
| toVersionId | string | yes | — |
Example payload
{
"installationId": "inst_1",
"extensionId": "ext_1",
"extensionSlug": "acme-screening",
"scopeType": "BUILDING",
"scopeId": "bld_1",
"fromVersionId": "ver_1",
"toVersionId": "ver_2"
}
inbox.request.assigned
Version 1 · PII tier LOW · requires INBOX_REQUEST_VIEW
| Field | Type | Required | Description |
|---|
| requestId | string | yes | — |
| assigneeUserId | string | null | yes | — |
Example payload
{
"requestId": "req_1",
"assigneeUserId": "usr_9"
}
inbox.request.created
Version 1 · PII tier LOW · requires INBOX_REQUEST_VIEW
| Field | Type | Required | Description |
|---|
| requestId | string | yes | — |
| status | string | yes | — |
| category | string | null | yes | — |
Example payload
{
"requestId": "req_1",
"status": "OPEN",
"category": "PLUMBING"
}
inbox.request.reopened
Version 1 · PII tier LOW · requires INBOX_REQUEST_VIEW
| Field | Type | Required | Description |
|---|
| requestId | string | yes | — |
Example payload
{
"requestId": "req_1"
}
inbox.request.resolved
Version 1 · PII tier LOW · requires INBOX_REQUEST_VIEW
| Field | Type | Required | Description |
|---|
| requestId | string | yes | — |
| resolution | string | null | yes | — |
Example payload
{
"requestId": "req_1",
"resolution": "RESOLVED"
}
inbox.request.routing_changed
Version 1 · PII tier LOW · requires INBOX_REQUEST_VIEW
| Field | Type | Required | Description |
|---|
| requestId | string | yes | — |
| previousRoutingMode | string | yes | — |
| routingMode | string | yes | — |
Example payload
{
"requestId": "req_1",
"previousRoutingMode": "NORMAL",
"routingMode": "ESCALATED_PMC"
}
inbox.request.status_changed
Version 1 · PII tier LOW · requires INBOX_REQUEST_VIEW
| Field | Type | Required | Description |
|---|
| requestId | string | yes | — |
| previousStatus | string | yes | — |
| status | string | yes | — |
Example payload
{
"requestId": "req_1",
"previousStatus": "OPEN",
"status": "IN_PROGRESS"
}
invitation.invite.accepted
Version 1 · PII tier LOW · requires DIRECTORY_VIEW
| Field | Type | Required | Description |
|---|
| invitationId | string | yes | — |
| membershipId | string | yes | — |
| userId | string | yes | — |
Example payload
{
"invitationId": "inv_1",
"membershipId": "mem_1",
"userId": "usr_1"
}
invitation.invite.sent
Version 1 · PII tier LOW · requires DIRECTORY_VIEW
| Field | Type | Required | Description |
|---|
| invitationId | string | yes | — |
| unitId | string | null | yes | — |
Example payload
{
"invitationId": "inv_1",
"unitId": "unit_2"
}
leasing.lease.activated
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| unitId | string | null | yes | — |
Example payload
{
"leaseId": "lease_1",
"unitId": "unit_2"
}
leasing.lease.created
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| unitId | string | null | yes | — |
| status | string | yes | — |
Example payload
{
"leaseId": "lease_1",
"unitId": "unit_2",
"status": "DRAFT"
}
leasing.lease.sent
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| unitId | string | null | yes | — |
Example payload
{
"leaseId": "lease_1",
"unitId": "unit_2"
}
leasing.lease.signed
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| unitId | string | null | yes | — |
Example payload
{
"leaseId": "lease_1",
"unitId": "unit_2"
}
leasing.lease.terminated
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| reason | string | null | yes | — |
Example payload
{
"leaseId": "lease_1",
"reason": "END_OF_TERM"
}
leasing.move.completed
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| moveEventId | string | yes | — |
| kind | string | yes | — |
Example payload
{
"leaseId": "lease_1",
"moveEventId": "move_1",
"kind": "MOVE_IN"
}
leasing.move.scheduled
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| moveEventId | string | yes | — |
| kind | string | yes | — |
| scheduledFor | string | yes | — |
Example payload
{
"leaseId": "lease_1",
"moveEventId": "move_1",
"kind": "MOVE_IN",
"scheduledFor": "2026-09-01T00:00:00.000Z"
}
leasing.renewal.accepted
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| renewalId | string | yes | — |
Example payload
{
"leaseId": "lease_1",
"renewalId": "ren_1"
}
leasing.renewal.declined
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| renewalId | string | yes | — |
Example payload
{
"leaseId": "lease_1",
"renewalId": "ren_1"
}
leasing.renewal.offered
Version 1 · PII tier LOW · requires LEASE_VIEW
| Field | Type | Required | Description |
|---|
| leaseId | string | yes | — |
| renewalId | string | yes | — |
| offeredRentCents | number | null | yes | — |
Example payload
{
"leaseId": "lease_1",
"renewalId": "ren_1",
"offeredRentCents": 210000
}
legal.agreement.cancelled
Version 1 · PII tier LOW · requires AGREEMENT_VIEW
| Field | Type | Required | Description |
|---|
| agreementId | string | yes | — |
Example payload
{
"agreementId": "agr_1"
}
legal.agreement.completed
Version 1 · PII tier LOW · requires AGREEMENT_VIEW
| Field | Type | Required | Description |
|---|
| agreementId | string | yes | — |
Example payload
{
"agreementId": "agr_1"
}
legal.agreement.declined
Version 1 · PII tier LOW · requires AGREEMENT_VIEW
| Field | Type | Required | Description |
|---|
| agreementId | string | yes | — |
Example payload
{
"agreementId": "agr_1"
}
legal.agreement.expired
Version 1 · PII tier LOW · requires AGREEMENT_VIEW
| Field | Type | Required | Description |
|---|
| agreementId | string | yes | — |
Example payload
{
"agreementId": "agr_1"
}
legal.agreement.partially_signed
Version 1 · PII tier LOW · requires AGREEMENT_VIEW
| Field | Type | Required | Description |
|---|
| agreementId | string | yes | — |
Example payload
{
"agreementId": "agr_1"
}
legal.agreement.sent
Version 1 · PII tier LOW · requires AGREEMENT_VIEW
| Field | Type | Required | Description |
|---|
| agreementId | string | yes | — |
| category | string | null | yes | — |
Example payload
{
"agreementId": "agr_1",
"category": "LEASE"
}
legal.agreement.signed
Version 1 · PII tier LOW · requires AGREEMENT_VIEW
| Field | Type | Required | Description |
|---|
| agreementId | string | yes | — |
| signerUserId | string | null | yes | — |
Example payload
{
"agreementId": "agr_1",
"signerUserId": "usr_1"
}
legal.prescribed_notice.acknowledged
Version 1 · PII tier LOW · requires PRESCRIBED_NOTICE_MANAGE
| Field | Type | Required | Description |
|---|
| noticeId | string | yes | — |
| acknowledgedByUserId | string | null | yes | — |
Example payload
{
"noticeId": "not_1",
"acknowledgedByUserId": "usr_1"
}
legal.prescribed_notice.generated
Version 1 · PII tier LOW · requires PRESCRIBED_NOTICE_MANAGE
| Field | Type | Required | Description |
|---|
| noticeId | string | yes | — |
| formCode | string | null | yes | — |
| leaseId | string | null | yes | — |
Example payload
{
"noticeId": "not_1",
"formCode": "RTB-12",
"leaseId": "lease_1"
}
legal.prescribed_notice.served
Version 1 · PII tier LOW · requires PRESCRIBED_NOTICE_MANAGE
| Field | Type | Required | Description |
|---|
| noticeId | string | yes | — |
| servedVia | string | null | yes | — |
Example payload
{
"noticeId": "not_1",
"servedVia": "EMAIL"
}
meeting.meeting.cancelled
Version 1 · PII tier LOW · requires MEETING_ATTEND
| Field | Type | Required | Description |
|---|
| meetingId | string | yes | — |
Example payload
{
"meetingId": "mtg_1"
}
meeting.meeting.created
Version 1 · PII tier LOW · requires MEETING_ATTEND
| Field | Type | Required | Description |
|---|
| meetingId | string | yes | — |
| type | string | yes | — |
| status | string | yes | — |
| scheduledAt | string | null | yes | — |
Example payload
{
"meetingId": "mtg_1",
"type": "AGM",
"status": "PLANNING",
"scheduledAt": "2026-09-01T02:00:00.000Z"
}
meeting.meeting.ended
Version 1 · PII tier LOW · requires MEETING_ATTEND
| Field | Type | Required | Description |
|---|
| meetingId | string | yes | — |
| type | string | yes | — |
| hasMinutes | boolean | yes | — |
Example payload
{
"meetingId": "mtg_1",
"type": "AGM",
"hasMinutes": true
}
meeting.meeting.scheduled
Version 1 · PII tier LOW · requires MEETING_ATTEND
| Field | Type | Required | Description |
|---|
| meetingId | string | yes | — |
| scheduledAt | string | yes | — |
Example payload
{
"meetingId": "mtg_1",
"scheduledAt": "2026-09-01T02:00:00.000Z"
}
meeting.minutes.published
Version 1 · PII tier LOW · requires MEETING_ATTEND
| Field | Type | Required | Description |
|---|
| meetingId | string | yes | — |
| documentId | string | null | yes | — |
Example payload
{
"meetingId": "mtg_1",
"documentId": "doc_9"
}
meeting.motion.decided
Version 1 · PII tier LOW · requires MEETING_ATTEND
| Field | Type | Required | Description |
|---|
| meetingId | string | yes | — |
| motionId | string | yes | — |
| result | string | yes | — |
| yesVotes | number | yes | — |
| noVotes | number | yes | — |
| abstainVotes | number | yes | — |
Example payload
{
"meetingId": "mtg_1",
"motionId": "mo_7",
"result": "PASSED",
"yesVotes": 12,
"noVotes": 3,
"abstainVotes": 1
}
meeting.motion.proposed
Version 1 · PII tier LOW · requires MEETING_ATTEND
| Field | Type | Required | Description |
|---|
| meetingId | string | yes | — |
| motionId | string | yes | — |
| voteType | string | yes | — |
| decisionRule | string | yes | — |
Example payload
{
"meetingId": "mtg_1",
"motionId": "mo_7",
"voteType": "FOR_AGAINST",
"decisionRule": "MAJORITY"
}
membership.member.created
Version 1 · PII tier LOW · requires DIRECTORY_VIEW
| Field | Type | Required | Description |
|---|
| membershipId | string | yes | — |
| userId | string | yes | — |
| unitId | string | null | yes | — |
| isOwner | boolean | yes | — |
| isResident | boolean | yes | — |
| managerRole | string | null | yes | — |
Example payload
{
"membershipId": "mem_1",
"userId": "usr_1",
"unitId": "unit_2",
"isOwner": false,
"isResident": true,
"managerRole": null
}
membership.member.removed
Version 1 · PII tier LOW · requires DIRECTORY_VIEW
| Field | Type | Required | Description |
|---|
| membershipId | string | yes | — |
| userId | string | yes | — |
Example payload
{
"membershipId": "mem_1",
"userId": "usr_1"
}
membership.member.role_changed
Version 1 · PII tier LOW · requires DIRECTORY_VIEW
| Field | Type | Required | Description |
|---|
| membershipId | string | yes | — |
| userId | string | yes | — |
| previousManagerRole | string | null | yes | — |
| managerRole | string | null | yes | — |
Example payload
{
"membershipId": "mem_1",
"userId": "usr_1",
"previousManagerRole": null,
"managerRole": "STRATA_COUNCIL"
}
membership.member.verified
Version 1 · PII tier LOW · requires DIRECTORY_VIEW
| Field | Type | Required | Description |
|---|
| membershipId | string | yes | — |
| userId | string | yes | — |
| verification | string | yes | — |
Example payload
{
"membershipId": "mem_1",
"userId": "usr_1",
"verification": "VERIFIED"
}
messaging.channel.created
Version 1 · PII tier LOW · requires CHANNEL_VIEW
| Field | Type | Required | Description |
|---|
| conversationId | string | yes | — |
| channelType | string | yes | — |
| participantCount | number | yes | — |
Example payload
{
"conversationId": "conv_1",
"channelType": "USER",
"participantCount": 4
}
messaging.conversation.created
Version 1 · PII tier LOW · requires MESSAGE_VIEW
| Field | Type | Required | Description |
|---|
| conversationId | string | yes | — |
| isGroup | boolean | yes | — |
| participantCount | number | yes | — |
Example payload
{
"conversationId": "conv_1",
"isGroup": false,
"participantCount": 2
}
messaging.message.sent
Version 1 · PII tier LOW · requires MESSAGE_VIEW
| Field | Type | Required | Description |
|---|
| conversationId | string | yes | — |
| messageId | string | yes | — |
| authorUserId | string | yes | — |
| source | string | yes | — |
| hasAttachments | boolean | yes | — |
Example payload
{
"conversationId": "conv_1",
"messageId": "msg_1",
"authorUserId": "usr_9",
"source": "APP",
"hasAttachments": false
}
org.building.added
Version 1 · PII tier NONE · requires BUILDING_SETTINGS_VIEW
| Field | Type | Required | Description |
|---|
| orgId | string | yes | — |
| buildingId | string | yes | — |
Example payload
{
"orgId": "org_1",
"buildingId": "bld_1"
}
org.building.removed
Version 1 · PII tier NONE · requires BUILDING_SETTINGS_VIEW
| Field | Type | Required | Description |
|---|
| orgId | string | yes | — |
| buildingId | string | yes | — |
Example payload
{
"orgId": "org_1",
"buildingId": "bld_1"
}
package.parcel.logged
Version 1 · PII tier LOW · requires PACKAGE_VIEW
| Field | Type | Required | Description |
|---|
| packageId | string | yes | — |
| unitId | string | yes | — |
| recipientUserId | string | null | yes | — |
| carrier | string | null | yes | — |
Example payload
{
"packageId": "pkg_1",
"unitId": "unit_2",
"recipientUserId": "usr_1",
"carrier": "UPS"
}
package.parcel.picked_up
Version 1 · PII tier LOW · requires PACKAGE_VIEW
| Field | Type | Required | Description |
|---|
| packageId | string | yes | — |
| unitId | string | yes | — |
| pickedUpByUserId | string | null | yes | — |
Example payload
{
"packageId": "pkg_1",
"unitId": "unit_2",
"pickedUpByUserId": "usr_1"
}
pad.mandate.enrolled
Version 1 · PII tier LOW · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| mandateId | string | yes | — |
| userId | string | null | yes | — |
Example payload
{
"mandateId": "pad_1",
"userId": "usr_1"
}
pad.mandate.revoked
Version 1 · PII tier LOW · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| mandateId | string | yes | — |
| userId | string | null | yes | — |
Example payload
{
"mandateId": "pad_1",
"userId": "usr_1"
}
payment.transaction.failed
Version 1 · PII tier LOW · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| paymentId | string | yes | — |
| amountCents | number | yes | — |
| reason | string | null | yes | — |
Example payload
{
"paymentId": "pay_1",
"amountCents": 210000,
"reason": "CARD_DECLINED"
}
payment.transaction.refunded
Version 1 · PII tier LOW · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| paymentId | string | yes | — |
| amountCents | number | yes | — |
Example payload
{
"paymentId": "pay_1",
"amountCents": 210000
}
payment.transaction.succeeded
Version 1 · PII tier LOW · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| paymentId | string | yes | — |
| amountCents | number | yes | — |
| method | string | null | yes | — |
Example payload
{
"paymentId": "pay_1",
"amountCents": 210000,
"method": "PAD"
}
rent.charge.created
Version 1 · PII tier LOW · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| chargeId | string | yes | — |
| leaseId | string | null | yes | — |
| amountCents | number | yes | — |
| dueOn | string | null | yes | — |
Example payload
{
"chargeId": "chg_1",
"leaseId": "lease_1",
"amountCents": 210000,
"dueOn": "2026-08-01"
}
rent.charge.failed
Version 1 · PII tier LOW · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| chargeId | string | yes | — |
| leaseId | string | null | yes | — |
| reason | string | null | yes | — |
Example payload
{
"chargeId": "chg_1",
"leaseId": "lease_1",
"reason": "INSUFFICIENT_FUNDS"
}
rent.charge.paid
Version 1 · PII tier LOW · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| chargeId | string | yes | — |
| leaseId | string | null | yes | — |
| amountCents | number | yes | — |
Example payload
{
"chargeId": "chg_1",
"leaseId": "lease_1",
"amountCents": 210000
}
rent.charge.waived
Version 1 · PII tier MODERATE · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| chargeId | string | yes | — |
| leaseId | string | null | yes | — |
| amountCents | number | yes | — |
| reason | string | null | yes | — |
Example payload
{
"chargeId": "chg_1",
"leaseId": "lease_1",
"amountCents": 210000,
"reason": "Tenant hardship — Feb rent waived"
}
rent.charge.written_off
Version 1 · PII tier MODERATE · requires RENT_LEDGER_VIEW
| Field | Type | Required | Description |
|---|
| chargeId | string | yes | — |
| leaseId | string | null | yes | — |
| amountCents | number | yes | — |
| reason | string | null | yes | — |
Example payload
{
"chargeId": "chg_1",
"leaseId": "lease_1",
"amountCents": 210000,
"reason": "Uncollectable — tenant vacated"
}