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
| Source | spk.api |
| detail-type | LockCreated |
| aggregateType | LockAggregate |
A new lock has been created in the system.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
serialNumber | string | όχι | Hardware serial number |
keys | object[] | όχι | Initial key list |
keys[].uuid | string | ναι | Key UUID |
keys[].indexNumber | number | όχι | Key slot index |
keys[].userId | string | όχι | User the key is assigned to |
ownerId | string | όχι | Owning user ID |
timestamp | string | ναι | ISO-8601 time of the domain event |
thingName | string | όχι | AWS IoT thing name |
thingArn | string | όχι | AWS IoT thing ARN |
OwnerSet
| Source | spk.api |
| detail-type | OwnerSet |
| aggregateType | LockAggregate |
A lock's owner has been assigned or changed.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
userId | string | ναι | New owner user ID |
OrganizationSet
| Source | spk.api |
| detail-type | OrganizationSet |
| aggregateType | LockAggregate |
A lock has been moved to a different organization.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
orgId | string | ναι | Organization ID |
KeyAdded
| Source | spk.api |
| detail-type | KeyAdded |
| aggregateType | LockAggregate |
A physical key has been added to a lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
keyUuid | string | ναι | UUID of the key |
keyIndexNumber | number | όχι | Key slot index |
userId | string | όχι | User the key is assigned to |
messageId | string | όχι | |
requestedAt | number | όχι |
KeyRemoved
| Source | spk.api |
| detail-type | KeyRemoved |
| aggregateType | LockAggregate |
A physical key has been removed from a lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
keyUuid | string | ναι | UUID of the removed key |
keyIndexNumber | number | όχι | Key slot index |
messageId | string | όχι | |
requestedAt | number | όχι |
ResidentAdded
| Source | spk.api |
| detail-type | ResidentAdded |
| aggregateType | LockAggregate |
A resident has been granted access to a lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
userId | string | ναι | Resident user ID (resolved from the email) |
name | string | ναι | Resident display name |
email | string | όχι | Resident email |
ResidentRemoved
| Source | spk.api |
| detail-type | ResidentRemoved |
| aggregateType | LockAggregate |
A resident's access to a lock has been revoked.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
userId | string | ναι | Resident user ID |
email | string | όχι | Resident email |
LockUuidChanged
| Source | spk.api |
| detail-type | LockUuidChanged |
| aggregateType | LockAggregate |
A lock's UUID has been replaced.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
newUuid | string | ναι | |
previousUuid | string | ναι |
LockOpenRequested
| Source | spk.api |
| detail-type | LockOpenRequested |
| aggregateType | LockAggregate |
An unlock command was delivered to the lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
reason | string | όχι | |
requestId | string | όχι | |
messageId | string | όχι | |
requestedAt | number | όχι |
LockOpenConfirmed
| Source | spk.api |
| detail-type | LockOpenConfirmed |
| aggregateType | LockAggregate |
The lock reported that an unlock was carried out.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
messageId | string | ναι | |
requestId | string | όχι | |
attempts | number | ναι | |
latencyMs | number | ναι |
LockOpenUnconfirmed
| Source | spk.api |
| detail-type | LockOpenUnconfirmed |
| aggregateType | LockAggregate |
An unlock was sent but the lock did not confirm the bolt moved, or did not answer in time.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
messageIds | string[] | ναι | |
requestId | string | όχι | |
attempts | number | ναι | |
reason | "refused" | "no-state-change" | "no-ack" | ναι | |
errorCode | number | string | όχι | |
detail | string | όχι |
KeyWriteRequested
| Source | spk.api |
| detail-type | KeyWriteRequested |
| aggregateType | LockAggregate |
A key write to physical NFC hardware was requested.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
keyUuid | string | ναι | |
keyIndexNumber | number | όχι |
LockIvrCallCompleted
| Source | spk.api |
| detail-type | LockIvrCallCompleted |
| aggregateType | LockAggregate |
An IVR call to a resident about this lock ended (telephony-api). Delivered at least once — deduplicate on callId.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
lockId | number | ναι | Numeric lock ID |
uuid | string | ναι | Lock UUID |
timestamp | string | ναι | ISO-8601 time of the domain event |
callId | string | ναι | The calling client's call id; the same call may be delivered twice |
userId | string | ναι | 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 |
provider | string | ναι | Telephony provider that carried the call |
country | string | null | ναι | ISO-3166 alpha-2 of the resident's number; null when unknown |
language | string | ναι | Language the menu was played in |
createdAt | string | ναι | ISO-8601 time the call was ordered |
answeredAt | string | όχι | ISO-8601 time the resident answered; absent when nobody answered |
endedAt | string | ναι | ISO-8601 time the call reached its final status |
durationSecs | number | ναι | Seconds from answer to end; 0 when nobody answered |
Temporary key events
TempKeyCreated
| Source | spk.api |
| detail-type | TempKeyCreated |
| aggregateType | LockAggregate |
Deprecated: a temporary key has been issued through a per-lock route.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
tempKeyUuid | string | ναι | |
lockId | number | ναι | Numeric lock ID |
lockUuid | string | ναι | |
accessMode | "public" | "user-whitelist" | ναι | |
allowedUserIds | string[] | όχι | |
validFrom | string | ναι | |
validUntil | string | ναι | |
maxUses | number | null | όχι | |
createdBy | string | ναι | |
timestamp | string | ναι | ISO-8601 time of the domain event |
TempKeyUsed
| Source | spk.api |
| detail-type | TempKeyUsed |
| aggregateType | LockAggregate |
Deprecated: a temporary key has been used to unlock (see TempKeyDoorOpened).
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
tempKeyUuid | string | ναι | |
lockId | number | ναι | Numeric lock ID |
lockUuid | string | ναι | |
userId | string | όχι | User ID |
usedCount | number | ναι | |
timestamp | string | ναι | ISO-8601 time of the domain event |
TempKeyDeleted
| Source | spk.api |
| detail-type | TempKeyDeleted |
| aggregateType | LockAggregate |
Deprecated: a temporary key has been deleted through a per-lock route.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
tempKeyUuid | string | ναι | |
lockId | number | ναι | Numeric lock ID |
lockUuid | string | ναι | |
deletedBy | string | ναι | |
timestamp | string | ναι | ISO-8601 time of the domain event |
TempKeyUpdated
| Source | spk.api |
| detail-type | TempKeyUpdated |
| aggregateType | LockAggregate |
Deprecated: a temporary key's rules changed through a per-lock route.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
tempKeyUuid | string | ναι | |
lockId | number | ναι | Numeric lock ID |
lockUuid | string | ναι | |
changes | object | ναι | |
changes.validFrom | string | όχι | |
changes.validUntil | string | όχι | |
changes.maxUses | number | null | όχι | |
changes.allowedUserIds | string[] | όχι | |
changes.accessMode | "public" | "user-whitelist" | όχι | |
updatedBy | string | ναι | |
timestamp | string | ναι | ISO-8601 time of the domain event |
TempKeyIssued
| Source | spk.api |
| detail-type | TempKeyIssued |
| aggregateType | TempKeyAggregate |
A temporary key has been issued for one or more doors.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
tempKeyUuid | string | ναι | Temporary key UUID (also the aggregateId) |
issuedBy | string | ναι | 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) |
key | object | ναι | |
key.doors | object[] | ναι | |
key.doors[].doorId | number | ναι | Stable door id within the key (guest pages address doors by it) |
key.doors[].lockId | number | ναι | Numeric ID of the lock the door opens |
key.doors[].lockUuid | string | ναι | 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[].sortOrder | number | ναι | |
key.validFrom | string | ναι | |
key.validUntil | string | ναι | |
key.accessMode | "public" | "user-whitelist" | ναι | 'public' (anyone with the link or PIN) or 'user-whitelist' (only allowedUserIds) |
key.allowedUserIds | string[] | ναι | |
key.maxUses | number | null | ναι | Total opens the key allows across all its doors; null = unlimited |
key.usedCount | number | ναι | Opens so far |
key.pinIssued | boolean | ναι | True when the key has an entrance-panel PIN; the PIN itself is never sent |
key.createdBy | string | ναι | |
key.createdAt | string | ναι | |
key.revokedAt | string | null | ναι | When the key was revoked; null while it is not |
timestamp | string | ναι | ISO-8601 time of the domain event |
TempKeyChanged
| Source | spk.api |
| detail-type | TempKeyChanged |
| aggregateType | TempKeyAggregate |
A temporary key's validity, limit, access or guest instructions changed.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
tempKeyUuid | string | ναι | 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 |
changedBy | string | ναι | Organization or user ID that made the change |
key | object | ναι | |
key.doors | object[] | ναι | |
key.doors[].doorId | number | ναι | Stable door id within the key (guest pages address doors by it) |
key.doors[].lockId | number | ναι | Numeric ID of the lock the door opens |
key.doors[].lockUuid | string | ναι | 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[].sortOrder | number | ναι | |
key.validFrom | string | ναι | |
key.validUntil | string | ναι | |
key.accessMode | "public" | "user-whitelist" | ναι | 'public' (anyone with the link or PIN) or 'user-whitelist' (only allowedUserIds) |
key.allowedUserIds | string[] | ναι | |
key.maxUses | number | null | ναι | Total opens the key allows across all its doors; null = unlimited |
key.usedCount | number | ναι | Opens so far |
key.pinIssued | boolean | ναι | True when the key has an entrance-panel PIN; the PIN itself is never sent |
key.createdBy | string | ναι | |
key.createdAt | string | ναι | |
key.revokedAt | string | null | ναι | When the key was revoked; null while it is not |
timestamp | string | ναι | ISO-8601 time of the domain event |
TempKeyRevoked
| Source | spk.api |
| detail-type | TempKeyRevoked |
| aggregateType | TempKeyAggregate |
A temporary key has been revoked; none of its doors open with it any more.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
tempKeyUuid | string | ναι | Temporary key UUID (also the aggregateId) |
revokedBy | string | ναι | Organization or user ID that revoked the key |
key | object | ναι | |
key.doors | object[] | ναι | |
key.doors[].doorId | number | ναι | Stable door id within the key (guest pages address doors by it) |
key.doors[].lockId | number | ναι | Numeric ID of the lock the door opens |
key.doors[].lockUuid | string | ναι | 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[].sortOrder | number | ναι | |
key.validFrom | string | ναι | |
key.validUntil | string | ναι | |
key.accessMode | "public" | "user-whitelist" | ναι | 'public' (anyone with the link or PIN) or 'user-whitelist' (only allowedUserIds) |
key.allowedUserIds | string[] | ναι | |
key.maxUses | number | null | ναι | Total opens the key allows across all its doors; null = unlimited |
key.usedCount | number | ναι | Opens so far |
key.pinIssued | boolean | ναι | True when the key has an entrance-panel PIN; the PIN itself is never sent |
key.createdBy | string | ναι | |
key.createdAt | string | ναι | |
key.revokedAt | string | null | ναι | When the key was revoked; null while it is not |
timestamp | string | ναι | ISO-8601 time of the domain event |
TempKeyDoorOpened
| Source | spk.api |
| detail-type | TempKeyDoorOpened |
| aggregateType | TempKeyAggregate |
A door has been opened with a temporary key.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
tempKeyUuid | string | ναι | Temporary key UUID (also the aggregateId) |
doorId | number | ναι | The door of the key that opened |
lockId | number | ναι | Numeric ID of the lock the door opens |
lockUuid | string | ναι | UUID of the lock the door opens |
method | "slide" | "pin" | ναι | 'slide' (guest page) or 'pin' (entrance panel) |
openedBy | string | null | ναι | User ID of a signed-in guest; null for an anonymous guest page or a PIN |
key | object | ναι | |
key.doors | object[] | ναι | |
key.doors[].doorId | number | ναι | Stable door id within the key (guest pages address doors by it) |
key.doors[].lockId | number | ναι | Numeric ID of the lock the door opens |
key.doors[].lockUuid | string | ναι | 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[].sortOrder | number | ναι | |
key.validFrom | string | ναι | |
key.validUntil | string | ναι | |
key.accessMode | "public" | "user-whitelist" | ναι | 'public' (anyone with the link or PIN) or 'user-whitelist' (only allowedUserIds) |
key.allowedUserIds | string[] | ναι | |
key.maxUses | number | null | ναι | Total opens the key allows across all its doors; null = unlimited |
key.usedCount | number | ναι | Opens so far |
key.pinIssued | boolean | ναι | True when the key has an entrance-panel PIN; the PIN itself is never sent |
key.createdBy | string | ναι | |
key.createdAt | string | ναι | |
key.revokedAt | string | null | ναι | When the key was revoked; null while it is not |
timestamp | string | ναι | ISO-8601 time of the domain event |
User events
UserCreated
| Source | spk.api |
| detail-type | UserCreated |
| aggregateType | UserAggregate |
A new user has been registered.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
status | "ACTIVE" | "INACTIVE" | "SUSPENDED" | ναι |
ProfileUpdated
| Source | spk.api |
| detail-type | ProfileUpdated |
| aggregateType | UserAggregate |
A user's profile fields have changed.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
changes | object | ναι | |
changes.firstName | object | όχι | |
changes.firstName.old | string | ναι | |
changes.firstName.new | string | ναι | |
changes.lastName | object | όχι | |
changes.lastName.old | string | ναι | |
changes.lastName.new | string | ναι | |
changes.phoneNumber | object | όχι | |
changes.phoneNumber.old | string | όχι | |
changes.phoneNumber.new | string | όχι |
UserPhoneNumberUpdated
| Source | spk.api |
| detail-type | UserPhoneNumberUpdated |
| aggregateType | UserAggregate |
A user's phone number has changed (only the masked number is carried).
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
action | "set" | "removed" | ναι | |
maskedPhoneNumber | string | όχι | Obfuscated number (last 4 digits, e.g. "***4567") — present only when action is "set" |
timestamp | string | ναι | ISO-8601 time of the domain event |
UserEmailUpdated
| Source | spk.api |
| detail-type | UserEmailUpdated |
| aggregateType | UserAggregate |
A user's email address has changed.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
action | "set" | "removed" | ναι | |
maskedEmail | string | όχι | Obfuscated email (first initial + domain, e.g. "a***@example.com") — present only when action is "set" |
timestamp | string | ναι | ISO-8601 time of the domain event |
PhysicalKeyAdded
| Source | spk.api |
| detail-type | PhysicalKeyAdded |
| aggregateType | UserAggregate |
A physical key has been issued to a user.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
number | number | ναι | Key number |
orgId | string | ναι | Issuing organization |
orgName | string | όχι | Organization display name |
note | string | όχι | Free-form note |
addedAt | number | ναι | Unix epoch ms |
PhysicalKeyRemoved
| Source | spk.api |
| detail-type | PhysicalKeyRemoved |
| aggregateType | UserAggregate |
A physical key has been removed from a user.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
number | number | ναι | Key number |
removedAt | number | ναι | Unix epoch ms |
WalletKeyPrepared
| Source | spk.api |
| detail-type | WalletKeyPrepared |
| aggregateType | UserAggregate |
A wallet key (Apple/Google) is being provisioned.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
keyId | string | ναι | |
walletType | "APPLE" | "GOOGLE" | ναι | |
keyIndex | number | όχι | |
deviceId | string | όχι | Device UUID |
orgId | string | null | όχι | Organization ID |
WalletKeyCommitted
| Source | spk.api |
| detail-type | WalletKeyCommitted |
| aggregateType | UserAggregate |
A wallet key has been issued and the pass is available.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
keyId | string | ναι | |
keyIndex | number | όχι | |
walletType | "APPLE" | "GOOGLE" | όχι | |
deviceId | string | όχι | Device UUID |
passId | string | ναι | |
passUrl | string | ναι | |
committedAt | string | ναι |
WalletKeyRolledBack
| Source | spk.api |
| detail-type | WalletKeyRolledBack |
| aggregateType | UserAggregate |
A wallet key provisioning attempt was rolled back.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
preparedKeyId | string | ναι | |
reason | string | ναι | |
rolledBackAt | string | ναι |
WalletKeyRemoved
| Source | spk.api |
| detail-type | WalletKeyRemoved |
| aggregateType | UserAggregate |
A wallet key has been removed from a user.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
keyId | string | ναι | |
reason | string | ναι | |
removedAt | string | ναι | Unix epoch ms |
WalletKeyOrgAssigned
| Source | spk.api |
| detail-type | WalletKeyOrgAssigned |
| aggregateType | UserAggregate |
An admin assigned a wallet key to its issuing organization.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
keyId | string | ναι | |
orgId | string | ναι | Organization the key now belongs to |
previousOrgId | string | null | όχι | Organization it belonged to before, if any |
auditId | string | ναι |
AccessibleLockAdded
| Source | spk.api |
| detail-type | AccessibleLockAdded |
| aggregateType | UserAggregate |
A user has been granted access to a lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
lockId | string | ναι | Lock UUID |
lockName | string | ναι | Lock display name |
accessLevel | "OWNER" | "ADMIN" | "USER" | "GUEST" | ναι | |
grantedBy | string | ναι | User ID who granted access |
AccessibleLockRemoved
| Source | spk.api |
| detail-type | AccessibleLockRemoved |
| aggregateType | UserAggregate |
A user has lost access to a lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
lockId | string | ναι | Numeric lock ID |
removedBy | string | ναι | |
reason | string | ναι | |
removedAt | string | ναι | Unix epoch ms |
UserSuspended
| Source | spk.api |
| detail-type | UserSuspended |
| aggregateType | UserAggregate |
A user has been suspended.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
reason | string | ναι | |
suspendedBy | string | ναι | |
suspendedAt | string | ναι |
UserReactivated
| Source | spk.api |
| detail-type | UserReactivated |
| aggregateType | UserAggregate |
A previously suspended user has been reactivated.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
reactivatedBy | string | ναι | |
reactivatedAt | string | ναι |
WalletKeyAdded
| Source | spk.api |
| detail-type | WalletKeyAdded |
| aggregateType | UserAggregate |
A wallet key was added (legacy single-step path).
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
walletKey | object | ναι | |
walletKey.keyId | string | ναι | |
walletKey.keyIndex | number | ναι | |
walletKey.walletType | "APPLE" | "GOOGLE" | ναι | |
walletKey.deviceId | string | ναι | |
walletKey.passUrl | string | όχι | |
walletKey.serialNumber | string | όχι | |
walletKey.addedAt | string | ναι |
LicensePlateAdded
| Source | spk.api |
| detail-type | LicensePlateAdded |
| aggregateType | UserAggregate |
A license plate has been registered to a user.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
plate | string | ναι | License plate string |
label | string | ναι | Friendly label |
addedAt | number | ναι | Unix epoch ms |
LicensePlateRemoved
| Source | spk.api |
| detail-type | LicensePlateRemoved |
| aggregateType | UserAggregate |
A license plate has been removed from a user.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
plate | string | ναι |
DeviceAdded
| Source | spk.api |
| detail-type | DeviceAdded |
| aggregateType | UserAggregate |
A device has been linked to a user.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
deviceId | string | ναι | Device UUID |
deviceType | "matter" | "camera" | "rtsp-camera" | ναι | |
orgId | string | ναι | Organization ID |
name | string | όχι | |
addedBy | string | όχι | |
addedAt | string | ναι | Unix epoch ms |
DeviceRemoved
| Source | spk.api |
| detail-type | DeviceRemoved |
| aggregateType | UserAggregate |
A device has been unlinked from a user.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
deviceId | string | ναι | Device UUID |
deviceType | "matter" | "camera" | "rtsp-camera" | ναι | |
removedBy | string | ναι | |
reason | string | ναι | |
removedAt | string | ναι | Unix epoch ms |
DevicePushMutedUpdated
| Source | spk.api |
| detail-type | DevicePushMutedUpdated |
| aggregateType | UserAggregate |
A user muted or unmuted alarm push notifications for one of their devices.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
deviceId | string | ναι | Device UUID |
muted | boolean | ναι | |
timestamp | string | ναι | ISO-8601 time of the domain event |
CallToOpenLockChosen
| Source | spk.api |
| detail-type | CallToOpenLockChosen |
| aggregateType | UserAggregate |
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):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
target | object | ναι | 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.id | string | ναι | A lock aggregate id or a Matter device id, never a phone number |
targets | object[] | όχι | 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[].id | string | ναι | A lock aggregate id or a Matter device id, never a phone number |
targets[].digit | string | ναι | The key that picks this target in a call: one digit, 0-9, unique within the choice |
chosenBy | object | ναι | |
chosenBy.kind | "user" | "organization" | ναι | user for the user themselves, organization for an API key |
chosenBy.orgId | string | null | ναι | The API key's organization; null when the user acted themselves |
timestamp | string | ναι | ISO-8601 time of the domain event |
CallToOpenLockCleared
| Source | spk.api |
| detail-type | CallToOpenLockCleared |
| aggregateType | UserAggregate |
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):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
previousTarget | object | ναι | 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.id | string | ναι | A lock aggregate id or a Matter device id, never a phone number |
previousTargets | object[] | όχι | 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[].id | string | ναι | A lock aggregate id or a Matter device id, never a phone number |
previousTargets[].digit | string | ναι | The key that picks this target in a call: one digit, 0-9, unique within the choice |
clearedBy | object | ναι | |
clearedBy.kind | "user" | "organization" | ναι | user for the user themselves, organization for an API key |
clearedBy.orgId | string | null | ναι | The API key's organization; null when the user acted themselves |
timestamp | string | ναι | ISO-8601 time of the domain event |
CallToOpenCallRecorded
| Source | spk.api |
| detail-type | CallToOpenCallRecorded |
| aggregateType | UserAggregate |
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):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
callId | string | ναι | Opaque id of the call; also the requestId of the LockOpenRequested it caused |
target | object | ναι | 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.id | string | ναι | A lock aggregate id or a Matter device id, never a phone number |
digit | string | όχι | 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) |
timestamp | string | ναι | ISO-8601 time of the domain event |
UserSubscriptionStatusUpdated
| Source | spk.api |
| detail-type | UserSubscriptionStatusUpdated |
| aggregateType | UserAggregate |
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):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
userId | string | ναι | User ID |
orgId | string | ναι | The organization whose entry changed; the delivery's detail.partnerId is the same id |
changes | object | ναι | Only the entitlements that changed, e.g. mobileAppAccess |
changes.mobileAppAccess | boolean | όχι | Whether the user may use the mobile app for this organization; an app entitlement, not door access |
changedBy | object | ναι | 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 |
timestamp | string | ναι | ISO-8601 time of the domain event |
Hub events
HubProvisioned
| Source | spk.api |
| detail-type | HubProvisioned |
| aggregateType | HubAggregate |
A hub has been provisioned (manufactured / known to the system).
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
hubId | string | ναι | Hub UUID |
serial | string | ναι | Hardware serial |
model | string | ναι | Hardware model |
thingName | string | ναι | AWS IoT thing name |
vendorName | string | όχι | |
provisionedAt | number | ναι | Unix epoch ms |
HubClaimed
| Source | spk.api |
| detail-type | HubClaimed |
| aggregateType | HubAggregate |
A hub has been claimed by an organization and site.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
hubId | string | ναι | Hub UUID |
orgId | string | ναι | Claiming organization |
siteId | string | ναι | Site the hub is installed at |
claimedBy | string | ναι | User ID who claimed it |
claimedAt | number | ναι | Unix epoch ms |
HubReClaimed
| Source | spk.api |
| detail-type | HubReClaimed |
| aggregateType | HubAggregate |
A hub has been moved from one organization/site to another.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
hubId | string | ναι | Hub UUID |
previousOrgId | string | ναι | |
previousSiteId | string | ναι | |
newOrgId | string | ναι | |
newSiteId | string | ναι | |
reclaimedBy | string | ναι | |
reason | string | ναι | |
reclaimedAt | number | ναι |
HubRoleSet
| Source | spk.api |
| detail-type | HubRoleSet |
| aggregateType | HubAggregate |
A hub's primary/secondary role has been set.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
hubId | string | ναι | Hub UUID |
isPrimary | boolean | ναι | |
setBy | string | ναι | |
setAt | number | ναι |
HubSuspended
| Source | spk.api |
| detail-type | HubSuspended |
| aggregateType | HubAggregate |
A hub has been suspended.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
hubId | string | ναι | Hub UUID |
reason | string | ναι | |
suspendedBy | string | ναι | |
suspendedAt | number | ναι |
HubDecommissioned
| Source | spk.api |
| detail-type | HubDecommissioned |
| aggregateType | HubAggregate |
A hub has been decommissioned.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
hubId | string | ναι | Hub UUID |
reason | string | ναι | |
decommissionedBy | string | ναι | |
decommissionedAt | number | ναι |
MigrationStarted
| Source | spk.api |
| detail-type | MigrationStarted |
| aggregateType | HubAggregate |
A hub-to-hub device migration has started.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
migrationId | string | ναι | |
sourceHubId | string | ναι | |
targetHubId | string | ναι | |
targetThingName | string | ναι | |
deviceIds | string[] | ναι | |
startedBy | string | ναι | |
startedAt | number | ναι |
DeviceMigrationStatusUpdated
| Source | spk.api |
| detail-type | DeviceMigrationStatusUpdated |
| aggregateType | HubAggregate |
A device's migration status has changed.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
migrationId | string | ναι | |
deviceId | string | ναι | Device UUID |
status | "Queued" | "Migrating" | "Migrated" | "Blocked" | "Failed" | ναι | |
error | string | όχι | |
updatedAt | number | ναι |
MigrationCompleted
| Source | spk.api |
| detail-type | MigrationCompleted |
| aggregateType | HubAggregate |
A hub-to-hub device migration has finished.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
migrationId | string | ναι | |
status | "Completed" | "Completed with errors" | "Failed" | ναι | |
completedAt | number | ναι |
Camera events
CameraRegistered
| Source | spk.api |
| detail-type | CameraRegistered |
| aggregateType | CameraAggregate |
A camera has been registered.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
threeDeyeCameraId | string | ναι | 3dEye-side camera ID |
cameraType | "generic" | "onvif" | "pnp" | ναι | |
name | string | ναι | |
orgId | string | ναι | Organization ID |
ownerId | string | ναι | Owning user ID |
httpUrl | string | ναι | |
rtspUrl | string | ναι | |
registrationCode | string | όχι | Registration code used |
registeredAt | number | ναι | Unix epoch ms |
CameraUpdated
| Source | spk.api |
| detail-type | CameraUpdated |
| aggregateType | CameraAggregate |
A camera's metadata or stream URLs have changed.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
name | string | όχι | |
httpUrl | string | όχι | |
rtspUrl | string | όχι | |
updatedAt | number | ναι |
CameraDisabled
| Source | spk.api |
| detail-type | CameraDisabled |
| aggregateType | CameraAggregate |
A camera has been disabled.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
reason | string | ναι | |
disabledBy | string | ναι | |
disabledAt | number | ναι |
CameraDeleted
| Source | spk.api |
| detail-type | CameraDeleted |
| aggregateType | CameraAggregate |
A camera has been deleted.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
deletedBy | string | ναι | |
deletedAt | number | ναι |
CameraLinkedToLock
| Source | spk.api |
| detail-type | CameraLinkedToLock |
| aggregateType | CameraAggregate |
A camera has been associated with a lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
lockId | string | ναι | Numeric lock ID |
CameraUnlinkedFromLock
| Source | spk.api |
| detail-type | CameraUnlinkedFromLock |
| aggregateType | CameraAggregate |
A camera has been disassociated from a lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
CameraRoleCreated
| Source | spk.api |
| detail-type | CameraRoleCreated |
| aggregateType | CameraRoleAggregate |
A 3dEye access role has been created.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
roleId | string | ναι | |
threeDeyeRoleId | string | ναι | |
name | string | ναι | |
description | string | ναι | |
orgId | string | ναι | Organization ID |
createdAt | number | ναι |
CameraRoleDeleted
| Source | spk.api |
| detail-type | CameraRoleDeleted |
| aggregateType | CameraRoleAggregate |
A 3dEye access role has been deleted.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
roleId | string | ναι | |
deletedAt | number | ναι |
CameraRoleUserAssigned
| Source | spk.api |
| detail-type | CameraRoleUserAssigned |
| aggregateType | CameraRoleAggregate |
A user has been added to a camera role.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
roleId | string | ναι | |
userId | string | ναι | User ID |
threeDeyeUserId | string | ναι | |
assignedAt | number | ναι |
CameraRoleUserRemoved
| Source | spk.api |
| detail-type | CameraRoleUserRemoved |
| aggregateType | CameraRoleAggregate |
A user has been removed from a camera role.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
roleId | string | ναι | |
userId | string | ναι | User ID |
threeDeyeUserId | string | ναι | |
removedAt | number | ναι | Unix epoch ms |
CameraRoleCameraAssigned
| Source | spk.api |
| detail-type | CameraRoleCameraAssigned |
| aggregateType | CameraRoleAggregate |
A camera has been added to a role.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
roleId | string | ναι | |
cameraId | string | ναι | Camera ID |
permissions | string[] | ναι | |
assignedAt | number | ναι |
CameraRoleCameraRemoved
| Source | spk.api |
| detail-type | CameraRoleCameraRemoved |
| aggregateType | CameraRoleAggregate |
A camera has been removed from a role.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
roleId | string | ναι | |
cameraId | string | ναι | Camera ID |
removedAt | number | ναι | Unix epoch ms |
RTSP camera events
RtspCameraRegistered
| Source | spk.api |
| detail-type | RtspCameraRegistered |
| aggregateType | RtspCameraAggregate |
An RTSP camera has been registered; placement on a video worker follows.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
name | string | ναι | |
rtspUrl | string | όχι | |
rtspHash | string | ναι | |
streamId | string | ναι | |
username | string | όχι | |
password | string | όχι | |
httpSnapshotUrl | string | όχι | |
ownerId | string | όχι | |
orgId | string | όχι | Organization ID |
placementMode | "async" | όχι | |
createdAt | string | ναι |
RtspCameraUpdated
| Source | spk.api |
| detail-type | RtspCameraUpdated |
| aggregateType | RtspCameraAggregate |
An RTSP camera's name or source has changed.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
name | string | όχι | |
rtspUrl | string | όχι | |
rtspHash | string | όχι | |
streamId | string | όχι | |
username | string | όχι | |
password | string | όχι | |
httpSnapshotUrl | string | όχι | |
sourceChanged | true | όχι | |
updatedAt | string | ναι |
RtspCameraDeleted
| Source | spk.api |
| detail-type | RtspCameraDeleted |
| aggregateType | RtspCameraAggregate |
An RTSP camera has been deleted.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
deletedAt | string | ναι | |
deletedBy | string | όχι |
RtspCameraAccessGranted
| Source | spk.api |
| detail-type | RtspCameraAccessGranted |
| aggregateType | RtspCameraAggregate |
A user has been granted access to an RTSP camera.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
userId | string | ναι | User ID |
role | "viewer" | "manager" | ναι | |
grantedAt | string | ναι | |
grantedBy | string | όχι |
RtspCameraAccessRevoked
| Source | spk.api |
| detail-type | RtspCameraAccessRevoked |
| aggregateType | RtspCameraAggregate |
A user's access to an RTSP camera has been revoked.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
userId | string | ναι | User ID |
revokedAt | string | ναι | |
revokedBy | string | όχι |
RtspCameraStreamStarted
| Source | spk.api |
| detail-type | RtspCameraStreamStarted |
| aggregateType | RtspCameraAggregate |
An RTSP camera's stream has been started.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
startedAt | string | ναι | |
startedBy | string | όχι | |
workerId | string | όχι | Video worker ID |
placementGeneration | number | όχι |
RtspCameraStreamStopped
| Source | spk.api |
| detail-type | RtspCameraStreamStopped |
| aggregateType | RtspCameraAggregate |
An RTSP camera's stream has been stopped.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
stoppedAt | string | ναι | |
stoppedBy | string | όχι |
RtspCameraPlaced
| Source | spk.api |
| detail-type | RtspCameraPlaced |
| aggregateType | RtspCameraAggregate |
An RTSP camera has been placed on a video worker and its stream confirmed.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
workerId | string | ναι | Video worker ID |
placementGeneration | number | ναι | |
sourceEventVersion | number | ναι | |
placedAt | string | ναι |
RtspCameraPlacementFailed
| Source | spk.api |
| detail-type | RtspCameraPlacementFailed |
| aggregateType | RtspCameraAggregate |
An RTSP camera could not be placed on any video worker.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
placementGeneration | number | ναι | |
sourceEventVersion | number | ναι | |
error | string | ναι | |
failedAt | string | ναι |
RtspCameraRecordingConfigured
| Source | spk.api |
| detail-type | RtspCameraRecordingConfigured |
| aggregateType | RtspCameraAggregate |
An RTSP camera's recording retention was set (0 = recording off).
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
retentionDays | number | ναι | |
storageProfile | "platform" | όχι | |
changedBy | object | ναι | |
changedBy.kind | "owner" | "admin" | "manager" | ναι | |
changedBy.userId | string | ναι | |
updatedAt | string | ναι |
RtspCameraRecordingsPurgeRequested
| Source | spk.api |
| detail-type | RtspCameraRecordingsPurgeRequested |
| aggregateType | RtspCameraAggregate |
A purge of an RTSP camera's older recordings was requested.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
requestId | string | ναι | |
cutoff | string | ναι | |
olderThanDays | number | ναι | |
requestedBy | object | ναι | |
requestedBy.kind | "owner" | "admin" | "manager" | ναι | |
requestedBy.userId | string | ναι | |
requestedAt | string | ναι |
RtspCameraRecordingsPurged
| Source | spk.api |
| detail-type | RtspCameraRecordingsPurged |
| aggregateType | RtspCameraAggregate |
A requested recordings purge has finished.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
requestId | string | όχι | |
cutoff | string | ναι | |
olderThanDays | number | ναι | |
deleted | number | ναι | |
complete | boolean | ναι | |
purgedBy | object | ναι | |
purgedBy.kind | "owner" | "admin" | "manager" | ναι | |
purgedBy.userId | string | ναι | |
purgedAt | string | ναι |
RtspCameraRuntimeStatusChanged
| Source | spk.api |
| detail-type | RtspCameraRuntimeStatusChanged |
| aggregateType | RtspCamera |
An RTSP camera's runtime status changed, as reported by its video worker (delivered only for organization-owned cameras).
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
from | string | null | ναι | Previous runtime status |
to | string | ναι | New runtime status |
error | string | όχι | Why the stream is not running, when known (never contains the RTSP URL) |
workerId | string | όχι | Video worker ID |
changedAt | string | ναι | When the change was observed (ISO-8601) |
observedAt | string | ναι |
RtspCameraMonitoringConfigured
| Source | spk.api |
| detail-type | RtspCameraMonitoringConfigured |
| aggregateType | RtspCameraAggregate |
An RTSP camera's availability monitoring was switched on or off.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
enabled | boolean | ναι | |
changedBy | string | ναι | |
updatedAt | string | ναι |
RtspCameraUnavailabilityConfirmed
| Source | spk.api |
| detail-type | RtspCameraUnavailabilityConfirmed |
| aggregateType | RtspCamera |
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):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
cameraId | string | ναι | Camera ID |
runtimeStatus | string | ναι | The runtime status the camera is in (e.g. unreachable, gray, stalled) |
reason | string | όχι | Why, when known: the probe verdict or the runtime error (never contains the RTSP URL) |
workerId | string | όχι | Video worker ID |
unavailableSince | string | ναι | When the camera entered that status (ISO-8601) |
checkedAt | string | ναι | When the probe or heartbeat that confirmed it ran (ISO-8601) |
Video worker events
VideoWorkerStarted
| Source | spk.api |
| detail-type | VideoWorkerStarted |
| aggregateType | VideoWorker |
A video worker (VMS box) started up; one event per organization with cameras on it, listing only that organization's cameras.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
workerId | string | ναι | Video worker ID |
vmsStartedAt | string | ναι | When the VMS process started (ISO-8601) |
vmsVersion | string | όχι | VMS build version, when reported |
cameraIds | string[] | ναι | This organization's cameras assigned to the worker |
detectedAt | string | ναι | When the control plane saw the first heartbeat after the start (ISO-8601) |
Matter device events
MatterDeviceCreated
| Source | spk.api |
| detail-type | MatterDeviceCreated |
| aggregateType | MatterDeviceAggregate |
A Matter device has been registered.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
hubId | string | ναι | Hub UUID |
deviceType | string | ναι | |
createdAt | number | ναι |
ReportedShadowUpdated
| Source | spk.api |
| detail-type | ReportedShadowUpdated |
| aggregateType | MatterDeviceAggregate |
A device reported new shadow state.
Δεν παραδίδεται σε webhooks. Μπορεί να οριστεί σε μια συνδρομή, αλλά δεν δημοσιεύεται ποτέ στο EventBridge — εγγραφείτε στο
Shadow Updateγια να παρακολουθείτε την κατάσταση shadow μιας συσκευής.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
reported | object | ναι | |
updatedAt | number | ναι |
DesiredShadowUpdated
| Source | spk.api |
| detail-type | DesiredShadowUpdated |
| aggregateType | MatterDeviceAggregate |
A new desired shadow state was pushed.
Δεν παραδίδεται σε webhooks. Μπορεί να οριστεί σε μια συνδρομή, αλλά δεν δημοσιεύεται ποτέ στο EventBridge — εγγραφείτε στο
Shadow Updateγια να παρακολουθείτε την κατάσταση shadow μιας συσκευής.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
desired | object | ναι | |
updatedAt | number | ναι | |
requestedByUserId | string | όχι |
MatterPinSet
| Source | spk.api |
| detail-type | MatterPinSet |
| aggregateType | MatterDeviceAggregate |
A PIN credential slot was provisioned on a Matter door lock (the PIN itself is never carried).
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
userIndex | number | ναι | |
credentialIndex | number | ναι | |
timestamp | number | ναι | ISO-8601 time of the domain event |
MatterPinCleared
| Source | spk.api |
| detail-type | MatterPinCleared |
| aggregateType | MatterDeviceAggregate |
A PIN credential slot was cleared on a Matter door lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
userIndex | number | όχι | |
credentialIndex | number | ναι | |
timestamp | number | ναι | ISO-8601 time of the domain event |
AppPinSendRequested
| Source | spk.api |
| detail-type | AppPinSendRequested |
| aggregateType | MatterDeviceAggregate |
An app-PIN delivery attempt was sent to the lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
timestamp | number | ναι | ISO-8601 time of the domain event |
messageId | string | ναι | |
attempt | number | ναι | |
userIndex | number | ναι | |
credentialIndex | number | ναι | |
pinMinLength | number | null | ναι | |
pinMaxLength | number | null | ναι |
AppPinShadowWriteFailed
| Source | spk.api |
| detail-type | AppPinShadowWriteFailed |
| aggregateType | MatterDeviceAggregate |
An app-PIN write could not be made to the device shadow; the attempt will be retried.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
timestamp | number | ναι | ISO-8601 time of the domain event |
command | "SetCredential" | "ClearCredential" | ναι | |
messageId | string | null | ναι | |
error | string | ναι |
AppPinAcked
| Source | spk.api |
| detail-type | AppPinAcked |
| aggregateType | MatterDeviceAggregate |
The lock acknowledged an app-PIN write.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
timestamp | number | ναι | ISO-8601 time of the domain event |
outcome | "success" | "failure" | "duplicate" | "occupied" | "invalid-field" | "not-found" | ναι | |
matchedMessageId | string | ναι | |
errorCode | number | string | όχι | |
userIndex | number | όχι | |
provisionState | "pending" | "sent" | "verified" | "unverified" | "failed" | ναι |
AppPinClearRequested
| Source | spk.api |
| detail-type | AppPinClearRequested |
| aggregateType | MatterDeviceAggregate |
An app-PIN slot clear was sent to the lock.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
timestamp | number | ναι | ISO-8601 time of the domain event |
credentialIndex | number | ναι | |
messageId | string | null | όχι |
AppPinGaveUp
| Source | spk.api |
| detail-type | AppPinGaveUp |
| aggregateType | MatterDeviceAggregate |
The lock refused every app-PIN attempt; delivery stopped.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
timestamp | number | ναι | ISO-8601 time of the domain event |
reason | string | ναι | |
attemptCount | number | ναι | |
lastOutcome | string | null | ναι |
AppPinRedriven
| Source | spk.api |
| detail-type | AppPinRedriven |
| aggregateType | MatterDeviceAggregate |
App-PIN delivery was restarted from the beginning.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
timestamp | number | ναι | ISO-8601 time of the domain event |
reason | string | ναι | |
priorState | "pending" | "sent" | "verified" | "unverified" | "failed" | null | ναι | |
priorAttempts | number | ναι | |
priorInfraFailures | number | ναι | |
evidenceMessageId | string | όχι |
AppPinRetired
| Source | spk.api |
| detail-type | AppPinRetired |
| aggregateType | MatterDeviceAggregate |
App-PIN delivery was dropped because the lock does not require a remote PIN.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
timestamp | number | ναι | ISO-8601 time of the domain event |
reason | string | ναι | |
credentialIndex | number | ναι |
AppPinDeliveryFailed
| Source | spk.api |
| detail-type | AppPinDeliveryFailed |
| aggregateType | MatterDeviceAggregate |
The bridge answered an app-PIN write without the lock carrying it out; the attempt will be retried.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
timestamp | number | ναι | ISO-8601 time of the domain event |
command | "SetCredential" | "ClearCredential" | ναι | |
messageId | string | null | ναι | |
reason | "unreachable" | "no-ack" | "refused" | ναι | |
error | string | ναι |
MatterDeviceNameSet
| Source | spk.api |
| detail-type | MatterDeviceNameSet |
| aggregateType | MatterDeviceAggregate |
The display name of a Matter device has been set.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
thingName | string | ναι | AWS IoT thing name |
name | string | ναι | |
timestamp | number | ναι | ISO-8601 time of the domain event |
Alarm events
AlarmTriggered
| Source | spk.api |
| detail-type | AlarmTriggered |
| aggregateType | MatterDeviceAggregate |
A Matter sensor (smoke, CO, occupancy, …) reported an alarm condition.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | 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" | ναι | |
matterPath | string | ναι | Matter endpoint/cluster/attribute path that tripped (e.g. 1/69/0) |
deviceTypeId | number | όχι | |
endpoint | number | όχι | |
deviceTypeSource | "shadow" | "sticky" | "command" | "shadow_borrowed" | "shadow_disputed" | όχι | |
rawValue | number | όχι | Raw reported value that produced the alarm |
alarmsEnabled | boolean | όχι | Device alarm mode at the moment of this transition; false = no push was due. Absent on events recorded before AA-311, which means on. |
timestamp | string | ναι | ISO-8601 time of the domain event |
AlarmCleared
| Source | spk.api |
| detail-type | AlarmCleared |
| aggregateType | MatterDeviceAggregate |
A previously triggered alarm condition has cleared.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID |
channel | "boolean_state" | "smoke" | "smoke_interconnect" | "co" | "occupancy" | "device_fault" | ναι | |
alarmType | "contact" | "water_leak" | "smoke" | "co" | "motion" | "water_freeze" | "rain" | "device_fault" | ναι | |
matterPath | string | ναι | |
deviceTypeId | number | όχι | |
endpoint | number | όχι | |
deviceTypeSource | "shadow" | "sticky" | "command" | "shadow_borrowed" | "shadow_disputed" | όχι | |
rawValue | number | όχι | |
alarmsEnabled | boolean | όχι | Device alarm mode at the moment of this transition; false = no push was due. Absent on events recorded before AA-311, which means on. |
timestamp | string | ναι | ISO-8601 time of the domain event |
AlarmModeSet
| Source | spk.api |
| detail-type | AlarmModeSet |
| aggregateType | MatterDeviceAggregate |
Alarm pushes of a Matter device were switched on or off.
Πεδία payload (detail.data):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
deviceId | string | ναι | Device UUID — same value as the MatterDevice thingName / aggregate id |
enabled | boolean | ναι | The new alarm mode; false = the device sends no alarm push |
changedByUserId | string | όχι | The user (token caller) who changed the mode; absent when an organization API key changed it |
changedByOrgId | string | όχι | The API key's organization that changed the mode; absent when a user's token changed it |
IoT events
Shadow Update
| Source | spk.iot.shadow |
| detail-type | Shadow Update |
An IoT hub device updated its AWS IoT Device Shadow.
Αυτό το event έχει διαφορετικό envelope από τα events spk.api — δεν υπάρχει το περιτύλιγμα detail.data. Τα πεδία του shadow βρίσκονται απευθείας στο detail.
Πεδία payload (το detail στο ανώτατο επίπεδο):
| Πεδίο | Τύπος | Υποχρεωτικό | Περιγραφή |
|---|---|---|---|
partnerId | string | null | ναι | Partner associated with this device |
thingName | string | ναι | AWS IoT thing name |
reportedState | string | null | ναι | State the device reported back (JSON string) |
desiredState | string | null | ναι | Target state set by the application (JSON string) |
deltaState | string | ναι | Difference between desired and reported state (JSON string) |
metadata | string | null | ναι | AWS IoT shadow metadata with timestamps per field (JSON string) |
version | string | number | null | ναι | Shadow document version |
shadowName | string | null | όχι | Named shadow the update came from (e.g. state, device_info) |
bridgeUuid | string | null | όχι | |
deviceType | string | null | όχι | |
nodeId | string | null | όχι | |
thingTypeName | string | null | όχι |
Τα reportedState, desiredState, deltaState και metadata είναι stringified JSON μέσα στο εξωτερικό αντικείμενο JSON. Καλέστε JSON.parse() σε καθένα πριν διαβάσετε το περιεχόμενό του.