ΟδηγόςEvent Catalog

Event Catalog

Τεκμηρίωση αναφοράς για τα events του EventBridge της SmartphoneKey που είναι διαθέσιμα στους εταίρους.

Αυτός ο κατάλογος παραθέτει κάθε event στο οποίο μπορεί να εγγραφεί ένας εταίρος. Για κάθε event θα βρείτε την πηγή, πότε ενεργοποιείται, και τα πεδία του payload του.

Για το πώς εγγράφεστε και τα λαμβάνετε, δείτε Partner Webhooks.

Όλα τα events spk.api μοιράζονται την ίδια δομή φακέλου (envelope). Το domain payload τυλίγεται σε ένα αντικείμενο detail που φέρει metadata της προβολής (projection) μαζί με το αρχικό event κάτω από το data:

{
  "source": "spk.api",
  "detail-type": "<EventName>",
  "detail": {
    "partnerId": "<your-orgId>",
    "aggregateType": "<LockAggregate|UserAggregate|HubAggregate|...>",
    "aggregateId": "<aggregate id>",
    "version": 7,
    "timestamp": 1745922600123,
    "data": { /* payload ειδικό για το event — δείτε παρακάτω */ }
  }
}

Το detail.timestamp είναι ο χρόνος της προβολής (projection) σε epoch milliseconds (αριθμός). Η χρονοσφραγίδα ISO-8601 μέσα στο detail.data.timestamp είναι ο χρόνος του domain event. Τα πεδία που τεκμηριώνονται παρακάτω περιγράφουν το detail.data — το πραγματικό domain event.


Lock events

LockCreated

Sourcespk.api
detail-typeLockCreated
aggregateTypeLockAggregate

A new lock has been created in the system.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
serialNumberstringόχιHardware serial number
keysobject[]όχιInitial key list
keys[].uuidstringναιKey UUID
keys[].indexNumbernumberόχιKey slot index
keys[].userIdstringόχιUser the key is assigned to
ownerIdstringόχιOwning user ID
timestampstringναιISO-8601 time of the domain event
thingNamestringόχιAWS IoT thing name
thingArnstringόχιAWS IoT thing ARN

OwnerSet

Sourcespk.api
detail-typeOwnerSet
aggregateTypeLockAggregate

A lock's owner has been assigned or changed.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
userIdstringναιNew owner user ID

OrganizationSet

Sourcespk.api
detail-typeOrganizationSet
aggregateTypeLockAggregate

A lock has been moved to a different organization.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
orgIdstringναιOrganization ID

KeyAdded

Sourcespk.api
detail-typeKeyAdded
aggregateTypeLockAggregate

A physical key has been added to a lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
keyUuidstringναιUUID of the key
keyIndexNumbernumberόχιKey slot index
userIdstringόχιUser the key is assigned to
messageIdstringόχι
requestedAtnumberόχι

KeyRemoved

Sourcespk.api
detail-typeKeyRemoved
aggregateTypeLockAggregate

A physical key has been removed from a lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
keyUuidstringναιUUID of the removed key
keyIndexNumbernumberόχιKey slot index
messageIdstringόχι
requestedAtnumberόχι

ResidentAdded

Sourcespk.api
detail-typeResidentAdded
aggregateTypeLockAggregate

A resident has been granted access to a lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
userIdstringναιResident user ID (resolved from the email)
namestringναιResident display name
emailstringόχιResident email

ResidentRemoved

Sourcespk.api
detail-typeResidentRemoved
aggregateTypeLockAggregate

A resident's access to a lock has been revoked.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
userIdstringναιResident user ID
emailstringόχιResident email

LockUuidChanged

Sourcespk.api
detail-typeLockUuidChanged
aggregateTypeLockAggregate

A lock's UUID has been replaced.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
newUuidstringναι
previousUuidstringναι

LockOpenRequested

Sourcespk.api
detail-typeLockOpenRequested
aggregateTypeLockAggregate

An unlock command was delivered to the lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
reasonstringόχι
requestIdstringόχι
messageIdstringόχι
requestedAtnumberόχι

LockOpenConfirmed

Sourcespk.api
detail-typeLockOpenConfirmed
aggregateTypeLockAggregate

The lock reported that an unlock was carried out.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
messageIdstringναι
requestIdstringόχι
attemptsnumberναι
latencyMsnumberναι

LockOpenUnconfirmed

Sourcespk.api
detail-typeLockOpenUnconfirmed
aggregateTypeLockAggregate

An unlock was sent but the lock did not confirm the bolt moved, or did not answer in time.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
messageIdsstring[]ναι
requestIdstringόχι
attemptsnumberναι
reason"refused" | "no-state-change" | "no-ack"ναι
errorCodenumber | stringόχι
detailstringόχι

KeyWriteRequested

Sourcespk.api
detail-typeKeyWriteRequested
aggregateTypeLockAggregate

A key write to physical NFC hardware was requested.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
keyUuidstringναι
keyIndexNumbernumberόχι

LockIvrCallCompleted

Sourcespk.api
detail-typeLockIvrCallCompleted
aggregateTypeLockAggregate

An IVR call to a resident about this lock ended (telephony-api). Delivered at least once — deduplicate on callId.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
lockIdnumberναιNumeric lock ID
uuidstringναιLock UUID
timestampstringναιISO-8601 time of the domain event
callIdstringναιThe calling client's call id; the same call may be delivered twice
userIdstringναιResident called (user ID); the phone number is never carried, not even masked
status"opened" | "denied" | "timeout" | "no_answer" | "busy" | "failed" | "ended"ναιFinal call status: opened, denied, timeout, no_answer, busy, failed or ended
result"open_failed" | "dial_failed" | "guest_not_connected" | "talk_limit" | "hangup_client" | "hangup_resident" | "provider_error" | nullναιFor failed / ended: open_failed, dial_failed, guest_not_connected, talk_limit, hangup_client, hangup_resident or provider_error; otherwise null
choice"0" | "1" | "9" | nullναιKey the resident pressed: 9 open, 0 refuse, 1 talk; null when none
providerstringναιTelephony provider that carried the call
countrystring | nullναιISO-3166 alpha-2 of the resident's number; null when unknown
languagestringναιLanguage the menu was played in
createdAtstringναιISO-8601 time the call was ordered
answeredAtstringόχιISO-8601 time the resident answered; absent when nobody answered
endedAtstringναιISO-8601 time the call reached its final status
durationSecsnumberναιSeconds from answer to end; 0 when nobody answered

Temporary key events

TempKeyCreated

Sourcespk.api
detail-typeTempKeyCreated
aggregateTypeLockAggregate

Deprecated: a temporary key has been issued through a per-lock route.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
tempKeyUuidstringναι
lockIdnumberναιNumeric lock ID
lockUuidstringναι
accessMode"public" | "user-whitelist"ναι
allowedUserIdsstring[]όχι
validFromstringναι
validUntilstringναι
maxUsesnumber | nullόχι
createdBystringναι
timestampstringναιISO-8601 time of the domain event

TempKeyUsed

Sourcespk.api
detail-typeTempKeyUsed
aggregateTypeLockAggregate

Deprecated: a temporary key has been used to unlock (see TempKeyDoorOpened).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
tempKeyUuidstringναι
lockIdnumberναιNumeric lock ID
lockUuidstringναι
userIdstringόχιUser ID
usedCountnumberναι
timestampstringναιISO-8601 time of the domain event

TempKeyDeleted

Sourcespk.api
detail-typeTempKeyDeleted
aggregateTypeLockAggregate

Deprecated: a temporary key has been deleted through a per-lock route.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
tempKeyUuidstringναι
lockIdnumberναιNumeric lock ID
lockUuidstringναι
deletedBystringναι
timestampstringναιISO-8601 time of the domain event

TempKeyUpdated

Sourcespk.api
detail-typeTempKeyUpdated
aggregateTypeLockAggregate

Deprecated: a temporary key's rules changed through a per-lock route.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
tempKeyUuidstringναι
lockIdnumberναιNumeric lock ID
lockUuidstringναι
changesobjectναι
changes.validFromstringόχι
changes.validUntilstringόχι
changes.maxUsesnumber | nullόχι
changes.allowedUserIdsstring[]όχι
changes.accessMode"public" | "user-whitelist"όχι
updatedBystringναι
timestampstringναιISO-8601 time of the domain event

TempKeyIssued

Sourcespk.api
detail-typeTempKeyIssued
aggregateTypeTempKeyAggregate

A temporary key has been issued for one or more doors.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
tempKeyUuidstringναιTemporary key UUID (also the aggregateId)
issuedBystringναιOrganization or user ID that issued the key
origin"temp-keys" | "per-lock" | "import"ναι'temp-keys' (the key routes), 'per-lock' (a deprecated per-lock route) or 'import' (moved from b2c-api)
keyobjectναι
key.doorsobject[]ναι
key.doors[].doorIdnumberναιStable door id within the key (guest pages address doors by it)
key.doors[].lockIdnumberναιNumeric ID of the lock the door opens
key.doors[].lockUuidstringναιUUID of the lock the door opens
key.doors[].accessMethod"key" | "code" | "both"ναιHow a guest opens the door: 'key' (guest page), 'code' (entrance-panel PIN) or 'both'
key.doors[].sortOrdernumberναι
key.validFromstringναι
key.validUntilstringναι
key.accessMode"public" | "user-whitelist"ναι'public' (anyone with the link or PIN) or 'user-whitelist' (only allowedUserIds)
key.allowedUserIdsstring[]ναι
key.maxUsesnumber | nullναιTotal opens the key allows across all its doors; null = unlimited
key.usedCountnumberναιOpens so far
key.pinIssuedbooleanναιTrue when the key has an entrance-panel PIN; the PIN itself is never sent
key.createdBystringναι
key.createdAtstringναι
key.revokedAtstring | nullναιWhen the key was revoked; null while it is not
timestampstringναιISO-8601 time of the domain event

TempKeyChanged

Sourcespk.api
detail-typeTempKeyChanged
aggregateTypeTempKeyAggregate

A temporary key's validity, limit, access or guest instructions changed.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
tempKeyUuidstringναιTemporary key UUID (also the aggregateId)
changed"validFrom" | "validUntil" | "maxUses" | "accessMode" | "allowedUserIds" | "description"[]ναιThe fields that changed; 'description' names the guest instructions, whose text is never sent
changedBystringναιOrganization or user ID that made the change
keyobjectναι
key.doorsobject[]ναι
key.doors[].doorIdnumberναιStable door id within the key (guest pages address doors by it)
key.doors[].lockIdnumberναιNumeric ID of the lock the door opens
key.doors[].lockUuidstringναιUUID of the lock the door opens
key.doors[].accessMethod"key" | "code" | "both"ναιHow a guest opens the door: 'key' (guest page), 'code' (entrance-panel PIN) or 'both'
key.doors[].sortOrdernumberναι
key.validFromstringναι
key.validUntilstringναι
key.accessMode"public" | "user-whitelist"ναι'public' (anyone with the link or PIN) or 'user-whitelist' (only allowedUserIds)
key.allowedUserIdsstring[]ναι
key.maxUsesnumber | nullναιTotal opens the key allows across all its doors; null = unlimited
key.usedCountnumberναιOpens so far
key.pinIssuedbooleanναιTrue when the key has an entrance-panel PIN; the PIN itself is never sent
key.createdBystringναι
key.createdAtstringναι
key.revokedAtstring | nullναιWhen the key was revoked; null while it is not
timestampstringναιISO-8601 time of the domain event

TempKeyRevoked

Sourcespk.api
detail-typeTempKeyRevoked
aggregateTypeTempKeyAggregate

A temporary key has been revoked; none of its doors open with it any more.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
tempKeyUuidstringναιTemporary key UUID (also the aggregateId)
revokedBystringναιOrganization or user ID that revoked the key
keyobjectναι
key.doorsobject[]ναι
key.doors[].doorIdnumberναιStable door id within the key (guest pages address doors by it)
key.doors[].lockIdnumberναιNumeric ID of the lock the door opens
key.doors[].lockUuidstringναιUUID of the lock the door opens
key.doors[].accessMethod"key" | "code" | "both"ναιHow a guest opens the door: 'key' (guest page), 'code' (entrance-panel PIN) or 'both'
key.doors[].sortOrdernumberναι
key.validFromstringναι
key.validUntilstringναι
key.accessMode"public" | "user-whitelist"ναι'public' (anyone with the link or PIN) or 'user-whitelist' (only allowedUserIds)
key.allowedUserIdsstring[]ναι
key.maxUsesnumber | nullναιTotal opens the key allows across all its doors; null = unlimited
key.usedCountnumberναιOpens so far
key.pinIssuedbooleanναιTrue when the key has an entrance-panel PIN; the PIN itself is never sent
key.createdBystringναι
key.createdAtstringναι
key.revokedAtstring | nullναιWhen the key was revoked; null while it is not
timestampstringναιISO-8601 time of the domain event

TempKeyDoorOpened

Sourcespk.api
detail-typeTempKeyDoorOpened
aggregateTypeTempKeyAggregate

A door has been opened with a temporary key.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
tempKeyUuidstringναιTemporary key UUID (also the aggregateId)
doorIdnumberναιThe door of the key that opened
lockIdnumberναιNumeric ID of the lock the door opens
lockUuidstringναιUUID of the lock the door opens
method"slide" | "pin"ναι'slide' (guest page) or 'pin' (entrance panel)
openedBystring | nullναιUser ID of a signed-in guest; null for an anonymous guest page or a PIN
keyobjectναι
key.doorsobject[]ναι
key.doors[].doorIdnumberναιStable door id within the key (guest pages address doors by it)
key.doors[].lockIdnumberναιNumeric ID of the lock the door opens
key.doors[].lockUuidstringναιUUID of the lock the door opens
key.doors[].accessMethod"key" | "code" | "both"ναιHow a guest opens the door: 'key' (guest page), 'code' (entrance-panel PIN) or 'both'
key.doors[].sortOrdernumberναι
key.validFromstringναι
key.validUntilstringναι
key.accessMode"public" | "user-whitelist"ναι'public' (anyone with the link or PIN) or 'user-whitelist' (only allowedUserIds)
key.allowedUserIdsstring[]ναι
key.maxUsesnumber | nullναιTotal opens the key allows across all its doors; null = unlimited
key.usedCountnumberναιOpens so far
key.pinIssuedbooleanναιTrue when the key has an entrance-panel PIN; the PIN itself is never sent
key.createdBystringναι
key.createdAtstringναι
key.revokedAtstring | nullναιWhen the key was revoked; null while it is not
timestampstringναιISO-8601 time of the domain event

User events

UserCreated

Sourcespk.api
detail-typeUserCreated
aggregateTypeUserAggregate

A new user has been registered.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
status"ACTIVE" | "INACTIVE" | "SUSPENDED"ναι

ProfileUpdated

Sourcespk.api
detail-typeProfileUpdated
aggregateTypeUserAggregate

A user's profile fields have changed.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
changesobjectναι
changes.firstNameobjectόχι
changes.firstName.oldstringναι
changes.firstName.newstringναι
changes.lastNameobjectόχι
changes.lastName.oldstringναι
changes.lastName.newstringναι
changes.phoneNumberobjectόχι
changes.phoneNumber.oldstringόχι
changes.phoneNumber.newstringόχι

UserPhoneNumberUpdated

Sourcespk.api
detail-typeUserPhoneNumberUpdated
aggregateTypeUserAggregate

A user's phone number has changed (only the masked number is carried).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
action"set" | "removed"ναι
maskedPhoneNumberstringόχιObfuscated number (last 4 digits, e.g. "***4567") — present only when action is "set"
timestampstringναιISO-8601 time of the domain event

UserEmailUpdated

Sourcespk.api
detail-typeUserEmailUpdated
aggregateTypeUserAggregate

A user's email address has changed.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
action"set" | "removed"ναι
maskedEmailstringόχιObfuscated email (first initial + domain, e.g. "a***@example.com") — present only when action is "set"
timestampstringναιISO-8601 time of the domain event

PhysicalKeyAdded

Sourcespk.api
detail-typePhysicalKeyAdded
aggregateTypeUserAggregate

A physical key has been issued to a user.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
numbernumberναιKey number
orgIdstringναιIssuing organization
orgNamestringόχιOrganization display name
notestringόχιFree-form note
addedAtnumberναιUnix epoch ms

PhysicalKeyRemoved

Sourcespk.api
detail-typePhysicalKeyRemoved
aggregateTypeUserAggregate

A physical key has been removed from a user.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
numbernumberναιKey number
removedAtnumberναιUnix epoch ms

WalletKeyPrepared

Sourcespk.api
detail-typeWalletKeyPrepared
aggregateTypeUserAggregate

A wallet key (Apple/Google) is being provisioned.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
keyIdstringναι
walletType"APPLE" | "GOOGLE"ναι
keyIndexnumberόχι
deviceIdstringόχιDevice UUID
orgIdstring | nullόχιOrganization ID

WalletKeyCommitted

Sourcespk.api
detail-typeWalletKeyCommitted
aggregateTypeUserAggregate

A wallet key has been issued and the pass is available.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
keyIdstringναι
keyIndexnumberόχι
walletType"APPLE" | "GOOGLE"όχι
deviceIdstringόχιDevice UUID
passIdstringναι
passUrlstringναι
committedAtstringναι

WalletKeyRolledBack

Sourcespk.api
detail-typeWalletKeyRolledBack
aggregateTypeUserAggregate

A wallet key provisioning attempt was rolled back.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
preparedKeyIdstringναι
reasonstringναι
rolledBackAtstringναι

WalletKeyRemoved

Sourcespk.api
detail-typeWalletKeyRemoved
aggregateTypeUserAggregate

A wallet key has been removed from a user.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
keyIdstringναι
reasonstringναι
removedAtstringναιUnix epoch ms

WalletKeyOrgAssigned

Sourcespk.api
detail-typeWalletKeyOrgAssigned
aggregateTypeUserAggregate

An admin assigned a wallet key to its issuing organization.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
keyIdstringναι
orgIdstringναιOrganization the key now belongs to
previousOrgIdstring | nullόχιOrganization it belonged to before, if any
auditIdstringναι

AccessibleLockAdded

Sourcespk.api
detail-typeAccessibleLockAdded
aggregateTypeUserAggregate

A user has been granted access to a lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
lockIdstringναιLock UUID
lockNamestringναιLock display name
accessLevel"OWNER" | "ADMIN" | "USER" | "GUEST"ναι
grantedBystringναιUser ID who granted access

AccessibleLockRemoved

Sourcespk.api
detail-typeAccessibleLockRemoved
aggregateTypeUserAggregate

A user has lost access to a lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
lockIdstringναιNumeric lock ID
removedBystringναι
reasonstringναι
removedAtstringναιUnix epoch ms

UserSuspended

Sourcespk.api
detail-typeUserSuspended
aggregateTypeUserAggregate

A user has been suspended.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
reasonstringναι
suspendedBystringναι
suspendedAtstringναι

UserReactivated

Sourcespk.api
detail-typeUserReactivated
aggregateTypeUserAggregate

A previously suspended user has been reactivated.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
reactivatedBystringναι
reactivatedAtstringναι

WalletKeyAdded

Sourcespk.api
detail-typeWalletKeyAdded
aggregateTypeUserAggregate

A wallet key was added (legacy single-step path).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
walletKeyobjectναι
walletKey.keyIdstringναι
walletKey.keyIndexnumberναι
walletKey.walletType"APPLE" | "GOOGLE"ναι
walletKey.deviceIdstringναι
walletKey.passUrlstringόχι
walletKey.serialNumberstringόχι
walletKey.addedAtstringναι

LicensePlateAdded

Sourcespk.api
detail-typeLicensePlateAdded
aggregateTypeUserAggregate

A license plate has been registered to a user.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
platestringναιLicense plate string
labelstringναιFriendly label
addedAtnumberναιUnix epoch ms

LicensePlateRemoved

Sourcespk.api
detail-typeLicensePlateRemoved
aggregateTypeUserAggregate

A license plate has been removed from a user.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
platestringναι

DeviceAdded

Sourcespk.api
detail-typeDeviceAdded
aggregateTypeUserAggregate

A device has been linked to a user.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
deviceIdstringναιDevice UUID
deviceType"matter" | "camera" | "rtsp-camera"ναι
orgIdstringναιOrganization ID
namestringόχι
addedBystringόχι
addedAtstringναιUnix epoch ms

DeviceRemoved

Sourcespk.api
detail-typeDeviceRemoved
aggregateTypeUserAggregate

A device has been unlinked from a user.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
deviceIdstringναιDevice UUID
deviceType"matter" | "camera" | "rtsp-camera"ναι
removedBystringναι
reasonstringναι
removedAtstringναιUnix epoch ms

DevicePushMutedUpdated

Sourcespk.api
detail-typeDevicePushMutedUpdated
aggregateTypeUserAggregate

A user muted or unmuted alarm push notifications for one of their devices.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
deviceIdstringναιDevice UUID
mutedbooleanναι
timestampstringναιISO-8601 time of the domain event

CallToOpenLockChosen

Sourcespk.api
detail-typeCallToOpenLockChosen
aggregateTypeUserAggregate

Locks or Matter devices were chosen to open when the user calls the call-to-open number, each on its own digit; replaces the previous choice whole; a preference, not an access grant.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
targetobjectναιThe chosen target on the lowest digit ({kind, id})
target.kind"lock" | "matter"ναιWhich of the user's lists the id is in: lock (accessible locks) or matter (Matter devices)
target.idstringναιA lock aggregate id or a Matter device id, never a phone number
targetsobject[]όχιEvery chosen target with the digit that picks it ({kind, id, digit}), ordered by digit; absent on an event written before a choice held several, whose one target is on 1
targets[].kind"lock" | "matter"ναιWhich of the user's lists the id is in: lock (accessible locks) or matter (Matter devices)
targets[].idstringναιA lock aggregate id or a Matter device id, never a phone number
targets[].digitstringναιThe key that picks this target in a call: one digit, 0-9, unique within the choice
chosenByobjectναι
chosenBy.kind"user" | "organization"ναιuser for the user themselves, organization for an API key
chosenBy.orgIdstring | nullναιThe API key's organization; null when the user acted themselves
timestampstringναιISO-8601 time of the domain event

CallToOpenLockCleared

Sourcespk.api
detail-typeCallToOpenLockCleared
aggregateTypeUserAggregate

The user's call-to-open choice was cleared whole by a ClearCallToOpenLock command; removing a chosen lock or device from the user's lists drops that target from the choice, without this event.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
previousTargetobjectναιThe cleared target on the lowest digit ({kind, id})
previousTarget.kind"lock" | "matter"ναιWhich of the user's lists the id is in: lock (accessible locks) or matter (Matter devices)
previousTarget.idstringναιA lock aggregate id or a Matter device id, never a phone number
previousTargetsobject[]όχιEvery cleared target with its digit ({kind, id, digit}), ordered by digit; absent on an event written before a choice held several
previousTargets[].kind"lock" | "matter"ναιWhich of the user's lists the id is in: lock (accessible locks) or matter (Matter devices)
previousTargets[].idstringναιA lock aggregate id or a Matter device id, never a phone number
previousTargets[].digitstringναιThe key that picks this target in a call: one digit, 0-9, unique within the choice
clearedByobjectναι
clearedBy.kind"user" | "organization"ναιuser for the user themselves, organization for an API key
clearedBy.orgIdstring | nullναιThe API key's organization; null when the user acted themselves
timestampstringναιISO-8601 time of the domain event

CallToOpenCallRecorded

Sourcespk.api
detail-typeCallToOpenCallRecorded
aggregateTypeUserAggregate

A call from the user's own phone number was admitted to open the user's call-to-open choice (the lock open is requested next and may still fail; LockOpenRequested on the lock is the open itself); written only for an admitted call, never for a refused one, and without the phone number; an admitted call counts towards the user's call-to-open rate limit and repeated-call check even when its open then fails.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
callIdstringναιOpaque id of the call; also the requestId of the LockOpenRequested it caused
targetobjectναιThe chosen lock or Matter device the call was admitted to open ({kind, id})
target.kind"lock" | "matter"ναιWhich of the user's lists the id is in: lock (accessible locks) or matter (Matter devices)
target.idstringναιA lock aggregate id or a Matter device id, never a phone number
digitstringόχιThe digit the caller pressed in the call's menu to pick the target; absent when the call named none (a choice of one target)
timestampstringναιISO-8601 time of the domain event

UserSubscriptionStatusUpdated

Sourcespk.api
detail-typeUserSubscriptionStatusUpdated
aggregateTypeUserAggregate

An organization's subscription status entry for a user changed (mobile app access); carries only the changed fields (delivered only to the organization whose entry changed).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
userIdstringναιUser ID
orgIdstringναιThe organization whose entry changed; the delivery's detail.partnerId is the same id
changesobjectναιOnly the entitlements that changed, e.g. mobileAppAccess
changes.mobileAppAccessbooleanόχιWhether the user may use the mobile app for this organization; an app entitlement, not door access
changedByobjectναιWho made the change: kind organization (that organization's own API key) or super (an administrator acting for it)
changedBy.kind"organization" | "super"ναιorganization for that organization's own API key, super for an administrator acting for it
timestampstringναιISO-8601 time of the domain event

Hub events

HubProvisioned

Sourcespk.api
detail-typeHubProvisioned
aggregateTypeHubAggregate

A hub has been provisioned (manufactured / known to the system).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
hubIdstringναιHub UUID
serialstringναιHardware serial
modelstringναιHardware model
thingNamestringναιAWS IoT thing name
vendorNamestringόχι
provisionedAtnumberναιUnix epoch ms

HubClaimed

Sourcespk.api
detail-typeHubClaimed
aggregateTypeHubAggregate

A hub has been claimed by an organization and site.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
hubIdstringναιHub UUID
orgIdstringναιClaiming organization
siteIdstringναιSite the hub is installed at
claimedBystringναιUser ID who claimed it
claimedAtnumberναιUnix epoch ms

HubReClaimed

Sourcespk.api
detail-typeHubReClaimed
aggregateTypeHubAggregate

A hub has been moved from one organization/site to another.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
hubIdstringναιHub UUID
previousOrgIdstringναι
previousSiteIdstringναι
newOrgIdstringναι
newSiteIdstringναι
reclaimedBystringναι
reasonstringναι
reclaimedAtnumberναι

HubRoleSet

Sourcespk.api
detail-typeHubRoleSet
aggregateTypeHubAggregate

A hub's primary/secondary role has been set.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
hubIdstringναιHub UUID
isPrimarybooleanναι
setBystringναι
setAtnumberναι

HubSuspended

Sourcespk.api
detail-typeHubSuspended
aggregateTypeHubAggregate

A hub has been suspended.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
hubIdstringναιHub UUID
reasonstringναι
suspendedBystringναι
suspendedAtnumberναι

HubDecommissioned

Sourcespk.api
detail-typeHubDecommissioned
aggregateTypeHubAggregate

A hub has been decommissioned.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
hubIdstringναιHub UUID
reasonstringναι
decommissionedBystringναι
decommissionedAtnumberναι

MigrationStarted

Sourcespk.api
detail-typeMigrationStarted
aggregateTypeHubAggregate

A hub-to-hub device migration has started.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
migrationIdstringναι
sourceHubIdstringναι
targetHubIdstringναι
targetThingNamestringναι
deviceIdsstring[]ναι
startedBystringναι
startedAtnumberναι

DeviceMigrationStatusUpdated

Sourcespk.api
detail-typeDeviceMigrationStatusUpdated
aggregateTypeHubAggregate

A device's migration status has changed.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
migrationIdstringναι
deviceIdstringναιDevice UUID
status"Queued" | "Migrating" | "Migrated" | "Blocked" | "Failed"ναι
errorstringόχι
updatedAtnumberναι

MigrationCompleted

Sourcespk.api
detail-typeMigrationCompleted
aggregateTypeHubAggregate

A hub-to-hub device migration has finished.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
migrationIdstringναι
status"Completed" | "Completed with errors" | "Failed"ναι
completedAtnumberναι

Camera events

CameraRegistered

Sourcespk.api
detail-typeCameraRegistered
aggregateTypeCameraAggregate

A camera has been registered.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
threeDeyeCameraIdstringναι3dEye-side camera ID
cameraType"generic" | "onvif" | "pnp"ναι
namestringναι
orgIdstringναιOrganization ID
ownerIdstringναιOwning user ID
httpUrlstringναι
rtspUrlstringναι
registrationCodestringόχιRegistration code used
registeredAtnumberναιUnix epoch ms

CameraUpdated

Sourcespk.api
detail-typeCameraUpdated
aggregateTypeCameraAggregate

A camera's metadata or stream URLs have changed.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
namestringόχι
httpUrlstringόχι
rtspUrlstringόχι
updatedAtnumberναι

CameraDisabled

Sourcespk.api
detail-typeCameraDisabled
aggregateTypeCameraAggregate

A camera has been disabled.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
reasonstringναι
disabledBystringναι
disabledAtnumberναι

CameraDeleted

Sourcespk.api
detail-typeCameraDeleted
aggregateTypeCameraAggregate

A camera has been deleted.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
deletedBystringναι
deletedAtnumberναι

CameraLinkedToLock

Sourcespk.api
detail-typeCameraLinkedToLock
aggregateTypeCameraAggregate

A camera has been associated with a lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
lockIdstringναιNumeric lock ID

CameraUnlinkedFromLock

Sourcespk.api
detail-typeCameraUnlinkedFromLock
aggregateTypeCameraAggregate

A camera has been disassociated from a lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID

CameraRoleCreated

Sourcespk.api
detail-typeCameraRoleCreated
aggregateTypeCameraRoleAggregate

A 3dEye access role has been created.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
roleIdstringναι
threeDeyeRoleIdstringναι
namestringναι
descriptionstringναι
orgIdstringναιOrganization ID
createdAtnumberναι

CameraRoleDeleted

Sourcespk.api
detail-typeCameraRoleDeleted
aggregateTypeCameraRoleAggregate

A 3dEye access role has been deleted.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
roleIdstringναι
deletedAtnumberναι

CameraRoleUserAssigned

Sourcespk.api
detail-typeCameraRoleUserAssigned
aggregateTypeCameraRoleAggregate

A user has been added to a camera role.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
roleIdstringναι
userIdstringναιUser ID
threeDeyeUserIdstringναι
assignedAtnumberναι

CameraRoleUserRemoved

Sourcespk.api
detail-typeCameraRoleUserRemoved
aggregateTypeCameraRoleAggregate

A user has been removed from a camera role.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
roleIdstringναι
userIdstringναιUser ID
threeDeyeUserIdstringναι
removedAtnumberναιUnix epoch ms

CameraRoleCameraAssigned

Sourcespk.api
detail-typeCameraRoleCameraAssigned
aggregateTypeCameraRoleAggregate

A camera has been added to a role.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
roleIdstringναι
cameraIdstringναιCamera ID
permissionsstring[]ναι
assignedAtnumberναι

CameraRoleCameraRemoved

Sourcespk.api
detail-typeCameraRoleCameraRemoved
aggregateTypeCameraRoleAggregate

A camera has been removed from a role.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
roleIdstringναι
cameraIdstringναιCamera ID
removedAtnumberναιUnix epoch ms

RTSP camera events

RtspCameraRegistered

Sourcespk.api
detail-typeRtspCameraRegistered
aggregateTypeRtspCameraAggregate

An RTSP camera has been registered; placement on a video worker follows.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
namestringναι
rtspUrlstringόχι
rtspHashstringναι
streamIdstringναι
usernamestringόχι
passwordstringόχι
httpSnapshotUrlstringόχι
ownerIdstringόχι
orgIdstringόχιOrganization ID
placementMode"async"όχι
createdAtstringναι

RtspCameraUpdated

Sourcespk.api
detail-typeRtspCameraUpdated
aggregateTypeRtspCameraAggregate

An RTSP camera's name or source has changed.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
namestringόχι
rtspUrlstringόχι
rtspHashstringόχι
streamIdstringόχι
usernamestringόχι
passwordstringόχι
httpSnapshotUrlstringόχι
sourceChangedtrueόχι
updatedAtstringναι

RtspCameraDeleted

Sourcespk.api
detail-typeRtspCameraDeleted
aggregateTypeRtspCameraAggregate

An RTSP camera has been deleted.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
deletedAtstringναι
deletedBystringόχι

RtspCameraAccessGranted

Sourcespk.api
detail-typeRtspCameraAccessGranted
aggregateTypeRtspCameraAggregate

A user has been granted access to an RTSP camera.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
userIdstringναιUser ID
role"viewer" | "manager"ναι
grantedAtstringναι
grantedBystringόχι

RtspCameraAccessRevoked

Sourcespk.api
detail-typeRtspCameraAccessRevoked
aggregateTypeRtspCameraAggregate

A user's access to an RTSP camera has been revoked.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
userIdstringναιUser ID
revokedAtstringναι
revokedBystringόχι

RtspCameraStreamStarted

Sourcespk.api
detail-typeRtspCameraStreamStarted
aggregateTypeRtspCameraAggregate

An RTSP camera's stream has been started.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
startedAtstringναι
startedBystringόχι
workerIdstringόχιVideo worker ID
placementGenerationnumberόχι

RtspCameraStreamStopped

Sourcespk.api
detail-typeRtspCameraStreamStopped
aggregateTypeRtspCameraAggregate

An RTSP camera's stream has been stopped.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
stoppedAtstringναι
stoppedBystringόχι

RtspCameraPlaced

Sourcespk.api
detail-typeRtspCameraPlaced
aggregateTypeRtspCameraAggregate

An RTSP camera has been placed on a video worker and its stream confirmed.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
workerIdstringναιVideo worker ID
placementGenerationnumberναι
sourceEventVersionnumberναι
placedAtstringναι

RtspCameraPlacementFailed

Sourcespk.api
detail-typeRtspCameraPlacementFailed
aggregateTypeRtspCameraAggregate

An RTSP camera could not be placed on any video worker.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
placementGenerationnumberναι
sourceEventVersionnumberναι
errorstringναι
failedAtstringναι

RtspCameraRecordingConfigured

Sourcespk.api
detail-typeRtspCameraRecordingConfigured
aggregateTypeRtspCameraAggregate

An RTSP camera's recording retention was set (0 = recording off).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
retentionDaysnumberναι
storageProfile"platform"όχι
changedByobjectναι
changedBy.kind"owner" | "admin" | "manager"ναι
changedBy.userIdstringναι
updatedAtstringναι

RtspCameraRecordingsPurgeRequested

Sourcespk.api
detail-typeRtspCameraRecordingsPurgeRequested
aggregateTypeRtspCameraAggregate

A purge of an RTSP camera's older recordings was requested.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
requestIdstringναι
cutoffstringναι
olderThanDaysnumberναι
requestedByobjectναι
requestedBy.kind"owner" | "admin" | "manager"ναι
requestedBy.userIdstringναι
requestedAtstringναι

RtspCameraRecordingsPurged

Sourcespk.api
detail-typeRtspCameraRecordingsPurged
aggregateTypeRtspCameraAggregate

A requested recordings purge has finished.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
requestIdstringόχι
cutoffstringναι
olderThanDaysnumberναι
deletednumberναι
completebooleanναι
purgedByobjectναι
purgedBy.kind"owner" | "admin" | "manager"ναι
purgedBy.userIdstringναι
purgedAtstringναι

RtspCameraRuntimeStatusChanged

Sourcespk.api
detail-typeRtspCameraRuntimeStatusChanged
aggregateTypeRtspCamera

An RTSP camera's runtime status changed, as reported by its video worker (delivered only for organization-owned cameras).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
fromstring | nullναιPrevious runtime status
tostringναιNew runtime status
errorstringόχιWhy the stream is not running, when known (never contains the RTSP URL)
workerIdstringόχιVideo worker ID
changedAtstringναιWhen the change was observed (ISO-8601)
observedAtstringναι

RtspCameraMonitoringConfigured

Sourcespk.api
detail-typeRtspCameraMonitoringConfigured
aggregateTypeRtspCameraAggregate

An RTSP camera's availability monitoring was switched on or off.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
enabledbooleanναι
changedBystringναι
updatedAtstringναι

RtspCameraUnavailabilityConfirmed

Sourcespk.api
detail-typeRtspCameraUnavailabilityConfirmed
aggregateTypeRtspCamera

A monitored RTSP camera is still unavailable; repeated at most every five minutes while it stays so (delivered only for organization-owned cameras).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
cameraIdstringναιCamera ID
runtimeStatusstringναιThe runtime status the camera is in (e.g. unreachable, gray, stalled)
reasonstringόχιWhy, when known: the probe verdict or the runtime error (never contains the RTSP URL)
workerIdstringόχιVideo worker ID
unavailableSincestringναιWhen the camera entered that status (ISO-8601)
checkedAtstringναιWhen the probe or heartbeat that confirmed it ran (ISO-8601)

Video worker events

VideoWorkerStarted

Sourcespk.api
detail-typeVideoWorkerStarted
aggregateTypeVideoWorker

A video worker (VMS box) started up; one event per organization with cameras on it, listing only that organization's cameras.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
workerIdstringναιVideo worker ID
vmsStartedAtstringναιWhen the VMS process started (ISO-8601)
vmsVersionstringόχιVMS build version, when reported
cameraIdsstring[]ναιThis organization's cameras assigned to the worker
detectedAtstringναιWhen the control plane saw the first heartbeat after the start (ISO-8601)

Matter device events

MatterDeviceCreated

Sourcespk.api
detail-typeMatterDeviceCreated
aggregateTypeMatterDeviceAggregate

A Matter device has been registered.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
hubIdstringναιHub UUID
deviceTypestringναι
createdAtnumberναι

ReportedShadowUpdated

Sourcespk.api
detail-typeReportedShadowUpdated
aggregateTypeMatterDeviceAggregate

A device reported new shadow state.

Δεν παραδίδεται σε webhooks. Μπορεί να οριστεί σε μια συνδρομή, αλλά δεν δημοσιεύεται ποτέ στο EventBridge — εγγραφείτε στο Shadow Update για να παρακολουθείτε την κατάσταση shadow μιας συσκευής.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
reportedobjectναι
updatedAtnumberναι

DesiredShadowUpdated

Sourcespk.api
detail-typeDesiredShadowUpdated
aggregateTypeMatterDeviceAggregate

A new desired shadow state was pushed.

Δεν παραδίδεται σε webhooks. Μπορεί να οριστεί σε μια συνδρομή, αλλά δεν δημοσιεύεται ποτέ στο EventBridge — εγγραφείτε στο Shadow Update για να παρακολουθείτε την κατάσταση shadow μιας συσκευής.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
desiredobjectναι
updatedAtnumberναι
requestedByUserIdstringόχι

MatterPinSet

Sourcespk.api
detail-typeMatterPinSet
aggregateTypeMatterDeviceAggregate

A PIN credential slot was provisioned on a Matter door lock (the PIN itself is never carried).

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
userIndexnumberναι
credentialIndexnumberναι
timestampnumberναιISO-8601 time of the domain event

MatterPinCleared

Sourcespk.api
detail-typeMatterPinCleared
aggregateTypeMatterDeviceAggregate

A PIN credential slot was cleared on a Matter door lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
userIndexnumberόχι
credentialIndexnumberναι
timestampnumberναιISO-8601 time of the domain event

AppPinSendRequested

Sourcespk.api
detail-typeAppPinSendRequested
aggregateTypeMatterDeviceAggregate

An app-PIN delivery attempt was sent to the lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
timestampnumberναιISO-8601 time of the domain event
messageIdstringναι
attemptnumberναι
userIndexnumberναι
credentialIndexnumberναι
pinMinLengthnumber | nullναι
pinMaxLengthnumber | nullναι

AppPinShadowWriteFailed

Sourcespk.api
detail-typeAppPinShadowWriteFailed
aggregateTypeMatterDeviceAggregate

An app-PIN write could not be made to the device shadow; the attempt will be retried.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
timestampnumberναιISO-8601 time of the domain event
command"SetCredential" | "ClearCredential"ναι
messageIdstring | nullναι
errorstringναι

AppPinAcked

Sourcespk.api
detail-typeAppPinAcked
aggregateTypeMatterDeviceAggregate

The lock acknowledged an app-PIN write.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
timestampnumberναιISO-8601 time of the domain event
outcome"success" | "failure" | "duplicate" | "occupied" | "invalid-field" | "not-found"ναι
matchedMessageIdstringναι
errorCodenumber | stringόχι
userIndexnumberόχι
provisionState"pending" | "sent" | "verified" | "unverified" | "failed"ναι

AppPinClearRequested

Sourcespk.api
detail-typeAppPinClearRequested
aggregateTypeMatterDeviceAggregate

An app-PIN slot clear was sent to the lock.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
timestampnumberναιISO-8601 time of the domain event
credentialIndexnumberναι
messageIdstring | nullόχι

AppPinGaveUp

Sourcespk.api
detail-typeAppPinGaveUp
aggregateTypeMatterDeviceAggregate

The lock refused every app-PIN attempt; delivery stopped.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
timestampnumberναιISO-8601 time of the domain event
reasonstringναι
attemptCountnumberναι
lastOutcomestring | nullναι

AppPinRedriven

Sourcespk.api
detail-typeAppPinRedriven
aggregateTypeMatterDeviceAggregate

App-PIN delivery was restarted from the beginning.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
timestampnumberναιISO-8601 time of the domain event
reasonstringναι
priorState"pending" | "sent" | "verified" | "unverified" | "failed" | nullναι
priorAttemptsnumberναι
priorInfraFailuresnumberναι
evidenceMessageIdstringόχι

AppPinRetired

Sourcespk.api
detail-typeAppPinRetired
aggregateTypeMatterDeviceAggregate

App-PIN delivery was dropped because the lock does not require a remote PIN.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
timestampnumberναιISO-8601 time of the domain event
reasonstringναι
credentialIndexnumberναι

AppPinDeliveryFailed

Sourcespk.api
detail-typeAppPinDeliveryFailed
aggregateTypeMatterDeviceAggregate

The bridge answered an app-PIN write without the lock carrying it out; the attempt will be retried.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
timestampnumberναιISO-8601 time of the domain event
command"SetCredential" | "ClearCredential"ναι
messageIdstring | nullναι
reason"unreachable" | "no-ack" | "refused"ναι
errorstringναι

MatterDeviceNameSet

Sourcespk.api
detail-typeMatterDeviceNameSet
aggregateTypeMatterDeviceAggregate

The display name of a Matter device has been set.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
thingNamestringναιAWS IoT thing name
namestringναι
timestampnumberναιISO-8601 time of the domain event

Alarm events

AlarmTriggered

Sourcespk.api
detail-typeAlarmTriggered
aggregateTypeMatterDeviceAggregate

A Matter sensor (smoke, CO, occupancy, …) reported an alarm condition.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
channel"boolean_state" | "smoke" | "smoke_interconnect" | "co" | "occupancy" | "device_fault"ναι
alarmType"contact" | "water_leak" | "smoke" | "co" | "motion" | "water_freeze" | "rain" | "device_fault"ναι
severity"warning" | "critical"ναι
matterPathstringναιMatter endpoint/cluster/attribute path that tripped (e.g. 1/69/0)
deviceTypeIdnumberόχι
endpointnumberόχι
deviceTypeSource"shadow" | "sticky" | "command" | "shadow_borrowed" | "shadow_disputed"όχι
rawValuenumberόχιRaw reported value that produced the alarm
alarmsEnabledbooleanόχιDevice alarm mode at the moment of this transition; false = no push was due. Absent on events recorded before AA-311, which means on.
timestampstringναιISO-8601 time of the domain event

AlarmCleared

Sourcespk.api
detail-typeAlarmCleared
aggregateTypeMatterDeviceAggregate

A previously triggered alarm condition has cleared.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID
channel"boolean_state" | "smoke" | "smoke_interconnect" | "co" | "occupancy" | "device_fault"ναι
alarmType"contact" | "water_leak" | "smoke" | "co" | "motion" | "water_freeze" | "rain" | "device_fault"ναι
matterPathstringναι
deviceTypeIdnumberόχι
endpointnumberόχι
deviceTypeSource"shadow" | "sticky" | "command" | "shadow_borrowed" | "shadow_disputed"όχι
rawValuenumberόχι
alarmsEnabledbooleanόχιDevice alarm mode at the moment of this transition; false = no push was due. Absent on events recorded before AA-311, which means on.
timestampstringναιISO-8601 time of the domain event

AlarmModeSet

Sourcespk.api
detail-typeAlarmModeSet
aggregateTypeMatterDeviceAggregate

Alarm pushes of a Matter device were switched on or off.

Πεδία payload (detail.data):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
deviceIdstringναιDevice UUID — same value as the MatterDevice thingName / aggregate id
enabledbooleanναιThe new alarm mode; false = the device sends no alarm push
changedByUserIdstringόχιThe user (token caller) who changed the mode; absent when an organization API key changed it
changedByOrgIdstringόχιThe API key's organization that changed the mode; absent when a user's token changed it

IoT events

Shadow Update

Sourcespk.iot.shadow
detail-typeShadow Update

An IoT hub device updated its AWS IoT Device Shadow.

Αυτό το event έχει διαφορετικό envelope από τα events spk.api — δεν υπάρχει το περιτύλιγμα detail.data. Τα πεδία του shadow βρίσκονται απευθείας στο detail.

Πεδία payload (το detail στο ανώτατο επίπεδο):

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
partnerIdstring | nullναιPartner associated with this device
thingNamestringναιAWS IoT thing name
reportedStatestring | nullναιState the device reported back (JSON string)
desiredStatestring | nullναιTarget state set by the application (JSON string)
deltaStatestringναιDifference between desired and reported state (JSON string)
metadatastring | nullναιAWS IoT shadow metadata with timestamps per field (JSON string)
versionstring | number | nullναιShadow document version
shadowNamestring | nullόχιNamed shadow the update came from (e.g. state, device_info)
bridgeUuidstring | nullόχι
deviceTypestring | nullόχι
nodeIdstring | nullόχι
thingTypeNamestring | nullόχι

Τα reportedState, desiredState, deltaState και metadata είναι stringified JSON μέσα στο εξωτερικό αντικείμενο JSON. Καλέστε JSON.parse() σε καθένα πριν διαβάσετε το περιεχόμενό του.