slk

package module
v0.0.0-...-04f0085 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2016 License: MIT Imports: 16 Imported by: 0

README

#slk

a slack library

Documentation

Index

Constants

View Source
const (
	SlackAPIURL = "https://slack.com/api"
	Version     = "slk 0.1"
)
View Source
const (
	AccountInactiveErrorCode                  = `account_inactive`
	AlreadyArchivedErrorCode                  = `already_archived`
	AlreadyInChannelErrorCode                 = `already_in_channel`
	AlreadyPinnedErrorCode                    = `already_pinned`
	AlreadyReactedErrorCode                   = `already_reacted`
	AlreadyStarredErrorCode                   = `already_starred`
	BadClientSecretErrorCode                  = `bad_client_secret`
	BadRedirectUriErrorCode                   = `bad_redirect_uri`
	BadTimestampErrorCode                     = `bad_timestamp`
	CantArchiveGeneralErrorCode               = `cant_archive_general`
	CantDeleteErrorCode                       = `cant_delete`
	CantDeleteFileErrorCode                   = `cant_delete_file`
	CantDeleteMessageErrorCode                = `cant_delete_message`
	CantEditErrorCode                         = `cant_edit`
	CantInviteErrorCode                       = `cant_invite`
	CantInviteSelfErrorCode                   = `cant_invite_self`
	CantKickFromGeneralErrorCode              = `cant_kick_from_general`
	CantKickFromLastChannelErrorCode          = `cant_kick_from_last_channel`
	CantKickSelfErrorCode                     = `cant_kick_self`
	CantLeaveGeneralErrorCode                 = `cant_leave_general`
	CantLeaveLastChannelErrorCode             = `cant_leave_last_channel`
	CantUpdateMessageErrorCode                = `cant_update_message`
	ChannelNotFoundErrorCode                  = `channel_not_found`
	ComplianceExportsPreventDeletionErrorCode = `compliance_exports_prevent_deletion`
	EditWindowClosedErrorCode                 = `edit_window_closed`
	FileCommentNotFoundErrorCode              = `file_comment_not_found`
	FileDeletedErrorCode                      = `file_deleted`
	FileNotFoundErrorCode                     = `file_not_found`
	FileNotSharedErrorCode                    = `file_not_shared`
	GroupContainsOthersErrorCode              = `group_contains_others`
	InvalidArrayArgErrorCode                  = `invalid_array_arg`
	InvalidAuthErrorCode                      = `invalid_auth`
	InvalidChannelErrorCode                   = `invalid_channel`
	InvalidCharsetErrorCode                   = `invalid_charset`
	InvalidClientIdErrorCode                  = `invalid_client_id`
	InvalidCodeErrorCode                      = `invalid_code`
	InvalidFormDataErrorCode                  = `invalid_form_data`
	InvalidNameErrorCode                      = `invalid_name`
	InvalidPostTypeErrorCode                  = `invalid_post_type`
	InvalidPresenceErrorCode                  = `invalid_presence`
	InvalidTimestampErrorCode                 = `invalid_timestamp`
	InvalidTsLatestErrorCode                  = `invalid_ts_latest`
	InvalidTsOldestErrorCode                  = `invalid_ts_oldest`
	IsArchivedErrorCode                       = `is_archived`
	LastMemberErrorCode                       = `last_member`
	LastRaChannelErrorCode                    = `last_ra_channel`
	MessageNotFoundErrorCode                  = `message_not_found`
	MigrationInProgressErrorCode              = `migration_in_progress`
	MissingDurationErrorCode                  = `missing_duration`
	MissingPostTypeErrorCode                  = `missing_post_type`
	MsgTooLongErrorCode                       = `msg_too_long`
	NameTakenErrorCode                        = `name_taken`
	NoChannelErrorCode                        = `no_channel`
	NoCommentErrorCode                        = `no_comment`
	NoItemSpecifiedErrorCode                  = `no_item_specified`
	NoReactionErrorCode                       = `no_reaction`
	NoTextErrorCode                           = `no_text`
	NotArchivedErrorCode                      = `not_archived`
	NotAuthedErrorCode                        = `not_authed`
	NotAuthorizedErrorCode                    = `not_authorized`
	NotEnoughUsersErrorCode                   = `not_enough_users`
	NotInChannelErrorCode                     = `not_in_channel`
	NotInGroupErrorCode                       = `not_in_group`
	NotPinnedErrorCode                        = `not_pinned`
	NotStarredErrorCode                       = `not_starred`
	OverPaginationLimitErrorCode              = `over_pagination_limit`
	PaidOnlyErrorCode                         = `paid_only`
	PermissionDeniedErrorCode                 = `permission_denied`
	PostingToGeneralChannelDeniedErrorCode    = `posting_to_general_channel_denied`
	RateLimitedErrorCode                      = `rate_limited`
	RequestTimeoutErrorCode                   = `request_timeout`
	RestrictedActionErrorCode                 = `restricted_action`
	SnoozeEndFailedErrorCode                  = `snooze_end_failed`
	SnoozeFailedErrorCode                     = `snooze_failed`
	SnoozeNotActiveErrorCode                  = `snooze_not_active`
	TooLongErrorCode                          = `too_long`
	TooManyEmojiErrorCode                     = `too_many_emoji`
	TooManyReactionsErrorCode                 = `too_many_reactions`
	TooManyUsersErrorCode                     = `too_many_users`
	UnknownErrorErrorCode                     = `unknown_error`
	UnknownTypeErrorCode                      = `unknown_type`
	UserDisabledErrorCode                     = `user_disabled`
	UserDoesNotOwnChannelErrorCode            = `user_does_not_own_channel`
	UserIsBotErrorCode                        = `user_is_bot`
	UserIsRestrictedErrorCode                 = `user_is_restricted`
	UserIsUltraRestrictedErrorCode            = `user_is_ultra_restricted`
	UserNotFoundErrorCode                     = `user_not_found`
	UserNotVisibleErrorCode                   = `user_not_visible`
	UsersListNotSuppliedErrorCode             = `users_list_not_supplied`
)
View Source
const (
	AccountsChangedEventCode       = `accounts_changed`        // The list of accounts a user is signed into has changed
	BotAddedEventCode              = `bot_added`               // An integration bot was added
	BotChangedEventCode            = `bot_changed`             // An integration bot was changed
	ChannelArchiveEventCode        = `channel_archive`         // A team channel was archived
	ChannelCreatedEventCode        = `channel_created`         // A team channel was created
	ChannelDeletedEventCode        = `channel_deleted`         // A team channel was deleted
	ChannelHistoryChangedEventCode = `channel_history_changed` // Bulk updates were made to a channel's history
	ChannelJoinedEventCode         = `channel_joined`          // You joined a channel
	ChannelLeftEventCode           = `channel_left`            // You left a channel
	ChannelMarkedEventCode         = `channel_marked`          // Your channel read marker was updated
	ChannelRenameEventCode         = `channel_rename`          // A team channel was renamed
	ChannelUnarchiveEventCode      = `channel_unarchive`       // A team channel was unarchived
	CommandsChangedEventCode       = `commands_changed`        // A team slash command has been added or changed
	DndUpdatedEventCode            = `dnd_updated`             // Do not Disturb settings changed for the current user
	DndUpdatedUserEventCode        = `dnd_updated_user`        // Do not Disturb settings changed for a team member
	EmailDomainChangedEventCode    = `email_domain_changed`    // The team email domain has changed
	EmojiChangedEventCode          = `emoji_changed`           // A team custom emoji has been added or changed
	FileChangeEventCode            = `file_change`             // A file was changed
	FileCommentAddedEventCode      = `file_comment_added`      // A file comment was added
	FileCommentDeletedEventCode    = `file_comment_deleted`    // A file comment was deleted
	FileCommentEditedEventCode     = `file_comment_edited`     // A file comment was edited
	FileCreatedEventCode           = `file_created`            // A file was created
	FileDeletedEventCode           = `file_deleted`            // A file was deleted
	FilePrivateEventCode           = `file_private`            // A file was made private
	FilePublicEventCode            = `file_public`             // A file was made public
	FileSharedEventCode            = `file_shared`             // A file was shared
	FileUnsharedEventCode          = `file_unshared`           // A file was unshared
	GroupArchiveEventCode          = `group_archive`           // A private group was archived
	GroupCloseEventCode            = `group_close`             // You closed a group channel
	GroupHistoryChangedEventCode   = `group_history_changed`   // Bulk updates were made to a group's history
	GroupJoinedEventCode           = `group_joined`            // You joined a private group
	GroupLeftEventCode             = `group_left`              // You left a private group
	GroupMarkedEventCode           = `group_marked`            // A private group read marker was updated
	GroupOpenEventCode             = `group_open`              // You opened a group channel
	GroupRenameEventCode           = `group_rename`            // A private group was renamed
	GroupUnarchiveEventCode        = `group_unarchive`         // A private group was unarchived
	HelloEventCode                 = `hello`                   // The client has successfully connected to the server
	ImCloseEventCode               = `im_close`                // You closed a direct message channel
	ImCreatedEventCode             = `im_created`              // A direct message channel was created
	ImHistoryChangedEventCode      = `im_history_changed`      // Bulk updates were made to a DM channel's history
	ImMarkedEventCode              = `im_marked`               // A direct message read marker was updated
	ImOpenEventCode                = `im_open`                 // You opened a direct message channel
	ManualPresenceChangeEventCode  = `manual_presence_change`  // You manually updated your presence
	MessageEventCode               = `message`                 // A message was sent to a channel
	PinAddedEventCode              = `pin_added`               // A pin was added to a channel
	PinRemovedEventCode            = `pin_removed`             // A pin was removed from a channel
	PrefChangeEventCode            = `pref_change`             // You have updated your preferences
	PresenceChangeEventCode        = `presence_change`         // A team member's presence changed
	ReactionAddedEventCode         = `reaction_added`          // A team member has added an emoji reaction to an item
	ReactionRemovedEventCode       = `reaction_removed`        // A team member removed an emoji reaction
	ReconnectUrlEventCode          = `reconnect_url`           // Experimental
	StarAddedEventCode             = `star_added`              // A team member has starred an item
	StarRemovedEventCode           = `star_removed`            // A team member removed a star
	SubteamCreatedEventCode        = `subteam_created`         // A user group has been added to the team
	SubteamSelfAddedEventCode      = `subteam_self_added`      // You have been added to a user group
	SubteamSelfRemovedEventCode    = `subteam_self_removed`    // You have been removed from a user group
	SubteamUpdatedEventCode        = `subteam_updated`         // An existing user group has been updated or its members changed
	TeamDomainChangeEventCode      = `team_domain_change`      // The team domain has changed
	TeamJoinEventCode              = `team_join`               // A new team member has joined
	TeamMigrationStartedEventCode  = `team_migration_started`  // The team is being migrated between servers
	TeamPlanChangeEventCode        = `team_plan_change`        // The team billing plan has changed
	TeamPrefChangeEventCode        = `team_pref_change`        // A team preference has been updated
	TeamProfileChangeEventCode     = `team_profile_change`     // Team profile fields have been updated
	TeamProfileDeleteEventCode     = `team_profile_delete`     // Team profile fields have been deleted
	TeamProfileReorderEventCode    = `team_profile_reorder`    // Team profile fields have been reordered
	TeamRenameEventCode            = `team_rename`             // The team name has changed
	UserChangeEventCode            = `user_change`             // A team member's data has changed
	UserTypingEventCode            = `user_typing`             // A channel member is typing a message

	// message subtype
	MessageSubtypeBotMessageEventCode       = `bot_message`       // A message was posted by an integration
	MessageSubtypeMeMessageEventCode        = `me_message`        // A /me message was sent
	MessageSubtypeMessageChangedEventCode   = `message_changed`   // A message was changed
	MessageSubtypeMessageDeletedEventCode   = `message_deleted`   // A message was deleted
	MessageSubtypeChannelJoinEventCode      = `channel_join`      // A team member joined a channel
	MessageSubtypeChannelLeaveEventCode     = `channel_leave`     // A team member left a channel
	MessageSubtypeChannelTopicEventCode     = `channel_topic`     // A channel topic was updated
	MessageSubtypeChannelPurposeEventCode   = `channel_purpose`   // A channel purpose was updated
	MessageSubtypeChannelNameEventCode      = `channel_name`      // A channel was renamed
	MessageSubtypeChannelArchiveEventCode   = `channel_archive`   // A channel was archived
	MessageSubtypeChannelUnarchiveEventCode = `channel_unarchive` // A channel was unarchived
	MessageSubtypeGroupJoinEventCode        = `group_join`        // A team member joined a group
	MessageSubtypeGroupLeaveEventCode       = `group_leave`       // A team member left a group
	MessageSubtypeGroupTopicEventCode       = `group_topic`       // A group topic was updated
	MessageSubtypeGroupPurposeEventCode     = `group_purpose`     // A group purpose was updated
	MessageSubtypeGroupNameEventCode        = `group_name`        // A group was renamed
	MessageSubtypeGroupArchiveEventCode     = `group_archive`     // A group was archived
	MessageSubtypeGroupUnarchiveEventCode   = `group_unarchive`   // A group was unarchived
	MessageSubtypeFileShareEventCode        = `file_share`        // A file was shared into a channel
	MessageSubtypeFileCommentEventCode      = `file_comment`      // A comment was added to a file
	MessageSubtypeFileMentionEventCode      = `file_mention`      // A file was mentioned in a channel
	MessageSubtypePinnedItemEventCode       = `pinned_item`       // An item was pinned in a channel
	MessageSubtypeUnpinnedItemEventCode     = `unpinned_item`     // An item was unpinned from a channel
)
View Source
const (
	FileTypeAll      FileType = `all`      // All files
	FileTypePosts    FileType = `posts`    // Posts
	FileTypeSnippets FileType = `snippets` // Snippets
	FileTypeImages   FileType = `images`   // Image files
	FileTypeGdocs    FileType = `gdocs`    // Google docs
	FileTypeZips     FileType = `zips`     // Zip files
	FileTypePdfs     FileType = `pdfs`     // PDF files

	PresenceAuto Presence = `auto`
	PresenceAway Presence = `away`

	ItemTypeChannel     = `channel`
	ItemTypeFile        = `file`
	ItemTypeFileComment = `file_comment`
	ItemTypeGroup       = `group`
	ItemTypeIM          = `im`
	ItemTypeMessage     = `message`
)

Variables

View Source
var (
	ErrAccountInactive                  = errors.New("account_inactive: Authentication token is for a deleted user or team.")
	ErrAlreadyArchived                  = errors.New("already_archived: Already been archived.")
	ErrAlreadyInChannel                 = errors.New("already_in_channel: Invited user is already in the channel.")
	ErrAlreadyPinned                    = errors.New("already_pinned: The specified item is already pinned to the channel.")
	ErrAlreadyReacted                   = errors.New("already_reacted: The specified item already has the user/reaction combination.")
	ErrAlreadyStarred                   = errors.New("already_starred: The specified item has already been starred by the authenticated user.")
	ErrBadClientSecret                  = errors.New("bad_client_secret: Value passed for client_secret was invalid.")
	ErrBadRedirectUri                   = errors.New("bad_redirect_uri: Value passed for redirect_uri did not match the redirect_uri in the original request.")
	ErrBadTimestamp                     = errors.New("bad_timestamp: Value passed for timestamp was invalid.")
	ErrCantArchiveGeneral               = errors.New("cant_archive_general: You cannot archive the general channel")
	ErrCantDelete                       = errors.New("cant_delete: The requested comment could not be deleted.")
	ErrCantDeleteFile                   = errors.New("cant_delete_file: Authenticated user does not have permission to delete this file.")
	ErrCantDeleteMessage                = errors.New("cant_delete_message: Authenticated user does not have permission to delete this message.")
	ErrCantEdit                         = errors.New("cant_edit: The requested file could not be found.")
	ErrCantInvite                       = errors.New("cant_invite: User cannot be invited to this channel/group.")
	ErrCantInviteSelf                   = errors.New("cant_invite_self: Authenticated user cannot invite themselves to a channel/group.")
	ErrCantKickFromGeneral              = errors.New("cant_kick_from_general: User cannot be removed from #general.")
	ErrCantKickFromLastChannel          = errors.New("cant_kick_from_last_channel: User cannot be removed from the last channel they're in.")
	ErrCantKickSelf                     = errors.New("cant_kick_self: You can't remove yourself from a group")
	ErrCantLeaveGeneral                 = errors.New("cant_leave_general: Authenticated user cannot leave the general channel")
	ErrCantLeaveLastChannel             = errors.New("cant_leave_last_channel: Authenticated user cannot leave the last channel they are in")
	ErrCantUpdateMessage                = errors.New("cant_update_message: Authenticated user does not have permission to update this message.")
	ErrChannelNotFound                  = errors.New("channel_not_found: Value passed for channel was invalid.")
	ErrComplianceExportsPreventDeletion = errors.New("compliance_exports_prevent_deletion: Compliance exports are on, messages can not be deleted")
	ErrEditWindowClosed                 = errors.New("edit_window_closed: The timeframe for editing the comment has expired.")
	ErrFileCommentNotFound              = errors.New("file_comment_not_found: File comment specified by file_comment does not exist.")
	ErrFileDeleted                      = errors.New("file_deleted: The requested file was previously deleted.")
	ErrFileNotFound                     = errors.New("file_not_found: The requested file could not be found.")
	ErrFileNotShared                    = errors.New("file_not_shared: File specified by file is not public nor shared to the channel.")
	ErrGroupContainsOthers              = errors.New("group_contains_others: Restricted accounts cannot archive groups containing others.")
	ErrInvalidArrayArg                  = errors.New("invalid_array_arg: The method was passed a PHP-style array argument (e.g. with a name like foo[7] ). These are never valid with the Slack API.")
	ErrInvalidAuth                      = errors.New("invalid_auth: Invalid authentication token.")
	ErrInvalidChannel                   = errors.New("invalid_channel: One or more channels supplied are invalid")
	ErrInvalidCharset                   = errors.New("invalid_charset: The method was called via a POST request, but the charset specified in the Content-Type header was invalid. Valid charset names are: utf-8 iso-8859-1 .")
	ErrInvalidClientId                  = errors.New("invalid_client_id: Value passed for client_id was invalid.")
	ErrInvalidCode                      = errors.New("invalid_code: Value passed for code was invalid.")
	ErrInvalidFormData                  = errors.New("invalid_form_data: The method was called via a POST request with Content-Type application/x-www-form-urlencoded or multipart/form-data, but the form data was either missing or syntactically invalid.")
	ErrInvalidName                      = errors.New("invalid_name: New name is invalid")
	ErrInvalidPostType                  = errors.New("invalid_post_type: The method was called via a POST request, but the specified Content-Type was invalid. Valid types are: application/json application/x-www-form-urlencoded multipart/form-data text/plain .")
	ErrInvalidPresence                  = errors.New("invalid_presence: Value passed for presence was invalid.")
	ErrInvalidTimestamp                 = errors.New("invalid_timestamp: Value passed for timestamp was invalid.")
	ErrInvalidTsLatest                  = errors.New("invalid_ts_latest: Value passed for latest was invalid")
	ErrInvalidTsOldest                  = errors.New("invalid_ts_oldest: Value passed for oldest was invalid")
	ErrIsArchived                       = errors.New("is_archived: Channel/Group has been archived.")
	ErrLastMember                       = errors.New("last_member: Authenticated user is the last member of a group and cannot leave it")
	ErrLastRaChannel                    = errors.New("last_ra_channel: You cannot archive the last channel for a restricted account.")
	ErrMessageNotFound                  = errors.New("message_not_found: Message specified by channel and/or timestamp does not exist.")
	ErrMigrationInProgress              = errors.New("migration_in_progress: Team is being migrated between servers. See the team_migration_started event documentation for details.")
	ErrMissingDuration                  = errors.New("missing_duration: No value provided for num_minutes")
	ErrMissingPostType                  = errors.New("missing_post_type: The method was called via a POST request and included a data payload, but the request did not include a Content-Type header.")
	ErrMsgTooLong                       = errors.New("msg_too_long: Message text is too long")
	ErrNameTaken                        = errors.New("name_taken: New channel name is taken")
	ErrNoChannel                        = errors.New("no_channel: No group name was passed.")
	ErrNoComment                        = errors.New("no_comment: The comment field was empty.")
	ErrNoItemSpecified                  = errors.New("no_item_specified: One of file, file_comment, or timestamp was not specified.")
	ErrNoReaction                       = errors.New("no_reaction: The specified item does not have the user/reaction combination.")
	ErrNoText                           = errors.New("no_text: No message text provided")
	ErrNotArchived                      = errors.New("not_archived: Channel/Group is not archived.")
	ErrNotAuthed                        = errors.New("not_authed: No authentication token provided.")
	ErrNotAuthorized                    = errors.New("not_authorized: Caller cannot rename this channel")
	ErrNotEnoughUsers                   = errors.New("not_enough_users: Needs at least 2 users to open")
	ErrNotInChannel                     = errors.New("not_in_channel: User was not in the channel.")
	ErrNotInGroup                       = errors.New("not_in_group: User or caller were are not in the group")
	ErrNotPinned                        = errors.New("not_pinned: The specified item is not pinned to the channel.")
	ErrNotStarred                       = errors.New("not_starred: The specified item is not currently starred by the authenticated user.")
	ErrOverPaginationLimit              = errors.New("over_pagination_limit: It is not possible to request more than 1000 items per page or more than 100 pages.")
	ErrPaidOnly                         = errors.New("paid_only: This is only available to paid teams.")
	ErrPermissionDenied                 = errors.New("permission_denied: The user does not have permission take that action.")
	ErrPostingToGeneralChannelDenied    = errors.New("posting_to_general_channel_denied: An admin has restricted posting to the #general channel.")
	ErrRateLimited                      = errors.New("rate_limited: Application has posted too many messages, read the Rate Limit documentation for more information")
	ErrRequestTimeout                   = errors.New("request_timeout: The method was called via a POST request, but the POST data was either missing or truncated.")
	ErrRestrictedAction                 = errors.New("restricted_action: A team preference prevents the authenticated user from that action.")
	ErrSnoozeEndFailed                  = errors.New("snooze_end_failed: There was a problem setting the user's Do Not Disturb status")
	ErrSnoozeFailed                     = errors.New("snooze_failed: There was a problem setting the user's Do Not Disturb status")
	ErrSnoozeNotActive                  = errors.New("snooze_not_active: Snooze is not active for this user and cannot be ended")
	ErrTooLong                          = errors.New("too_long: Text was longer than 250 characters.")
	ErrTooManyEmoji                     = errors.New("too_many_emoji: The limit for distinct reactions (i.e. emoji) on the item has been reached.")
	ErrTooManyReactions                 = errors.New("too_many_reactions: The limit for reactions a person may add to the item has been reached.")
	ErrTooManyUsers                     = errors.New("too_many_users: Needs at most 8 users to open")
	ErrUnknownError                     = errors.New("unknown_error: There was a mysterious problem ending the user's Do Not Disturb session")
	ErrUnknownType                      = errors.New("unknown_type: Value passed for types was invalid")
	ErrUserDisabled                     = errors.New("user_disabled: The user has been disabled.")
	ErrUserDoesNotOwnChannel            = errors.New("user_does_not_own_channel: Calling user does not own this DM channel.")
	ErrUserIsBot                        = errors.New("user_is_bot: This method cannot be called by a bot user.")
	ErrUserIsRestricted                 = errors.New("user_is_restricted: This method cannot be called by a restricted user or single channel guest.")
	ErrUserIsUltraRestricted            = errors.New("user_is_ultra_restricted: This method cannot be called by a single channel guest.")
	ErrUserNotFound                     = errors.New("user_not_found: Value passed for user was invalid.")
	ErrUserNotVisible                   = errors.New("user_not_visible: The requested user is not visible to the calling user")
	ErrUsersListNotSupplied             = errors.New("users_list_not_supplied: Missing users in request")
)

Functions

func ErrorForErrorCode

func ErrorForErrorCode(code string) error

func EscapeMessage

func EscapeMessage(text string) string

Types

type AccountsChangedEvent

type AccountsChangedEvent struct {
	Type string `json:"type"`
}

https://api.slack.com/events/accounts_changed

{
    "type": "accounts_changed"
}

type ApiTestResponse

type ApiTestResponse struct {
	OK    bool              `json:"ok"`
	Error string            `json:"error"`
	Args  map[string]string `json:"args"`
}

https://api.slack.com/methods/api.test

{
    "ok": true,
    "args": {
        "foo": "bar"
    }
}
{
    "ok": false,
    "error": "my_error",
    "args": {
        "error": "my_error"
    }
}

type AuthTestResponse

type AuthTestResponse struct {
	OK     bool   `json:"ok"`
	Error  string `json:"error"`
	URL    string `json:"url"`
	Team   string `json:"team"`
	User   string `json:"user"`
	TeamID string `json:"team_id"`
	UserID string `json:"user_id"`
}

https://api.slack.com/methods/auth.test

{
    "ok": true,
    "url": "https:\/\/myteam.slack.com\/",
    "team": "My Team",
    "user": "cal",
    "team_id": "T12345",
    "user_id": "U12345"
}

type BotAddedEvent

type BotAddedEvent struct {
	Type string `json:"type"`
	Bot  struct {
		ID    string            `json:"id"`
		Name  string            `json:"name"`
		Icons map[string]string `json:"icons"`
	} `json:"bot"`
}

https://api.slack.com/events/bot_added

{
    "type": "bot_added",
    "bot": {
        "id": "B024BE7LH",
        "name": "hugbot",
        "icons": {
            "image_48": "https:\/\/slack.com\/path\/to\/hugbot_48.png"
        }
    }
}

type BotChangedEvent

type BotChangedEvent struct {
	Type string `json:"type"`
	Bot  struct {
		ID    string            `json:"id"`
		Name  string            `json:"name"`
		Icons map[string]string `json:"icons"`
	} `json:"bot"`
}

https://api.slack.com/events/bot_changed

{
    "type": "bot_changed",
    "bot": {
        "id": "B024BE7LH",
        "name": "hugbot",
        "icons": {
            "image_48": "https:\/\/slack.com\/path\/to\/hugbot_48.png"
        }
    }
}

type Channel

type Channel struct {
	ID         string   `json:"id"`
	Name       string   `json:"name"`
	IsChannel  bool     `json:"is_channel"`
	Created    Time     `json:"created"`
	Creator    string   `json:"creator"`
	IsArchived bool     `json:"is_archived"`
	IsGeneral  bool     `json:"is_general"`
	Members    []string `json:"members"`
	Topic      struct {
		Creator string `json:"creator"`
		LastSet Time   `json:"last_set"`
		Value   string `json:"value"`
	} `json:"topic"`
	Purpose struct {
		Creator string `json:"creator"`
		LastSet Time   `json:"last_set"`
		Value   string `json:"value"`
	} `json:"purpose"`
	IsMember           bool     `json:"is_member"`
	LastRead           Time     `json:"last_read"`
	LatestMessage      *Message `json:"latest"`
	UnreadCount        int      `json:"unread_count"`
	UnreadCountDisplay int      `json:"unread_count_display"`
}

https://api.slack.com/types/channel

{
    "id": "C024BE91L",
    "name": "fun",
    "is_channel": "true",
    "created": 1360782804,
    "creator": "U024BE7LH",
    "is_archived": false,
    "is_general": false,
    "members": [
        "U024BE7LH",
    ],
    "topic": {
        "value": "Fun times",
        "creator": "U024BE7LV",
        "last_set": 1369677212
    },
    "purpose": {
        "value": "This channel is for fun",
        "creator": "U024BE7LH",
        "last_set": 1360782804
    }
    "is_member": true,
    "last_read": "1401383885.000061",
    "latest": { … }
    "unread_count": 0,
    "unread_count_display": 0
}

type ChannelArchiveEvent

type ChannelArchiveEvent struct {
	Type    string `json:"type"`
	Channel string `json:"channel"`
	User    string `json:"user"`
}

https://api.slack.com/events/channel_archive

{
    "type": "channel_archive",
    "channel": "C024BE91L",
    "user": "U024BE7LH"
}

type ChannelCreatedEvent

type ChannelCreatedEvent struct {
	Type    string `json:"type"`
	Channel struct {
		ID      string `json:"id"`
		Name    string `json:"name"`
		Created Time   `json:"created"`
		Creator string `json:"creator"`
	} `json:"channel"`
}

https://api.slack.com/events/channel_created

{
    "type": "channel_created",
    "channel": {
        "id": "C024BE91L",
        "name": "fun",
        "created": 1360782804,
        "creator": "U024BE7LH"
    }
}

type ChannelDeletedEvent

type ChannelDeletedEvent struct {
	Type    string `json:"type"`
	Channel string `json:"channel"`
}

https://api.slack.com/events/channel_deleted

{
    "type": "channel_deleted",
    "channel": "C024BE91L"
}

type ChannelHistoryChangedEvent

type ChannelHistoryChangedEvent struct {
	Type           string `json:"type"`
	Latest         Time   `json:"latest"`
	Timestamp      Time   `json:"ts"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/channel_history_changed

{
    "type": "channel_history_changed",
    "latest": "1358877455.000010",
    "ts": "1361482916.000003",
    "event_ts": "1361482916.000004"
}

type ChannelJoinedEvent

type ChannelJoinedEvent struct {
	Type    string   `json:"type"`
	Channel *Channel `json:"channel"`
}

https://api.slack.com/events/channel_joined

{
    "type": "channel_joined",
    "channel": {
        ...
    }
}

type ChannelLeftEvent

type ChannelLeftEvent struct {
	Type    string `json:"type"`
	Channel string `json:"channel"`
}

https://api.slack.com/events/channel_left

{
    "type": "channel_left",
    "channel": "C024BE91L"
}

type ChannelMarkedEvent

type ChannelMarkedEvent struct {
	Type      string `json:"type"`
	Channel   string `json:"channel"`
	Timestamp Time   `json:"ts"`
}

https://api.slack.com/events/channel_marked

{
    "type": "channel_marked",
    "channel": "C024BE91L",
    "ts": "1401383885.000061"
}

type ChannelRenameEvent

type ChannelRenameEvent struct {
	Type    string `json:"type"`
	Channel struct {
		ID      string `json:"id"`
		Name    string `json:"name"`
		Created Time   `json:"created"`
	} `json:"channel"`
}

https://api.slack.com/events/channel_rename

{
    "type": "channel_rename",
    "channel": {
        "id":"C02ELGNBH",
        "name":"new_name",
        "created":1360782804
    }
}

type ChannelUnarchiveEvent

type ChannelUnarchiveEvent struct {
	Type    string `json:"type"`
	Channel string `json:"channel"`
	User    string `json:"user"`
}

https://api.slack.com/events/channel_unarchive

{
    "type": "channel_unarchive",
    "channel": "C024BE91L",
    "user": "U024BE7LH"
}

type ChannelsArchiveResponse

type ChannelsArchiveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/channels.archive

{
    "ok": true
}

type ChannelsCreateResponse

type ChannelsCreateResponse struct {
	OK      bool     `json:"ok"`
	Error   string   `json:"error"`
	Channel *Channel `json:"channel"`
}

https://api.slack.com/methods/channels.create

{
    "ok": true,
    "channel": {
        "id": "C024BE91L",
        "name": "fun",
        "created": 1360782804,
        "creator": "U024BE7LH",
        "is_archived": false,
        "is_member": true,
        "is_general": false,
        "last_read": "0000000000.000000",
        "latest": null,
        "unread_count": 0,
        "unread_count_display": 0,
        "members": [ ],
        "topic": { },
        "purpose": { }
    }
}

type ChannelsHistoryResponse

type ChannelsHistoryResponse struct {
	OK       bool       `json:"ok"`
	Error    string     `json:"error"`
	Latest   Time       `json:"latest"`
	Messages []*Message `json:"messages"`
	HasMore  bool       `json:"has_more"`
}

https://api.slack.com/methods/channels.history

{
    "ok": true,
    "latest": "1358547726.000003",
    "messages": [
        {
            "type": "message",
            "ts": "1358546515.000008",
            "user": "U2147483896",
            "text": "Hello"
        },
        {
            "type": "message",
            "ts": "1358546515.000007",
            "user": "U2147483896",
            "text": "World",
            "is_starred": true,
            "reactions": [
                {
                    "name": "space_invader",
                    "count": 3,
                    "users": [ "U1", "U2", "U3" ]
                },
                {
                    "name": "sweet_potato",
                    "count": 5,
                    "users": [ "U1", "U2", "U3", "U4", "U5" ]
                }
            ]
        },
        {
            "type": "something_else",
            "ts": "1358546515.000007",
            "wibblr": true
        }
    ],
    "has_more": false
}

type ChannelsInfoResponse

type ChannelsInfoResponse struct {
	OK      bool     `json:"ok"`
	Error   string   `json:"error"`
	Channel *Channel `json:"channel"`
}

https://api.slack.com/methods/channels.info

{
    "ok": true,
    "channel": {
        "id": "C024BE91L",
        "name": "fun",
        "created": 1360782804,
        "creator": "U024BE7LH",
        "is_archived": false,
        "is_general": false,
        "is_member": true,
        "members": [ ],
        "topic": { },
        "purpose": { },
        "last_read": "1401383885.000061",
        "latest": { },
        "unread_count": 0,
        "unread_count_display": 0
    }
}

type ChannelsInviteResponse

type ChannelsInviteResponse struct {
	OK      bool     `json:"ok"`
	Error   string   `json:"error"`
	Channel *Channel `json:"channel"`
}

https://api.slack.com/methods/channels.invite

{
    "ok": true,
    "channel": {
        "id": "C024BE91L",
        "name": "fun",
        "created": 1360782804,
        "creator": "U024BE7LH",
        "is_archived": false,
        "is_member": true,
        "is_general": false,
        "last_read": "1401383885.000061",
        "latest": { },
        "unread_count": 0,
        "unread_count_display": 0,
        "members": [ ],
        "topic": {
            "value": "Fun times",
            "creator": "U024BE7LV",
            "last_set": 1369677212
        },
        "purpose": {
            "value": "This channel is for fun",
            "creator": "U024BE7LH",
            "last_set": 1360782804
        }
    }
}

type ChannelsJoinResponse

type ChannelsJoinResponse struct {
	OK               bool     `json:"ok"`
	Error            string   `json:"error"`
	AlreadyInChannel bool     `json:"already_in_channel"`
	Channel          *Channel `json:"channel"`
}

https://api.slack.com/methods/channels.join

{
    "ok": true,
    "channel": {
        "id": "C024BE91L",
        "name": "fun",
        "created": 1360782804,
        "creator": "U024BE7LH",
        "is_archived": false,
        "is_member": true,
        "is_general": false,
        "last_read": "1401383885.000061",
        "latest": { },
        "unread_count": 0,
        "unread_count_display": 0,
        "members": [ ],
        "topic": {
            "value": "Fun times",
            "creator": "U024BE7LV",
            "last_set": 1369677212
        },
        "purpose": {
            "value": "This channel is for fun",
            "creator": "U024BE7LH",
            "last_set": 1360782804
        }
    }
}
{
    "ok": true,
    "already_in_channel": true,
    "channel": {
        "id": "C024BE91L",
        "name": "fun",
        "created": 1360782804,
        "creator": "U024BE7LH",
        "is_archived": false,
        "is_general": false
    }
}

type ChannelsKickResponse

type ChannelsKickResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/channels.kick

{
    "ok": true
}

type ChannelsLeaveResponse

type ChannelsLeaveResponse struct {
	OK           bool   `json:"ok"`
	Error        string `json:"error"`
	NotInChannel bool   `json:"not_in_channel"`
}

https://api.slack.com/methods/channels.leave

{
    "ok": true
}
{
    "ok": true,
    "not_in_channel": true
}

type ChannelsListResponse

type ChannelsListResponse struct {
	OK       bool       `json:"ok"`
	Error    string     `json:"error"`
	Channels []*Channel `json:"channels"`
}

https://api.slack.com/methods/channels.list

{
    "ok": true,
    "channels": [
        {
            "id": "C024BE91L",
            "name": "fun",
            "created": 1360782804,
            "creator": "U024BE7LH",
            "is_archived": false,
            "is_member": false,
            "num_members": 6,
            "topic": {
                "value": "Fun times",
                "creator": "U024BE7LV",
                "last_set": 1369677212
            },
            "purpose": {
                "value": "This channel is for fun",
                "creator": "U024BE7LH",
                "last_set": 1360782804
            }
        },
        ....
    ]
}

type ChannelsMarkResponse

type ChannelsMarkResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/channels.mark

{
    "ok": true
}

type ChannelsRenameResponse

type ChannelsRenameResponse struct {
	OK      bool     `json:"ok"`
	Error   string   `json:"error"`
	Channel *Channel `json:"channel"`
}

https://api.slack.com/methods/channels.rename

{
    "ok": true,
    "channel": {
        "id": "C024BE91L",
        "is_channel": true,
        "name": "new_name",
        "created": 1360782804
    }
}

type ChannelsSetPurposeResponse

type ChannelsSetPurposeResponse struct {
	OK      bool   `json:"ok"`
	Error   string `json:"error"`
	Purpose string `json:"purpose"`
}

https://api.slack.com/methods/channels.setPurpose

{
    "ok": true,
    "purpose": "This is the new purpose!"
}

type ChannelsSetTopicResponse

type ChannelsSetTopicResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Topic string `json:"topic"`
}

https://api.slack.com/methods/channels.setTopic

{
    "ok": true,
    "topic": "This is the new topic!"
}

type ChannelsUnarchiveResponse

type ChannelsUnarchiveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/channels.unarchive

{
    "ok": true
}

type ChatDeleteResponse

type ChatDeleteResponse struct {
	OK        bool   `json:"ok"`
	Error     string `json:"error"`
	Channel   string `json:"channel"`
	Timestamp Time   `json:"ts"`
}

https://api.slack.com/methods/chat.delete

{
    "ok": true,
    "channel": "C024BE91L",
    "ts": "1401383885.000061"
}

type ChatPostMessageResponse

type ChatPostMessageResponse struct {
	OK        bool     `json:"ok"`
	Error     string   `json:"error"`
	Timestamp Time     `json:"ts"`
	Channel   string   `json:"channel"`
	Message   *Message `json:"message"`
}

https://api.slack.com/methods/chat.postMessage

{
    "ok": true,
    "ts": "1405895017.000506",
    "channel": "C024BE91L",
    "message": {}
}

type ChatUpdateResponse

type ChatUpdateResponse struct {
	OK        bool   `json:"ok"`
	Error     string `json:"error"`
	Channel   string `json:"channel"`
	Timestamp Time   `json:"ts"`
	Text      string `json:"text"`
}

https://api.slack.com/methods/chat.update

{
    "ok": true,
    "channel": "C024BE91L",
    "ts": "1401383885.000061",
    "text": "Updated Text"
}

type Client

type Client struct {
	Debug bool
	// contains filtered or unexported fields
}

func NewClient

func NewClient(token string) *Client

func (*Client) ApiTest

func (c *Client) ApiTest(optional url.Values) (*ApiTestResponse, error)

https://api.slack.com/methods/api.test

func (*Client) ChannelsArchive

func (c *Client) ChannelsArchive(channel string) (*ChannelsArchiveResponse, error)

https://api.slack.com/methods/channels.archive req:channel // C1234567890 // Required // Channel to archive

func (*Client) ChannelsCreate

func (c *Client) ChannelsCreate(name string) (*ChannelsCreateResponse, error)

https://api.slack.com/methods/channels.create req:name // mychannel // Required // Name of channel to create

func (*Client) ChannelsHistory

func (c *Client) ChannelsHistory(channel string, optional url.Values) (*ChannelsHistoryResponse, error)

https://api.slack.com/methods/channels.history req:channel // C1234567890 // Required // Channel to fetch history for. opt:latest // 1234567890.123456 // Optional // , default=now End of time range of messages to include in results. opt:oldest // 1234567890.123456 // Optional // , default=0 Start of time range of messages to include in results. opt:inclusive // 1 // Optional // , default=0 Include messages with latest or oldest timestamp in results. opt:count // 100 // Optional // , default=100 Number of messages to return, between 1 and 1000. opt:unreads // 1 // Optional // , default=0 Include unread_count_display in the output?

func (*Client) ChannelsInfo

func (c *Client) ChannelsInfo(channel string) (*ChannelsInfoResponse, error)

https://api.slack.com/methods/channels.info req:channel // C1234567890 // Required // Channel to get info on

func (*Client) ChannelsInvite

func (c *Client) ChannelsInvite(channel, user string) (*ChannelsInviteResponse, error)

https://api.slack.com/methods/channels.invite req:channel // C1234567890 // Required // Channel to invite user to. req:user // U1234567890 // Required // User to invite to channel.

func (*Client) ChannelsJoin

func (c *Client) ChannelsJoin(name string) (*ChannelsJoinResponse, error)

https://api.slack.com/methods/channels.join req:name // C024BE91L // Required // Name of channel to join

func (*Client) ChannelsKick

func (c *Client) ChannelsKick(channel, user string) (*ChannelsKickResponse, error)

https://api.slack.com/methods/channels.kick req:channel // C1234567890 // Required // Channel to remove user from. req:user // U1234567890 // Required // User to remove from channel.

func (*Client) ChannelsLeave

func (c *Client) ChannelsLeave(channel string) (*ChannelsLeaveResponse, error)

https://api.slack.com/methods/channels.leave req:channel // C1234567890 // Required // Channel to leave

func (*Client) ChannelsList

func (c *Client) ChannelsList(optional url.Values) (*ChannelsListResponse, error)

https://api.slack.com/methods/channels.list opt:exclude_archived // 1 // Optional // , default=0 Don't return archived channels.

func (*Client) ChannelsMark

func (c *Client) ChannelsMark(channel string, ts Time) (*ChannelsMarkResponse, error)

https://api.slack.com/methods/channels.mark req:channel // C1234567890 // Required // Channel to set reading cursor in. req:ts // 1234567890.123456 // Required // Timestamp of the most recently seen message.

func (*Client) ChannelsRename

func (c *Client) ChannelsRename(channel, name string) (*ChannelsRenameResponse, error)

https://api.slack.com/methods/channels.rename req:channel // C1234567890 // Required // Channel to rename req:name // new_name // Required // New name for channel.

func (*Client) ChannelsSetPurpose

func (c *Client) ChannelsSetPurpose(channel, purpose string) (*ChannelsSetPurposeResponse, error)

https://api.slack.com/methods/channels.setPurpose req:channel // C1234567890 // Required // Channel to set the purpose of req:purpose // My Purpose // Required // The new purpose

func (*Client) ChannelsSetTopic

func (c *Client) ChannelsSetTopic(channel, topic string) (*ChannelsSetTopicResponse, error)

https://api.slack.com/methods/channels.setTopic req:channel // C1234567890 // Required // Channel to set the topic of req:topic // My Topic // Required // The new topic

func (*Client) ChannelsUnarchive

func (c *Client) ChannelsUnarchive(channel string) (*ChannelsUnarchiveResponse, error)

https://api.slack.com/methods/channels.unarchive req:channel // C1234567890 // Required // Channel to unarchive

func (*Client) ChatDelete

func (c *Client) ChatDelete(channel string, ts Time) (*ChatDeleteResponse, error)

https://api.slack.com/methods/chat.delete req:channel // C1234567890 // Required // Channel containing the message to be deleted. req:ts // 1405894322.002768 // Required // Timestamp of the message to be deleted.

func (*Client) ChatPostMessage

func (c *Client) ChatPostMessage(channel, text string, optional url.Values) (*ChatPostMessageResponse, error)

https://api.slack.com/methods/chat.postMessage req:channel // C1234567890 // Required // Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name. See below for more details. req:text // Hello world // Required // Text of the message to send. See below for an explanation of formatting. opt:username // My Bot // Optional // Name of bot. opt:as_user // true // Optional // Pass true to post the message as the authed user, instead of as a bot opt:parse // full // Optional // Change how messages are treated. See below. opt:link_names // 1 // Optional // Find and link channel names and usernames. opt:attachments // [{"pretext": "pre-hello", "text": "text-world"}] // Optional // Structured message attachments. opt:unfurl_links // true // Optional // Pass true to enable unfurling of primarily text-based content. opt:unfurl_media // false // Optional // Pass false to disable unfurling of media content. opt:icon_url // http://lorempixel.com/48/48 // Optional // URL to an image to use as the icon for this message opt:icon_emoji // :chart_with_upwards_trend: // Optional // emoji to use as the icon for this message. Overridesicon_url

func (*Client) ChatUpdate

func (c *Client) ChatUpdate(channel, text string, ts Time, optional url.Values) (*ChatUpdateResponse, error)

https://api.slack.com/methods/chat.update req:ts // 1405894322.002768 // Required // Timestamp of the message to be updated. req:channel // C1234567890 // Required // Channel containing the message to be updated. req:text // Hello world // Required // New text for the message, using the default formatting rules. opt:attachments // [{"pretext": "pre-hello", "text": "text-world"}] // Optional // Structured message attachments. opt:parse // none // Optional // Change how messages are treated. See below. opt:link_names // 1 // Optional // Find and link channel names and usernames.

func (*Client) DndInfo

func (c *Client) DndInfo(optional url.Values) (*DndInfoResponse, error)

https://api.slack.com/methods/dnd.info opt:user // U1234 // Optional // User to fetch status for (defaults to current user)

func (*Client) DndSetSnooze

func (c *Client) DndSetSnooze(minutes time.Duration) (*DndSetSnoozeResponse, error)

https://api.slack.com/methods/dnd.setSnooze req:num_minutes // 60 // Required // Number of minutes, from now, to snooze until.

func (*Client) DndTeamInfo

func (c *Client) DndTeamInfo(optional url.Values) (*DndTeamInfoResponse, error)

https://api.slack.com/methods/dnd.teamInfo opt:users // U1234,U4567 // Optional // Comma-separated list of users to fetch Do Not Disturb status for

func (*Client) Do

func (c *Client) Do(method Method, args url.Values, v interface{}) error

func (*Client) DoWithBody

func (c *Client) DoWithBody(method Method, content_type string, body io.Reader, v interface{}) error

func (*Client) FilesCommentsAdd

func (c *Client) FilesCommentsAdd(file, comment string) (*FilesCommentsAddResponse, error)

https://api.slack.com/methods/files.comments.add req:file // F1234567890 // Required // File to add a comment to. req:comment // Everyone should take a moment to read this file. // Required // Text of the comment to add.

func (*Client) FilesCommentsDelete

func (c *Client) FilesCommentsDelete(file, comment_id string) (*FilesCommentsDeleteResponse, error)

https://api.slack.com/methods/files.comments.delete req:file // F1234567890 // Required // File to delete a comment from. req:id // Fc1234567890 // Required // The comment to delete.

func (*Client) FilesCommentsEdit

func (c *Client) FilesCommentsEdit(file, comment_id, comment string) (*FilesCommentsEditResponse, error)

https://api.slack.com/methods/files.comments.edit req:file // F1234567890 // Required // File containing the comment to edit. req:id // Fc1234567890 // Required // The comment to edit. req:comment // Everyone should take a moment to read this file, seriously. // Required // Text of the comment to edit.

func (*Client) FilesDelete

func (c *Client) FilesDelete(file string) (*FilesDeleteResponse, error)

https://api.slack.com/methods/files.delete req:file // // Required // ID of file to delete.

func (*Client) FilesInfo

func (c *Client) FilesInfo(file string, optional url.Values) (*FilesInfoResponse, error)

https://api.slack.com/methods/files.info req:file // // Required // File to fetch info for opt:count // 20 // Optional // , default=100 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) FilesList

func (c *Client) FilesList(optional url.Values) (*FilesListResponse, error)

https://api.slack.com/methods/files.list opt:user // U1234567890 // Optional // Filter files created by a single user. opt:channel // C1234567890 // Optional // Filter files appearing in a specific channel, indicated by its ID. opt:ts_from // 123456789 // Optional // , default=0 Filter files created after this timestamp (inclusive). opt:ts_to // 123456789 // Optional // , default=now Filter files created before this timestamp (inclusive). opt:types // all,posts,snippets,images,gdocs,zips,pdfs // Optional (multiple) // , default=all Filter files by type: opt:count // 20 // Optional // , default=100 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) FilesUpload

func (c *Client) FilesUpload(filename string, file io.Reader, optional url.Values) (*FilesUploadResponse, error)

https://api.slack.com/methods/files.upload req:file // ... // Required // File contents via multipart/form-data. req:filename // foo.txt // Required // Filename of file. opt:content // ... // Optional // File contents via a POST var. opt:filetype // php // Optional // Slack-internal file type identifier. opt:title // My File // Optional // Title of file. opt:initial_comment // Best! // Optional // Initial comment to add to file. opt:channels // C1234567890 // Optional // Comma-separated list of channel names or IDs where the file will be shared.

func (*Client) GroupsArchive

func (c *Client) GroupsArchive(channel string) (*GroupsArchiveResponse, error)

https://api.slack.com/methods/groups.archive req:channel // G1234567890 // Required // Private channel to archive

func (*Client) GroupsClose

func (c *Client) GroupsClose(channel string) (*GroupsCloseResponse, error)

https://api.slack.com/methods/groups.close req:channel // G1234567890 // Required // Private channel to close.

func (*Client) GroupsCreate

func (c *Client) GroupsCreate(name string) (*GroupsCreateResponse, error)

https://api.slack.com/methods/groups.create req:name // // Required // Name of private channel to create

func (*Client) GroupsCreateChild

func (c *Client) GroupsCreateChild(channel string) (*GroupsCreateChildResponse, error)

https://api.slack.com/methods/groups.createChild req:channel // G1234567890 // Required // Private channel to clone and archive.

func (*Client) GroupsHistory

func (c *Client) GroupsHistory(channel string, optional url.Values) (*GroupsHistoryResponse, error)

https://api.slack.com/methods/groups.history req:channel // G1234567890 // Required // Private channel to fetch history for. opt:latest // 1234567890.123456 // Optional // , default=now End of time range of messages to include in results. opt:oldest // 1234567890.123456 // Optional // , default=0 Start of time range of messages to include in results. opt:inclusive // 1 // Optional // , default=0 Include messages with latest or oldest timestamp in results. opt:count // 100 // Optional // , default=100 Number of messages to return, between 1 and 1000. opt:unreads // 1 // Optional // , default=0 Include unread_count_display in the output?

func (*Client) GroupsInfo

func (c *Client) GroupsInfo(channel string) (*GroupsInfoResponse, error)

https://api.slack.com/methods/groups.info req:channel // C1234567890 // Required // Private channel to get info on

func (*Client) GroupsInvite

func (c *Client) GroupsInvite(channel, user string) (*GroupsInviteResponse, error)

https://api.slack.com/methods/groups.invite req:channel // G1234567890 // Required // Private channel to invite user to. req:user // U1234567890 // Required // User to invite.

func (*Client) GroupsKick

func (c *Client) GroupsKick(channel, user string) (*GroupsKickResponse, error)

https://api.slack.com/methods/groups.kick req:channel // G1234567890 // Required // Private channel to remove user from. req:user // U1234567890 // Required // User to remove from private channel.

func (*Client) GroupsLeave

func (c *Client) GroupsLeave(channel string) (*GroupsLeaveResponse, error)

https://api.slack.com/methods/groups.leave req:channel // G1234567890 // Required // Private channel to leave

func (*Client) GroupsList

func (c *Client) GroupsList(optional url.Values) (*GroupsListResponse, error)

https://api.slack.com/methods/groups.list opt:exclude_archived // 1 // Optional // , default=0 Don't return archived private channels.

func (*Client) GroupsMark

func (c *Client) GroupsMark(channel string, ts Time) (*GroupsMarkResponse, error)

https://api.slack.com/methods/groups.mark req:channel // G1234567890 // Required // Private channel to set reading cursor in. req:ts // 1234567890.123456 // Required // Timestamp of the most recently seen message.

func (*Client) GroupsOpen

func (c *Client) GroupsOpen(channel string) (*GroupsOpenResponse, error)

https://api.slack.com/methods/groups.open req:channel // G1234567890 // Required // Private channel to open.

func (*Client) GroupsRename

func (c *Client) GroupsRename(channel, name string) (*GroupsRenameResponse, error)

https://api.slack.com/methods/groups.rename req:channel // C1234567890 // Required // Private channel to rename req:name // // Required // New name for private channel.

func (*Client) GroupsSetPurpose

func (c *Client) GroupsSetPurpose(channel, purpose string) (*GroupsSetPurposeResponse, error)

https://api.slack.com/methods/groups.setPurpose req:channel // C1234567890 // Required // Private channel to set the purpose of req:purpose // My Purpose // Required // The new purpose

func (*Client) GroupsSetTopic

func (c *Client) GroupsSetTopic(channel, topic string) (*GroupsSetTopicResponse, error)

https://api.slack.com/methods/groups.setTopic req:channel // C1234567890 // Required // Private channel to set the topic of req:topic // My Topic // Required // The new topic

func (*Client) GroupsUnarchive

func (c *Client) GroupsUnarchive(channel string) (*GroupsUnarchiveResponse, error)

https://api.slack.com/methods/groups.unarchive req:channel // G1234567890 // Required // Private channel to unarchive

func (*Client) ImClose

func (c *Client) ImClose(channel string) (*ImCloseResponse, error)

https://api.slack.com/methods/im.close req:channel // D1234567890 // Required // Direct message channel to close.

func (*Client) ImHistory

func (c *Client) ImHistory(channel string, optional url.Values) (*ImHistoryResponse, error)

https://api.slack.com/methods/im.history req:channel // D1234567890 // Required // Direct message channel to fetch history for. opt:latest // 1234567890.123456 // Optional // , default=now End of time range of messages to include in results. opt:oldest // 1234567890.123456 // Optional // , default=0 Start of time range of messages to include in results. opt:inclusive // 1 // Optional // , default=0 Include messages with latest or oldest timestamp in results. opt:count // 100 // Optional // , default=100 Number of messages to return, between 1 and 1000. opt:unreads // 1 // Optional // , default=0 Include unread_count_display in the output?

func (*Client) ImMark

func (c *Client) ImMark(channel string, ts Time) (*ImMarkResponse, error)

https://api.slack.com/methods/im.mark req:channel // D1234567890 // Required // Direct message channel to set reading cursor in. req:ts // 1234567890.123456 // Required // Timestamp of the most recently seen message.

func (*Client) ImOpen

func (c *Client) ImOpen(user string) (*ImOpenResponse, error)

https://api.slack.com/methods/im.open req:user // U1234567890 // Required // User to open a direct message channel with.

func (*Client) MpimClose

func (c *Client) MpimClose(channel string) (*MpimCloseResponse, error)

https://api.slack.com/methods/mpim.close req:channel // // Required // MPIM to close.

func (*Client) MpimHistory

func (c *Client) MpimHistory(channel string, optional url.Values) (*MpimHistoryResponse, error)

https://api.slack.com/methods/mpim.history req:channel // // Required // Multiparty direct message to fetch history for. opt:latest // 1234567890.123456 // Optional // , default=now End of time range of messages to include in results. opt:oldest // 1234567890.123456 // Optional // , default=0 Start of time range of messages to include in results. opt:inclusive // 1 // Optional // , default=0 Include messages with latest or oldest timestamp in results. opt:count // 100 // Optional // , default=100 Number of messages to return, between 1 and 1000. opt:unreads // 1 // Optional // , default=0 Include unread_count_display in the output?

func (*Client) MpimMark

func (c *Client) MpimMark(channel string, ts Time) (*MpimMarkResponse, error)

https://api.slack.com/methods/mpim.mark req:channel // G1234567890 // Required // multiparty direct message channel to set reading cursor in. req:ts // 1234567890.123456 // Required // Timestamp of the most recently seen message.

func (*Client) MpimOpen

func (c *Client) MpimOpen(users []string) (*MpimOpenResponse, error)

https://api.slack.com/methods/mpim.open req:users // U1234567890,U2345678901,U3456789012 // Required // Comma separated lists of users. The ordering of the users is preserved whenever a MPIM group is returned.

func (*Client) NewRTMClient

func (c *Client) NewRTMClient(options url.Values) *RTMClient

func (*Client) OauthAccess

func (c *Client) OauthAccess(client_id, client_secret, code string, optional url.Values) (*OauthAccessResponse, error)

https://api.slack.com/methods/oauth.access req:client_id // 4b39e9-752c4 // Required // Issued when you created your application. req:client_secret // 33fea0113f5b1 // Required // Issued when you created your application. req:code // ccdaa72ad // Required // The code param returned via the OAuth callback. opt:redirect_uri // http://example.com // Optional // This must match the originally submitted URI (if one was sent).

func (*Client) PinsAdd

func (c *Client) PinsAdd(channel string, optional url.Values) (*PinsAddResponse, error)

https://api.slack.com/methods/pins.add req:channel // C1234567890 // Required // Channel to pin the item in. opt:file // F1234567890 // Optional // File to pin. opt:file_comment // Fc1234567890 // Optional // File comment to pin. opt:timestamp // 1234567890.123456 // Optional // Timestamp of the message to pin.

func (*Client) PinsList

func (c *Client) PinsList(channel string) (*PinsListResponse, error)

https://api.slack.com/methods/pins.list req:channel // C1234567890 // Required // Channel to get pinned items for.

func (*Client) PinsRemove

func (c *Client) PinsRemove(channel string, optional url.Values) (*PinsRemoveResponse, error)

https://api.slack.com/methods/pins.remove req:channel // C1234567890 // Required // Channel where the item is pinned to. opt:file // F1234567890 // Optional // File to un-pin. opt:file_comment // Fc1234567890 // Optional // File comment to un-pin. opt:timestamp // 1234567890.123456 // Optional // Timestamp of the message to un-pin.

func (*Client) RTMStart

func (c *Client) RTMStart(optional url.Values) (*RTMStartResponse, error)

https://api.slack.com/methods/rtm.start opt:simple_latest // // Optional // Return timestamp only for latest message object of each channel (improves performance). opt:no_unreads // // Optional // Skip unread counts for each channel (improves performance). opt:mpim_aware // // Optional // Returns MPIMs to the client in the API response.

func (*Client) ReactionsAdd

func (c *Client) ReactionsAdd(name string, optional url.Values) (*ReactionsAddResponse, error)

https://api.slack.com/methods/reactions.add req:name // thumbsup // Required // Reaction (emoji) name. opt:file // F1234567890 // Optional // File to add reaction to. opt:file_comment // Fc1234567890 // Optional // File comment to add reaction to. opt:channel // C1234567890 // Optional // Channel where the message to add reaction to was posted. opt:timestamp // 1234567890.123456 // Optional // Timestamp of the message to add reaction to.

func (*Client) ReactionsGet

func (c *Client) ReactionsGet(optional url.Values) (*ReactionsGetResponse, error)

https://api.slack.com/methods/reactions.get opt:file // F1234567890 // Optional // File to get reactions for. opt:file_comment // Fc1234567890 // Optional // File comment to get reactions for. opt:channel // C1234567890 // Optional // Channel where the message to get reactions for was posted. opt:timestamp // 1234567890.123456 // Optional // Timestamp of the message to get reactions for. opt:full // // Optional // If true always return the complete reaction list.

func (*Client) ReactionsList

func (c *Client) ReactionsList(optional url.Values) (*ReactionsListResponse, error)

https://api.slack.com/methods/reactions.list opt:user // U1234567890 // Optional // Show reactions made by this user. Defaults to the authed user. opt:full // // Optional // If true always return the complete reaction list. opt:count // 20 // Optional // , default=100 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) ReactionsRemove

func (c *Client) ReactionsRemove(name string, optional url.Values) (*ReactionsRemoveResponse, error)

https://api.slack.com/methods/reactions.remove req:name // thumbsup // Required // Reaction (emoji) name. opt:file // F1234567890 // Optional // File to remove reaction from. opt:file_comment // Fc1234567890 // Optional // File comment to remove reaction from. opt:channel // C1234567890 // Optional // Channel where the message to remove reaction from was posted. opt:timestamp // 1234567890.123456 // Optional // Timestamp of the message to remove reaction from.

func (*Client) SearchAll

func (c *Client) SearchAll(query string, optional url.Values) (*SearchAllResponse, error)

https://api.slack.com/methods/search.all req:query // pickleface // Required // Search query. May contains booleans, etc. opt:sort // timestamp // Optional // , default=score Return matches sorted by either score or timestamp. opt:sort_dir // asc // Optional // , default=desc Change sort direction to ascending (asc) or descending (desc). opt:highlight // 1 // Optional // Pass a value of 1 to enable query highlight markers (see below). opt:count // 20 // Optional // , default=20 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) SearchFiles

func (c *Client) SearchFiles(query string, optional url.Values) (*SearchFilesResponse, error)

https://api.slack.com/methods/search.files req:query // pickleface // Required // Search query. May contain booleans, etc. opt:sort // timestamp // Optional // , default=score Return matches sorted by either score or timestamp. opt:sort_dir // asc // Optional // , default=desc Change sort direction to ascending (asc) or descending (desc). opt:highlight // 1 // Optional // Pass a value of 1 to enable query highlight markers (see below). opt:count // 20 // Optional // , default=20 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) SearchMessages

func (c *Client) SearchMessages(query string, optional url.Values) (*SearchMessagesResponse, error)

https://api.slack.com/methods/search.messages req:query // pickleface // Required // Search query. May contains booleans, etc. opt:sort // timestamp // Optional // , default=score Return matches sorted by either score or timestamp. opt:sort_dir // asc // Optional // , default=desc Change sort direction to ascending (asc) or descending (desc). opt:highlight // 1 // Optional // Pass a value of 1 to enable query highlight markers (see below). opt:count // 20 // Optional // , default=20 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) StarsAdd

func (c *Client) StarsAdd(optional url.Values) (*StarsAddResponse, error)

https://api.slack.com/methods/stars.add opt:file // F1234567890 // Optional // File to add star to. opt:file_comment // Fc1234567890 // Optional // File comment to add star to. opt:channel // C1234567890 // Optional // Channel to add star to, or channel where the message to add star to was posted (used with timestamp). opt:timestamp // 1234567890.123456 // Optional // Timestamp of the message to add star to.

func (*Client) StarsList

func (c *Client) StarsList(optional url.Values) (*StarsListResponse, error)

https://api.slack.com/methods/stars.list opt:user // U1234567890 // Optional // Show stars by this user. Defaults to the authed user. opt:count // 20 // Optional // , default=100 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) StarsRemove

func (c *Client) StarsRemove(optional url.Values) (*StarsRemoveResponse, error)

https://api.slack.com/methods/stars.remove opt:file // F1234567890 // Optional // File to remove star from. opt:file_comment // Fc1234567890 // Optional // File comment to remove star from. opt:channel // C1234567890 // Optional // Channel to remove star from, or channel where the message to remove star from was posted (used with timestamp). opt:timestamp // 1234567890.123456 // Optional // Timestamp of the message to remove star from.

func (*Client) TeamAccessLogs

func (c *Client) TeamAccessLogs(optional url.Values) (*TeamAccessLogsResponse, error)

https://api.slack.com/methods/team.accessLogs opt:count // 20 // Optional // , default=100 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) TeamIntegrationLogs

func (c *Client) TeamIntegrationLogs(optional url.Values) (*TeamIntegrationLogsResponse, error)

https://api.slack.com/methods/team.integrationLogs opt:service_id // // Optional // Filter logs to this service. Defaults to all logs. opt:app_id // // Optional // Filter logs to this Slack app. Defaults to all logs. opt:user // U1234567890 // Optional // Filter logs generated by this user’s actions. Defaults to all logs. opt:change_type // added // Optional // Filter logs with this change type. Defaults to all logs. opt:count // 20 // Optional // , default=100 Number of items to return per page. opt:page // 2 // Optional // , default=1 Page number of results to return.

func (*Client) UsergroupsCreate

func (c *Client) UsergroupsCreate(name string, optional url.Values) (*UsergroupsCreateResponse, error)

https://api.slack.com/methods/usergroups.create req:name // My Test Team // Required // A name for the user group. Must be unique among user groups. opt:handle // // Optional // A mention handle. Must be unique among channels, users and user groups. opt:description // // Optional // A short description of the user group. opt:channels // // Optional // A comma separated string of encoded channel IDs for which the user group uses as a default. opt:include_count // 1 // Optional // Include the number of users in each user group.

func (*Client) UsergroupsDisable

func (c *Client) UsergroupsDisable(usergroup string, optional url.Values) (*UsergroupsDisableResponse, error)

https://api.slack.com/methods/usergroups.disable req:usergroup // S0604QSJC // Required // The encoded ID of the user group to disable. opt:include_count // 1 // Optional // Include the number of users in the user group.

func (*Client) UsergroupsEnable

func (c *Client) UsergroupsEnable(usergroup string, optional url.Values) (*UsergroupsEnableResponse, error)

https://api.slack.com/methods/usergroups.enable req:usergroup // S0604QSJC // Required // The encoded ID of the user group to enable. opt:include_count // 1 // Optional // Include the number of users in the user group.

func (*Client) UsergroupsList

func (c *Client) UsergroupsList(optional url.Values) (*UsergroupsListResponse, error)

https://api.slack.com/methods/usergroups.list opt:include_disabled // 1 // Optional // Include disabled user groups. opt:include_count // 1 // Optional // Include the number of users in each user group. opt:include_users // 1 // Optional // Include the list of users for each user group.

func (*Client) UsergroupsUpdate

func (c *Client) UsergroupsUpdate(usergroup string, optional url.Values) (*UsergroupsUpdateResponse, error)

https://api.slack.com/methods/usergroups.update req:usergroup // S0604QSJC // Required // The encoded ID of the user group to update. opt:name // My Test Team // Optional // A name for the user group. Must be unique among user groups. opt:handle // // Optional // A mention handle. Must be unique among channels, users and user groups. opt:description // // Optional // A short description of the user group. opt:channels // // Optional // A comma separated string of encoded channel IDs for which the user group uses as a default. opt:include_count // 1 // Optional // Include the number of users in the user group.

func (*Client) UsergroupsUsersList

func (c *Client) UsergroupsUsersList(usergroup string, optional url.Values) (*UsergroupsUsersListResponse, error)

https://api.slack.com/methods/usergroups.users.list req:usergroup // S0604QSJC // Required // The encoded ID of the user group to update. opt:include_disabled // 1 // Optional // Allow results that involve disabled user groups.

func (*Client) UsergroupsUsersUpdate

func (c *Client) UsergroupsUsersUpdate(usergroup string, users []string, optional url.Values) (*UsergroupsUsersUpdateResponse, error)

https://api.slack.com/methods/usergroups.users.update req:usergroup // S0604QSJC // Required // The encoded ID of the user group to update. req:users // U060R4BJ4,U060RNRCZ // Required // A comma separated string of encoded user IDs that represent the entire list of users for the user group. opt:include_count // 1 // Optional // Include the number of users in the user group.

func (*Client) UsersGetPresence

func (c *Client) UsersGetPresence(user string) (*UsersGetPresenceResponse, error)

https://api.slack.com/methods/users.getPresence req:user // U1234567890 // Required // User to get presence info on. Defaults to the authed user.

func (*Client) UsersInfo

func (c *Client) UsersInfo(user string) (*UsersInfoResponse, error)

https://api.slack.com/methods/users.info req:user // U1234567890 // Required // User to get info on

func (*Client) UsersList

func (c *Client) UsersList(optional url.Values) (*UsersListResponse, error)

https://api.slack.com/methods/users.list opt:presence // 1 // Optional // Whether to include presence data in the output

func (*Client) UsersSetPresence

func (c *Client) UsersSetPresence(presence Presence) (*UsersSetPresenceResponse, error)

https://api.slack.com/methods/users.setPresence req:presence // (auto or away) // Required // Either

type CommandsChangedEvent

type CommandsChangedEvent struct {
	Type           string `json:"type"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/commands_changed

{
    "type": "commands_changed",
    "event_ts" : "1361482916.000004"
}

type Comment

type Comment struct {
	ID        string `json:"id"`
	Created   Time   `json:"created"`
	Timestamp Time   `json:"timestamp"`
	User      string `json:"user"`
	Comment   string `json:"comment"`
}

type DndEndDndResponse

type DndEndDndResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/dnd.endDnd

{
    "ok": true
}

type DndEndSnoozeResponse

type DndEndSnoozeResponse struct {
	OK                    bool   `json:"ok"`
	Error                 string `json:"error"`
	DndEnabled            bool   `json:"dnd_enabled"`
	NextDndStartTimestamp Time   `json:"next_dnd_start_ts"`
	NextDndEndTimestamp   Time   `json:"next_dnd_end_ts"`
	SnoozeEnabled         bool   `json:"snooze_enabled"`
}

https://api.slack.com/methods/dnd.endSnooze

{
    "ok": true,
    "dnd_enabled": true,
    "next_dnd_start_ts": 1450418400,
    "next_dnd_end_ts": 1450454400,
    "snooze_enabled": false
}

type DndInfoResponse

type DndInfoResponse struct {
	OK                    bool     `json:"ok"`
	Error                 string   `json:"error"`
	DndEnabled            bool     `json:"dnd_enabled"`
	NextDndStartTimestamp Time     `json:"next_dnd_start_ts"`
	NextDndEndTimestamp   Time     `json:"next_dnd_end_ts"`
	SnoozeEnabled         bool     `json:"snooze_enabled"`
	SnoozeEndTime         Time     `json:"snooze_endtime"`
	SnoozeRemaining       Duration `json:"snooze_remaining"`
}

https://api.slack.com/methods/dnd.info

{
    "ok": true,
    "dnd_enabled": true,
    "next_dnd_start_ts": 1450416600,
    "next_dnd_end_ts": 1450452600,
    "snooze_enabled": true,
    "snooze_endtime": 1450416600,
    "snooze_remaining": 1196
}

type DndSetSnoozeResponse

type DndSetSnoozeResponse struct {
	OK              bool     `json:"ok"`
	Error           string   `json:"error"`
	SnoozeEnabled   bool     `json:"snooze_enabled"`
	SnoozeEndTime   Time     `json:"snooze_endtime"`
	SnoozeRemaining Duration `json:"snooze_remaining"`
}

https://api.slack.com/methods/dnd.setSnooze

{
    "ok": true,
    "snooze_enabled": true,
    "snooze_endtime": 1450373897,
    "snooze_remaining": 60,
}

type DndTeamInfoResponse

type DndTeamInfoResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Users map[string]struct {
		DndEnabled            bool `json:"dnd_enabled"`
		NextDndEndTimestamp   Time `json:"next_dnd_end_ts"`
		NextDndStartTimestamp Time `json:"next_dnd_start_ts"`
	} `json:"users"`
}

https://api.slack.com/methods/dnd.teamInfo

{
    "ok": true,
    "users": {
        "U023BECGF": {
            "dnd_enabled": true,
            "next_dnd_start_ts": 1450387800,
            "next_dnd_end_ts": 1450423800
        },
        "U058CJVAA": {
            "dnd_enabled": false,
            "next_dnd_start_ts": 1,
            "next_dnd_end_ts": 1
        }
    }
}

type DndUpdatedEvent

type DndUpdatedEvent struct {
	Type      string `json:"type"`
	User      string `json:"user"`
	DndStatus struct {
		DndEnabled            bool `json:"dnd_enabled"`
		NextDndStartTimestamp Time `json:"next_dnd_start_ts"`
		NextDndEndTimestamp   Time `json:"next_dnd_end_ts"`
		SnoozeEnabled         bool `json:"snooze_enabled"`
		SnoozeEndtime         Time `json:"snooze_endtime"`
	} `json:"dnd_status"`
}

https://api.slack.com/events/dnd_updated

{
    "type": "dnd_updated",
    "user": "U1234",
    "dnd_status": {
        "dnd_enabled": true,
        "next_dnd_start_ts": 1450387800,
        "next_dnd_end_ts": 1450423800,
        "snooze_enabled": true,
        "snooze_endtime": 1450373897
    }
}

type DndUpdatedUserEvent

type DndUpdatedUserEvent struct {
	Type      string `json:"type"`
	User      string `json:"user"`
	DndStatus struct {
		DndEnabled            bool `json:"dnd_enabled"`
		NextDndStartTimestamp Time `json:"next_dnd_start_ts"`
		NextDndEndTimestamp   Time `json:"next_dnd_end_ts"`
	} `json:"dnd_status"`
}

https://api.slack.com/events/dnd_updated_user

{
    "type": "dnd_updated_user",
    "user": "U1234",
    "dnd_status": {
        "dnd_enabled": true,
        "next_dnd_start_ts": 1450387800,
        "next_dnd_end_ts": 1450423800
    }
}

type Duration

type Duration struct {
	time.Duration
}

func NewDuration

func NewDuration(t time.Duration) Duration

func (Duration) MarshalJSON

func (d Duration) MarshalJSON() ([]byte, error)

func (Duration) SlackString

func (d Duration) SlackString() string

func (*Duration) UnmarshalJSON

func (d *Duration) UnmarshalJSON(data []byte) error

type EmailDomainChangedEvent

type EmailDomainChangedEvent struct {
	Type           string `json:"type"`
	EmailDomain    string `json:"email_domain"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/email_domain_changed

{
    "type": "email_domain_changed",
    "email_domain":"example.com",
    "event_ts": "1360782804.083113"
}

type EmojiChangedEvent

type EmojiChangedEvent struct {
	Type           string `json:"type"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/emoji_changed

{
    "type": "emoji_changed",
    "event_ts" : "1361482916.000004"
}

type EmojiListResponse

type EmojiListResponse struct {
	OK    bool              `json:"ok"`
	Error string            `json:"error"`
	Emoji map[string]string `json:"emoji"`
}

https://api.slack.com/methods/emoji.list

{
    "ok": true,
    "emoji": {
        "bowtie": "https:\/\/my.slack.com\/emoji\/bowtie\/46ec6f2bb0.png",
        "squirrel": "https:\/\/my.slack.com\/emoji\/squirrel\/f35f40c0e0.png",
        "shipit": "alias:squirrel"
    }
}

type File

type File struct {
	ID                 string   `json:"id"`
	Created            Time     `json:"created"`
	Timestamp          Time     `json:"timestamp"`
	Name               string   `json:"name"`
	Title              string   `json:"title"`
	Mimetype           string   `json:"mimetype"`
	Filetype           string   `json:"filetype"`
	PrettyType         string   `json:"pretty_type"`
	User               string   `json:"user"`
	Mode               string   `json:"mode"`
	Editable           bool     `json:"editable"`
	IsExternal         bool     `json:"is_external"`
	ExternalType       string   `json:"external_type"`
	Username           string   `json:"username"`
	Size               int      `json:"size"`
	URLPrivate         string   `json:"url_private"`
	URLPrivateDownload string   `json:"url_private_download"`
	Thumb160           string   `json:"thumb_160"`
	Thumb360           string   `json:"thumb_360"`
	Thumb360Gif        string   `json:"thumb_360_gif"`
	Thumb360H          int      `json:"thumb_360_h"`
	Thumb360W          int      `json:"thumb_360_w"`
	Thumb480           string   `json:"thumb_480"`
	Thumb480H          int      `json:"thumb_480_h"`
	Thumb480W          int      `json:"thumb_480_w"`
	Thumb64            string   `json:"thumb_64"`
	Thumb80            string   `json:"thumb_80"`
	Permalink          string   `json:"permalink"`
	PermalinkPublic    string   `json:"permalink_public"`
	EditLink           string   `json:"edit_link"`
	Preview            string   `json:"preview"`
	PreviewHighlight   string   `json:"preview_highlight"`
	Lines              int      `json:"lines"`
	LinesMore          int      `json:"lines_more"`
	IsPublic           bool     `json:"is_public"`
	PublicURLShared    bool     `json:"public_url_shared"`
	DisplayAsBot       bool     `json:"display_as_bot"`
	Channels           []string `json:"channels"`
	Groups             []string `json:"groups"`
	Ims                []string `json:"ims"`
	InitialComment     *Comment `json:"initial_comment"`
	NumStars           int      `json:"num_stars"`
	IsStarred          bool     `json:"is_starred"`
	PinnedTo           []string `json:"pinned_to"`
	Reactions          []struct {
		Count int      `json:"count"`
		Name  string   `json:"name"`
		Users []string `json:"users"`
	} `json:"reactions"`
	CommentsCount int `json:"comments_count"`
}

https://api.slack.com/types/file

{
    "id" : "F2147483862",
    "created" : 1356032811,
    "timestamp" : 1356032811,
    "name" : "file.htm",
    "title" : "My HTML file",
    "mimetype" : "text\/plain",
    "filetype" : "text",
    "pretty_type": "Text",
    "user" : "U2147483697",
    "mode" : "hosted",
    "editable" : true,
    "is_external": false,
    "external_type": "",
    "username": "",
    "size" : 12345,
    "url_private": "https:\/\/slack.com\/files-pri\/T024BE7LD-F024BERPE\/1.png",
    "url_private_download": "https:\/\/slack.com\/files-pri\/T024BE7LD-F024BERPE\/download\/1.png",
    "thumb_64": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_64.png",
    "thumb_80": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_80.png",
    "thumb_360": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_360.png",
    "thumb_360_gif": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_360.gif",
    "thumb_360_w": 100,
    "thumb_360_h": 100,
    "thumb_480": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_480.png",
    "thumb_480_w": 480,
    "thumb_480_h": 480,
    "thumb_160": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_160.png",
    "permalink" : "https:\/\/tinyspeck.slack.com\/files\/cal\/F024BERPE\/1.png",
    "permalink_public" : "https:\/\/tinyspeck.slack.com\/T024BE7LD-F024BERPE-3f9216b62c",
    "edit_link" : "https:\/\/tinyspeck.slack.com\/files\/cal\/F024BERPE\/1.png/edit",
    "preview" : "<!DOCTYPE html>\n<html>\n<meta charset='utf-8'>",
    "preview_highlight" : <div class=\"sssh-code\"><div class=\"sssh-line\"><pre><!DOCTYPE html...",
    "lines" : 123,
    "lines_more": 118,
    "is_public": true,
    "public_url_shared": false,
    "display_as_bot" : false,
    "channels": ["C024BE7LT", ...],
    "groups": ["G12345", ...],
    "ims": ["D12345", ...],
    "initial_comment": {...},
    "num_stars": 7,
    "is_starred": true,
    "pinned_to": ["C024BE7LT", ...],
    "reactions": [
    {
        "name": "astonished",
        "count": 3,
        "users": [ "U1", "U2", "U3" ]
    },
    {
        "name": "facepalm",
        "count": 1034,
        "users": [ "U1", "U2", "U3", "U4", "U5" ]
    }
    ],
    "comments_count": 1
}

type FileChangeEvent

type FileChangeEvent struct {
	Type string `json:"type"`
	File *File  `json:"file"`
}

https://api.slack.com/events/file_change

{
    "type": "file_change",
    "file": {}
}

type FileCommentAddedEvent

type FileCommentAddedEvent struct {
	Type    string   `json:"type"`
	File    *File    `json:"file"`
	Comment *Comment `json:"comment"`
}

https://api.slack.com/events/file_comment_added

{
    "type": "file_comment_added",
    "file": {},
    "comment": {}
}

type FileCommentDeletedEvent

type FileCommentDeletedEvent struct {
	Type    string `json:"type"`
	File    *File  `json:"file"`
	Comment string `json:"comment"`
}

https://api.slack.com/events/file_comment_deleted

{
    "type": "file_comment_deleted",
    "file": {},
    "comment": "Fc67890"
}

type FileCommentEditedEvent

type FileCommentEditedEvent struct {
	Type    string   `json:"type"`
	File    *File    `json:"file"`
	Comment *Comment `json:"comment"`
}

https://api.slack.com/events/file_comment_edited

{
    "type": "file_comment_edited",
    "file": {},
    "comment": {}
}

type FileCreatedEvent

type FileCreatedEvent struct {
	Type string `json:"type"`
	File *File  `json:"file"`
}

https://api.slack.com/events/file_created

{
    "type": "file_created",
    "file": {}
}

type FileDeletedEvent

type FileDeletedEvent struct {
	Type           string `json:"type"`
	FileID         string `json:"file_id"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/file_deleted

{
    "type": "file_deleted",
    "file_id": "F2147483862",
    "event_ts": "1361482916.000004"
}

type FilePrivateEvent

type FilePrivateEvent struct {
	Type string `json:"type"`
	File string `json:"file"`
}

https://api.slack.com/events/file_private

{
    "type": "file_private",
    "file": "F2147483862"
}

type FilePublicEvent

type FilePublicEvent struct {
	Type string `json:"type"`
	File *File  `json:"file"`
}

https://api.slack.com/events/file_public

{
    "type": "file_public",
    "file": {}
}

type FileSharedEvent

type FileSharedEvent struct {
	Type string `json:"type"`
	File *File  `json:"file"`
}

https://api.slack.com/events/file_shared

{
    "type": "file_shared",
    "file": {}
}

type FileType

type FileType string

type FileUnsharedEvent

type FileUnsharedEvent struct {
	Type string `json:"type"`
	File *File  `json:"file"`
}

https://api.slack.com/events/file_unshared

{
    "type": "file_unshared",
    "file": {}
}

type FilesCommentsAddResponse

type FilesCommentsAddResponse struct {
	OK      bool     `json:"ok"`
	Error   string   `json:"error"`
	Comment *Comment `json:"comment"`
}

https://api.slack.com/methods/files.comments.add

{
    "ok": true,
    "comment": {
        "id": "Fc1234567890",
        "created": 1356032811,
        "timestamp": 1356032811,
        "user": "U1234567890",
        "comment": "Everyone should take a moment to read this file."
    }
}

type FilesCommentsDeleteResponse

type FilesCommentsDeleteResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/files.comments.delete

{
    "ok": true
}

type FilesCommentsEditResponse

type FilesCommentsEditResponse struct {
	OK      bool     `json:"ok"`
	Error   string   `json:"error"`
	Comment *Comment `json:"comment"`
}

https://api.slack.com/methods/files.comments.edit

{
    "ok": true,
    "comment": {
        "id": "Fc1234567890",
        "created": 1356032811,
        "timestamp": 1356032811,
        "user": "U1234567890",
        "comment": "Everyone should take a moment to read this file, seriously."
    }
}

type FilesDeleteResponse

type FilesDeleteResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/files.delete

{
    "ok": true
}

type FilesInfoResponse

type FilesInfoResponse struct {
	OK       bool       `json:"ok"`
	Error    string     `json:"error"`
	File     *File      `json:"file"`
	Comments []*Comment `json:"comments"`
	Paging   struct {
		Count int `json:"count"`
		Page  int `json:"page"`
		Pages int `json:"pages"`
		Total int `json:"total"`
	} `json:"paging"`
}

https://api.slack.com/methods/files.info

{
    "ok": true,
    "file": {
        "id" : "F2147483862",
        "timestamp" : 1356032811,
        "name" : "file.htm",
        "title" : "My HTML file",
        "mimetype" : "text\/plain",
        "filetype" : "text",
        "pretty_type": "Text",
        "user" : "U2147483697",
        "mode" : "hosted",
        "editable" : true,
        "is_external": false,
        "external_type": "",
        "size" : 12345,
        "url": "https:\/\/slack-files.com\/files-pub\/T024BE7LD-F024BERPE-09acb6\/1.png",
        "url_download": "https:\/\/slack-files.com\/files-pub\/T024BE7LD-F024BERPE-09acb6\/download\/1.png",
        "url_private": "https:\/\/slack.com\/files-pri\/T024BE7LD-F024BERPE\/1.png",
        "url_private_download": "https:\/\/slack.com\/files-pri\/T024BE7LD-F024BERPE\/download\/1.png",
        "thumb_64": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_64.png",
        "thumb_80": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_80.png",
        "thumb_360": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_360.png",
        "thumb_360_gif": "https:\/\/slack-files.com\/files-tmb\/T024BE7LD-F024BERPE-c66246\/1_360.gif",
        "thumb_360_w": 100,
        "thumb_360_h": 100,
        "permalink" : "https:\/\/tinyspeck.slack.com\/files\/cal\/F024BERPE\/1.png",
        "edit_link" : "https:\/\/tinyspeck.slack.com\/files\/cal\/F024BERPE\/1.png/edit",
        "preview" : "<!DOCTYPE html>\n<html>\n<meta charset='utf-8'>",
        "preview_highlight" : <div class=\"sssh-code\"><div class=\"sssh-line\"><pre><!DOCTYPE html...",
        "lines" : 123,
        "lines_more": 118,
        "is_public": true,
        "public_url_shared": false,
        "channels": ["C024BE7LT", ...],
        "groups": ["G12345", ...],
        "initial_comment": {...},
        "num_stars": 7,
        "is_starred": true
    },
    "comments": [
        {
            "id": "Fc027BN9L9",
            "timestamp": 1356032811,
            "user": "U2147483697",
            "comment": "This is a comment"
        }
    ],
    "paging": {
        "count": 100,
        "total": 2,
        "page": 1,
        "pages": 0
    }
}

type FilesListResponse

type FilesListResponse struct {
	OK     bool    `json:"ok"`
	Error  string  `json:"error"`
	Files  []*File `json:"files"`
	Paging struct {
		Count int `json:"count"`
		Page  int `json:"page"`
		Pages int `json:"pages"`
		Total int `json:"total"`
	} `json:"paging"`
}

https://api.slack.com/methods/files.list

{
    "ok": true,
    "files": [
        {...},
        {...},
        {...},
        ...
    ],
    "paging": {
        "count": 100,
        "total": 295,
        "page": 1,
        "pages": 3
    }
}

type FilesUploadResponse

type FilesUploadResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	File  *File  `json:"file"`
}

https://api.slack.com/methods/files.upload

{
    "ok": true,
    "file": {...}
}

type Group

type Group struct {
	ID         string   `json:"id"`
	Name       string   `json:"name"`
	IsGroup    bool     `json:"is_group"`
	Created    Time     `json:"created"`
	Creator    string   `json:"creator"`
	IsArchived bool     `json:"is_archived"`
	IsMpim     bool     `json:"is_mpim"`
	Members    []string `json:"members"`
	Topic      struct {
		Creator string `json:"creator"`
		LastSet Time   `json:"last_set"`
		Value   string `json:"value"`
	} `json:"topic"`
	Purpose struct {
		Creator string `json:"creator"`
		LastSet Time   `json:"last_set"`
		Value   string `json:"value"`
	} `json:"purpose"`
	LastRead           Time     `json:"last_read"`
	Latest             *Message `json:"latest"`
	UnreadCount        int      `json:"unread_count"`
	UnreadCountDisplay int      `json:"unread_count_display"`
}

https://api.slack.com/types/group

{
    "id": "G024BE91L",
    "name": "secretplans",
    "is_group": "true",
    "created": 1360782804,
    "creator": "U024BE7LH",
    "is_archived": false,
    "is_mpim": false,
    "members": [
        "U024BE7LH"
    ],
    "topic": {
        "value": "Secret plans on hold",
        "creator": "U024BE7LV",
        "last_set": 1369677212
    },
    "purpose": {
        "value": "Discuss secret plans that no-one else should know",
        "creator": "U024BE7LH",
        "last_set": 1360782804
    },
    "last_read": "1401383885.000061",
    "latest": { … }
    "unread_count": 0,
    "unread_count_display": 0
}

type GroupArchiveEvent

type GroupArchiveEvent struct {
	Type    string `json:"type"`
	Channel string `json:"channel"`
}

https://api.slack.com/events/group_archive

{
    "type": "group_archive",
    "channel": "G024BE91L"
}

type GroupCloseEvent

type GroupCloseEvent struct {
	Type    string `json:"type"`
	User    string `json:"user"`
	Channel string `json:"channel"`
}

https://api.slack.com/events/group_close

{
    "type": "group_close",
    "user": "U024BE7LH",
    "channel": "G024BE91L"
}

type GroupHistoryChangedEvent

type GroupHistoryChangedEvent struct {
	Type           string `json:"type"`
	Latest         Time   `json:"latest"`
	Timestamp      Time   `json:"ts"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/group_history_changed

{
    "type": "group_history_changed",
    "latest": "1358877455.000010",
    "ts": "1361482916.000003",
    "event_ts": "1361482916.000004"
}

type GroupJoinedEvent

type GroupJoinedEvent struct {
	Type    string   `json:"type"`
	Channel *Channel `json:"channel"`
}

https://api.slack.com/events/group_joined

{
    "type": "group_joined",
    "channel": {}
}

type GroupLeftEvent

type GroupLeftEvent struct {
	Type    string   `json:"type"`
	Channel *Channel `json:"channel"`
}

https://api.slack.com/events/group_left

{
    "type": "group_left",
    "channel": {}
}

type GroupMarkedEvent

type GroupMarkedEvent struct {
	Type      string `json:"type"`
	Channel   string `json:"channel"`
	Timestamp Time   `json:"ts"`
}

https://api.slack.com/events/group_marked

{
    "type": "group_marked",
    "channel": "G024BE91L",
    "ts": "1401383885.000061"
}

type GroupOpenEvent

type GroupOpenEvent struct {
	Type    string `json:"type"`
	User    string `json:"user"`
	Channel string `json:"channel"`
}

https://api.slack.com/events/group_open

{
    "type": "group_open",
    "user": "U024BE7LH",
    "channel": "G024BE91L"
}

type GroupRenameEvent

type GroupRenameEvent struct {
	Type    string `json:"type"`
	Channel struct {
		ID      string `json:"id"`
		Name    string `json:"name"`
		Created Time   `json:"created"`
	} `json:"channel"`
}

https://api.slack.com/events/group_rename

{
    "type": "group_rename",
    "channel": {
        "id":"G02ELGNBH",
        "name":"new_name",
        "created":1360782804
    }
}

type GroupUnarchiveEvent

type GroupUnarchiveEvent struct {
	Type    string `json:"type"`
	Channel string `json:"channel"`
}

https://api.slack.com/events/group_unarchive

{
    "type": "group_unarchive",
    "channel": "G024BE91L"
}

type GroupsArchiveResponse

type GroupsArchiveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/groups.archive

{
    "ok": true
}

type GroupsCloseResponse

type GroupsCloseResponse struct {
	OK            bool   `json:"ok"`
	Error         string `json:"error"`
	NOOP          bool   `json:"no_op"`
	AlreadyClosed bool   `json:"already_closed"`
}

https://api.slack.com/methods/groups.close

{
    "ok": true
}
{
    "ok": true,
    "no_op": true,
    "already_closed": true
}

type GroupsCreateChildResponse

type GroupsCreateChildResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Group *Group `json:"group"`
}

https://api.slack.com/methods/groups.createChild

{
    "ok": true,
    "group": {
        "id": "G024BE91L",
        "name": "secretplans",
        "is_group": "true",
        "created": 1360782804,
        "creator": "U024BE7LH",
        "is_archived": false,
        "members": [
            "U024BE7LH"
        ]
    }
}

type GroupsCreateResponse

type GroupsCreateResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Group *Group `json:"group"`
}

https://api.slack.com/methods/groups.create

{
    "ok": true,
    "group": {
        "id": "G024BE91L",
        "name": "secretplans",
        "is_group": "true",
        "created": 1360782804,
        "creator": "U024BE7LH",
        "is_archived": false,
        "is_open": true,
        "last_read": "0000000000.000000",
        "latest": null,
        "unread_count": 0,
        "unread_count_display": 0,
        "members": [
            "U024BE7LH"
        ],
        "topic": {
            "value": "Secret plans on hold",
            "creator": "U024BE7LV",
            "last_set": 1369677212
        },
        "purpose": {
            "value": "Discuss secret plans that no-one else should know",
            "creator": "U024BE7LH",
            "last_set": 1360782804
        }
    }
}

type GroupsHistoryResponse

type GroupsHistoryResponse struct {
	OK       bool       `json:"ok"`
	Error    string     `json:"error"`
	Latest   Time       `json:"latest"`
	Messages []*Message `json:"group"`
	HasMore  bool       `json:"has_more"`
}

https://api.slack.com/methods/groups.history

{
    "ok": true,
    "latest": "1358547726.000003",
    "messages": [
        {
            "type": "message",
            "ts": "1358546515.000008",
            "user": "U2147483896",
            "text": "Hello"
        },
        {
            "type": "message",
            "ts": "1358546515.000007",
            "user": "U2147483896",
            "text": "World",
            "is_starred": true,
        },
        {
            "type": "something_else",
            "ts": "1358546515.000007",
            "wibblr": true
        }
    ],
    "has_more": false
}

type GroupsInfoResponse

type GroupsInfoResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Group *Group `json:"group"`
}
    },
}

type GroupsInviteResponse

type GroupsInviteResponse struct {
	OK             bool   `json:"ok"`
	Error          string `json:"error"`
	AlreadyInGroup bool   `json:"already_in_group"`
	Group          *Group `json:"group"`
}

https://api.slack.com/methods/groups.invite

{
    "ok": true,
    "group": {

    },
}
{
    "ok": true,
    "already_in_group": true,
    "group": {},
}

type GroupsKickResponse

type GroupsKickResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/groups.kick

{
    "ok": true
}

type GroupsLeaveResponse

type GroupsLeaveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/groups.leave

{
    "ok": true
}

type GroupsListResponse

type GroupsListResponse struct {
	OK     bool     `json:"ok"`
	Error  string   `json:"error"`
	Groups []*Group `json:"groups"`
}

https://api.slack.com/methods/groups.list

{
    "ok": true,
    "groups": [
        {
            "id": "G024BE91L",
            "name": "secretplans",
            "created": 1360782804,
            "creator": "U024BE7LH",
            "is_archived": false,
            "members": [
                "U024BE7LH"
            ],
            "topic": {
                "value": "Secret plans on hold",
                "creator": "U024BE7LV",
                "last_set": 1369677212
            },
            "purpose": {
                "value": "Discuss secret plans that no-one else should know",
                "creator": "U024BE7LH",
                "last_set": 1360782804
            }
        }
    ]
}

type GroupsMarkResponse

type GroupsMarkResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/groups.mark

{
    "ok": true
}

type GroupsOpenResponse

type GroupsOpenResponse struct {
	OK          bool   `json:"ok"`
	Error       string `json:"error"`
	NOOP        bool   `json:"no_op"`
	AlreadyOpen bool   `json:"already_open"`
}

https://api.slack.com/methods/groups.open

{
    "ok": true
}
{
    "ok": true,
    "no_op": true,
    "already_open": true
}

type GroupsRenameResponse

type GroupsRenameResponse struct {
	OK      bool     `json:"ok"`
	Error   string   `json:"error"`
	Channel *Channel `json:"channel"`
}

https://api.slack.com/methods/groups.rename

{
    "ok": true,
    "channel": {
        "id": "C024BE91L",
        "is_group": true,
        "name": "new_name",
        "created": 1360782804
    }
}

type GroupsSetPurposeResponse

type GroupsSetPurposeResponse struct {
	OK      bool   `json:"ok"`
	Error   string `json:"error"`
	Purpose string `json:"purpose"`
}

https://api.slack.com/methods/groups.setPurpose

{
    "ok": true,
    "purpose": "This is the new purpose!"
}

type GroupsSetTopicResponse

type GroupsSetTopicResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Topic string `json:"topic"`
}

https://api.slack.com/methods/groups.setTopic

{
    "ok": true,
    "topic": "This is the new topic!"
}

type GroupsUnarchiveResponse

type GroupsUnarchiveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/groups.unarchive

{
    "ok": true
}

type HelloEvent

type HelloEvent struct {
	Type string `json:"type"`
}

https://api.slack.com/events/hello

{
    "type": "hello"
}

type IM

type IM struct {
	ID            string `json:"id"`
	IsIm          bool   `json:"is_im"`
	User          string `json:"user"`
	Created       Time   `json:"created"`
	IsUserDeleted bool   `json:"is_user_deleted"`
}

https://api.slack.com/types/im

{
    "id": "D024BFF1M",
    "is_im": true,
    "user": "U024BE7LH",
    "created": 1360782804,
    "is_user_deleted": false
}

type ImCloseEvent

type ImCloseEvent struct {
	Type    string `json:"type"`
	User    string `json:"user"`
	Channel string `json:"channel"`
}

https://api.slack.com/events/im_close

{
    "type": "im_close",
    "user": "U024BE7LH",
    "channel": "D024BE91L"
}

type ImCloseResponse

type ImCloseResponse struct {
	OK            bool   `json:"ok"`
	Error         string `json:"error"`
	NOOP          bool   `json:"no_op"`
	AlreadyClosed bool   `json:"already_closed"`
}

https://api.slack.com/methods/im.close

{
    "ok": true
}
{
    "ok": true,
    "no_op": true,
    "already_closed": true
}

type ImCreatedEvent

type ImCreatedEvent struct {
	Type    string   `json:"type"`
	Channel *Channel `json:"channel"`
	User    string   `json:"user"`
}

https://api.slack.com/events/im_created

{
    "type": "im_created",
    "user": "U024BE7LH",
    "channel": {}
}

type ImHistoryChangedEvent

type ImHistoryChangedEvent struct {
	Type           string `json:"type"`
	Latest         Time   `json:"latest"`
	Timestamp      Time   `json:"ts"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/im_history_changed

{
    "type": "im_history_changed",
    "latest": "1358877455.000010",
    "ts": "1361482916.000003",
    "event_ts": "1361482916.000004"
}

type ImHistoryResponse

type ImHistoryResponse struct {
	OK       bool       `json:"ok"`
	Error    string     `json:"error"`
	Latest   Time       `json:"latest"`
	Messages []*Message `json:"group"`
	HasMore  bool       `json:"has_more"`
}

https://api.slack.com/methods/im.history

{
    "ok": true,
    "latest": "1358547726.000003",
    "messages": [
        {
            "type": "message",
            "ts": "1358546515.000008",
            "user": "U2147483896",
            "text": "Hello"
        },
        {
            "type": "message",
            "ts": "1358546515.000007",
            "user": "U2147483896",
            "text": "World",
            "is_starred": true,
        },
        {
            "type": "something_else",
            "ts": "1358546515.000007",
            "wibblr": true
        }
    ],
    "has_more": false
}

type ImListResponse

type ImListResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	IMs   []*IM  `json:"ims"`
}

https://api.slack.com/methods/im.list

{
    "ok": true,
    "ims": [
        {
           "id": "D024BFF1M",
           "is_im": true,
           "user": "USLACKBOT",
           "created": 1372105335,
           "is_user_deleted": false
        },
        {
           "id": "D024BE7RE",
           "is_im": true,
           "user": "U024BE7LH",
           "created": 1356250715,
           "is_user_deleted": false
        },

    ]
}

type ImMarkResponse

type ImMarkResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/im.mark

{
    "ok": true
}

type ImMarkedEvent

type ImMarkedEvent struct {
	Type      string `json:"type"`
	Channel   string `json:"channel"`
	Timestamp Time   `json:"ts"`
}

https://api.slack.com/events/im_marked

{
    "type": "im_marked",
    "channel": "D024BE91L",
    "ts": "1401383885.000061"
}

type ImOpenEvent

type ImOpenEvent struct {
	Type    string `json:"type"`
	User    string `json:"user"`
	Channel string `json:"channel"`
}

https://api.slack.com/events/im_open

{
    "type": "im_open",
    "user": "U024BE7LH",
    "channel": "D024BE91L"
}

type ImOpenResponse

type ImOpenResponse struct {
	OK          bool     `json:"ok"`
	Error       string   `json:"error"`
	NOOP        bool     `json:"no_op"`
	AlreadyOpen bool     `json:"already_open"`
	Channel     *Channel `json:"channel"`
}

https://api.slack.com/methods/im.open

{
    "ok": true,
    "channel": {
        "id": "D024BFF1M"
    }
}
{
    "ok": true,
    "no_op": true,
    "already_open": true,
    "channel": {
        "id": "D024BFF1M"
    }
}

type Item

type Item struct {
	Type      string          `json:"type"`
	Channel   json.RawMessage `json:"channel"`
	Message   json.RawMessage `json:"message"`
	File      json.RawMessage `json:"file"`
	Comment   json.RawMessage `json:"comment"`
	Created   Time            `json:"created"`
	Reactions []struct {
		Name  string   `json:"name"`
		Count int      `json:"count"`
		Users []string `json:"users"`
	} `json:"reactions"`
	Timestamp Time `json:"ts"`
}

TODO: something

type LogEntry

type LogEntry struct {
	ChangeType  string `json:"change_type"`
	Channel     string `json:"channel"`
	Date        Time   `json:"date"`
	Scope       string `json:"scope"`
	ServiceID   string `json:"service_id"`
	ServiceType string `json:"service_type"`
	UserID      string `json:"user_id"`
	UserName    string `json:"user_name"`
}

type Login

type Login struct {
	Count     int    `json:"count"`
	Country   string `json:"country"`
	DateFirst Time   `json:"date_first"`
	DateLast  Time   `json:"date_last"`
	IP        string `json:"ip"`
	Isp       string `json:"isp"`
	Region    string `json:"region"`
	UserAgent string `json:"user_agent"`
	UserID    string `json:"user_id"`
	Username  string `json:"username"`
}

type MPIM

type MPIM struct {
	ID                 string   `json:"id"`
	Name               string   `json:"name"`
	IsMpim             bool     `json:"is_mpim"`
	IsGroup            bool     `json:"is_group"`
	Created            Time     `json:"created"`
	Creator            string   `json:"creator"`
	Members            []string `json:"members"`
	LastRead           Time     `json:"last_read"`
	Latest             *Message `json:"latest"`
	UnreadCount        int      `json:"unread_count"`
	UnreadCountDisplay int      `json:"unread_count_display"`
}

https://api.slack.com/types/mpim

{
    "id": "G024BE91L",
    "name": "mpdm-user1--user2--user3-1",
    "is_mpim": true,
    "is_group": false,
    "created": 1360782804,
    "creator": "U024BE7LH",
    "members": [
        "U024BE7LH"
    ],
    "last_read": "1401383885.000061",
    "latest": { … }
    "unread_count": 0,
    "unread_count_display": 0
}

type ManualPresenceChangeEvent

type ManualPresenceChangeEvent struct {
	Type     string   `json:"type"`
	Presence Presence `json:"presence"`
}

https://api.slack.com/events/manual_presence_change

{
    "type": "manual_presence_change",
    "presence": "away"
}

type Message

type Message struct {
	Type      string `json:"type"`
	IsStarred bool   `json:"is_starred"`
	Reactions []struct {
		Count int      `json:"count"`
		Name  string   `json:"name"`
		Users []string `json:"users"`
	} `json:"reactions"`
	Text      string `json:"text"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
}

type MessageAttachment

type MessageAttachment struct {
	AuthorIcon     string                     `json:"author_icon,omitempty"`
	AuthorLink     string                     `json:"author_link,omitempty"`
	AuthorName     string                     `json:"author_name,omitempty"`
	Color          string                     `json:"color,omitempty"`
	Fallback       string                     `json:"fallback,omitempty"`
	Fields         []*MessageAttachmentField  `json:"fields,omitempty"`
	Footer         string                     `json:"footer,omitempty"`
	FooterIcon     string                     `json:"footer_icon,omitempty"`
	ImageURL       string                     `json:"image_url,omitempty"`
	MarkdownIn     []string                   `json:"mrkdwn_in,omitempty"`
	Pretext        string                     `json:"pretext,omitempty"`
	Text           string                     `json:"text,omitempty"`
	ThumbURL       string                     `json:"thumb_url,omitempty"`
	Title          string                     `json:"title,omitempty"`
	TitleLink      string                     `json:"title_link,omitempty"`
	Timestamp      int                        `json:"ts"`
	CallbackId     string                     `json:"callback_id"`
	AttachmentType string                     `json:"attachment_type"`
	Actions        []*MessageAttachmentAction `json:"actions"`
}

https://api.slack.com/docs/attachments

{
    "fallback": "Required plain-text summary of the attachment.",
    "color": "#36a64f",
    "pretext": "Optional text that appears above the attachment block",
    "author_name": "Bobby Tables",
    "author_link": "http://flickr.com/bobby/",
    "author_icon": "http://flickr.com/icons/bobby.jpg",
    "title": "Slack API Documentation",
    "title_link": "https://api.slack.com/",
    "text": "Optional text that appears within the attachment",
    "fields": [
        {
            "title": "Priority",
            "value": "High",
            "short": false
        }
    ],
    "image_url": "http://my-website.com/path/to/image.jpg",
    "thumb_url": "http://example.com/path/to/thumb.png",
    "footer": "Slack API",
    "footer_icon": "https://platform.slack-edge.com/img/default_application_icon.png",
    "ts": 123456789
}

type MessageAttachmentAction

type MessageAttachmentAction struct {
	Name    string `json:"name,omitempty"`
	Text    string `json:"text,omitempty"`
	Style   string `json:"style,omitempty"`
	Type    string `json:"type,omitempty"`
	Value   string `json:"value,omitempty"`
	Confirm *MessageAttachmentActionConfirm
}

adding for button support

type MessageAttachmentActionConfirm

type MessageAttachmentActionConfirm struct {
	Title       string `json:"title,omitempty"`
	Text        string `json:"text,omitempty"`
	OkText      string `json:"ok_text,omitempty"`
	DismissText string `json:"dismiss_text,omitempty"`
}

type MessageAttachmentField

type MessageAttachmentField struct {
	Short bool   `json:"short"`
	Title string `json:"title,omitempty"`
	Value string `json:"value,omitempty"`
}

type MessageEvent

type MessageEvent struct {
	Type      string   `json:"type"`
	Channel   string   `json:"channel"`
	User      string   `json:"user"`
	Text      string   `json:"text"`
	Timestamp Time     `json:"ts"`
	IsStarred bool     `json:"is_starred"`
	PinnedTo  []string `json:"pinned_to"`
	Reactions []struct {
		Count int      `json:"count"`
		Name  string   `json:"name"`
		Users []string `json:"users"`
	} `json:"reactions"`
	Edited struct {
		User      string `json:"user"`
		Timestamp Time   `json:"ts"`
	}
}

https://api.slack.com/events/message

{
    "type": "message",
    "channel": "C2147483705",
    "user": "U2147483697",
    "text": "Hello world",
    "ts": "1355517523.000005"
    "is_starred": true,
    "pinned_to": ["C024BE7LT"],
    "reactions": [
        {
            "name": "astonished",
            "count": 3,
            "users": [ "U1", "U2", "U3" ]
        },
        {
            "name": "facepalm",
            "count": 1034,
            "users": [ "U1", "U2", "U3", "U4", "U5" ]
        }
    ],
    "edited": {
        "user": "U2147483697",
        "ts": "1355517536.000001"
    }
}

type MessageSubtypeBotMessageEvent

type MessageSubtypeBotMessageEvent struct {
	Type      string            `json:"type"`
	Subtype   string            `json:"subtype"`
	Timestamp Time              `json:"ts"`
	Text      string            `json:"text"`
	BotID     string            `json:"bot_id"`
	Username  string            `json:"username"`
	Icons     map[string]string `json:"icons"`
}

https://api.slack.com/events/message/bot_message

{
    "type": "message",
    "subtype": "bot_message",
    "ts": "1358877455.000010",
    "text": "Pushing is the answer",
    "bot_id": "BB12033",
    "username": "github",
    "icons": {}
}

type MessageSubtypeChannelArchiveEvent

type MessageSubtypeChannelArchiveEvent struct {
	Type      string   `json:"type"`
	Subtype   string   `json:"subtype"`
	Timestamp Time     `json:"ts"`
	Text      string   `json:"text"`
	User      string   `json:"user"`
	Members   []string `json:"members"`
}

https://api.slack.com/events/message/channel_archive

{
    "type": "message",
    "subtype": "channel_archive",
    "ts": "1361482916.000003",
    "text": "<U1234|@cal> archived the channel",
    "user": "U1234",
    "members": ["U1234", "U5678"]
}

type MessageSubtypeChannelJoinEvent

type MessageSubtypeChannelJoinEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/channel_join

{
    "type": "message",
    "subtype": "channel_join",
    "ts": "1358877458.000011",
    "user": "U2147483828",
    "text": "<@U2147483828|cal> has joined the channel"
}

type MessageSubtypeChannelLeaveEvent

type MessageSubtypeChannelLeaveEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/channel_leave

{
    "type": "message",
    "subtype": "channel_leave",
    "ts": "1358877455.000010",
    "user": "U2147483828",
    "text": "<@U2147483828|cal> has left the channel"
}

type MessageSubtypeChannelNameEvent

type MessageSubtypeChannelNameEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	OldName   string `json:"old_name"`
	NewName   string `json:"name"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/channel_name

{
    "type": "message",
    "subtype": "channel_name",
    "ts": "1358877455.000010",
    "user": "U2147483828",
    "old_name": "random",
    "name": "watercooler",
    "text": "<@U2147483828|cal> has renamed the channek from \"random\" to \"watercooler\""
}

type MessageSubtypeChannelPurposeEvent

type MessageSubtypeChannelPurposeEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Purpose   string `json:"purpose"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/channel_purpose

{
    "type": "message",
    "subtype": "channel_purpose",
    "ts": "1358877455.000010",
    "user": "U2147483828",
    "purpose": "whatever",
    "text": "<@U2147483828|cal> set the channel purpose: whatever"
}

type MessageSubtypeChannelTopicEvent

type MessageSubtypeChannelTopicEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Topic     string `json:"topic"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/channel_topic

{
    "type": "message",
    "subtype": "channel_topic",
    "ts": "1358877455.000010",
    "user": "U2147483828",
    "topic": "hello world",
    "text": "<@U2147483828|cal> set the channel topic: hello world"
}

type MessageSubtypeChannelUnarchiveEvent

type MessageSubtypeChannelUnarchiveEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	Text      string `json:"text"`
	User      string `json:"user"`
}

https://api.slack.com/events/message/channel_unarchive

{
    "type": "message",
    "subtype": "channel_unarchive",
    "ts": "1361482916.000003",
    "text": "<U1234|@cal> un-archived the channel",
    "user": "U1234"
}

type MessageSubtypeFileCommentEvent

type MessageSubtypeFileCommentEvent struct {
	Type      string   `json:"type"`
	Subtype   string   `json:"subtype"`
	Timestamp Time     `json:"ts"`
	Text      string   `json:"text"`
	File      *File    `json:"file"`
	Comment   *Comment `json:"comment"`
}

https://api.slack.com/events/message/file_comment

{
    "type": "message",
    "subtype": "file_comment",
    "ts": "1361482916.000003",
    "text": "<@cal> commented on a file: ...",
    "file": {},
    "comment": {}
}

type MessageSubtypeFileMentionEvent

type MessageSubtypeFileMentionEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	Text      string `json:"text"`
	File      *File  `json:"file"`
	User      string `json:"user"`
}

https://api.slack.com/events/message/file_mention

 {
    "type": "message",
    "subtype": "file_mention",
    "ts": "1358877455.000010",
    "text": "<@cal> mentioned a file: <https:...7.png|7.png>",
    "file": {},
    "user": "U2147483697"
}

type MessageSubtypeFileShareEvent

type MessageSubtypeFileShareEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	Text      string `json:"text"`
	File      *File  `json:"file"`
	User      string `json:"user"`
	Upload    bool   `json:"upload"`
}

https://api.slack.com/events/message/file_share

 {
    "type": "message",
    "subtype": "file_share",
    "ts": "1358877455.000010",
    "text": "<@cal> uploaded a file: <https:...7.png|7.png>",
    "file": {},
    "user": "U2147483697",
    "upload": true
}

type MessageSubtypeGroupArchiveEvent

type MessageSubtypeGroupArchiveEvent struct {
	Type      string   `json:"type"`
	Subtype   string   `json:"subtype"`
	Timestamp Time     `json:"ts"`
	Text      string   `json:"text"`
	User      string   `json:"user"`
	Members   []string `json:"members"`
}

https://api.slack.com/events/message/group_archive

 {
    "type": "message",
    "subtype": "group_archive",
    "ts": "1361482916.000003",
    "text": "<U1234|@cal> archived the group",
    "user": "U1234",
    "members": ["U1234", "U5678"]
}

type MessageSubtypeGroupJoinEvent

type MessageSubtypeGroupJoinEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/group_join

{
    "type": "message",
    "subtype": "group_join",
    "ts": "1358877458.000011",
    "user": "U2147483828",
    "text": "<@U2147483828|cal> has joined the group"
}

type MessageSubtypeGroupLeaveEvent

type MessageSubtypeGroupLeaveEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/group_leave

{
    "type": "message",
    "subtype": "group_leave",
    "ts": "1358877455.000010",
    "user": "U2147483828",
    "text": "<@U2147483828|cal> has left the group"
}

type MessageSubtypeGroupNameEvent

type MessageSubtypeGroupNameEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	OldName   string `json:"old_name"`
	NewName   string `json:"name"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/group_name

{
    "type": "message",
    "subtype": "group_name",
    "ts": "1358877455.000010",
    "user": "U2147483828",
    "old_name": "random",
    "name": "watercooler",
    "text": "<@U2147483828|cal> has renamed the group from \"random\" to \"watercooler\""
}

type MessageSubtypeGroupPurposeEvent

type MessageSubtypeGroupPurposeEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Purpose   string `json:"purpose"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/group_purpose

{
    "type": "message",
    "subtype": "group_purpose",
    "ts": "1358877455.000010",
    "user": "U2147483828",
    "purpose": "whatever",
    "text": "<@U2147483828|cal> set the group purpose: whatever"
}

type MessageSubtypeGroupTopicEvent

type MessageSubtypeGroupTopicEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Topic     string `json:"topic"`
	Text      string `json:"text"`
}

https://api.slack.com/events/message/group_topic

{
    "type": "message",
    "subtype": "group_topic",
    "ts": "1358877455.000010",
    "user": "U2147483828",
    "topic": "hello world",
    "text": "<@U2147483828|cal> set the group topic: hello world"
}

type MessageSubtypeGroupUnarchiveEvent

type MessageSubtypeGroupUnarchiveEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Timestamp Time   `json:"ts"`
	Text      string `json:"text"`
	User      string `json:"user"`
}

https://api.slack.com/events/message/group_unarchive

{
    "type": "message",
    "subtype": "group_unarchive",
    "ts": "1361482916.000003",
    "text": "<U1234|@cal> un-archived the group",
    "user": "U1234"
}

type MessageSubtypeMeMessageEvent

type MessageSubtypeMeMessageEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Channel   string `json:"channel"`
	User      string `json:"user"`
	Text      string `json:"text"`
	Timestamp Time   `json:"ts"`
}

https://api.slack.com/events/message/me_message

{
    "type": "message",
    "subtype": "me_message",
    "channel": "C2147483705",
    "user": "U2147483697",
    "text": "is doing that thing",
    "ts": "1355517523.000005"
}

type MessageSubtypeMessageChangedEvent

type MessageSubtypeMessageChangedEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	Hidden    bool   `json:"hidden"`
	Channel   string `json:"channel"`
	Timestamp Time   `json:"ts"`
	Message   struct {
		Type      string `json:"type"`
		User      string `json:"user"`
		Text      string `json:"text"`
		Timestamp Time   `json:"ts"`
		Edited    struct {
			Timestamp Time   `json:"ts"`
			User      string `json:"user"`
		} `json:"edited"`
	} `json:"message"`
}

https://api.slack.com/events/message/message_changed

{
    "type": "message",
    "subtype": "message_changed",
    "hidden": true,
    "channel": "C2147483705",
    "ts": "1358878755.000001",
    "message": {
        "type": "message",
        "user": "U2147483697",
        "text": "Hello, world!",
        "ts": "1355517523.000005",
        "edited": {
            "user": "U2147483697",
            "ts": "1358878755.000001"
        }
    }
}

type MessageSubtypeMessageDeletedEvent

type MessageSubtypeMessageDeletedEvent struct {
	Type             string `json:"type"`
	Subtype          string `json:"subtype"`
	Hidden           bool   `json:"hidden"`
	Channel          string `json:"channel"`
	Timestamp        Time   `json:"ts"`
	DeletedTimestamp Time   `json:"deleted_ts"`
}

https://api.slack.com/events/message/message_deleted

{
    "type": "message",
    "subtype": "message_deleted",
    "hidden": true,
    "channel": "C2147483705",
    "ts": "1358878755.000001",
    "deleted_ts": "1358878749.000002"
}

type MessageSubtypePinnedItemEvent

type MessageSubtypePinnedItemEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	User      string `json:"user"`
	ItemType  string `json:"item_type"`
	Text      string `json:"text"`
	Item      *Item  `json:"item"`
	Channel   string `json:"channel"`
	Timestamp Time   `json:"ts"`
}

https://api.slack.com/events/message/pinned_item

 {
    "type": "message",
    "subtype": "pinned_item",
    "user": "U024BE7LH",
    "item_type": "F",
    "text": "<@U024BE7LH|cal> pinned their Image <https:...7.png|7.png> to this channel.",
    "item": {},
    "channel": "C02ELGNBH",
    "ts": "1360782804.083113"
}

type MessageSubtypeUnpinnedItemEvent

type MessageSubtypeUnpinnedItemEvent struct {
	Type      string `json:"type"`
	Subtype   string `json:"subtype"`
	User      string `json:"user"`
	ItemType  string `json:"item_type"`
	Text      string `json:"text"`
	Item      *Item  `json:"item"`
	Channel   string `json:"channel"`
	Timestamp Time   `json:"ts"`
}

https://api.slack.com/events/message/unpinned_item

 {
    "type": "message",
    "subtype": "unpinned_item",
    "user": "USLACKBOT",
    "item_type": "G",
    "text": "<@U024BE7LH|cal> unpinned the message you pinned to the secretplans group.",
    "item": {},
    "channel": "G024BE91L",
    "ts": "1360782804.083113"
}

type Method

type Method string
const (
	ApiTestMethod               Method = `api.test`
	AuthTestMethod              Method = `auth.test`
	ChannelsArchiveMethod       Method = `channels.archive`
	ChannelsCreateMethod        Method = `channels.create`
	ChannelsHistoryMethod       Method = `channels.history`
	ChannelsInfoMethod          Method = `channels.info`
	ChannelsInviteMethod        Method = `channels.invite`
	ChannelsJoinMethod          Method = `channels.join`
	ChannelsKickMethod          Method = `channels.kick`
	ChannelsLeaveMethod         Method = `channels.leave`
	ChannelsListMethod          Method = `channels.list`
	ChannelsMarkMethod          Method = `channels.mark`
	ChannelsRenameMethod        Method = `channels.rename`
	ChannelsSetPurposeMethod    Method = `channels.setPurpose`
	ChannelsSetTopicMethod      Method = `channels.setTopic`
	ChannelsUnarchiveMethod     Method = `channels.unarchive`
	ChatDeleteMethod            Method = `chat.delete`
	ChatPostMessageMethod       Method = `chat.postMessage`
	ChatUpdateMethod            Method = `chat.update`
	DndEndDndMethod             Method = `dnd.endDnd`
	DndEndSnoozeMethod          Method = `dnd.endSnooze`
	DndInfoMethod               Method = `dnd.info`
	DndSetSnoozeMethod          Method = `dnd.setSnooze`
	DndTeamInfoMethod           Method = `dnd.teamInfo`
	EmojiListMethod             Method = `emoji.list`
	FilesCommentsAddMethod      Method = `files.comments.add`
	FilesCommentsDeleteMethod   Method = `files.comments.delete`
	FilesCommentsEditMethod     Method = `files.comments.edit`
	FilesDeleteMethod           Method = `files.delete`
	FilesInfoMethod             Method = `files.info`
	FilesListMethod             Method = `files.list`
	FilesUploadMethod           Method = `files.upload`
	GroupsArchiveMethod         Method = `groups.archive`
	GroupsCloseMethod           Method = `groups.close`
	GroupsCreateMethod          Method = `groups.create`
	GroupsCreateChildMethod     Method = `groups.createChild`
	GroupsHistoryMethod         Method = `groups.history`
	GroupsInfoMethod            Method = `groups.info`
	GroupsInviteMethod          Method = `groups.invite`
	GroupsKickMethod            Method = `groups.kick`
	GroupsLeaveMethod           Method = `groups.leave`
	GroupsListMethod            Method = `groups.list`
	GroupsMarkMethod            Method = `groups.mark`
	GroupsOpenMethod            Method = `groups.open`
	GroupsRenameMethod          Method = `groups.rename`
	GroupsSetPurposeMethod      Method = `groups.setPurpose`
	GroupsSetTopicMethod        Method = `groups.setTopic`
	GroupsUnarchiveMethod       Method = `groups.unarchive`
	ImCloseMethod               Method = `im.close`
	ImHistoryMethod             Method = `im.history`
	ImListMethod                Method = `im.list`
	ImMarkMethod                Method = `im.mark`
	ImOpenMethod                Method = `im.open`
	MpimCloseMethod             Method = `mpim.close`
	MpimHistoryMethod           Method = `mpim.history`
	MpimListMethod              Method = `mpim.list`
	MpimMarkMethod              Method = `mpim.mark`
	MpimOpenMethod              Method = `mpim.open`
	OauthAccessMethod           Method = `oauth.access`
	PinsAddMethod               Method = `pins.add`
	PinsListMethod              Method = `pins.list`
	PinsRemoveMethod            Method = `pins.remove`
	ReactionsAddMethod          Method = `reactions.add`
	ReactionsGetMethod          Method = `reactions.get`
	ReactionsListMethod         Method = `reactions.list`
	ReactionsRemoveMethod       Method = `reactions.remove`
	RTMStartMethod              Method = `rtm.start`
	SearchAllMethod             Method = `search.all`
	SearchFilesMethod           Method = `search.files`
	SearchMessagesMethod        Method = `search.messages`
	StarsAddMethod              Method = `stars.add`
	StarsListMethod             Method = `stars.list`
	StarsRemoveMethod           Method = `stars.remove`
	TeamAccessLogsMethod        Method = `team.accessLogs`
	TeamInfoMethod              Method = `team.info`
	TeamIntegrationLogsMethod   Method = `team.integrationLogs`
	UsergroupsCreateMethod      Method = `usergroups.create`
	UsergroupsDisableMethod     Method = `usergroups.disable`
	UsergroupsEnableMethod      Method = `usergroups.enable`
	UsergroupsListMethod        Method = `usergroups.list`
	UsergroupsUpdateMethod      Method = `usergroups.update`
	UsergroupsUsersListMethod   Method = `usergroups.users.list`
	UsergroupsUsersUpdateMethod Method = `usergroups.users.update`
	UsersGetPresenceMethod      Method = `users.getPresence`
	UsersInfoMethod             Method = `users.info`
	UsersListMethod             Method = `users.list`
	UsersSetActiveMethod        Method = `users.setActive`
	UsersSetPresenceMethod      Method = `users.setPresence`
)

type MpimCloseResponse

type MpimCloseResponse struct {
	OK            bool   `json:"ok"`
	Error         string `json:"error"`
	NOOP          bool   `json:"no_op"`
	AlreadyClosed bool   `json:"already_closed"`
}

https://api.slack.com/methods/mpim.close

{
    "ok": true
}
{
    "ok": true,
    "no_op": true,
    "already_closed": true
}

type MpimHistoryResponse

type MpimHistoryResponse struct {
	OK       bool       `json:"ok"`
	Error    string     `json:"error"`
	Latest   Time       `json:"latest"`
	Messages []*Message `json:"group"`
	HasMore  bool       `json:"has_more"`
}

https://api.slack.com/methods/mpim.history

{
    "ok": true,
    "latest": "1358547726.000003",
    "messages": [
        {
            "type": "message",
            "ts": "1358546515.000008",
            "user": "U2147483896",
            "text": "Hello"
        },
        {
            "type": "message",
            "ts": "1358546515.000007",
            "user": "U2147483896",
            "text": "World",
            "is_starred": true,
        },
        {
            "type": "something_else",
            "ts": "1358546515.000007",
            "wibblr": true
        }
    ],
    "has_more": false
}

type MpimListResponse

type MpimListResponse struct {
	OK     bool     `json:"ok"`
	Error  string   `json:"error"`
	Groups []*Group `json:"groups"`
}

https://api.slack.com/methods/mpim.list

{
    "ok": true,
    "groups": [
        {
            "id": "G024BE91L",
            "name": "dm-messaging-user-1",
            "created": 1360782804,
            "creator": "U024BE7LH",
            "is_archived": false,
            "is_mpim": true
            "members": [
                "U024BE7LH",
                "U1234567890",
                "U2345678901",
                "U3456789012"
            ],
            "topic": {
                "value": "Group messaging.",
                "creator": "U024BE7LH",
                "last_set": 1360782804
            },
            "purpose": {
                "value": "Group messaging with: @user @user_a @user_b @user_c",
                "creator": "U024BE7LH",
                "last_set": 1360782804
            }
        }
    ]
}

type MpimMarkResponse

type MpimMarkResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/mpim.mark

{
    "ok": true
}

type MpimOpenResponse

type MpimOpenResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Group *Group `json:"group"`
}

https://api.slack.com/methods/mpim.open

{
    "ok": true,
    "group": {
        "id": "G024BE91L",
        "name": "mpdm-user--user_a--user_b--user_c-1",
        "is_group": "true",
        "created": 1360782804,
        "creator": "U024BE7LH",
        "is_archived": false,
        "is_open": false,
        "is_mpim": true,
        "last_read": "0000000000.000000",
        "latest": null,
        "unread_count": 0,
        "unread_count_display": 0,
        "members": [
            "U024BE7LH",
            "U1234567890",
            "U2345678901",
            "U3456789012"
        ],
        "topic": {
            "value": "Group messaging.",
            "creator": "U024BE7LH",
            "last_set": 1360782804
        },
        "purpose": {
            "value": "Group messaging with: @user @user_a @user_b @user_c",
            "creator": "U024BE7LH",
            "last_set": 1360782804
        }
    }
}

type OauthAccessResponse

type OauthAccessResponse struct {
	AccessToken string `json:"access_token"`
	Scope       string `json:"scope"`
}

https://api.slack.com/methods/oauth.access

{
    "access_token": "xoxt-23984754863-2348975623103",
    "scope": "read"
}

type PinAddedEvent

type PinAddedEvent struct {
	Type           string `json:"type"`
	User           string `json:"user"`
	ChannelID      string `json:"channel_id"`
	EventTimestamp Time   `json:"event_ts"`
	Item           *Item  `json:"item"`
}

https://api.slack.com/events/pin_added

{
    "type": "pin_added",
    "user": "U024BE7LH",
    "channel_id": "C02ELGNBH",
    "item": {},
    "event_ts": "1360782804.083113"
}

type PinRemovedEvent

type PinRemovedEvent struct {
	Type           string `json:"type"`
	User           string `json:"user"`
	ChannelID      string `json:"channel_id"`
	Item           *Item  `json:"item"`
	HasPins        bool   `json:"has_pins"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/pin_removed

{
    "type": "pin_removed",
    "user": "U024BE7LH",
    "channel_id": "C02ELGNBH",
    "item": {},
    "has_pins": false,
    "event_ts": "1360782804.083113"
}

type PinsAddResponse

type PinsAddResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/pins.add

{
    "ok": true
}

type PinsListResponse

type PinsListResponse struct {
	OK    bool    `json:"ok"`
	Error string  `json:"error"`
	Items []*Item `json:"items"`
}

https://api.slack.com/methods/pins.list

{
    "ok": true,
    "items": [
        {
            "type": "message",
            "channel": "C2147483705",
            "message": {...},
        },
        {
            "type": "file",
            "file": { ... },
        }
        {
            "type": "file_comment",
            "file": { ... },
            "comment": { ... },
        }
    ]
}

type PinsRemoveResponse

type PinsRemoveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/pins.remove

{
    "ok": true
}

type PrefChangeEvent

type PrefChangeEvent struct {
	Type  string      `json:"type"`
	Name  string      `json:"name"`
	Value interface{} `json:"value"`
}

https://api.slack.com/events/pref_change

{
    "type": "pref_change",
    "name": "messages_theme",
    "value": "dense"
}

type Presence

type Presence string

func (*Presence) UnmarshallJSON

func (p *Presence) UnmarshallJSON(data []byte) error

type PresenceChangeEvent

type PresenceChangeEvent struct {
	Type     string   `json:"type"`
	User     string   `json:"user"`
	Presence Presence `json:"presence"`
}

https://api.slack.com/events/presence_change

{
    "type": "presence_change",
    "user": "U024BE7LH",
    "presence": "away"
}

type RTMClient

type RTMClient struct {
	Response *RTMStartResponse

	Events struct {
		AccountsChanged                chan *AccountsChangedEvent
		BotAdded                       chan *BotAddedEvent
		BotChanged                     chan *BotChangedEvent
		ChannelArchive                 chan *ChannelArchiveEvent
		ChannelCreated                 chan *ChannelCreatedEvent
		ChannelDeleted                 chan *ChannelDeletedEvent
		ChannelHistoryChanged          chan *ChannelHistoryChangedEvent
		ChannelJoined                  chan *ChannelJoinedEvent
		ChannelLeft                    chan *ChannelLeftEvent
		ChannelMarked                  chan *ChannelMarkedEvent
		ChannelRename                  chan *ChannelRenameEvent
		ChannelUnarchive               chan *ChannelUnarchiveEvent
		CommandsChanged                chan *CommandsChangedEvent
		DndUpdated                     chan *DndUpdatedEvent
		DndUpdatedUser                 chan *DndUpdatedUserEvent
		EmailDomainChanged             chan *EmailDomainChangedEvent
		EmojiChanged                   chan *EmojiChangedEvent
		FileChange                     chan *FileChangeEvent
		FileCommentAdded               chan *FileCommentAddedEvent
		FileCommentDeleted             chan *FileCommentDeletedEvent
		FileCommentEdited              chan *FileCommentEditedEvent
		FileCreated                    chan *FileCreatedEvent
		FileDeleted                    chan *FileDeletedEvent
		FilePrivate                    chan *FilePrivateEvent
		FilePublic                     chan *FilePublicEvent
		FileShared                     chan *FileSharedEvent
		FileUnshared                   chan *FileUnsharedEvent
		GroupArchive                   chan *GroupArchiveEvent
		GroupClose                     chan *GroupCloseEvent
		GroupHistoryChanged            chan *GroupHistoryChangedEvent
		GroupJoined                    chan *GroupJoinedEvent
		GroupLeft                      chan *GroupLeftEvent
		GroupMarked                    chan *GroupMarkedEvent
		GroupOpen                      chan *GroupOpenEvent
		GroupRename                    chan *GroupRenameEvent
		GroupUnarchive                 chan *GroupUnarchiveEvent
		Hello                          chan *HelloEvent
		ImClose                        chan *ImCloseEvent
		ImCreated                      chan *ImCreatedEvent
		ImHistoryChanged               chan *ImHistoryChangedEvent
		ImMarked                       chan *ImMarkedEvent
		ImOpen                         chan *ImOpenEvent
		ManualPresenceChange           chan *ManualPresenceChangeEvent
		Message                        chan *MessageEvent
		PinAdded                       chan *PinAddedEvent
		PinRemoved                     chan *PinRemovedEvent
		PrefChange                     chan *PrefChangeEvent
		PresenceChange                 chan *PresenceChangeEvent
		ReactionAdded                  chan *ReactionAddedEvent
		ReactionRemoved                chan *ReactionRemovedEvent
		ReconnectUrl                   chan *ReconnectUrlEvent
		StarAdded                      chan *StarAddedEvent
		StarRemoved                    chan *StarRemovedEvent
		SubteamCreated                 chan *SubteamCreatedEvent
		SubteamSelfAdded               chan *SubteamSelfAddedEvent
		SubteamSelfRemoved             chan *SubteamSelfRemovedEvent
		SubteamUpdated                 chan *SubteamUpdatedEvent
		TeamDomainChange               chan *TeamDomainChangeEvent
		TeamJoin                       chan *TeamJoinEvent
		TeamMigrationStarted           chan *TeamMigrationStartedEvent
		TeamPlanChange                 chan *TeamPlanChangeEvent
		TeamPrefChange                 chan *TeamPrefChangeEvent
		TeamProfileChange              chan *TeamProfileChangeEvent
		TeamProfileDelete              chan *TeamProfileDeleteEvent
		TeamProfileReorder             chan *TeamProfileReorderEvent
		TeamRename                     chan *TeamRenameEvent
		UserChange                     chan *UserChangeEvent
		UserTyping                     chan *UserTypingEvent
		MessageSubtypeBotMessage       chan *MessageSubtypeBotMessageEvent
		MessageSubtypeMeMessage        chan *MessageSubtypeMeMessageEvent
		MessageSubtypeMessageChanged   chan *MessageSubtypeMessageChangedEvent
		MessageSubtypeMessageDeleted   chan *MessageSubtypeMessageDeletedEvent
		MessageSubtypeChannelJoin      chan *MessageSubtypeChannelJoinEvent
		MessageSubtypeChannelLeave     chan *MessageSubtypeChannelLeaveEvent
		MessageSubtypeChannelTopic     chan *MessageSubtypeChannelTopicEvent
		MessageSubtypeChannelPurpose   chan *MessageSubtypeChannelPurposeEvent
		MessageSubtypeChannelName      chan *MessageSubtypeChannelNameEvent
		MessageSubtypeChannelArchive   chan *MessageSubtypeChannelArchiveEvent
		MessageSubtypeChannelUnarchive chan *MessageSubtypeChannelUnarchiveEvent
		MessageSubtypeGroupJoin        chan *MessageSubtypeGroupJoinEvent
		MessageSubtypeGroupLeave       chan *MessageSubtypeGroupLeaveEvent
		MessageSubtypeGroupTopic       chan *MessageSubtypeGroupTopicEvent
		MessageSubtypeGroupPurpose     chan *MessageSubtypeGroupPurposeEvent
		MessageSubtypeGroupName        chan *MessageSubtypeGroupNameEvent
		MessageSubtypeGroupArchive     chan *MessageSubtypeGroupArchiveEvent
		MessageSubtypeGroupUnarchive   chan *MessageSubtypeGroupUnarchiveEvent
		MessageSubtypeFileShare        chan *MessageSubtypeFileShareEvent
		MessageSubtypeFileComment      chan *MessageSubtypeFileCommentEvent
		MessageSubtypeFileMention      chan *MessageSubtypeFileMentionEvent
		MessageSubtypePinnedItem       chan *MessageSubtypePinnedItemEvent
		MessageSubtypeUnpinnedItem     chan *MessageSubtypeUnpinnedItemEvent
		Unrecognized                   chan UnrecognizedEvent
		Error                          chan error
	}
	// contains filtered or unexported fields
}

func (*RTMClient) Run

func (rtm *RTMClient) Run() (err error)

func (*RTMClient) Stop

func (rtm *RTMClient) Stop() error

type RTMStartResponse

type RTMStartResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	URL   string `json:"url"`
}

https://api.slack.com/methods/rtm.start

{
    "ok": true,
    "url": "wss:\/\/ms9.slack-msgs.com\/websocket\/7I5yBpcvk",
    "self": {
        "id": "U023BECGF",
        "name": "bobby",
        "prefs": {},
        "created": 1402463766,
        "manual_presence": "active"
    },
    "team": {
        "id": "T024BE7LD",
        "name": "Example Team",
        "email_domain": "",
        "domain": "example",
        "icon": {},
        "msg_edit_window_mins": -1,
        "over_storage_limit": false
        "prefs": {},
        "plan": "std"
    },
    "users": [ ],
    "channels": [ ],
    "groups": [ ],
    "mpims": [ ],
    "ims": [ ],
    "bots": [ ],
}

type ReactionAddedEvent

type ReactionAddedEvent struct {
	Type           string `json:"type"`
	User           string `json:"user"`
	Name           string `json:"name"`
	Item           *Item  `json:"item"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/reaction_added

{
    "type": "reaction_added",
    "user": "U024BE7LH",
    "name": "thumbsup",
    "item": {"a":"b"},
    "event_ts": "1360782804.083113"
}

type ReactionRemovedEvent

type ReactionRemovedEvent struct {
	Type           string            `json:"type"`
	User           string            `json:"user"`
	Name           string            `json:"name"`
	Item           map[string]string `json:"item"`
	EventTimestamp Time              `json:"event_ts"`
}

https://api.slack.com/events/reaction_removed

{
    "type": "reaction_removed",
    "user": "U024BE7LH",
    "name": "thumbsup",
    "item": {"a":"b"},
    "event_ts": "1360782804.083113"
}

type ReactionsAddResponse

type ReactionsAddResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/reactions.add

{
    "ok": true
}

type ReactionsGetResponse

type ReactionsGetResponse struct {
	OK      bool     `json:"ok"`
	Error   string   `json:"error"`
	Type    string   `json:"type"`
	Channel string   `json:"channel"`
	Message *Message `json:"message"`
}

https://api.slack.com/methods/reactions.get

{
    "type": "message",
    "channel": "C2147483705",
    "message": {
        ...
        "reactions": [
            {
                "name": "astonished",
                "count": 3,
                "users": [ "U1", "U2", "U3" ]
            },
            {
                "name": "clock1"
                "count": 2,
                "users": [ "U1", "U2", "U3" ]
            }
        ]
    },
},

type ReactionsListResponse

type ReactionsListResponse struct {
	OK     bool    `json:"ok"`
	Error  string  `json:"error"`
	Items  []*Item `json:"items"`
	Paging struct {
		Count int `json:"count"`
		Page  int `json:"page"`
		Pages int `json:"pages"`
		Total int `json:"total"`
	} `json:"paging"`
}

https://api.slack.com/methods/reactions.list

{
    "ok": true,
    "items": [
        {
            "type": "message",
            "channel": "C2147483705",
            "message": {
                ...
                "reactions": [
                    {
                        "name": "astonished",
                        "count": 3,
                        "users": [ "U1", "U2", "U3" ]
                    },
                    {
                        "name": "clock1"
                        "count": 2,
                        "users": [ "U1", "U2", "U3" ]
                    }
                ]
            },
        },
        {
            "type": "file",
            "file": { ... },
            "reactions": [
                {
                    "name": "thumbsup",
                    "count": 1,
                    "users": [ "U1" ]
                }
            ]
        }
        {
            "type": "file_comment",
            "file": { ... },
            "comment": { ... },
            "reactions": [
                {
                    "name": "facepalm",
                    "count": 1034,
                    "users": [ "U1", "U2", "U3", "U4", "U5" ]
                }
            ]
        }
    ],
    "paging": {
        "count": 100,
        "total": 4,
        "page": 1,
        "pages": 1
    }
}

type ReactionsRemoveResponse

type ReactionsRemoveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/reactions.remove

{
    "ok": true
}

type ReconnectUrlEvent

type ReconnectUrlEvent struct {
	Type string `json:"type"`
}

https://api.slack.com/events/reconnect_url

{
    "type": "reconnect_url"
}

type ResultMessage

type ResultMessage struct {
	Type    string `json:"type"`
	Channel struct {
		ID   string `json:"id"`
		Name string `json:"name"`
	} `json:"channel"`
	Next struct {
		Text      string `json:"text"`
		Timestamp Time   `json:"ts"`
		Type      string `json:"type"`
		User      string `json:"user"`
		Username  string `json:"username"`
	} `json:"next"`
	Next2 struct {
		Text      string `json:"text"`
		Timestamp Time   `json:"ts"`
		Type      string `json:"type"`
		User      string `json:"user"`
		Username  string `json:"username"`
	} `json:"next_2"`
	Permalink string `json:"permalink"`
	Previous  struct {
		Text      string `json:"text"`
		Timestamp Time   `json:"ts"`
		Type      string `json:"type"`
		User      string `json:"user"`
		Username  string `json:"username"`
	} `json:"previous"`
	Previous2 struct {
		Text      string `json:"text"`
		Timestamp Time   `json:"ts"`
		Type      string `json:"type"`
		User      string `json:"user"`
		Username  string `json:"username"`
	} `json:"previous_2"`
	Text      string `json:"text"`
	Timestamp Time   `json:"ts"`
	User      string `json:"user"`
	Username  string `json:"username"`
}

type SearchAllResponse

type SearchAllResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Query string `json:"query"`
	Files struct {
		Matches []*File `json:"matches"`
		Paging  struct {
			Count int `json:"count"`
			Page  int `json:"page"`
			Pages int `json:"pages"`
			Total int `json:"total"`
		} `json:"paging"`
	} `json:"files"`
	Messages struct {
		Matches []*Message `json:"matches"`
		Paging  struct {
			Count int `json:"count"`
			Page  int `json:"page"`
			Pages int `json:"pages"`
			Total int `json:"total"`
		} `json:"paging"`
	} `json:"messages"`
}

https://api.slack.com/methods/search.all

{
    "ok": true,
    "query": "Best Pickles",
    "messages": {...},
    "files": {...}
}
{
    "matches": [],
    "paging": {
        "count": 100,  - number of records per page
        "total": 15,   - total records matching query
        "page": 1,     - page of records returned
        "pages": 1     - total pages matching query
    }
}

type SearchFilesResponse

type SearchFilesResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Query string `json:"query"`
	Files struct {
		Total  int `json:"total"`
		Paging struct {
			Count int `json:"count"`
			Page  int `json:"page"`
			Pages int `json:"pages"`
			Total int `json:"total"`
		} `json:"paging"`
		Matches []*File `json:"matches"`
	} `json:"files"`
}

https://api.slack.com/methods/search.files

{
    "ok": true,
    "query": "test",
    "files": {
        "total": 829,
        "paging": {
            "count": 20,
            "total": 829,
            "page": 1,
            "pages": 42
        },
        "matches": [
            {...},
            {...},
            {...}
        ]
    }
}

type SearchMessagesResponse

type SearchMessagesResponse struct {
	OK       bool   `json:"ok"`
	Error    string `json:"error"`
	Query    string `json:"query"`
	Messages struct {
		Total  int `json:"total"`
		Paging struct {
			Count int `json:"count"`
			Page  int `json:"page"`
			Pages int `json:"pages"`
			Total int `json:"total"`
		} `json:"paging"`
		Matches []*ResultMessage `json:"matches"`
	} `json:"messages"`
}

https://api.slack.com/methods/search.messages

{
    "ok": true,
    "query": "test",
    "messages": {
        "total": 829,
        "paging": {
            "count": 20,
            "total": 829,
            "page": 1,
            "pages": 42
        },
        "matches": [
            {...},
            {...},
            {...}
        ]
    }
}
{
    "type": "message",
    "channel": {
        "id": "C2147483753",
        "name": "foo"
    },
    "user": "U2147483709",
    "username": "johnnytest",
    "ts": "1359414002.000003",
    "text": "mention test: johnnyrodgers".
    "permalink": "https:\/\/example.slack.com\/channels\/foo\/p1359414002000003",
    "previous_2": {
        "user": "U2147483709",
        "username": "johnnytest",
        "text": "This was said before before",
        "ts": "1359413987.000000",
        "type": "message"
    },
    "previous": {
        "user": "U2147483709",
        "username": "johnnytest",
        "text": "This was said before",
        "ts": "1359414001.000000",
        "type": "message"
    },
    "next": {
        "user": "U2147483709",
        "username": "johnnytest",
        "text": "This was said after",
        "ts": "1359414020.000000",
        "type": "message"
    },
    "next_2": {
        "user": "U2147483709",
        "username": "johnnytest",
        "text": "This was said after after",
        "ts": "1359414021.000000",
        "type": "message"
    }
}

type StarAddedEvent

type StarAddedEvent struct {
	Type           string `json:"type"`
	User           string `json:"user"`
	Item           *Item  `json:"item"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/star_added

{
    "type": "star_added",
    "user": "U024BE7LH",
    "item": {},
    "event_ts": "1360782804.083113"
}

type StarRemovedEvent

type StarRemovedEvent struct {
	Type           string `json:"type"`
	User           string `json:"user"`
	Item           *Item  `json:"item"`
	EventTimestamp Time   `json:"event_ts"`
}

https://api.slack.com/events/star_removed

{
    "type": "star_removed",
    "user": "U024BE7LH",
    "item": {},
    "event_ts": "1360782804.083113"
}

type StarsAddResponse

type StarsAddResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/stars.add

{
    "ok": true
}

type StarsListResponse

type StarsListResponse struct {
	OK     bool    `json:"ok"`
	Error  string  `json:"error"`
	Items  []*Item `json:"items"`
	Paging struct {
		Count int `json:"count"`
		Page  int `json:"page"`
		Pages int `json:"pages"`
		Total int `json:"total"`
	} `json:"paging"`
}

https://api.slack.com/methods/stars.list

{
    "ok": true,
    "items": [
        {
            "type": "message",
            "channel": "C2147483705",
            "message": {...}
        },
        {
            "type": "file",
            "file": { ... }
        }
        {
            "type": "file_comment",
            "file": { ... },
            "comment": { ... }
        }
        {
            "type": "channel",
            "channel": "C2147483705"
        }
    ],
    "paging": {
        "count": 100,
        "total": 4,
        "page": 1,
        "pages": 1
    }
}

type StarsRemoveResponse

type StarsRemoveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/stars.remove

{
    "ok": true
}

type SubteamCreatedEvent

type SubteamCreatedEvent struct {
	Type    string `json:"type"`
	Subteam struct {
		ID          string                 `json:"id"`
		TeamID      string                 `json:"team_id"`
		IsUsergroup bool                   `json:"is_usergroup"`
		Name        string                 `json:"name"`
		Description string                 `json:"description"`
		Handle      string                 `json:"handle"`
		IsExternal  bool                   `json:"is_external"`
		DateCreated Time                   `json:"date_create"`
		DateUpdated Time                   `json:"date_update"`
		DateDeleted Time                   `json:"date_delete"`
		AutoType    string                 `json:"auto_type"`
		CreatedBy   string                 `json:"created_by"`
		UpdatedBy   string                 `json:"updated_by"`
		DeletedBy   string                 `json:"deleted_by"`
		Prefs       map[string]interface{} `json:"prefs"`
		UserCount   int                    `json:"user_count"`
	} `json:"subteam"`
}
            ]
        },
        "user_count": "0"
    }
}

type SubteamSelfAddedEvent

type SubteamSelfAddedEvent struct {
	Type      string `json:"type"`
	SubteamID string `json:"subteam_id"`
}

https://api.slack.com/events/subteam_self_added

{
    "type": "subteam_self_added",
    "subteam_id": "S0615G0KT"
}

type SubteamSelfRemovedEvent

type SubteamSelfRemovedEvent struct {
	Type      string `json:"type"`
	SubteamID string `json:"subteam_id"`
}

https://api.slack.com/events/subteam_self_removed

{
    "type": "subteam_self_removed",
    "subteam_id": "S0615G0KT"
}

type SubteamUpdatedEvent

type SubteamUpdatedEvent struct {
	Type    string `json:"type"`
	Subteam struct {
		ID          string                 `json:"id"`
		TeamID      string                 `json:"team_id"`
		IsUsergroup bool                   `json:"is_usergroup"`
		Name        string                 `json:"name"`
		Description string                 `json:"description"`
		Handle      string                 `json:"handle"`
		IsExternal  bool                   `json:"is_external"`
		DateCreated Time                   `json:"date_create"`
		DateUpdated Time                   `json:"date_update"`
		DateDeleted Time                   `json:"date_delete"`
		AutoType    string                 `json:"auto_type"`
		CreatedBy   string                 `json:"created_by"`
		UpdatedBy   string                 `json:"updated_by"`
		DeletedBy   string                 `json:"deleted_by"`
		Prefs       map[string]interface{} `json:"prefs"`
		UserCount   int                    `json:"user_count"`
		Users       []string               `json:"users"`
	} `json:"subteam"`
}
           ]
       },
       "users": [
           "U060RNRCZ",
           "U060ULRC0",
           "U06129G2V",
           "U061309JM"
       ],
       "user_count": "4"
    }
}

type Team

type Team struct {
	ID          string `json:"id"`
	Domain      string `json:"domain"`
	EmailDomain string `json:"email_domain"`
	Icon        struct {
		Image102     string `json:"image_102"`
		Image132     string `json:"image_132"`
		Image34      string `json:"image_34"`
		Image44      string `json:"image_44"`
		Image68      string `json:"image_68"`
		Image88      string `json:"image_88"`
		ImageDefault bool   `json:"image_default"`
	} `json:"icon"`
	MsgEditWindow    Duration               `json:"msg_edit_window_mins"`
	Name             string                 `json:"name"`
	OverStorageLimit bool                   `json:"over_storage_limit"`
	Plan             string                 `json:"plan"`
	Prefs            map[string]interface{} `json:"prefs"`
}

type TeamAccessLogsResponse

type TeamAccessLogsResponse struct {
	OK     bool     `json:"ok"`
	Error  string   `json:"error"`
	Logins []*Login `json:"logins"`
	Paging struct {
		Count int `json:"count"`
		Page  int `json:"page"`
		Pages int `json:"pages"`
		Total int `json:"total"`
	} `json:"paging"`
}

https://api.slack.com/methods/team.accessLogs

{
    "ok": true,
    "logins": [
        {
            "user_id": "U12345",
            "username": "bob",
            "date_first": 1422922864,
            "date_last": 1422922864,
            "count": 1,
            "ip": "127.0.0.1",
            "user_agent": "SlackWeb Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.35 Safari\/537.36",
            "isp": "BigCo ISP",
            "country": "US",
            "region": "CA"
        },
        {
            "user_id": "U45678",
            "username": "alice",
            "date_first": 1422922493,
            "date_last": 1422922493,
            "count": 1,
            "ip": "127.0.0.1",
            "user_agent": "SlackWeb Mozilla\/5.0 (iPhone; CPU iPhone OS 8_1_3 like Mac OS X) AppleWebKit\/600.1.4 (KHTML, like Gecko) Version\/8.0 Mobile\/12B466 Safari\/600.1.4",
            "isp": "BigCo ISP",
            "country": "US",
            "region": "CA"
        },
    ],
    "paging": {
        "count": 100,
        "total": 2,
        "page": 1,
        "pages": 1
    }
}

type TeamDomainChangeEvent

type TeamDomainChangeEvent struct {
	Type   string `json:"type"`
	URL    string `json:"url"`
	Domain string `json:"domain"`
}

https://api.slack.com/events/team_domain_change

{
    "type": "team_domain_change",
    "url": "https://my.slack.com",
    "domain": "my"
}

type TeamInfoResponse

type TeamInfoResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	Team  *Team  `json:"team"`
}

https://api.slack.com/methods/team.info

{
    "ok": true,
    "team": {
        "id": "T12345",
        "name": "My Team",
        "domain": "example",
        "email_domain": "",
        "icon": {
            "image_34": "https:\/\/...",
            "image_44": "https:\/\/...",
            "image_68": "https:\/\/...",
            "image_88": "https:\/\/...",
            "image_102": "https:\/\/...",
            "image_132": "https:\/\/...",
            "image_default": true
        }
    }
}

type TeamIntegrationLogsResponse

type TeamIntegrationLogsResponse struct {
	OK     bool        `json:"ok"`
	Error  string      `json:"error"`
	Logs   []*LogEntry `json:"logins"`
	Paging struct {
		Count int `json:"count"`
		Page  int `json:"page"`
		Pages int `json:"pages"`
		Total int `json:"total"`
	} `json:"paging"`
}

https://api.slack.com/methods/team.integrationLogs

{
    "ok": true,
    "logs": [
        {
            "service_id": "1234567890",
            "service_type": "Google Calendar",
            "user_id": "U1234ABCD",
            "user_name": "Johnny",
            "channel": "C1234567890",
            "date": "1392163200",
            "change_type": "enabled",
            "scope": "incoming-webhook"
        },
        {
            "app_id": "2345678901",
            "app_type": "Johnny App"
            "user_id": "U2345BCDE",
            "user_name": "Billy",
            "date": "1392163201",
            "change_type": "added"
            "scope": "chat:write:user,channels:read"
        },
        {
            "service_id": "3456789012",
            "service_type": "Airbrake",
            "user_id": "U3456CDEF",
            "user_name": "Joey",
            "channel": "C1234567890",
            "date": "1392163202",
            "change_type": "disabled",
            "reason": "user",
            "scope": "incoming-webhook"
        },
        "paging": {
            "count": 3,
            "total": 3,
            "page": 1,
            "pages": 1
        }
    ]
}

type TeamJoinEvent

type TeamJoinEvent struct {
	Type string `json:"type"`
	User *User  `json:"user"`
}

https://api.slack.com/events/team_join

{
    "type": "team_join",
    "user": {}
}

type TeamMigrationStartedEvent

type TeamMigrationStartedEvent struct {
	Type string `json:"type"`
}

https://api.slack.com/events/team_migration_started

{
    "type": "team_migration_started"
}

type TeamPlanChangeEvent

type TeamPlanChangeEvent struct {
	Type string `json:"type"`
	Plan string `json:"plan"`
}

https://api.slack.com/events/team_plan_change

{
    "type": "team_plan_change",
    "plan": "std"
}

type TeamPrefChangeEvent

type TeamPrefChangeEvent struct {
	Type  string `json:"type"`
	Name  string `json:"name"`
	Value bool   `json:"value"`
}

https://api.slack.com/events/team_pref_change

{
    "type": "team_pref_change",
    "name": "slackbot_responses_only_admins",
    "value": true
}

type TeamProfileChangeEvent

type TeamProfileChangeEvent struct {
	Type    string `json:"type"`
	Profile struct {
		Fields []map[string]interface{} `json:"profile"`
	} `json:"profile"`
}

https://api.slack.com/events/team_profile_change

{
    "type": "team_profile_change",
    "profile": {
        "fields": [{"a":"b"}]
    }
}

type TeamProfileDeleteEvent

type TeamProfileDeleteEvent struct {
	Type    string `json:"type"`
	Profile struct {
		Fields []string `json:"fields"`
	} `json:"profile"`
}

https://api.slack.com/events/team_profile_delete

{
    "type": "team_profile_delete",
    "profile": {
        "fields": [ "Xf06054AAA"]
    }
}

type TeamProfileReorderEvent

type TeamProfileReorderEvent struct {
	Type    string `json:"type"`
	Profile struct {
		Fields []map[string]string `json:"profile"`
	} `json:"profile"`
}

https://api.slack.com/events/team_profile_reorder

{
    "type": "team_profile_reorder",
    "profile": {
        "fields": [{"a":"b"}]
    }
}

type TeamRenameEvent

type TeamRenameEvent struct {
	Type string `json:"type"`
	Name string `json:"name"`
}

https://api.slack.com/events/team_rename

{
    "type": "team_rename",
    "name": "New Team Name Inc."
}

type Time

type Time struct {
	time.Time
}

func NewTime

func NewTime(t time.Time) Time

func (Time) MarshalJSON

func (t Time) MarshalJSON() ([]byte, error)

func (Time) SlackString

func (t Time) SlackString() string

func (*Time) UnmarshalJSON

func (t *Time) UnmarshalJSON(data []byte) error

type UnrecognizedEvent

type UnrecognizedEvent map[string]interface{}

type User

type User struct {
	ID      string `json:"id"`
	Name    string `json:"name"`
	Deleted bool   `json:"deleted"`
	Color   string `json:"color"`
	Profile struct {
		FirstName string `json:"first_name"`
		LastName  string `json:"last_name"`
		RealName  string `json:"real_name"`
		Email     string `json:"email"`
		Phone     string `json:"phone"`
		Skype     string `json:"skype"`
		Image24   string `json:"image_24"`
		Image32   string `json:"image_32"`
		Image48   string `json:"image_48"`
		Image72   string `json:"image_72"`
		Image192  string `json:"image_192"`
	} `json:"profile"`
	IsAdmin           bool   `json:"is_admin"`
	IsOwner           bool   `json:"is_owner"`
	IsPrimaryOwner    bool   `json:"is_primary_owner"`
	IsRestricted      bool   `json:"is_restricted"`
	IsUltraRestricted bool   `json:"is_ultra_restricted"`
	Has2fa            bool   `json:"has_2fa"`
	TwoFactorType     string `json:"two_factor_type"`
	HasFiles          bool   `json:"has_files"`
}

https://api.slack.com/types/user

{
    "id": "U023BECGF",
    "name": "bobby",
    "deleted": false,
    "color": "9f69e7",
    "profile": {
        "first_name": "Bobby",
        "last_name": "Tables",
        "real_name": "Bobby Tables",
        "email": "bobby@slack.com",
        "skype": "my-skype-name",
        "phone": "+1 (123) 456 7890",
        "image_24": "https:\/\/...",
        "image_32": "https:\/\/...",
        "image_48": "https:\/\/...",
        "image_72": "https:\/\/...",
        "image_192": "https:\/\/..."
    },
    "is_admin": true,
    "is_owner": true,
    "is_primary_owner": true,
    "is_restricted": false,
    "is_ultra_restricted": false,
    "has_2fa": false,
    "two_factor_type": 'sms',
    "has_files": true
}

type UserChangeEvent

type UserChangeEvent struct {
	Type string `json:"type"`
	User *User  `json:"user"`
}

https://api.slack.com/events/user_change

{
    "type": "user_change",
    "user": {}
}

type UserGroup

type UserGroup struct {
	ID          string                 `json:"id"`
	TeamID      string                 `json:"team_id"`
	IsUsergroup bool                   `json:"is_usergroup"`
	Name        string                 `json:"name"`
	Description string                 `json:"description"`
	Handle      string                 `json:"handle"`
	IsExternal  bool                   `json:"is_external"`
	DateCreated Time                   `json:"date_create"`
	DateUpdated Time                   `json:"date_update"`
	DateDeleted Time                   `json:"date_delete"`
	AutoType    string                 `json:"auto_type"`
	CreatedBy   string                 `json:"created_by"`
	UpdatedBy   string                 `json:"updated_by"`
	DeletedBy   string                 `json:"deleted_by"`
	Prefs       map[string]interface{} `json:"prefs"`
	Users       []string               `json:"users"`
	UserCount   string                 `json:"user_count"`
}

https://api.slack.com/types/usergroup

{
    "id": "S0614TZR7",
    "team_id": "T060RNRCH",
    "is_usergroup": true,
    "name": "Team Admins",
    "description": "A group of all Administrators on your team.",
    "handle": "admins",
    "is_external": false,
    "date_create": 1446598059,
    "date_update": 1446670362,
    "date_delete": 0,
    "auto_type": "admin",
    "created_by": "USLACKBOT",
    "updated_by": "U060RNRCZ",
    "deleted_by": null,
    "prefs": {
        "channels": [],
        "groups": []
    },
    "users": [
        "U060RNRCZ",
        "U060ULRC0",
        "U06129G2V",
        "U061309JM"
    ],
    "user_count": "4"
}

type UserTypingEvent

type UserTypingEvent struct {
	Type    string `json:"type"`
	Channel string `json:"channel"`
	User    string `json:"user"`
}

https://api.slack.com/events/user_typing

{
    "type": "user_typing",
    "channel": "C02ELGNBH",
    "user": "U024BE7LH"
}

type UsergroupsCreateResponse

type UsergroupsCreateResponse struct {
	OK        bool       `json:"ok"`
	Error     string     `json:"error"`
	UserGroup *UserGroup `json:"user_group"`
}

https://api.slack.com/methods/usergroups.create

{
    "ok": true,
    "usergroup": {
        "id": "S0615G0KT",
        "team_id": "T060RNRCH",
        "is_usergroup": true,
        "name": "Marketing Team",
        "description": "Marketing gurus, PR experts and product advocates.",
        "handle": "marketing-team",
        "is_external": false,
        "date_create": 1446746793,
        "date_update": 1446746793,
        "date_delete": 0,
        "auto_type": null,
        "created_by": "U060RNRCZ",
        "updated_by": "U060RNRCZ",
        "deleted_by": null,
        "prefs": {
            "channels": [],
            "groups": []
        },
        "user_count": "0"
    }
}

type UsergroupsDisableResponse

type UsergroupsDisableResponse struct {
	OK        bool       `json:"ok"`
	Error     string     `json:"error"`
	UserGroup *UserGroup `json:"user_group"`
}

https://api.slack.com/methods/usergroups.disable

{
    "ok": true,
    "usergroup": {
        "id": "S0615G0KT",
        "team_id": "T060RNRCH",
        "is_usergroup": true,
        "name": "Marketing Team",
        "description": "Marketing gurus, PR experts and product advocates.",
        "handle": "marketing-team",
        "is_external": false,
        "date_create": 1446746793,
        "date_update": 1446747568,
        "date_delete": 1446747568,
        "auto_type": null,
        "created_by": "U060RNRCZ",
        "updated_by": "U060RNRCZ",
        "deleted_by": "U060RNRCZ",
        "prefs": {
            "channels": [],
            "groups": []
        },
        "user_count": "0"
    }
}

type UsergroupsEnableResponse

type UsergroupsEnableResponse struct {
	OK        bool       `json:"ok"`
	Error     string     `json:"error"`
	UserGroup *UserGroup `json:"user_group"`
}

https://api.slack.com/methods/usergroups.enable

{
    "ok": true,
    "usergroup": {
        "id": "S0615G0KT",
        "team_id": "T060RNRCH",
        "is_usergroup": true,
        "name": "Marketing Team",
        "description": "Marketing gurus, PR experts and product advocates.",
        "handle": "marketing-team",
        "is_external": false,
        "date_create": 1446746793,
        "date_update": 1446747767,
        "date_delete": 0,
        "auto_type": null,
        "created_by": "U060RNRCZ",
        "updated_by": "U060RNRCZ",
        "deleted_by": null,
        "prefs": {
            "channels": [],
            "groups": []
        },
        "user_count": "0"
    }
}

type UsergroupsListResponse

type UsergroupsListResponse struct {
	OK         bool         `json:"ok"`
	Error      string       `json:"error"`
	UserGroups []*UserGroup `json:"user_groups"`
}

https://api.slack.com/methods/usergroups.list

{
    "ok": true,
    "usergroups": [
        {
            "id": "S0614TZR7",
            "team_id": "T060RNRCH",
            "is_usergroup": true,
            "name": "Team Admins",
            "description": "A group of all Administrators on your team.",
            "handle": "admins",
            "is_external": false,
            "date_create": 1446598059,
            "date_update": 1446670362,
            "date_delete": 0,
            "auto_type": "admin",
            "created_by": "USLACKBOT",
            "updated_by": "U060RNRCZ",
            "deleted_by": null,
            "prefs": {
                "channels": [],
                "groups": []
            },
            "user_count": "2"
        },
        {
            "id": "S06158AV7",
            "team_id": "T060RNRCH",
            "is_usergroup": true,
            "name": "Team Owners",
            "description": "A group of all Owners on your team.",
            "handle": "owners",
            "is_external": false,
            "date_create": 1446678371,
            "date_update": 1446678371,
            "date_delete": 0,
            "auto_type": "owner",
            "created_by": "USLACKBOT",
            "updated_by": "USLACKBOT",
            "deleted_by": null,
            "prefs": {
                "channels": [],
                "groups": []
            },
            "user_count": "1"
        },
        {
            "id": "S0615G0KT",
            "team_id": "T060RNRCH",
            "is_usergroup": true,
            "name": "Marketing Team",
            "description": "Marketing gurus, PR experts and product advocates.",
            "handle": "marketing-team",
            "is_external": false,
            "date_create": 1446746793,
            "date_update": 1446747767,
            "date_delete": 1446748865,
            "auto_type": null,
            "created_by": "U060RNRCZ",
            "updated_by": "U060RNRCZ",
            "deleted_by": null,
            "prefs": {
                "channels": [],
                "groups": []
            },
            "user_count": "0"
        }
    ]
}

type UsergroupsUpdateResponse

type UsergroupsUpdateResponse struct {
	OK        bool       `json:"ok"`
	Error     string     `json:"error"`
	UserGroup *UserGroup `json:"user_group"`
}

https://api.slack.com/methods/usergroups.update

{
    "ok": true,
    "usergroup": {
        "id": "S0615G0KT",
        "team_id": "T060RNRCH",
        "is_usergroup": true,
        "name": "Marketing Gurus",
        "description": "Marketing gurus, PR experts and product advocates.",
        "handle": "marketing-team",
        "is_external": false,
        "date_create": 1446746793,
        "date_update": 1446748574,
        "date_delete": 0,
        "auto_type": null,
        "created_by": "U060RNRCZ",
        "updated_by": "U060RNRCZ",
        "deleted_by": null,
        "prefs": {
            "channels": [],
            "groups": []
        },
        "user_count": "0"
    }
}

type UsergroupsUsersListResponse

type UsergroupsUsersListResponse struct {
	OK    bool     `json:"ok"`
	Users []string `json:"users"`
}

https://api.slack.com/methods/usergroups.users.list

{
    "ok": true,
    "users": [
        "U060R4BJ4"
    ]
}

type UsergroupsUsersUpdateResponse

type UsergroupsUsersUpdateResponse struct {
	OK        bool       `json:"ok"`
	Error     string     `json:"error"`
	UserGroup *UserGroup `json:"user_group"`
}

https://api.slack.com/methods/usergroups.users.update

{
    "ok": true,
    "usergroup": {
        "id": "S0616NG6M",
        "team_id": "T060R4BHN",
        "is_usergroup": true,
        "name": "Marketing Team",
        "description": "Marketing gurus, PR experts and product advocates.",
        "handle": "marketing-team",
        "is_external": false,
        "date_create": 1447096577,
        "date_update": 1447102109,
        "date_delete": 0,
        "auto_type": null,
        "created_by": "U060R4BJ4",
        "updated_by": "U060R4BJ4",
        "deleted_by": null,
        "prefs": {
            "channels": [],
            "groups": []
        },
        "users": [
            "U060R4BJ4",
            "U060RNRCZ"
        ],
        "user_count": 1
    }
}

type UsersGetPresenceResponse

type UsersGetPresenceResponse struct {
	OK              bool     `json:"ok"`
	Error           string   `json:"error"`
	Presence        Presence `json:"presence"`
	Online          bool     `json:"online"`
	AutoAway        bool     `json:"auto_away"`
	ManualAway      bool     `json:"manual_away"`
	ConnectionCount int      `json:"connection_count"`
	LastActivity    Time     `json:"last_activity"`
}

https://api.slack.com/methods/users.getPresence

{
    "ok": true,
    "presence": "active",
    "online": true,
    "auto_away": false,
    "manual_away": false,
    "connection_count": 1,
    "last_activity": 1419027078
}

type UsersInfoResponse

type UsersInfoResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
	User  *User  `json:"user"`
}

https://api.slack.com/methods/users.info

{
    "ok": true,
    "user": {
        "id": "U023BECGF",
        "name": "bobby",
        "deleted": false,
        "color": "9f69e7",
        "profile": {
            "first_name": "Bobby",
            "last_name": "Tables",
            "real_name": "Bobby Tables",
            "email": "bobby@slack.com",
            "skype": "my-skype-name",
            "phone": "+1 (123) 456 7890",
            "image_24": "https:\/\/...",
            "image_32": "https:\/\/...",
            "image_48": "https:\/\/...",
            "image_72": "https:\/\/...",
            "image_192": "https:\/\/..."
        },
        "is_admin": true,
        "is_owner": true,
        "has_2fa": true,
        "has_files": true
    }
}

type UsersListResponse

type UsersListResponse struct {
	OK      bool    `json:"ok"`
	Error   string  `json:"error"`
	Members []*User `json:"members"`
}

https://api.slack.com/methods/users.list

{
    "ok": true,
    "members": [
        {
            "id": "U023BECGF",
            "name": "bobby",
            "deleted": false,
            "color": "9f69e7",
            "profile": {
                "first_name": "Bobby",
                "last_name": "Tables",
                "real_name": "Bobby Tables",
                "email": "bobby@slack.com",
                "skype": "my-skype-name",
                "phone": "+1 (123) 456 7890",
                "image_24": "https:\/\/...",
                "image_32": "https:\/\/...",
                "image_48": "https:\/\/...",
                "image_72": "https:\/\/...",
                "image_192": "https:\/\/..."
            },
            "is_admin": true,
            "is_owner": true,
            "has_2fa": false,
            "has_files": true
        }
    ]
}

type UsersSetActiveResponse

type UsersSetActiveResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/users.setActive

{
    "ok": true
}

type UsersSetPresenceResponse

type UsersSetPresenceResponse struct {
	OK    bool   `json:"ok"`
	Error string `json:"error"`
}

https://api.slack.com/methods/users.setPresence

{
    "ok": true
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL