mattermost-api

Client API for Mattermost chat system

Latest on Hackage:40000.1.0

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD3 licensed by Jason Dagit
Maintained by dagitj@gmail.com

Build
Status # mattermost-api Client side API for communicating with a Mattermost server, in Haskell.

Testing

We use the MaterMost docker image for detecting changes in the API. See .travis.yml or the Mattermost docs for the details.

If you are testing your changes locally during development, you will want to run the script ./test/local_test_mm.sh.

Note: The local_test_mm.sh script will stop and remove a docker container named mattermost-preview.

Note: The tests can only be run once against a given Mattermost instance. This is because the scripts currently assume they can create an initial admin user.

Note: The scripts assume the instance is reachable on localhost:8065 over plain HTTP.

For use in production we use TLS, but for testing purposes we avoid the certificate setup.

Our Versioning Scheme

This library uses the same versioning scheme as matterhorn, see Our Versioning Scheme. The short version is that in ABBCC.X.Y, the ABBCC corresponds to Mattermost server version A.BB.CC and the X.Y portion of the version string corresponds to the version of mattermost-api package releases.

Changes

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 Values.

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 createat, updateat, 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.

comments powered byDisqus