All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Function for translating realm to keyspace, to support multiple Astarte instances sharing the same database
- Bump Elixir to 1.15.7.
- Bump Erlang/OTP to 26.1.
- IncomingIntrospectionEvent holds now a interface-name -> {major, minor} map instead of the plain introspection string.
- Handle Cyanide 2.0 binaries correctly. Fix #95.
- Correctly encode binaryblobarrays in JSON payload of Astarte events.
- Forward ported changes from 1.0.5 (Do not allow mappings where
database_retention_policy
...)
- Bump Elixir and Erlang to 1.14.5 and 25.3.2, respectively.
- Extend interface mappings charset to support name prefixed with underscore
- Introspection triggers are part of device triggers. Expose an API closer to other triggers.
- Do not allow mappings where
database_retention_policy
isuse_ttl
but no ttl is set. Fix #84.
- Add delivery policies to triggers.
- Handle array values when decoding simple events
- Don't treat structs as object aggregations when decoding simple events
- Update dependencies and Elixir version to 1.11
- If
database_retention_policy
is set to:no_ttl
,database_retention_ttl
must not be set. (See #51)
- Correctly handle SimpleEvents JSON encoding even when they contain an object aggregation with a binaryblob value.
- Return an error instead of crashing when the endpoint is not present within a mapping.
- Add
exchange
toAMQPTriggerTarget
proto. This will allow to send events to any user defined AMQP exchange (see #351). - Add additional options to
AMQPTriggerTarget
such aspriority
,expiration
andpersistent
. - Add support for device-specific and group-specific triggers.
- Add
DeviceErrorEvent
toSimpleEvents
, allowing to react to a device error.
- It is now possible to omit the
device_id
in adevice_trigger
. This is equivalent to passing*
asdevice_id
. The old behaviour is still supported.
- Correctly handle binaryblob value deserialization in events.
- Test against Elixir 1.8.2.
- Add support for aggregated server owned interfaces.
- Correctly handle parametric endpoints regardless of the ordering, so that overlapping endpoints are always refused. (See #2)
- Restrict the use of
*
asinterface_name
only toincoming_data
data triggers. - Allow hyphens in
interface_name
. Both the top level domain and the last domain component must not contain hyphens. (#7)
- Handle empty
bson_value
inTriggers.SimpleEvents.Encoder
, avoiding crashes when an empty bson value is sent as event (e.g. unset).
astarte
,system
and all names starting withsystem_
are now reserved realm names.- Add
database_retention_policy
anddatabase_retention_ttl
mapping attributes.
- Add timestamp field to SimpleEvent protobuf.
- Fix interface validation: object aggregated properties interfaces are not valid.
- Fix interface validation: server owned object aggregated interfaces are not yet supported, hence not valid.
- Fix endpoint placeholder regex used in Mapping.normalize_endpoint.
- Fix overlapping endpoints detection, it was allowing some corner case overlappings.
- Interface name
device
is reserved now.
- Correctly support Bson.Bin struct.
- False positive overlapping endpoints were detected, EndpointsAutomaton now handles them as valid.
- Correctly serialize triggers on the special "*" interface and device.
- Add limit to 64K for string and blobs, 1024 items for arrays.
- Add value validation code for any Astarte type.
- First Astarte release.