ΟδηγόςEvent Catalog

Event Catalog

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

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

Για την πλήρη λίστα κάθε detail-type που εκπέμπεται, δείτε Partner Webhooks.

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

{
  "source": "spk.api",
  "detail-type": "<EventName>",
  "detail": {
    "partnerId": "<your-orgId>",
    "aggregateType": "<lock|user|hub|...>",
    "aggregateId": "<aggregate uuid>",
    "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
aggregateTypelock

Ενεργοποιείται όταν δημιουργείται μια νέα κλειδαριά στο σύστημα.

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

ΠεδίοΤύποςΠεριγραφή
lockIdnumberΑριθμητικό ID κλειδαριάς
uuidstringUUID κλειδαριάς
serialNumberstring|nullΣειριακός αριθμός hardware
ownerIdstring|nullID χρήστη-ιδιοκτήτη
keysarray|nullΑρχική λίστα κλειδιών { uuid, indexNumber?, userId? }
thingNamestring|nullΌνομα AWS IoT thing
thingArnstring|nullARN AWS IoT thing
timestampstringΧρονοσφραγίδα ISO

Δείγμα:

{
  "type": "LockCreated",
  "lockId": 4321,
  "uuid": "550e8400-e29b-41d4-a716-446655440000",
  "serialNumber": "SPK-1234",
  "ownerId": "user-uuid",
  "keys": [],
  "timestamp": "2026-04-30T10:30:00.123Z"
}

OwnerSet

Sourcespk.api
detail-typeOwnerSet

Ενεργοποιείται όταν ανατίθεται ή αλλάζει ο ιδιοκτήτης μιας κλειδαριάς.

ΠεδίοΤύποςΠεριγραφή
lockIdnumberΑριθμητικό ID κλειδαριάς
uuidstringUUID κλειδαριάς
userIdstringID χρήστη του νέου ιδιοκτήτη
timestampstringΧρονοσφραγίδα ISO

KeyAdded

Sourcespk.api
detail-typeKeyAdded

Ενεργοποιείται όταν προστίθεται ένα φυσικό κλειδί σε μια κλειδαριά.

ΠεδίοΤύποςΠεριγραφή
lockIdnumberΑριθμητικό ID κλειδαριάς
uuidstringUUID κλειδαριάς
keyUuidstringUUID του κλειδιού
keyIndexNumbernumber|nullIndex της θέσης (slot) του κλειδιού
userIdstring|nullΧρήστης στον οποίο έχει ανατεθεί το κλειδί
timestampstringΧρονοσφραγίδα ISO

Δείγμα:

{
  "type": "KeyAdded",
  "lockId": 4321,
  "uuid": "550e8400-e29b-41d4-a716-446655440000",
  "keyUuid": "0f5b84e0-1d56-4d2f-8d6c-1f2e3a4b5c6d",
  "keyIndexNumber": 3,
  "userId": "9b3e1d5e-7c6a-4d4d-8b1a-2e4f6a8c0d1e",
  "timestamp": "2026-04-30T10:30:00.123Z"
}

KeyRemoved

Sourcespk.api
detail-typeKeyRemoved

Ενεργοποιείται όταν αφαιρείται ένα φυσικό κλειδί από μια κλειδαριά.

ΠεδίοΤύποςΠεριγραφή
lockIdnumberΑριθμητικό ID κλειδαριάς
uuidstringUUID κλειδαριάς
keyUuidstringUUID του κλειδιού που αφαιρέθηκε
keyIndexNumbernumber|nullIndex της θέσης (slot) του κλειδιού
timestampstringΧρονοσφραγίδα ISO

ResidentAdded

Sourcespk.api
detail-typeResidentAdded

Ενεργοποιείται όταν παραχωρείται σε έναν ένοικο πρόσβαση σε μια κλειδαριά.

ΠεδίοΤύποςΠεριγραφή
lockIdnumberΑριθμητικό ID κλειδαριάς
uuidstringUUID κλειδαριάς
userIdstringID χρήστη ενοίκου (προκύπτει από το email)
namestringΌνομα εμφάνισης ενοίκου
emailstring|nullEmail ενοίκου (προαιρετικό)
timestampstringΧρονοσφραγίδα ISO

Δείγμα:

{
  "type": "ResidentAdded",
  "lockId": 4321,
  "uuid": "550e8400-e29b-41d4-a716-446655440000",
  "userId": "9b3e1d5e-7c6a-4d4d-8b1a-2e4f6a8c0d1e",
  "name": "Jane Resident",
  "email": "resident@example.com",
  "timestamp": "2026-04-30T10:30:00.123Z"
}

ResidentRemoved

Sourcespk.api
detail-typeResidentRemoved

Ενεργοποιείται όταν ανακαλείται η πρόσβαση ενός ενοίκου σε μια κλειδαριά.

ΠεδίοΤύποςΠεριγραφή
lockIdnumberΑριθμητικό ID κλειδαριάς
uuidstringUUID κλειδαριάς
userIdstringID χρήστη ενοίκου
emailstring|nullEmail ενοίκου (προαιρετικό)
timestampstringΧρονοσφραγίδα ISO

User Events

PhysicalKeyAdded

Sourcespk.api
detail-typePhysicalKeyAdded
aggregateTypeuser

Ενεργοποιείται όταν εκδίδεται ένα φυσικό κλειδί σε έναν χρήστη.

ΠεδίοΤύποςΠεριγραφή
userIdstringID χρήστη
numbernumberΑριθμός κλειδιού
orgIdstringΟργανισμός που το εκδίδει
orgNamestring|nullΌνομα εμφάνισης οργανισμού
notestring|nullΕλεύθερη σημείωση
addedAtnumberUnix epoch ms

PhysicalKeyRemoved

Sourcespk.api
detail-typePhysicalKeyRemoved

Ενεργοποιείται όταν αφαιρείται ένα φυσικό κλειδί από έναν χρήστη.

ΠεδίοΤύποςΠεριγραφή
userIdstringID χρήστη
numbernumberΑριθμός κλειδιού
removedAtnumberUnix epoch ms

AccessibleLockAdded

Sourcespk.api
detail-typeAccessibleLockAdded

Ενεργοποιείται όταν παραχωρείται σε έναν χρήστη πρόσβαση σε μια κλειδαριά.

ΠεδίοΤύποςΠεριγραφή
userIdstringID χρήστη
lockIdstringUUID κλειδαριάς
lockNamestringΌνομα εμφάνισης κλειδαριάς
accessLevelenumOWNER | ADMIN | USER | GUEST
grantedBystringID χρήστη που παραχώρησε την πρόσβαση

Δείγμα:

{
  "type": "AccessibleLockAdded",
  "userId": "9b3e1d5e-7c6a-4d4d-8b1a-2e4f6a8c0d1e",
  "lockId": "550e8400-e29b-41d4-a716-446655440000",
  "lockName": "Front Door",
  "accessLevel": "USER",
  "grantedBy": "1c1c1c1c-1c1c-1c1c-1c1c-1c1c1c1c1c1c"
}

LicensePlateAdded

Sourcespk.api
detail-typeLicensePlateAdded

Ενεργοποιείται όταν καταχωρείται μια πινακίδα κυκλοφορίας σε έναν χρήστη (χρησιμοποιείται από ροές πρόσβασης βασισμένες σε ALPR / κάμερα).

ΠεδίοΤύποςΠεριγραφή
userIdstringID χρήστη
platestringΣυμβολοσειρά πινακίδας κυκλοφορίας
labelstringΦιλική ετικέτα
addedAtnumberUnix epoch ms

Hub Events

HubProvisioned

Sourcespk.api
detail-typeHubProvisioned
aggregateTypehub

Ενεργοποιείται όταν ένα hub καταχωρείται στο σύστημα (συνήθως κατά την κατασκευή).

ΠεδίοΤύποςΠεριγραφή
hubIdstringUUID hub
serialstringΣειριακός αριθμός hardware
modelstringΜοντέλο hardware
thingNamestringΌνομα AWS IoT thing
vendorNamestring|nullΌνομα κατασκευαστή (vendor)
provisionedAtnumberUnix epoch ms

HubClaimed

Sourcespk.api
detail-typeHubClaimed

Ενεργοποιείται όταν ένα hub διεκδικείται (claimed) από έναν οργανισμό και ανατίθεται σε ένα site.

ΠεδίοΤύποςΠεριγραφή
hubIdstringUUID hub
orgIdstringΟργανισμός που το διεκδικεί
siteIdstringSite όπου είναι εγκατεστημένο το hub
claimedBystringID χρήστη που το διεκδίκησε
claimedAtnumberUnix epoch ms

Camera Events

CameraRegistered

Sourcespk.api
detail-typeCameraRegistered
aggregateTypecamera

Ενεργοποιείται όταν καταχωρείται μια κάμερα για έναν tenant.

ΠεδίοΤύποςΠεριγραφή
cameraIdstringUUID κάμερας
threeDeyeCameraIdstringID κάμερας από την πλευρά του 3dEye
cameraTypeenumgeneric | onvif | pnp
namestringΌνομα εμφάνισης κάμερας
orgIdstringΟργανισμός-ιδιοκτήτης
ownerIdstringID χρήστη-ιδιοκτήτη
httpUrlstringHTTP stream URL
rtspUrlstringRTSP stream URL
registrationCodestringΚωδικός καταχώρησης που χρησιμοποιήθηκε
registeredAtnumberUnix epoch ms

IoT Events

Shadow Update

Sourcespk.iot.shadow
detail-typeShadow Update

Ενεργοποιείται όταν μια συσκευή IoT hub ενημερώνει το AWS IoT Device Shadow της. Περιέχει ένα πλήρες στιγμιότυπο της κατάστασης shadow, συμπεριλαμβανομένων της επιθυμητής κατάστασης (desired state), της αναφερόμενης κατάστασης (reported state) και του delta.

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

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

ΠεδίοΤύποςΠεριγραφή
thingNamestringΌνομα AWS IoT thing της συσκευής
partnerIdstring|nullΕταίρος που σχετίζεται με αυτή τη συσκευή
versionnumberΈκδοση του εγγράφου shadow
desiredStatestringΣτόχος κατάστασης που ορίζει η εφαρμογή (συμβολοσειρά JSON)
reportedStatestringΚατάσταση που ανέφερε πίσω η συσκευή (συμβολοσειρά JSON)
deltaStatestringΔιαφορά μεταξύ επιθυμητής και αναφερόμενης κατάστασης (συμβολοσειρά JSON)· μη κενή όταν η συσκευή δεν έχει εφαρμόσει όλες τις αλλαγές
metadatastringMetadata του AWS IoT shadow με χρονοσφραγίδες ανά πεδίο (συμβολοσειρά JSON)

Παράδειγμα payload:

{
  "source": "spk.iot.shadow",
  "detail-type": "Shadow Update",
  "detail": {
    "partnerId": "<tenant-org-id>",
    "thingName": "<device-uuid>",
    "reportedState": "<stringified JSON of reported state>",
    "desiredState": "<stringified JSON of desired state>",
    "deltaState": "{}",
    "metadata": "<stringified IoT shadow metadata>",
    "version": 42
  }
}

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