# Revision history for pushbullet-types
## 0.4.0.2 -- 2018-02-11
* Derive `ToHttpApiData` for `PushId`.
## 0.4.0.1 -- 2018-02-08
* Drop upper bounds on dependencies.
## 0.4.0.0 -- 2017-08-01
* Make `body` field of link pushes optional. Many channel pushes do not include
a body, but only the URL and the title.
* Improve `Push` parsing. Push sender and receiver information are factored out
into separate datatypes, and parsed as a whole. Either you have a full sender
(either a client or a channel) or you don't have any of its fields. Same
applies to receivers, except that only clients can be receivers, and don't
have names. This fixes a bug where pushes sent by channels could not be
parsed, since such pushes omit certain fields, such as `sender_iden` and
`sender_email`.
## 0.3.0.0 -- 2017-07-29
* `PushEphemeral` now supports the `targets` field, which allows to more
faithfully parse clipboard synchronization messages in the realtime event
stream.
* Missing `Eq` and `Show` instances for `Ephemeral` are now derived.
* Missing device-related datatypes and constructors are now exported.
* Values commonly used by PushBullet for the DeviceIcon type now have a bunch
of constants exported for them.
* Aeson version upper bound is now higher; this version of pushbullet-types
will now build with Stackage resolver lts-9.0.
* Misc code cleanup.
## 0.2.0.0 -- 2017-04-30
* Some fields in `PushData` are now made optional, since the objects received
from Pushbullet may have them missing.
* A minimum value for `PushbulletTime` is added. This is just zero seconds
since the POSIX epoch.
* Ephemerals are reworked. Now `Ephemeral` actually has one constructor per
ephemeral type, and the previous constructors of `Ephemeral` are moved into
`PushEphemeral`. `Ephemeral` now has a constructor for tickles and nops.
Only push-type tickles have a dedicated constructor in `TickleType`.
## 0.1.0.0 -- 2017-02-20
Define the following core types:
* `Push` -- messages used internally in Pushbullet.
* `Ephemeral` -- messages sent directly into the live event stream. These have
a multitude of uses, e.g. sending SMS via a phone or seeing whether
notifications have occurred on a device.
* `Device` -- representation of a device.
* `User` -- representation of a user.
* `Permanant` -- this is an undocumented type in the Pushbullet API. Notably,
SMS threads and messages are permanents.
Some of these types come in two flavors: `New` and `Existing`. This is
signalled by a type index coming from a datakind.