50200.2.0 ========= API changes: * Added `Network.Mattermost.Endpoints.mmDeleteReaction` to delete reactions. * Added `Network.Mattermost.Endpoints.mmPostReaction` to add reactions. * Added an `Emoji` data type and functions for custom emoji search and listing: * `Network.Mattermost.Endpoints.mmSearchCustomEmoji` * `Network.Mattermost.Endpoints.mmGetListOfCustomEmoji` New features: * Add support for SOCKS proxies via standard environment variables `HTTPS_PROXY` and `ALL_PROXY`. * Support `NO_PROXY` to blacklist proxied hosts. 50200.1.4 ========= Bug fixes: * Content-type headers in server API responses are now parsed correctly in the presence of media type parameters as per RFC 2616. 50200.1.3 ========= API changes: * The `PostProps` type got support for the `from_webhook` prop 50200.1.2 ========= Bug fixes: * The server response to an uploaded file may report "null" for client_ids. This previously failed the parse attempt to create a `Seq ClientId`; this fix updates to conver null to an empty `Seq`. This typically manifested in attempting to attach a file in a common channel. Compatibility: * Updated supported/tested GHC versions: 8.2.2, 8.4.4, and 8.6.3. 50200.1.1 ========= Bug fixes: * The `userCreateAt`, `userUpdateAt`, and `userAuthData` fields of `User` are now permitted to be optional in the user JSON encoding to be consistent with the server. 50200.1.0 ========= * Added `mmUploadFile` and exposed its `UploadResponse` result type. * Fixed the `FileInfo` JSON decoder to permit `post_id` to be omitted. * Added `RestrictDirectMessageSetting` data type for `clientConfigRestrictDirectMessage` field of `ClientConfig`. * Added `mmAutocompleteUsers`. * Added `mmAutocompleteChannels`. * Added `DirectChannelShowStatus` preference type and constructor. Bug fixes: * `mkQueryString` now properly URI-encodes keys and values. 50200.0.1 ========= Bug fixes: * Fix the specification of the QuerySince time for fetching channel posts. The previous version generated a user-displayable date-time which contained spaces and created a malformed URL as well as not being in the proper format for the server. 50200.0.0 ========= API changes: * Expose new type, TeammateNameDisplayMode, as the type of the clientConfigTeammateNameDisplay field * Removed various fields from TeamSettings and ClientConfig that seem to have been removed in 4.9 * Remove `parent_id` fields from Post and PendingPost since they are unused and thus confusing * Added basic parsing support for websocket events new in 5.2 (fixes #408) * ClientConfig: removed EnableUserCreation field that is removed in 5.0 * Removed `extra_update_at` channel data field Bug fixes: * Fixed examples and tests to use the UserText type instead of Data.Text (thanks Carlos D ) 40900.1.0 ========= API changes: * Added a `newtype`, `UserText`, to wrap many API response fields to indicate that they may contain unsafe or unsanitized user input. Also added `unsafeUserText` to unwrap such values when the caller knows that using the unsafe value is appropriate. 40900.0.0 ========= * Endpoints: enabled `mmPatchPost` and removed duplicate argument type for `PostUpdate`. * Ensure that file fetching uses the V4 API endpoint. 40800.0.2 ========= * The websocket connection now uses the V4 API endpoint. * submitRequest now also retries on "resource vanished" exceptions. 40800.0.1 ========= * `createPool` now requires a secure connection argument. Previously it always defaulted to `True` which broke insecure connection setups. * Removed the upper bound from `memory` to support GHC 8.4. 40800.0.0 ========= * Fixed the URI for the mmUnflagPost API call. * Some JSON instances now more precisely handle missing optional fields. * mattermost-api now supports connection pooling with persistent server connections. A connection pool configuration is required to connect to Mattermost servers (thanks to Abhinav Sarkar) 40700.0.0 ========= API changes: * Added a websocket event constructor for the `delete_team` event added in 4.7. 40600.1.0 ========= API changes: * The `UserSearch` type now wraps optional fields with `Maybe`. The field types changed from `Text` to the appropriate ID type. * Removed defunct `Network.Mattermost.Types.mkSession` function. * Added an API endpoint function `mmGetUsersByIds` for getting users by ID. Other changes: * The `doRequest` function used by APIv4 endpoint functions now invokes the connection's logger to log request method and URI. 40600.0.0 ========= API changes: * This release provides implementations of many of Mattermost's version 4 API endpoints in the new Network.Mattermost.Endpoints module. The old version 3 API is still provided by Network.Mattermost but will be deprecated in a future release, and removed after that. Note that this release chiefly exposes version 4 endpoints used by the Matterhorn application; endpoints not used there have not been tested and so are left commented out in this release and may be enabled in future releases as needed. * This release also provides first-class Haskell types corresponding to the server-side configuration; see Network.Mattermost.Types.Config. * The Post data type got a new postEditAt field corresponding to the (at the time) undocumented `edit_at` field of posts. * Websockets got action support; see Network.Mattermost.WebSocket.mmSendWSAction and the new WebsocketAction type (thanks to Abhinav Sarkar for this change) * All UTCTimes received from the Mattermost server are wrapped in a `ServerTime` newtype to ensure that users cannot accidentally compare such timestamps to local UTCTimes, since the server time is not necessarily comparable. * Added Network.Mattermost.Endpoints.mmGetClientConfig to get the client configuration from the server (Thanks to Kelly McLaughlin for this change) 40400.0.0 ========= API changes: * Added endpoints for some preference endpoints, group channels, and post search: * `mmChannelRemoveUser` * `mmCreateGroupChannel` * `mmSearchPosts` * `mmSetPreferences` * Added `GroupChannelPreferences` type for showing/hiding group channels * Separated the previous `NotifyProps` type into `UserNotifyProps` and `ChannelNotifyProps`. * Websocket parse failures are now captured and appear to the library user as an `Either String WebsocketEvent`, where the `String` represent a parse failure. * Add support for `user_role_updated` websocket event type. 40000.1.0 ========= API changes: * The postRootId of Post is now a Maybe PostId to better reflect the actual wire format. * MinCommand now has fields for reply parent and root post IDs to support replying to posts with commands such as /me. * CommandResponse's commandResponseType is now Maybe to permit optional types. * PreferenceCategory got a new constructor, PreferenceCategoryLast, mapping to the "last" preference category. * Added functions for bulk fetching for channel/user data: * mmGetAllChannelsForUser * mmGetAllChannelDataForUser * mmGetAllChannelsWithDataForUser 40000.0.1 ========= API changes: * Added support for the `emoji_added` websocket event type. * WEData's JSON parser now permits both null and empty channel IDs. 40000.0.0 ========= Package changes: * Added lower bound for binary to avoid build failures in the websocket package on GHC 7.10 (see https://github.com/jaspervdj/websockets/pull/155) API changes: * Added support for the `channel_viewed` and `channel_updated` websocket events 31000.0.0 ========= API changes: * Added flagged posts API: * Types: FlaggedPost * mmGetFlaggedPosts * mmFlagPost * mmUnflagPost * Added preferences API: * Types: Preference, PreferenceCategory, PreferenceName, PreferenceValue * mmDeletePreferences * mmSavePreferences * mmGetMyPreferences * Added PostType for post types (joins, parts, header changes, etc.) and changed the type of Post.postType to use this new type. * Added a new field WEData.wepMentions so that websocket events can include the set of UserIds in a mention set. * Made most fields of PostPropAttachment optional. * Added a new PostPropAttachment type as defined by Slack and used by Mattermost. * Allow null for the "fields" field of PostPropAttachment. * Extended PostPropAttachment with additional fields to better match the upstream spec. Other changes: * Improved the LoginFailureException message format. * Refrain from logging passwords when logging login requests. * Logging operations seek to the end of the log in case of a shared log file. 30802.1.0 ========= This release supports server version 3.8.2. API changes: * Made the PendingPost `created_at` field optional. It defaults to 0. This behavior is due to Mattermost's support for admins setting the creation timestamp to values in the past. A value of zero causes the server to use the server's clock to set the creation timestamp. Any other value is only permitted for users with administrative privileges. * Moved some types to a new Types.Internal module and exposed that module for testing purposes. It should not be used by anyone wanting a stable API. For a stable API, see the export list for the Types module. 30802.0.0 ========= This release supports server version 3.8.2. API changes: * The `Network.Mattermost.Types` module is now directly exported and all clients should obtain their types from this import. The types are still exported from `Network.Mattermost` to allow time for this change but this export is deprecated will be removed in a future version. * Added the CommandResponse type for the execute endpoint. * mmGetMoreChannels, mmGetChannelMembers, and mmGetProfiles now take limit/offset parameters. * mmGetFile now supports v4 file-fetching. * Added new constructors to the WebsocketEventType corresponding to server websocket events. * mmUpdateLastViewedAt was replaced with mmViewChannel. * Added the WithDefault type to wrap around bools and NotifyOptions. * Added NotifyProps types. * The `Token` type has been replaced with a `Session` type, representing a combination of a `Token` and a `ConnectionData` type. All exposed API functions which require an authenticated connection will use this instead. This is a major breaking change, but makes the API significantly cleaner. * Removed `UserProfile` type in favor of single pervasive `User` type. * Replaced the return type of `mmGetTeamMembers` to use a `TeamMember` instead of raw JSON `Value`s. Documentation: * All API functions how have corresponding HTTP route documentation. Package changes: * Source repository was updated. * Constrained 'memory' version to avoid 'foundation' dependency. * Include Network.Mattermost.TH. * The `Network.Mattermost.Websocket` module now exports everything exported by `Network.Mattermost.Websocket.Types` in order to cut down on the number of imports needed by users. 30701.0.0 ========= * Supports server version 3.7.1. API changes: * Tests now provide websocket event testing infrastructure * The Channel data type now supports Group channels (type "G") * Added mmGetTeamMembers to get the users in a channel * Added support for the Post type `system_header_change` and the post properties `new_header` and `old_header` as described at https://github.com/mattermost/platform/pull/4209 * Removed the UserProfile type in favor of the User type (fixed #23) Bug fixes: * WebSocket.Types: permit empty `team_id` in event data 30600.2.2 ========= Bug fixes: * Support optional `notify_props` and `last_password_update` in mmGetUser responses. Package changes: * Renamed ChangeLog.md to CHANGELOG.md. Testing changes: * Added support for testing websocket events and updated the test suite to check for expected websocket events. 30600.2.1 ========= API changes: * Export FileInfo type Bug fixes: * Fixed parsing of nullable width/height fields in FileInfo * Fixed parsing of create_at, update_at, and delete_at timestamp fields in FileInfo 30600.2.0 ========= API changes: * Added mmDeletePost * Added mmUpdatePost for editing posts * Post: make deletion time optional to match server API, do millisecond conversion on JSON encoding * PendingPost: add fields for setting parents in case of replies * Export PendingPost type so it can be modified for replies and edits Bug fixes: * Post: do millisecond conversion of timestamps on JSON encoding 30600.1.0 ========= API changes: * MinCommand lost its unused minComSuggest field Bug fixes: * The JSON format of MinCommand got its channelId field (3.5.0) renamed to channel_id (3.6.0). See also: https://github.com/mattermost/platform/issues/5281 Other: * mmGetJSONBody got a debugging label that it now uses to generate exception messages to indicate what kind of value it was attempting to parse. 30600.0.0 ========= Initial release for server version 3.6.0. 0.1.0.0 ======= First version.