I’m integrating with the Ajax Enterprise API which exposes an AWS SQS feed for device events and notifications. The API documentation is here: Ajax Enterprise API Docs.
Each SQS message supplies an event code, which is then used to look up the corresponding log message. This is supplied with placeholders, which you then substitute with other data in the SQS message.
Example: "M_01_20": "%3$s: open, %1$s in %2$s" -> "MyHub: open, MyDetector in MyRoom"
In an ideal world the feed would just supply the fully formed log message, but it doesn't. I don't know why.
As it stands I’ve run into multiple issues that make reliable integration very difficult:
- Undocumented placeholders: Event messages returned by the feed contain placeholders like
%1$s,%2$s,%3$s,%4$s,%5$s. There is no clear definition of which keys in the SQS JSON correspond to%4$sand%5$s. Based on what I have been told by email,%4$sseems overloaded and can refer to different things depending on the event type (user email, device name, hub line number, etc.). - Silent/unversioned changes: Placeholder assignments have changed without notice. For example, an event that previously used
%5$sto refer to a user now uses%4$s. New event codes can be added seemingly at any time, which unless I have hardcoded the definition for, cannot be handled. - Lack of data model definition: There’s no formal schema for the SQS JSON. The one listed is out of date and incomplete. For example, there's now an
eventTypeV2field - never explained anywhere, and which broke my integration. There's anadditionalDataobject and its contents changes for different event codes, which is never detailed. - Documentation lag: The official docs are maintained by the marketing team, not technical, and are not updated in real-time with the live system. This makes it impossible to rely on them for critical security notifications. I received a spreadsheet of separate event codes, different to the online list, that I am told is current.
- Lack of response: When I've raised these issues, they've either not been answered, or treated as not important.
Overall, I’m left thinking that the SQS feed is highly unreliable for an enterprise integration. I do not have control over the security system used: it is the client's choice for an app. I have informed them of my concerns.
Any thoughts or recommended strategies would be appreciated.