slack

package module
v0.12.5 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2024 License: BSD-2-Clause Imports: 31 Imported by: 2,081

README

Slack API in Go Go Reference

This is the original Slack library for Go created by Norberto Lopes, transferred to a GitHub organization.

You can also chat with us on the #slack-go, #slack-go-ja Slack channel on the Gophers Slack.

logo

This library supports most if not all of the api.slack.com REST calls, as well as the Real-Time Messaging protocol over websocket, in a fully managed way.

Project Status

There is currently no major version released. Therefore, minor version releases may include backward incompatible changes.

See CHANGELOG.md or Releases for more information about the changes.

Installing

go get
$ go get -u github.com/slack-go/slack

Example

Getting all groups
import (
	"fmt"

	"github.com/slack-go/slack"
)

func main() {
	api := slack.New("YOUR_TOKEN_HERE")
	// If you set debugging, it will log all requests to the console
	// Useful when encountering issues
	// slack.New("YOUR_TOKEN_HERE", slack.OptionDebug(true))
	groups, err := api.GetUserGroups(slack.GetUserGroupsOptionIncludeUsers(false))
	if err != nil {
		fmt.Printf("%s\n", err)
		return
	}
	for _, group := range groups {
		fmt.Printf("ID: %s, Name: %s\n", group.ID, group.Name)
	}
}
Getting User Information
import (
    "fmt"

    "github.com/slack-go/slack"
)

func main() {
    api := slack.New("YOUR_TOKEN_HERE")
    user, err := api.GetUserInfo("U023BECGF")
    if err != nil {
	    fmt.Printf("%s\n", err)
	    return
    }
    fmt.Printf("ID: %s, Fullname: %s, Email: %s\n", user.ID, user.Profile.RealName, user.Profile.Email)
}

Minimal Socket Mode usage:

See https://github.com/slack-go/slack/blob/master/examples/socketmode/socketmode.go

Minimal RTM usage:

As mentioned in https://api.slack.com/rtm - for most applications, Socket Mode is a better way to communicate with Slack.

See https://github.com/slack-go/slack/blob/master/examples/websocket/websocket.go

Minimal EventsAPI usage:

See https://github.com/slack-go/slack/blob/master/examples/eventsapi/events.go

Socketmode Event Handler (Experimental)

When using socket mode, dealing with an event can be pretty lengthy as it requires you to route the event to the right place.

Instead, you can use SocketmodeHandler much like you use an HTTP handler to register which event you would like to listen to and what callback function will process that event when it occurs.

See ./examples/socketmode_handler/socketmode_handler.go

Contributing

You are more than welcome to contribute to this project. Fork and make a Pull Request, or create an Issue if you see any problem.

Before making any Pull Request please run the following:

make pr-prep

This will check/update code formatting, linting and then run all tests

License

BSD 2 Clause license

Documentation

Index

Examples

Constants

View Source
const (
	METCheckboxGroups MessageElementType = "checkboxes"
	METImage          MessageElementType = "image"
	METButton         MessageElementType = "button"
	METOverflow       MessageElementType = "overflow"
	METDatepicker     MessageElementType = "datepicker"
	METTimepicker     MessageElementType = "timepicker"
	METDatetimepicker MessageElementType = "datetimepicker"
	METPlainTextInput MessageElementType = "plain_text_input"
	METRadioButtons   MessageElementType = "radio_buttons"
	METRichTextInput  MessageElementType = "rich_text_input"
	METEmailTextInput MessageElementType = "email_text_input"
	METURLTextInput   MessageElementType = "url_text_input"
	METNumber         MessageElementType = "number_input"
	METFileInput      MessageElementType = "file_input"

	MixedElementImage MixedElementType = "mixed_image"
	MixedElementText  MixedElementType = "mixed_text"

	OptTypeStatic        string = "static_select"
	OptTypeExternal      string = "external_select"
	OptTypeUser          string = "users_select"
	OptTypeConversations string = "conversations_select"
	OptTypeChannels      string = "channels_select"

	MultiOptTypeStatic        string = "multi_static_select"
	MultiOptTypeExternal      string = "multi_external_select"
	MultiOptTypeUser          string = "multi_users_select"
	MultiOptTypeConversations string = "multi_conversations_select"
	MultiOptTypeChannels      string = "multi_channels_select"
)
View Source
const (
	MarkdownType  = "mrkdwn"
	PlainTextType = "plain_text"
)

blockObject object types

View Source
const (
	DEFAULT_MESSAGE_USERNAME         = ""
	DEFAULT_MESSAGE_REPLY_BROADCAST  = false
	DEFAULT_MESSAGE_ASUSER           = false
	DEFAULT_MESSAGE_PARSE            = ""
	DEFAULT_MESSAGE_THREAD_TIMESTAMP = ""
	DEFAULT_MESSAGE_LINK_NAMES       = 0
	DEFAULT_MESSAGE_UNFURL_LINKS     = false
	DEFAULT_MESSAGE_UNFURL_MEDIA     = true
	DEFAULT_MESSAGE_ICON_URL         = ""
	DEFAULT_MESSAGE_ICON_EMOJI       = ""
	DEFAULT_MESSAGE_MARKDOWN         = true
	DEFAULT_MESSAGE_ESCAPE_TEXT      = true
)
View Source
const (
	ErrAlreadyDisconnected  = errorsx.String("Invalid call to Disconnect - Slack API is already disconnected")
	ErrRTMDisconnected      = errorsx.String("disconnect received while trying to connect")
	ErrRTMGoodbye           = errorsx.String("goodbye detected")
	ErrRTMDeadman           = errorsx.String("deadman switch triggered")
	ErrParametersMissing    = errorsx.String("received empty parameters")
	ErrBlockIDNotUnique     = errorsx.String("Block ID needs to be unique")
	ErrInvalidConfiguration = errorsx.String("invalid configuration")
	ErrMissingHeaders       = errorsx.String("missing headers")
	ErrExpiredTimestamp     = errorsx.String("timestamp is too old")
)

Errors returned by various methods.

View Source
const (
	// Add here the defaults in the siten
	DEFAULT_FILES_USER        = ""
	DEFAULT_FILES_CHANNEL     = ""
	DEFAULT_FILES_TS_FROM     = 0
	DEFAULT_FILES_TS_TO       = -1
	DEFAULT_FILES_TYPES       = "all"
	DEFAULT_FILES_COUNT       = 100
	DEFAULT_FILES_PAGE        = 1
	DEFAULT_FILES_SHOW_HIDDEN = false
)
View Source
const (
	DEFAULT_HISTORY_LATEST    = ""
	DEFAULT_HISTORY_OLDEST    = "0"
	DEFAULT_HISTORY_COUNT     = 100
	DEFAULT_HISTORY_INCLUSIVE = false
	DEFAULT_HISTORY_UNREADS   = false
)
View Source
const (
	InteractionTypeDialogCancellation = InteractionType("dialog_cancellation")
	InteractionTypeDialogSubmission   = InteractionType("dialog_submission")
	InteractionTypeDialogSuggestion   = InteractionType("dialog_suggestion")
	InteractionTypeInteractionMessage = InteractionType("interactive_message")
	InteractionTypeMessageAction      = InteractionType("message_action")
	InteractionTypeBlockActions       = InteractionType("block_actions")
	InteractionTypeBlockSuggestion    = InteractionType("block_suggestion")
	InteractionTypeViewSubmission     = InteractionType("view_submission")
	InteractionTypeViewClosed         = InteractionType("view_closed")
	InteractionTypeShortcut           = InteractionType("shortcut")
	InteractionTypeWorkflowStepEdit   = InteractionType("workflow_step_edit")
)

Types of interactions that can be received.

View Source
const (
	TYPE_MESSAGE      = "message"
	TYPE_FILE         = "file"
	TYPE_FILE_COMMENT = "file_comment"
	TYPE_CHANNEL      = "channel"
	TYPE_IM           = "im"
	TYPE_GROUP        = "group"
)
View Source
const (
	MsgSubTypeBotMessage                = "bot_message"                 // [Events API, RTM] A message was posted by an integration
	MsgSubTypeMeMessage                 = "me_message"                  // [Events API, RTM] A /me message was sent
	MsgSubTypeMessageChanged            = "message_changed"             // [Events API, RTM] A message was changed
	MsgSubTypeMessageDeleted            = "message_deleted"             // [Events API, RTM] A message was deleted
	MsgSubTypeMessageReplied            = "message_replied"             // [Events API, RTM] A message thread received a reply
	MsgSubTypeReplyBroadcast            = "reply_broadcast"             // @Deprecated (No longer served) A message thread's reply was broadcast to a channel
	MsgSubTypeThreadBroadcast           = "thread_broadcast"            // [Events API, RTM] A message thread's reply was broadcast to a channel
	MsgSubTypeChannelJoin               = "channel_join"                // [Events API, RTM] A member joined a channel
	MsgSubTypeChannelLeave              = "channel_leave"               // [Events API, RTM] A member left a channel
	MsgSubTypeChannelTopic              = "channel_topic"               // [Events API, RTM] A channel topic was updated
	MsgSubTypeChannelPurpose            = "channel_purpose"             // [Events API, RTM] A channel purpose was updated
	MsgSubTypeChannelName               = "channel_name"                // [Events API, RTM] A channel was renamed
	MsgSubTypeChannelArchive            = "channel_archive"             // [Events API, RTM] A channel was archived
	MsgSubTypeChannelUnarchive          = "channel_unarchive"           // [Events API, RTM] A channel was unarchived
	MsgSubTypeGroupJoin                 = "group_join"                  // [RTM] A member joined a group
	MsgSubTypeGroupLeave                = "group_leave"                 // [RTM] A member left a group
	MsgSubTypeGroupTopic                = "group_topic"                 // [RTM] A group topic was updated
	MsgSubTypeGroupPurpose              = "group_purpose"               // [RTM] A group purpose was updated
	MsgSubTypeGroupName                 = "group_name"                  // [RTM] A group was renamed
	MsgSubTypeGroupArchive              = "group_archive"               // [RTM] A group was archived
	MsgSubTypeGroupUnarchive            = "group_unarchive"             // [RTM] A group was unarchived
	MsgSubTypeFileShare                 = "file_share"                  // [Events API, RTM] A file was shared into a channel
	MsgSubTypeFileComment               = "file_comment"                // [RTM] A comment was added to a file
	MsgSubTypeGileMention               = "file_mention"                // [RTM] A file was mentioned in a channel
	MsgSubTypePinnedItem                = "pinned_item"                 // [RTM] An item was pinned in a channel
	MsgSubTypeUnpinnedItem              = "unpinned_item"               // [RTM] An item was unpinned from a channel
	MsgSubTypeEkmAccessDenied           = "ekm_access_denied"           // [Events API, RTM] Message content redacted due to Enterprise Key Management (EKM)
	MsgSubTypeChannelPostingPermissions = "channel_posting_permissions" // [Events API, RTM] The posting permissions for a channel changed
)

Msg SubTypes (https://api.slack.com/events/message)

View Source
const (
	// ResponseTypeInChannel in channel response for slash commands.
	ResponseTypeInChannel = "in_channel"
	// ResponseTypeEphemeral ephemeral response for slash commands.
	ResponseTypeEphemeral = "ephemeral"
)
View Source
const (
	DEFAULT_REACTIONS_USER  = ""
	DEFAULT_REACTIONS_COUNT = 100
	DEFAULT_REACTIONS_PAGE  = 1
	DEFAULT_REACTIONS_FULL  = false
)
View Source
const (
	DEFAULT_REMOTE_FILES_CHANNEL = ""
	DEFAULT_REMOTE_FILES_TS_FROM = 0
	DEFAULT_REMOTE_FILES_TS_TO   = -1
	DEFAULT_REMOTE_FILES_COUNT   = 100
)
View Source
const (
	DEFAULT_SEARCH_SORT      = "score"
	DEFAULT_SEARCH_SORT_DIR  = "desc"
	DEFAULT_SEARCH_HIGHLIGHT = false
	DEFAULT_SEARCH_COUNT     = 20
	DEFAULT_SEARCH_PAGE      = 1
)
View Source
const (
	// APIURL of the slack api.
	APIURL = "https://slack.com/api/"
	// WEBAPIURLFormat ...
	WEBAPIURLFormat = "https://%s.slack.com/api/users.admin.%s?t=%d"
)
View Source
const (
	DEFAULT_STARS_USER  = ""
	DEFAULT_STARS_COUNT = 100
	DEFAULT_STARS_PAGE  = 1
)
View Source
const (
	DEFAULT_LOGINS_COUNT = 100
	DEFAULT_LOGINS_PAGE  = 1
)
View Source
const (
	DEFAULT_USER_PHOTO_CROP_X = -1
	DEFAULT_USER_PHOTO_CROP_Y = -1
	DEFAULT_USER_PHOTO_CROP_W = -1
)
View Source
const (
	// MaxMessageTextLength is the current maximum message length in number of characters as defined here
	// https://api.slack.com/rtm#limits
	MaxMessageTextLength = 4000
)

Variables

View Source
var EventMapping = map[string]interface{}{
	"message":         MessageEvent{},
	"presence_change": PresenceChangeEvent{},
	"user_typing":     UserTypingEvent{},

	"channel_marked":          ChannelMarkedEvent{},
	"channel_created":         ChannelCreatedEvent{},
	"channel_joined":          ChannelJoinedEvent{},
	"channel_left":            ChannelLeftEvent{},
	"channel_deleted":         ChannelDeletedEvent{},
	"channel_rename":          ChannelRenameEvent{},
	"channel_archive":         ChannelArchiveEvent{},
	"channel_unarchive":       ChannelUnarchiveEvent{},
	"channel_history_changed": ChannelHistoryChangedEvent{},

	"dnd_updated":      DNDUpdatedEvent{},
	"dnd_updated_user": DNDUpdatedEvent{},

	"im_created":         IMCreatedEvent{},
	"im_open":            IMOpenEvent{},
	"im_close":           IMCloseEvent{},
	"im_marked":          IMMarkedEvent{},
	"im_history_changed": IMHistoryChangedEvent{},

	"group_marked":          GroupMarkedEvent{},
	"group_open":            GroupOpenEvent{},
	"group_joined":          GroupJoinedEvent{},
	"group_left":            GroupLeftEvent{},
	"group_close":           GroupCloseEvent{},
	"group_rename":          GroupRenameEvent{},
	"group_archive":         GroupArchiveEvent{},
	"group_unarchive":       GroupUnarchiveEvent{},
	"group_history_changed": GroupHistoryChangedEvent{},

	"file_created":         FileCreatedEvent{},
	"file_shared":          FileSharedEvent{},
	"file_unshared":        FileUnsharedEvent{},
	"file_public":          FilePublicEvent{},
	"file_private":         FilePrivateEvent{},
	"file_change":          FileChangeEvent{},
	"file_deleted":         FileDeletedEvent{},
	"file_comment_added":   FileCommentAddedEvent{},
	"file_comment_edited":  FileCommentEditedEvent{},
	"file_comment_deleted": FileCommentDeletedEvent{},

	"pin_added":   PinAddedEvent{},
	"pin_removed": PinRemovedEvent{},

	"star_added":   StarAddedEvent{},
	"star_removed": StarRemovedEvent{},

	"reaction_added":   ReactionAddedEvent{},
	"reaction_removed": ReactionRemovedEvent{},

	"pref_change": PrefChangeEvent{},

	"team_join":              TeamJoinEvent{},
	"team_rename":            TeamRenameEvent{},
	"team_pref_change":       TeamPrefChangeEvent{},
	"team_domain_change":     TeamDomainChangeEvent{},
	"team_migration_started": TeamMigrationStartedEvent{},

	"manual_presence_change": ManualPresenceChangeEvent{},

	"user_change": UserChangeEvent{},

	"emoji_changed": EmojiChangedEvent{},

	"commands_changed": CommandsChangedEvent{},

	"email_domain_changed": EmailDomainChangedEvent{},

	"bot_added":   BotAddedEvent{},
	"bot_changed": BotChangedEvent{},

	"accounts_changed": AccountsChangedEvent{},

	"reconnect_url": ReconnectUrlEvent{},

	"member_joined_channel": MemberJoinedChannelEvent{},
	"member_left_channel":   MemberLeftChannelEvent{},

	"subteam_created":         SubteamCreatedEvent{},
	"subteam_members_changed": SubteamMembersChangedEvent{},
	"subteam_self_added":      SubteamSelfAddedEvent{},
	"subteam_self_removed":    SubteamSelfRemovedEvent{},
	"subteam_updated":         SubteamUpdatedEvent{},

	"desktop_notification":       DesktopNotificationEvent{},
	"mobile_in_app_notification": MobileInAppNotificationEvent{},
}

EventMapping holds a mapping of event names to their corresponding struct implementations. The structs should be instances of the unmarshalling target for the matching event type.

Functions

func GetOAuthToken

func GetOAuthToken(client httpClient, clientID, clientSecret, code, redirectURI string) (accessToken string, scope string, err error)

GetOAuthToken retrieves an AccessToken

func GetOAuthTokenContext added in v0.2.0

func GetOAuthTokenContext(ctx context.Context, client httpClient, clientID, clientSecret, code, redirectURI string) (accessToken string, scope string, err error)

GetOAuthTokenContext retrieves an AccessToken with a custom context

func OptionAPIURL added in v0.6.1

func OptionAPIURL(u string) func(*Client)

OptionAPIURL set the url for the client. only useful for testing.

func OptionAppLevelToken added in v0.7.2

func OptionAppLevelToken(token string) func(*Client)

OptionAppLevelToken sets an app-level token for the client.

func OptionConfigRefreshToken added in v0.12.3

func OptionConfigRefreshToken(token string) func(*Client)

OptionConfigRefreshToken sets a configuration refresh token for the client.

func OptionConfigToken added in v0.12.3

func OptionConfigToken(token string) func(*Client)

OptionConfigToken sets a configuration token for the client.

func OptionDebug added in v0.5.0

func OptionDebug(b bool) func(*Client)

OptionDebug enable debugging for the client

func OptionHTTPClient added in v0.2.0

func OptionHTTPClient(client httpClient) func(*Client)

OptionHTTPClient - provide a custom http client to the slack client.

func OptionLog added in v0.5.0

func OptionLog(l logger) func(*Client)

OptionLog set logging for client.

func PostWebhook added in v0.4.0

func PostWebhook(url string, msg *WebhookMessage) error

func PostWebhookContext added in v0.6.3

func PostWebhookContext(ctx context.Context, url string, msg *WebhookMessage) error

func PostWebhookCustomHTTP added in v0.6.1

func PostWebhookCustomHTTP(url string, httpClient *http.Client, msg *WebhookMessage) error

func PostWebhookCustomHTTPContext added in v0.6.3

func PostWebhookCustomHTTPContext(ctx context.Context, url string, httpClient *http.Client, msg *WebhookMessage) error

func UnsafeApplyMsgOptions added in v0.4.0

func UnsafeApplyMsgOptions(token, channel, apiurl string, options ...MsgOption) (string, url.Values, error)

UnsafeApplyMsgOptions utility function for debugging/testing chat requests. NOTE: USE AT YOUR OWN RISK: No issues relating to the use of this function will be supported by the library.

func ValidateUniqueBlockID added in v0.6.6

func ValidateUniqueBlockID(view ModalViewRequest) bool

ValidateUniqueBlockID will verify if each input block has a unique block ID if set

Types

type AccessLogParameters added in v0.1.0

type AccessLogParameters struct {
	Count int
	Page  int
}

AccessLogParameters contains all the parameters necessary (including the optional ones) for a GetAccessLogs() request

func NewAccessLogParameters added in v0.1.0

func NewAccessLogParameters() AccessLogParameters

NewAccessLogParameters provides an instance of AccessLogParameters with all the sane default values set

type Accessory added in v0.6.1

type Accessory struct {
	ImageElement               *ImageBlockElement
	ButtonElement              *ButtonBlockElement
	OverflowElement            *OverflowBlockElement
	DatePickerElement          *DatePickerBlockElement
	TimePickerElement          *TimePickerBlockElement
	PlainTextInputElement      *PlainTextInputBlockElement
	RichTextInputElement       *RichTextInputBlockElement
	RadioButtonsElement        *RadioButtonsBlockElement
	SelectElement              *SelectBlockElement
	MultiSelectElement         *MultiSelectBlockElement
	CheckboxGroupsBlockElement *CheckboxGroupsBlockElement
	UnknownElement             *UnknownBlockElement
}

func NewAccessory added in v0.6.1

func NewAccessory(element BlockElement) *Accessory

NewAccessory returns a new Accessory for a given block element

func (*Accessory) MarshalJSON added in v0.6.1

func (a *Accessory) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface for Accessory so that any JSON marshalling is delegated and proper type determination can be made before marshal

func (*Accessory) UnmarshalJSON added in v0.6.1

func (a *Accessory) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for Accessory, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal Note: datetimepicker is not supported in Accessory

type AccountsChangedEvent

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

AccountsChangedEvent represents the accounts changed event

type AckErrorEvent added in v0.1.0

type AckErrorEvent struct {
	ErrorObj error
	ReplyTo  int
}

AckErrorEvent i

func (*AckErrorEvent) Error added in v0.1.0

func (a *AckErrorEvent) Error() string

type AckMessage

type AckMessage struct {
	ReplyTo   int    `json:"reply_to"`
	Timestamp string `json:"ts"`
	Text      string `json:"text"`
	RTMResponse
}

AckMessage is used for messages received in reply to other messages

type ActionBlock added in v0.6.1

type ActionBlock struct {
	Type     MessageBlockType `json:"type"`
	BlockID  string           `json:"block_id,omitempty"`
	Elements *BlockElements   `json:"elements"`
}

ActionBlock defines data that is used to hold interactive elements.

More Information: https://api.slack.com/reference/messaging/blocks#actions

func NewActionBlock added in v0.6.1

func NewActionBlock(blockID string, elements ...BlockElement) *ActionBlock

NewActionBlock returns a new instance of an Action Block

func (ActionBlock) BlockType added in v0.6.1

func (s ActionBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type ActionCallbacks added in v0.6.1

type ActionCallbacks struct {
	AttachmentActions []*AttachmentAction
	BlockActions      []*BlockAction
}

ActionCallback is a convenience struct defined to allow dynamic unmarshalling of the "actions" value in Slack's JSON response, which varies depending on block type

func (ActionCallbacks) MarshalJSON added in v0.6.1

func (a ActionCallbacks) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface in order to combine both action callback types back into a single array, like how the api responds. This makes Marshaling and Unmarshaling an InteractionCallback symmetrical

func (*ActionCallbacks) UnmarshalJSON added in v0.6.1

func (a *ActionCallbacks) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Marshaller interface in order to delegate marshalling and allow for proper type assertion when decoding the response

type ActionType added in v0.9.0

type ActionType string

ActionType type represents the type of action (attachment, block, etc.)

type AddBookmarkParameters added in v0.11.0

type AddBookmarkParameters struct {
	Title    string // A required title for the bookmark
	Type     string // A required type for the bookmark
	Link     string // URL required for type:link
	Emoji    string // An optional emoji
	EntityID string
	ParentID string
}

type AppHome added in v0.12.3

type AppHome struct {
	HomeTabEnabled             bool `json:"home_tab_enabled,omitempty" yaml:"home_tab_enabled,omitempty"`
	MessagesTabEnabled         bool `json:"messages_tab_enabled,omitempty" yaml:"messages_tab_enabled,omitempty"`
	MessagesTabReadOnlyEnabled bool `json:"messages_tab_read_only_enabled,omitempty" yaml:"messages_tab_read_only_enabled,omitempty"`
}

AppHome is a group of settings that describe the App Home configuration

type Attachment

type Attachment struct {
	Color    string `json:"color,omitempty"`
	Fallback string `json:"fallback,omitempty"`

	CallbackID string `json:"callback_id,omitempty"`
	ID         int    `json:"id,omitempty"`

	AuthorID      string `json:"author_id,omitempty"`
	AuthorName    string `json:"author_name,omitempty"`
	AuthorSubname string `json:"author_subname,omitempty"`
	AuthorLink    string `json:"author_link,omitempty"`
	AuthorIcon    string `json:"author_icon,omitempty"`

	Title     string `json:"title,omitempty"`
	TitleLink string `json:"title_link,omitempty"`
	Pretext   string `json:"pretext,omitempty"`
	Text      string `json:"text,omitempty"`

	ImageURL string `json:"image_url,omitempty"`
	ThumbURL string `json:"thumb_url,omitempty"`

	ServiceName string `json:"service_name,omitempty"`
	ServiceIcon string `json:"service_icon,omitempty"`
	FromURL     string `json:"from_url,omitempty"`
	OriginalURL string `json:"original_url,omitempty"`

	Fields     []AttachmentField  `json:"fields,omitempty"`
	Actions    []AttachmentAction `json:"actions,omitempty"`
	MarkdownIn []string           `json:"mrkdwn_in,omitempty"`

	Blocks Blocks `json:"blocks,omitempty"`

	Footer     string `json:"footer,omitempty"`
	FooterIcon string `json:"footer_icon,omitempty"`

	Ts json.Number `json:"ts,omitempty"`
}

Attachment contains all the information for an attachment

type AttachmentAction added in v0.1.0

type AttachmentAction struct {
	Name            string                        `json:"name"`                       // Required.
	Text            string                        `json:"text"`                       // Required.
	Style           string                        `json:"style,omitempty"`            // Optional. Allowed values: "default", "primary", "danger".
	Type            ActionType                    `json:"type"`                       // Required. Must be set to "button" or "select".
	Value           string                        `json:"value,omitempty"`            // Optional.
	DataSource      string                        `json:"data_source,omitempty"`      // Optional.
	MinQueryLength  int                           `json:"min_query_length,omitempty"` // Optional. Default value is 1.
	Options         []AttachmentActionOption      `json:"options,omitempty"`          // Optional. Maximum of 100 options can be provided in each menu.
	SelectedOptions []AttachmentActionOption      `json:"selected_options,omitempty"` // Optional. The first element of this array will be set as the pre-selected option for this menu.
	OptionGroups    []AttachmentActionOptionGroup `json:"option_groups,omitempty"`    // Optional.
	Confirm         *ConfirmationField            `json:"confirm,omitempty"`          // Optional.
	URL             string                        `json:"url,omitempty"`              // Optional.
}

AttachmentAction is a button or menu to be included in the attachment. Required when using message buttons or menus and otherwise not useful. A maximum of 5 actions may be provided per attachment.

type AttachmentActionCallback added in v0.1.0

type AttachmentActionCallback InteractionCallback

AttachmentActionCallback is sent from Slack when a user clicks a button in an interactive message (aka AttachmentAction) DEPRECATED: use InteractionCallback

type AttachmentActionOption added in v0.1.0

type AttachmentActionOption struct {
	Text        string `json:"text"`                  // Required.
	Value       string `json:"value"`                 // Required.
	Description string `json:"description,omitempty"` // Optional. Up to 30 characters.
}

AttachmentActionOption the individual option to appear in action menu.

type AttachmentActionOptionGroup added in v0.1.0

type AttachmentActionOptionGroup struct {
	Text    string                   `json:"text"`    // Required.
	Options []AttachmentActionOption `json:"options"` // Required.
}

AttachmentActionOptionGroup is a semi-hierarchal way to list available options to appear in action menu.

type AttachmentField

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

AttachmentField contains information for an attachment field An Attachment can contain multiple of these

type AuditApp added in v0.9.2

type AuditApp struct {
	ID                  string   `json:"id"`
	Name                string   `json:"name"`
	IsDistributed       bool     `json:"is_distributed"`
	IsDirectoryApproved bool     `json:"is_directory_approved"`
	IsWorkflowApp       bool     `json:"is_workflow_app"`
	Scopes              []string `json:"scopes"`
}

type AuditChannel added in v0.9.2

type AuditChannel struct {
	ID          string `json:"id"`
	Name        string `json:"name"`
	Privacy     string `json:"privacy"`
	IsShared    bool   `json:"is_shared"`
	IsOrgShared bool   `json:"is_org_shared"`
}

type AuditEnterprise added in v0.9.2

type AuditEnterprise struct {
	ID     string `json:"id"`
	Name   string `json:"name"`
	Domain string `json:"domain"`
}

type AuditEntry added in v0.9.2

type AuditEntry struct {
	ID         string `json:"id"`
	DateCreate int    `json:"date_create"`
	Action     string `json:"action"`
	Actor      struct {
		Type string    `json:"type"`
		User AuditUser `json:"user"`
	} `json:"actor"`
	Entity struct {
		Type string `json:"type"`
		// Only one of the below will be completed, based on the value of Type a user, a channel, a file, an app, a workspace, or an enterprise
		User       AuditUser       `json:"user"`
		Channel    AuditChannel    `json:"channel"`
		File       AuditFile       `json:"file"`
		App        AuditApp        `json:"app"`
		Workspace  AuditWorkspace  `json:"workspace"`
		Enterprise AuditEnterprise `json:"enterprise"`
	} `json:"entity"`
	Context struct {
		Location struct {
			Type   string `json:"type"`
			ID     string `json:"id"`
			Name   string `json:"name"`
			Domain string `json:"domain"`
		} `json:"location"`
		UA        string `json:"ua"`
		IPAddress string `json:"ip_address"`
	} `json:"context"`
	Details struct {
		NewValue      interface{} `json:"new_value"`
		PreviousValue interface{} `json:"previous_value"`
		MobileOnly    bool        `json:"mobile_only"`
		WebOnly       bool        `json:"web_only"`
		NonSSOOnly    bool        `json:"non_sso_only"`
		ExportType    string      `json:"export_type"`
		ExportStart   string      `json:"export_start_ts"`
		ExportEnd     string      `json:"export_end_ts"`
	} `json:"details"`
}

type AuditFile added in v0.9.2

type AuditFile struct {
	ID       string `json:"id"`
	Name     string `json:"name"`
	Filetype string `json:"filetype"`
	Title    string `json:"title"`
}

type AuditLogParameters added in v0.9.2

type AuditLogParameters struct {
	Limit  int
	Cursor string
	Latest int
	Oldest int
	Action string
	Actor  string
	Entity string
}

AuditLogParameters contains all the parameters necessary (including the optional ones) for a GetAuditLogs() request

type AuditLogResponse added in v0.9.2

type AuditLogResponse struct {
	Entries []AuditEntry `json:"entries"`
	SlackResponse
}

type AuditUser added in v0.9.2

type AuditUser struct {
	ID    string `json:"id"`
	Name  string `json:"name"`
	Email string `json:"email"`
	Team  string `json:"team"`
}

type AuditWorkspace added in v0.9.2

type AuditWorkspace struct {
	ID     string `json:"id"`
	Name   string `json:"name"`
	Domain string `json:"domain"`
}

type AuthRevokeResponse added in v0.5.0

type AuthRevokeResponse struct {
	SlackResponse      // Contains the "ok", and "Error", if any
	Revoked       bool `json:"revoked,omitempty"`
}

AuthRevokeResponse contains our Auth response from the auth.revoke endpoint

type AuthTestResponse

type AuthTestResponse struct {
	URL    string `json:"url"`
	Team   string `json:"team"`
	User   string `json:"user"`
	TeamID string `json:"team_id"`
	UserID string `json:"user_id"`
	// EnterpriseID is only returned when an enterprise id present
	EnterpriseID string `json:"enterprise_id,omitempty"`
	BotID        string `json:"bot_id"`
}

AuthTestResponse ...

type BillableInfoResponse added in v0.1.0

type BillableInfoResponse struct {
	BillableInfo map[string]BillingActive `json:"billable_info"`
	SlackResponse
}

type BillingActive added in v0.1.0

type BillingActive struct {
	BillingActive bool `json:"billing_active"`
}

type Block added in v0.6.1

type Block interface {
	BlockType() MessageBlockType
}

Block defines an interface all block types should implement to ensure consistency between blocks.

type BlockAction added in v0.6.1

type BlockAction struct {
	ActionID              string              `json:"action_id"`
	BlockID               string              `json:"block_id"`
	Type                  ActionType          `json:"type"`
	Text                  TextBlockObject     `json:"text"`
	Value                 string              `json:"value"`
	Files                 []File              `json:"files"`
	ActionTs              string              `json:"action_ts"`
	SelectedOption        OptionBlockObject   `json:"selected_option"`
	SelectedOptions       []OptionBlockObject `json:"selected_options"`
	SelectedUser          string              `json:"selected_user"`
	SelectedUsers         []string            `json:"selected_users"`
	SelectedChannel       string              `json:"selected_channel"`
	SelectedChannels      []string            `json:"selected_channels"`
	SelectedConversation  string              `json:"selected_conversation"`
	SelectedConversations []string            `json:"selected_conversations"`
	SelectedDate          string              `json:"selected_date"`
	SelectedTime          string              `json:"selected_time"`
	SelectedDateTime      int64               `json:"selected_date_time"`
	InitialOption         OptionBlockObject   `json:"initial_option"`
	InitialUser           string              `json:"initial_user"`
	InitialChannel        string              `json:"initial_channel"`
	InitialConversation   string              `json:"initial_conversation"`
	InitialDate           string              `json:"initial_date"`
	InitialTime           string              `json:"initial_time"`
}

BlockAction is the action callback sent when a block is interacted with

type BlockActionStates added in v0.7.1

type BlockActionStates struct {
	Values map[string]map[string]BlockAction `json:"values"`
}

type BlockElement added in v0.6.1

type BlockElement interface {
	ElementType() MessageElementType
}

BlockElement defines an interface that all block element types should implement.

type BlockElements added in v0.6.1

type BlockElements struct {
	ElementSet []BlockElement `json:"elements,omitempty"`
}

BlockElements is a convenience struct defined to allow dynamic unmarshalling of the "elements" value in Slack's JSON response, which varies depending on BlockElement type

func (*BlockElements) MarshalJSON added in v0.6.1

func (b *BlockElements) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface for BlockElements so that any JSON marshalling is delegated and proper type determination can be made before marshal

func (*BlockElements) UnmarshalJSON added in v0.6.1

func (b *BlockElements) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for BlockElements, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type BlockObjects added in v0.6.1

type BlockObjects struct {
	TextObjects         []*TextBlockObject
	ConfirmationObjects []*ConfirmationBlockObject
	OptionObjects       []*OptionBlockObject
	OptionGroupObjects  []*OptionGroupBlockObject
}

func (*BlockObjects) UnmarshalJSON added in v0.6.1

func (b *BlockObjects) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for BlockObjects, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type Blocks added in v0.6.1

type Blocks struct {
	BlockSet []Block `json:"blocks,omitempty"`
}

Blocks is a convenience struct defined to allow dynamic unmarshalling of the "blocks" value in Slack's JSON response, which varies depending on block type

func (Blocks) MarshalJSON added in v0.6.1

func (b Blocks) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface for Blocks so that any JSON marshalling is delegated and proper type determination can be made before marshal

func (*Blocks) UnmarshalJSON added in v0.6.1

func (b *Blocks) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for Blocks, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type Bookmark added in v0.11.0

type Bookmark struct {
	ID        string   `json:"id"`
	ChannelID string   `json:"channel_id"`
	Title     string   `json:"title"`
	Link      string   `json:"link"`
	Emoji     string   `json:"emoji"`
	IconURL   string   `json:"icon_url"`
	Type      string   `json:"type"`
	Created   JSONTime `json:"date_created"`
	Updated   JSONTime `json:"date_updated"`
	Rank      string   `json:"rank"`

	LastUpdatedByUserID string `json:"last_updated_by_user_id"`
	LastUpdatedByTeamID string `json:"last_updated_by_team_id"`

	ShortcutID string `json:"shortcut_id"`
	EntityID   string `json:"entity_id"`
	AppID      string `json:"app_id"`
}

type Bot

type Bot struct {
	ID      string   `json:"id"`
	Name    string   `json:"name"`
	Deleted bool     `json:"deleted"`
	UserID  string   `json:"user_id"`
	AppID   string   `json:"app_id"`
	Updated JSONTime `json:"updated"`
	Icons   Icons    `json:"icons"`
}

Bot contains information about a bot

type BotAddedEvent

type BotAddedEvent struct {
	Type string `json:"type"`
	Bot  Bot    `json:"bot"`
}

BotAddedEvent represents the bot added event

type BotChangedEvent

type BotChangedEvent struct {
	Type string `json:"type"`
	Bot  Bot    `json:"bot"`
}

BotChangedEvent represents the bot changed event

type BotProfile added in v0.7.0

type BotProfile struct {
	AppID   string `json:"app_id,omitempty"`
	Deleted bool   `json:"deleted,omitempty"`
	Icons   *Icons `json:"icons,omitempty"`
	ID      string `json:"id,omitempty"`
	Name    string `json:"name,omitempty"`
	TeamID  string `json:"team_id,omitempty"`
	Updated int64  `json:"updated,omitempty"`
}

BotProfile contains information about a bot

type BotUser added in v0.12.3

type BotUser struct {
	DisplayName  string `json:"display_name" yaml:"display_name"`
	AlwaysOnline bool   `json:"always_online,omitempty" yaml:"always_online,omitempty"`
}

BotUser is a group of settings that describe bot user configuration

type ButtonBlockElement added in v0.6.1

type ButtonBlockElement struct {
	Type     MessageElementType       `json:"type,omitempty"`
	Text     *TextBlockObject         `json:"text"`
	ActionID string                   `json:"action_id,omitempty"`
	URL      string                   `json:"url,omitempty"`
	Value    string                   `json:"value,omitempty"`
	Confirm  *ConfirmationBlockObject `json:"confirm,omitempty"`
	Style    Style                    `json:"style,omitempty"`
}

ButtonBlockElement defines an interactive element that inserts a button. The button can be a trigger for anything from opening a simple link to starting a complex workflow.

More Information: https://api.slack.com/reference/messaging/block-elements#button

func NewButtonBlockElement added in v0.6.1

func NewButtonBlockElement(actionID, value string, text *TextBlockObject) *ButtonBlockElement

NewButtonBlockElement returns an instance of a new button element to be used within a block

func (ButtonBlockElement) ElementType added in v0.6.1

func (s ButtonBlockElement) ElementType() MessageElementType

ElementType returns the type of the element

func (*ButtonBlockElement) WithConfirm added in v0.10.3

WithConfirm adds a confirmation dialogue to the button object and returns the modified ButtonBlockElement

func (*ButtonBlockElement) WithStyle added in v0.6.1

func (s *ButtonBlockElement) WithStyle(style Style) *ButtonBlockElement

WithStyle adds styling to the button object and returns the modified ButtonBlockElement

func (*ButtonBlockElement) WithURL added in v0.12.4

func (s *ButtonBlockElement) WithURL(url string) *ButtonBlockElement

WithURL adds a URL for the button to link to and returns the modified ButtonBlockElement

type Channel

type Channel struct {
	GroupConversation
	IsChannel bool   `json:"is_channel"`
	IsGeneral bool   `json:"is_general"`
	IsMember  bool   `json:"is_member"`
	Locale    string `json:"locale"`
}

Channel contains information about the channel

type ChannelArchiveEvent

type ChannelArchiveEvent ChannelInfoEvent

ChannelArchiveEvent represents the Channel archive event

type ChannelCreatedEvent

type ChannelCreatedEvent struct {
	Type           string             `json:"type"`
	Channel        ChannelCreatedInfo `json:"channel"`
	EventTimestamp string             `json:"event_ts"`
}

ChannelCreatedEvent represents the Channel created event

type ChannelCreatedInfo

type ChannelCreatedInfo struct {
	ID        string `json:"id"`
	IsChannel bool   `json:"is_channel"`
	Name      string `json:"name"`
	Created   int    `json:"created"`
	Creator   string `json:"creator"`
}

ChannelCreatedInfo represents the information associated with the Channel created event

type ChannelDeletedEvent

type ChannelDeletedEvent ChannelInfoEvent

ChannelDeletedEvent represents the Channel deleted event

type ChannelHistoryChangedEvent

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

ChannelHistoryChangedEvent represents the Channel history changed event

type ChannelInfoEvent

type ChannelInfoEvent struct {
	// channel_left
	// channel_deleted
	// channel_archive
	// channel_unarchive
	Type      string `json:"type"`
	Channel   string `json:"channel"`
	User      string `json:"user,omitempty"`
	Timestamp string `json:"ts,omitempty"`
}

ChannelInfoEvent represents the Channel info event

type ChannelJoinedEvent

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

ChannelJoinedEvent represents the Channel joined event

type ChannelLeftEvent

type ChannelLeftEvent ChannelInfoEvent

ChannelLeftEvent represents the Channel left event

type ChannelMarkedEvent

type ChannelMarkedEvent ChannelInfoEvent

ChannelMarkedEvent represents the Channel marked event

type ChannelRenameEvent

type ChannelRenameEvent struct {
	Type      string            `json:"type"`
	Channel   ChannelRenameInfo `json:"channel"`
	Timestamp string            `json:"event_ts"`
}

ChannelRenameEvent represents the Channel rename event

type ChannelRenameInfo

type ChannelRenameInfo struct {
	ID      string `json:"id"`
	Name    string `json:"name"`
	Created int    `json:"created"`
}

ChannelRenameInfo represents the information associated with a Channel rename event

type ChannelUnarchiveEvent

type ChannelUnarchiveEvent ChannelInfoEvent

ChannelUnarchiveEvent represents the Channel unarchive event

type CheckboxGroupsBlockElement added in v0.6.4

type CheckboxGroupsBlockElement struct {
	Type           MessageElementType       `json:"type"`
	ActionID       string                   `json:"action_id,omitempty"`
	Options        []*OptionBlockObject     `json:"options"`
	InitialOptions []*OptionBlockObject     `json:"initial_options,omitempty"`
	Confirm        *ConfirmationBlockObject `json:"confirm,omitempty"`
}

CheckboxGroupsBlockElement defines an element which allows users to choose one or more items from a list of possible options.

More Information: https://api.slack.com/reference/block-kit/block-elements#checkboxes

func NewCheckboxGroupsBlockElement added in v0.6.4

func NewCheckboxGroupsBlockElement(actionID string, options ...*OptionBlockObject) *CheckboxGroupsBlockElement

NewCheckboxGroupsBlockElement returns an instance of a checkbox-group block element

func (CheckboxGroupsBlockElement) ElementType added in v0.6.4

ElementType returns the type of the Element

type Client added in v0.1.0

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

func New

func New(token string, options ...Option) *Client

New builds a slack client from the provided token and options.

func (*Client) AddBookmark added in v0.11.0

func (api *Client) AddBookmark(channelID string, params AddBookmarkParameters) (Bookmark, error)

AddBookmark adds a bookmark in a channel

func (*Client) AddBookmarkContext added in v0.11.0

func (api *Client) AddBookmarkContext(ctx context.Context, channelID string, params AddBookmarkParameters) (Bookmark, error)

AddBookmarkContext adds a bookmark in a channel with a custom context

func (*Client) AddChannelReminder added in v0.5.0

func (api *Client) AddChannelReminder(channelID, text, time string) (*Reminder, error)

AddChannelReminder adds a reminder for a channel.

See https://api.slack.com/methods/reminders.add (NOTE: the ability to set reminders on a channel is currently undocumented but has been tested to work)

func (*Client) AddChannelReminderContext added in v0.10.3

func (api *Client) AddChannelReminderContext(ctx context.Context, channelID, text, time string) (*Reminder, error)

AddChannelReminderContext adds a reminder for a channel with a custom context

For more details, see AddChannelReminder documentation.

func (*Client) AddPin added in v0.1.0

func (api *Client) AddPin(channel string, item ItemRef) error

AddPin pins an item in a channel

func (*Client) AddPinContext added in v0.2.0

func (api *Client) AddPinContext(ctx context.Context, channel string, item ItemRef) error

AddPinContext pins an item in a channel with a custom context

func (*Client) AddReaction added in v0.1.0

func (api *Client) AddReaction(name string, item ItemRef) error

AddReaction adds a reaction emoji to a message, file or file comment.

func (*Client) AddReactionContext added in v0.2.0

func (api *Client) AddReactionContext(ctx context.Context, name string, item ItemRef) error

AddReactionContext adds a reaction emoji to a message, file or file comment with a custom context.

func (*Client) AddRemoteFile added in v0.11.0

func (api *Client) AddRemoteFile(params RemoteFileParameters) (*RemoteFile, error)

AddRemoteFile adds a remote file. Unlike regular files, remote files must be explicitly shared. For more details: https://api.slack.com/methods/files.remote.add

func (*Client) AddRemoteFileContext added in v0.11.0

func (api *Client) AddRemoteFileContext(ctx context.Context, params RemoteFileParameters) (remotefile *RemoteFile, err error)

AddRemoteFileContext adds a remote file and setting a custom context For more details see the AddRemoteFile documentation.

func (*Client) AddStar added in v0.1.0

func (api *Client) AddStar(channel string, item ItemRef) error

AddStar stars an item in a channel

func (*Client) AddStarContext added in v0.2.0

func (api *Client) AddStarContext(ctx context.Context, channel string, item ItemRef) error

AddStarContext stars an item in a channel with a custom context

func (*Client) AddUserReminder added in v0.5.0

func (api *Client) AddUserReminder(userID, text, time string) (*Reminder, error)

AddUserReminder adds a reminder for a user.

See https://api.slack.com/methods/reminders.add (NOTE: the ability to set reminders on a channel is currently undocumented but has been tested to work)

func (*Client) AddUserReminderContext added in v0.10.3

func (api *Client) AddUserReminderContext(ctx context.Context, userID, text, time string) (*Reminder, error)

AddUserReminderContext adds a reminder for a user with a custom context

For more details, see AddUserReminder documentation.

func (*Client) ArchiveConversation added in v0.2.0

func (api *Client) ArchiveConversation(channelID string) error

ArchiveConversation archives a conversation

func (*Client) ArchiveConversationContext added in v0.2.0

func (api *Client) ArchiveConversationContext(ctx context.Context, channelID string) error

ArchiveConversationContext archives a conversation with a custom context

func (*Client) AuthTest added in v0.1.0

func (api *Client) AuthTest() (response *AuthTestResponse, error error)

AuthTest tests if the user is able to do authenticated requests or not

func (*Client) AuthTestContext added in v0.2.0

func (api *Client) AuthTestContext(ctx context.Context) (response *AuthTestResponse, err error)

AuthTestContext tests if the user is able to do authenticated requests or not with a custom context

func (*Client) CloseConversation added in v0.2.0

func (api *Client) CloseConversation(channelID string) (noOp bool, alreadyClosed bool, err error)

CloseConversation closes a direct message or multi-person direct message

func (*Client) CloseConversationContext added in v0.2.0

func (api *Client) CloseConversationContext(ctx context.Context, channelID string) (noOp bool, alreadyClosed bool, err error)

CloseConversationContext closes a direct message or multi-person direct message with a custom context

func (*Client) ConnectRTM added in v0.1.0

func (api *Client) ConnectRTM() (info *Info, websocketURL string, err error)

ConnectRTM calls the "rtm.connect" endpoint and returns the provided URL and the compact Info block.

To have a fully managed Websocket connection, use `NewRTM`, and call `ManageConnection()` on it.

func (*Client) ConnectRTMContext added in v0.2.0

func (api *Client) ConnectRTMContext(ctx context.Context) (info *Info, websocketURL string, err error)

ConnectRTMContext calls the "rtm.connect" endpoint and returns the provided URL and the compact Info block with a custom context.

To have a fully managed Websocket connection, use `NewRTM`, and call `ManageConnection()` on it.

func (*Client) CreateConversation added in v0.2.0

func (api *Client) CreateConversation(params CreateConversationParams) (*Channel, error)

CreateConversation initiates a public or private channel-based conversation

func (*Client) CreateConversationContext added in v0.2.0

func (api *Client) CreateConversationContext(ctx context.Context, params CreateConversationParams) (*Channel, error)

CreateConversationContext initiates a public or private channel-based conversation with a custom context

func (*Client) CreateManifest added in v0.12.3

func (api *Client) CreateManifest(manifest *Manifest, token string) (*ManifestResponse, error)

CreateManifest creates an app from an app manifest

func (*Client) CreateManifestContext added in v0.12.3

func (api *Client) CreateManifestContext(ctx context.Context, manifest *Manifest, token string) (*ManifestResponse, error)

CreateManifestContext creates an app from an app manifest with a custom context

func (*Client) CreateUserGroup added in v0.1.0

func (api *Client) CreateUserGroup(userGroup UserGroup) (UserGroup, error)

CreateUserGroup creates a new user group

func (*Client) CreateUserGroupContext added in v0.2.0

func (api *Client) CreateUserGroupContext(ctx context.Context, userGroup UserGroup) (UserGroup, error)

CreateUserGroupContext creates a new user group with a custom context

func (*Client) Debug added in v0.5.0

func (api *Client) Debug() bool

Debug returns if debug is enabled.

func (*Client) Debugf added in v0.1.0

func (api *Client) Debugf(format string, v ...interface{})

Debugf print a formatted debug line.

func (*Client) Debugln added in v0.1.0

func (api *Client) Debugln(v ...interface{})

Debugln print a debug line.

func (*Client) DeleteFile added in v0.1.0

func (api *Client) DeleteFile(fileID string) error

DeleteFile deletes a file

func (*Client) DeleteFileComment added in v0.2.0

func (api *Client) DeleteFileComment(commentID, fileID string) error

DeleteFileComment deletes a file's comment

func (*Client) DeleteFileCommentContext added in v0.2.0

func (api *Client) DeleteFileCommentContext(ctx context.Context, fileID, commentID string) (err error)

DeleteFileCommentContext deletes a file's comment with a custom context

func (*Client) DeleteFileContext added in v0.2.0

func (api *Client) DeleteFileContext(ctx context.Context, fileID string) (err error)

DeleteFileContext deletes a file with a custom context

func (*Client) DeleteManifest added in v0.12.3

func (api *Client) DeleteManifest(token string, appId string) (*SlackResponse, error)

DeleteManifest permanently deletes an app created through app manifests

func (*Client) DeleteManifestContext added in v0.12.3

func (api *Client) DeleteManifestContext(ctx context.Context, token string, appId string) (*SlackResponse, error)

DeleteManifestContext permanently deletes an app created through app manifests with a custom context

func (*Client) DeleteMessage added in v0.1.0

func (api *Client) DeleteMessage(channel, messageTimestamp string) (string, string, error)

DeleteMessage deletes a message in a channel

func (*Client) DeleteMessageContext added in v0.2.0

func (api *Client) DeleteMessageContext(ctx context.Context, channel, messageTimestamp string) (string, string, error)

DeleteMessageContext deletes a message in a channel with a custom context

func (*Client) DeleteReminder added in v0.5.0

func (api *Client) DeleteReminder(id string) error

DeleteReminder deletes an existing reminder.

See https://api.slack.com/methods/reminders.delete

func (*Client) DeleteReminderContext added in v0.10.3

func (api *Client) DeleteReminderContext(ctx context.Context, id string) error

DeleteReminderContext deletes an existing reminder with a custom context

For more details, see DeleteReminder documentation.

func (*Client) DeleteScheduledMessage added in v0.6.3

func (api *Client) DeleteScheduledMessage(params *DeleteScheduledMessageParameters) (bool, error)

DeleteScheduledMessage returns the list of scheduled messages based on params

func (*Client) DeleteScheduledMessageContext added in v0.6.3

func (api *Client) DeleteScheduledMessageContext(ctx context.Context, params *DeleteScheduledMessageParameters) (bool, error)

DeleteScheduledMessageContext returns the list of scheduled messages in a Slack team with a custom context

func (*Client) DeleteUserPhoto added in v0.1.0

func (api *Client) DeleteUserPhoto() error

DeleteUserPhoto deletes the current authenticated user's profile image

func (*Client) DeleteUserPhotoContext added in v0.2.0

func (api *Client) DeleteUserPhotoContext(ctx context.Context) (err error)

DeleteUserPhotoContext deletes the current authenticated user's profile image with a custom context

func (*Client) DisableUser added in v0.1.0

func (api *Client) DisableUser(teamName string, uid string) error

DisableUser disabled a user account, given a user ID

func (*Client) DisableUserContext added in v0.2.0

func (api *Client) DisableUserContext(ctx context.Context, teamName string, uid string) error

DisableUserContext disabled a user account, given a user ID with a custom context

func (*Client) DisableUserGroup added in v0.1.0

func (api *Client) DisableUserGroup(userGroup string) (UserGroup, error)

DisableUserGroup disables an existing user group

func (*Client) DisableUserGroupContext added in v0.2.0

func (api *Client) DisableUserGroupContext(ctx context.Context, userGroup string) (UserGroup, error)

DisableUserGroupContext disables an existing user group with a custom context

func (*Client) EditBookmark added in v0.11.0

func (api *Client) EditBookmark(channelID, bookmarkID string, params EditBookmarkParameters) (Bookmark, error)

func (*Client) EditBookmarkContext added in v0.11.0

func (api *Client) EditBookmarkContext(ctx context.Context, channelID, bookmarkID string, params EditBookmarkParameters) (Bookmark, error)

func (*Client) EnableUserGroup added in v0.1.0

func (api *Client) EnableUserGroup(userGroup string) (UserGroup, error)

EnableUserGroup enables an existing user group

func (*Client) EnableUserGroupContext added in v0.2.0

func (api *Client) EnableUserGroupContext(ctx context.Context, userGroup string) (UserGroup, error)

EnableUserGroupContext enables an existing user group with a custom context

func (*Client) EndDND added in v0.1.0

func (api *Client) EndDND() error

EndDND ends the user's scheduled Do Not Disturb session

func (*Client) EndDNDContext added in v0.2.0

func (api *Client) EndDNDContext(ctx context.Context) error

EndDNDContext ends the user's scheduled Do Not Disturb session with a custom context

func (*Client) EndSnooze added in v0.1.0

func (api *Client) EndSnooze() (*DNDStatus, error)

EndSnooze ends the current user's snooze mode

func (*Client) EndSnoozeContext added in v0.2.0

func (api *Client) EndSnoozeContext(ctx context.Context) (*DNDStatus, error)

EndSnoozeContext ends the current user's snooze mode with a custom context

func (*Client) ExportManifest added in v0.12.3

func (api *Client) ExportManifest(token string, appId string) (*Manifest, error)

ExportManifest exports an app manifest from an existing app

func (*Client) ExportManifestContext added in v0.12.3

func (api *Client) ExportManifestContext(ctx context.Context, token string, appId string) (*Manifest, error)

ExportManifestContext exports an app manifest from an existing app with a custom context

func (*Client) GetAccessLogs added in v0.1.0

func (api *Client) GetAccessLogs(params AccessLogParameters) ([]Login, *Paging, error)

GetAccessLogs retrieves a page of logins according to the parameters given

func (*Client) GetAccessLogsContext added in v0.2.0

func (api *Client) GetAccessLogsContext(ctx context.Context, params AccessLogParameters) ([]Login, *Paging, error)

GetAccessLogsContext retrieves a page of logins according to the parameters given with a custom context

func (*Client) GetAuditLogs added in v0.9.2

func (api *Client) GetAuditLogs(params AuditLogParameters) (entries []AuditEntry, nextCursor string, err error)

GetAuditLogs retrieves a page of audit entires according to the parameters given

func (*Client) GetAuditLogsContext added in v0.9.2

func (api *Client) GetAuditLogsContext(ctx context.Context, params AuditLogParameters) (entries []AuditEntry, nextCursor string, err error)

GetAuditLogsContext retrieves a page of audit entries according to the parameters given with a custom context

func (*Client) GetBillableInfo added in v0.1.0

func (api *Client) GetBillableInfo(user string) (map[string]BillingActive, error)

GetBillableInfo ...

func (*Client) GetBillableInfoContext added in v0.2.0

func (api *Client) GetBillableInfoContext(ctx context.Context, user string) (map[string]BillingActive, error)

GetBillableInfoContext ...

func (*Client) GetBillableInfoForTeam added in v0.1.0

func (api *Client) GetBillableInfoForTeam() (map[string]BillingActive, error)

GetBillableInfoForTeam returns the billing_active status of all users on the team.

func (*Client) GetBillableInfoForTeamContext added in v0.2.0

func (api *Client) GetBillableInfoForTeamContext(ctx context.Context) (map[string]BillingActive, error)

GetBillableInfoForTeamContext returns the billing_active status of all users on the team with a custom context

func (*Client) GetBotInfo added in v0.1.0

func (api *Client) GetBotInfo(bot string) (*Bot, error)

GetBotInfo will retrieve the complete bot information

func (*Client) GetBotInfoContext added in v0.2.0

func (api *Client) GetBotInfoContext(ctx context.Context, bot string) (*Bot, error)

GetBotInfoContext will retrieve the complete bot information using a custom context

func (*Client) GetConversationHistory added in v0.2.0

func (api *Client) GetConversationHistory(params *GetConversationHistoryParameters) (*GetConversationHistoryResponse, error)

GetConversationHistory joins an existing conversation

func (*Client) GetConversationHistoryContext added in v0.2.0

func (api *Client) GetConversationHistoryContext(ctx context.Context, params *GetConversationHistoryParameters) (*GetConversationHistoryResponse, error)

GetConversationHistoryContext joins an existing conversation with a custom context

func (*Client) GetConversationInfo added in v0.2.0

func (api *Client) GetConversationInfo(input *GetConversationInfoInput) (*Channel, error)

GetConversationInfo retrieves information about a conversation

func (*Client) GetConversationInfoContext added in v0.2.0

func (api *Client) GetConversationInfoContext(ctx context.Context, input *GetConversationInfoInput) (*Channel, error)

GetConversationInfoContext retrieves information about a conversation with a custom context

func (*Client) GetConversationReplies added in v0.2.0

func (api *Client) GetConversationReplies(params *GetConversationRepliesParameters) (msgs []Message, hasMore bool, nextCursor string, err error)

GetConversationReplies retrieves a thread of messages posted to a conversation

func (*Client) GetConversationRepliesContext added in v0.2.0

func (api *Client) GetConversationRepliesContext(ctx context.Context, params *GetConversationRepliesParameters) (msgs []Message, hasMore bool, nextCursor string, err error)

GetConversationRepliesContext retrieves a thread of messages posted to a conversation with a custom context

func (*Client) GetConversations added in v0.2.0

func (api *Client) GetConversations(params *GetConversationsParameters) (channels []Channel, nextCursor string, err error)

GetConversations returns the list of channels in a Slack team

func (*Client) GetConversationsContext added in v0.2.0

func (api *Client) GetConversationsContext(ctx context.Context, params *GetConversationsParameters) (channels []Channel, nextCursor string, err error)

GetConversationsContext returns the list of channels in a Slack team with a custom context

func (*Client) GetConversationsForUser added in v0.4.0

func (api *Client) GetConversationsForUser(params *GetConversationsForUserParameters) (channels []Channel, nextCursor string, err error)

GetConversationsForUser returns the list conversations for a given user

func (*Client) GetConversationsForUserContext added in v0.4.0

func (api *Client) GetConversationsForUserContext(ctx context.Context, params *GetConversationsForUserParameters) (channels []Channel, nextCursor string, err error)

GetConversationsForUserContext returns the list conversations for a given user with a custom context

func (*Client) GetDNDInfo added in v0.1.0

func (api *Client) GetDNDInfo(user *string) (*DNDStatus, error)

GetDNDInfo provides information about a user's current Do Not Disturb settings.

func (*Client) GetDNDInfoContext added in v0.2.0

func (api *Client) GetDNDInfoContext(ctx context.Context, user *string) (*DNDStatus, error)

GetDNDInfoContext provides information about a user's current Do Not Disturb settings with a custom context.

func (*Client) GetDNDTeamInfo added in v0.1.0

func (api *Client) GetDNDTeamInfo(users []string) (map[string]DNDStatus, error)

GetDNDTeamInfo provides information about a user's current Do Not Disturb settings.

func (*Client) GetDNDTeamInfoContext added in v0.2.0

func (api *Client) GetDNDTeamInfoContext(ctx context.Context, users []string) (map[string]DNDStatus, error)

GetDNDTeamInfoContext provides information about a user's current Do Not Disturb settings with a custom context.

func (*Client) GetEmoji added in v0.1.0

func (api *Client) GetEmoji() (map[string]string, error)

GetEmoji retrieves all the emojis

func (*Client) GetEmojiContext added in v0.2.0

func (api *Client) GetEmojiContext(ctx context.Context) (map[string]string, error)

GetEmojiContext retrieves all the emojis with a custom context

func (*Client) GetFile added in v0.6.1

func (api *Client) GetFile(downloadURL string, writer io.Writer) error

GetFile retreives a given file from its private download URL

func (*Client) GetFileContext added in v0.10.3

func (api *Client) GetFileContext(ctx context.Context, downloadURL string, writer io.Writer) error

GetFileContext retreives a given file from its private download URL with a custom context

For more details, see GetFile documentation.

func (*Client) GetFileInfo added in v0.1.0

func (api *Client) GetFileInfo(fileID string, count, page int) (*File, []Comment, *Paging, error)

GetFileInfo retrieves a file and related comments

func (*Client) GetFileInfoContext added in v0.2.0

func (api *Client) GetFileInfoContext(ctx context.Context, fileID string, count, page int) (*File, []Comment, *Paging, error)

GetFileInfoContext retrieves a file and related comments with a custom context

func (*Client) GetFiles added in v0.1.0

func (api *Client) GetFiles(params GetFilesParameters) ([]File, *Paging, error)

GetFiles retrieves all files according to the parameters given

func (*Client) GetFilesContext added in v0.2.0

func (api *Client) GetFilesContext(ctx context.Context, params GetFilesParameters) ([]File, *Paging, error)

GetFilesContext retrieves all files according to the parameters given with a custom context

func (*Client) GetOtherTeamInfo added in v0.12.0

func (api *Client) GetOtherTeamInfo(team string) (*TeamInfo, error)

GetOtherTeamInfo gets Team information for any team

func (*Client) GetOtherTeamInfoContext added in v0.12.0

func (api *Client) GetOtherTeamInfoContext(ctx context.Context, team string) (*TeamInfo, error)

GetOtherTeamInfoContext gets Team information for any team with a custom context

func (api *Client) GetPermalink(params *PermalinkParameters) (string, error)

GetPermalink returns the permalink for a message. It takes PermalinkParameters and returns a string containing the permalink. It returns an error if unable to retrieve the permalink.

func (*Client) GetPermalinkContext added in v0.5.0

func (api *Client) GetPermalinkContext(ctx context.Context, params *PermalinkParameters) (string, error)

GetPermalinkContext returns the permalink for a message using a custom context.

func (*Client) GetReactions added in v0.1.0

func (api *Client) GetReactions(item ItemRef, params GetReactionsParameters) ([]ItemReaction, error)

GetReactions returns details about the reactions on an item.

func (*Client) GetReactionsContext added in v0.2.0

func (api *Client) GetReactionsContext(ctx context.Context, item ItemRef, params GetReactionsParameters) ([]ItemReaction, error)

GetReactionsContext returns details about the reactions on an item with a custom context

func (*Client) GetRemoteFileInfo added in v0.11.0

func (api *Client) GetRemoteFileInfo(externalID, fileID string) (remotefile *RemoteFile, err error)

GetRemoteFileInfo retrieves the complete remote file information. For more details: https://api.slack.com/methods/files.remote.info

func (*Client) GetRemoteFileInfoContext added in v0.11.0

func (api *Client) GetRemoteFileInfoContext(ctx context.Context, externalID, fileID string) (remotefile *RemoteFile, err error)

GetRemoteFileInfoContext retrieves the complete remote file information given with a custom context. For more details see the GetRemoteFileInfo documentation.

func (*Client) GetScheduledMessages added in v0.6.3

func (api *Client) GetScheduledMessages(params *GetScheduledMessagesParameters) (channels []ScheduledMessage, nextCursor string, err error)

GetScheduledMessages returns the list of scheduled messages based on params

func (*Client) GetScheduledMessagesContext added in v0.6.3

func (api *Client) GetScheduledMessagesContext(ctx context.Context, params *GetScheduledMessagesParameters) (channels []ScheduledMessage, nextCursor string, err error)

GetScheduledMessagesContext returns the list of scheduled messages in a Slack team with a custom context

func (*Client) GetStarred added in v0.1.0

func (api *Client) GetStarred(params StarsParameters) ([]StarredItem, *Paging, error)

GetStarred returns a list of StarredItem items.

The user then has to iterate over them and figure out what they should be looking at according to what is in the Type:

for _, item := range items {
    switch c.Type {
    case "file_comment":
        log.Println(c.Comment)
    case "file":
        ...
}

This function still exists to maintain backwards compatibility. I exposed it as returning []StarredItem, so it shall stay as StarredItem.

func (*Client) GetStarredContext added in v0.2.0

func (api *Client) GetStarredContext(ctx context.Context, params StarsParameters) ([]StarredItem, *Paging, error)

GetStarredContext returns a list of StarredItem items with a custom context

For more details see GetStarred

func (*Client) GetTeamInfo added in v0.1.0

func (api *Client) GetTeamInfo() (*TeamInfo, error)

GetTeamInfo gets the Team Information of the user

func (*Client) GetTeamInfoContext added in v0.2.0

func (api *Client) GetTeamInfoContext(ctx context.Context) (*TeamInfo, error)

GetTeamInfoContext gets the Team Information of the user with a custom context

func (*Client) GetTeamProfile added in v0.12.0

func (api *Client) GetTeamProfile() (*TeamProfile, error)

GetTeamProfile gets the Team Profile settings of the user

func (*Client) GetTeamProfileContext added in v0.12.0

func (api *Client) GetTeamProfileContext(ctx context.Context) (*TeamProfile, error)

GetTeamProfileContext gets the Team Profile settings of the user with a custom context

func (*Client) GetUserByEmail added in v0.2.0

func (api *Client) GetUserByEmail(email string) (*User, error)

GetUserByEmail will retrieve the complete user information by email

func (*Client) GetUserByEmailContext added in v0.2.0

func (api *Client) GetUserByEmailContext(ctx context.Context, email string) (*User, error)

GetUserByEmailContext will retrieve the complete user information by email with a custom context

func (*Client) GetUserGroupMembers added in v0.1.0

func (api *Client) GetUserGroupMembers(userGroup string) ([]string, error)

GetUserGroupMembers will retrieve the current list of users in a group

func (*Client) GetUserGroupMembersContext added in v0.2.0

func (api *Client) GetUserGroupMembersContext(ctx context.Context, userGroup string) ([]string, error)

GetUserGroupMembersContext will retrieve the current list of users in a group with a custom context

func (*Client) GetUserGroups added in v0.1.0

func (api *Client) GetUserGroups(options ...GetUserGroupsOption) ([]UserGroup, error)

GetUserGroups returns a list of user groups for the team

func (*Client) GetUserGroupsContext added in v0.2.0

func (api *Client) GetUserGroupsContext(ctx context.Context, options ...GetUserGroupsOption) ([]UserGroup, error)

GetUserGroupsContext returns a list of user groups for the team with a custom context

func (*Client) GetUserIdentity added in v0.1.0

func (api *Client) GetUserIdentity() (*UserIdentityResponse, error)

GetUserIdentity will retrieve user info available per identity scopes

func (*Client) GetUserIdentityContext added in v0.2.0

func (api *Client) GetUserIdentityContext(ctx context.Context) (response *UserIdentityResponse, err error)

GetUserIdentityContext will retrieve user info available per identity scopes with a custom context

func (*Client) GetUserInfo added in v0.1.0

func (api *Client) GetUserInfo(user string) (*User, error)

GetUserInfo will retrieve the complete user information

func (*Client) GetUserInfoContext added in v0.2.0

func (api *Client) GetUserInfoContext(ctx context.Context, user string) (*User, error)

GetUserInfoContext will retrieve the complete user information with a custom context

func (*Client) GetUserPrefs added in v0.6.3

func (api *Client) GetUserPrefs() (*UserPrefsCarrier, error)

func (*Client) GetUserPrefsContext added in v0.10.3

func (api *Client) GetUserPrefsContext(ctx context.Context) (*UserPrefsCarrier, error)

func (*Client) GetUserPresence added in v0.1.0

func (api *Client) GetUserPresence(user string) (*UserPresence, error)

GetUserPresence will retrieve the current presence status of given user.

func (*Client) GetUserPresenceContext added in v0.2.0

func (api *Client) GetUserPresenceContext(ctx context.Context, user string) (*UserPresence, error)

GetUserPresenceContext will retrieve the current presence status of given user with a custom context.

func (*Client) GetUserProfile added in v0.3.0

func (api *Client) GetUserProfile(params *GetUserProfileParameters) (*UserProfile, error)

GetUserProfile retrieves a user's profile information.

func (*Client) GetUserProfileContext added in v0.3.0

func (api *Client) GetUserProfileContext(ctx context.Context, params *GetUserProfileParameters) (*UserProfile, error)

GetUserProfileContext retrieves a user's profile information with a context.

func (*Client) GetUsers added in v0.1.0

func (api *Client) GetUsers(options ...GetUsersOption) ([]User, error)

GetUsers returns the list of users (with their detailed information)

func (*Client) GetUsersContext added in v0.2.0

func (api *Client) GetUsersContext(ctx context.Context, options ...GetUsersOption) (results []User, err error)

GetUsersContext returns the list of users (with their detailed information) with a custom context

func (*Client) GetUsersInConversation added in v0.2.0

func (api *Client) GetUsersInConversation(params *GetUsersInConversationParameters) ([]string, string, error)

GetUsersInConversation returns the list of users in a conversation

func (*Client) GetUsersInConversationContext added in v0.2.0

func (api *Client) GetUsersInConversationContext(ctx context.Context, params *GetUsersInConversationParameters) ([]string, string, error)

GetUsersInConversationContext returns the list of users in a conversation with a custom context

func (*Client) GetUsersInfo added in v0.6.4

func (api *Client) GetUsersInfo(users ...string) (*[]User, error)

GetUsersInfo will retrieve the complete multi-users information

func (*Client) GetUsersInfoContext added in v0.6.4

func (api *Client) GetUsersInfoContext(ctx context.Context, users ...string) (*[]User, error)

GetUsersInfoContext will retrieve the complete multi-users information with a custom context

func (*Client) GetUsersPaginated added in v0.3.0

func (api *Client) GetUsersPaginated(options ...GetUsersOption) UserPagination

GetUsersPaginated fetches users in a paginated fashion, see GetUsersContext for usage.

func (*Client) InviteGuest added in v0.1.0

func (api *Client) InviteGuest(teamName, channel, firstName, lastName, emailAddress string) error

InviteGuest invites a user to Slack as a single-channel guest

func (*Client) InviteGuestContext added in v0.2.0

func (api *Client) InviteGuestContext(ctx context.Context, teamName, channel, firstName, lastName, emailAddress string) error

InviteGuestContext invites a user to Slack as a single-channel guest with a custom context

func (*Client) InviteRestricted added in v0.1.0

func (api *Client) InviteRestricted(teamName, channel, firstName, lastName, emailAddress string) error

InviteRestricted invites a user to Slack as a restricted account

func (*Client) InviteRestrictedContext added in v0.2.0

func (api *Client) InviteRestrictedContext(ctx context.Context, teamName, channel, firstName, lastName, emailAddress string) error

InviteRestrictedContext invites a user to Slack as a restricted account with a custom context

func (*Client) InviteSharedEmailsToConversation added in v0.12.3

func (api *Client) InviteSharedEmailsToConversation(channelID string, emails ...string) (string, bool, error)

InviteSharedEmailsToConversation invites users to a shared channels by email

func (*Client) InviteSharedEmailsToConversationContext added in v0.12.3

func (api *Client) InviteSharedEmailsToConversationContext(ctx context.Context, channelID string, emails ...string) (string, bool, error)

InviteSharedEmailsToConversationContext invites users to a shared channels by email using context

func (*Client) InviteSharedUserIDsToConversation added in v0.12.3

func (api *Client) InviteSharedUserIDsToConversation(channelID string, userIDs ...string) (string, bool, error)

InviteSharedUserIDsToConversation invites users to a shared channels by user id

func (*Client) InviteSharedUserIDsToConversationContext added in v0.12.3

func (api *Client) InviteSharedUserIDsToConversationContext(ctx context.Context, channelID string, userIDs ...string) (string, bool, error)

InviteSharedUserIDsToConversationContext invites users to a shared channels by user id with context

func (*Client) InviteToTeam added in v0.1.0

func (api *Client) InviteToTeam(teamName, firstName, lastName, emailAddress string) error

InviteToTeam invites a user to a Slack team

func (*Client) InviteToTeamContext added in v0.2.0

func (api *Client) InviteToTeamContext(ctx context.Context, teamName, firstName, lastName, emailAddress string) error

InviteToTeamContext invites a user to a Slack team with a custom context

func (*Client) InviteUsersToConversation added in v0.2.0

func (api *Client) InviteUsersToConversation(channelID string, users ...string) (*Channel, error)

InviteUsersToConversation invites users to a channel

func (*Client) InviteUsersToConversationContext added in v0.2.0

func (api *Client) InviteUsersToConversationContext(ctx context.Context, channelID string, users ...string) (*Channel, error)

InviteUsersToConversationContext invites users to a channel with a custom context

func (*Client) JoinConversation added in v0.2.0

func (api *Client) JoinConversation(channelID string) (*Channel, string, []string, error)

JoinConversation joins an existing conversation

func (*Client) JoinConversationContext added in v0.2.0

func (api *Client) JoinConversationContext(ctx context.Context, channelID string) (*Channel, string, []string, error)

JoinConversationContext joins an existing conversation with a custom context

func (*Client) KickUserFromConversation added in v0.2.0

func (api *Client) KickUserFromConversation(channelID string, user string) error

KickUserFromConversation removes a user from a conversation

func (*Client) KickUserFromConversationContext added in v0.2.0

func (api *Client) KickUserFromConversationContext(ctx context.Context, channelID string, user string) error

KickUserFromConversationContext removes a user from a conversation with a custom context

func (*Client) LeaveConversation added in v0.2.0

func (api *Client) LeaveConversation(channelID string) (bool, error)

LeaveConversation leaves a conversation

func (*Client) LeaveConversationContext added in v0.2.0

func (api *Client) LeaveConversationContext(ctx context.Context, channelID string) (bool, error)

LeaveConversationContext leaves a conversation with a custom context

func (*Client) ListAllStars added in v0.6.1

func (api *Client) ListAllStars() ([]Item, error)

ListAllStars returns the complete list of starred items

func (*Client) ListAllStarsContext added in v0.6.1

func (api *Client) ListAllStarsContext(ctx context.Context) (results []Item, err error)

ListAllStarsContext returns the list of users (with their detailed information) with a custom context

func (*Client) ListBookmarks added in v0.11.0

func (api *Client) ListBookmarks(channelID string) ([]Bookmark, error)

ListBookmarks returns all bookmarks for a channel.

func (*Client) ListBookmarksContext added in v0.11.0

func (api *Client) ListBookmarksContext(ctx context.Context, channelID string) ([]Bookmark, error)

ListBookmarksContext returns all bookmarks for a channel with a custom context.

func (*Client) ListEventAuthorizations added in v0.7.2

func (api *Client) ListEventAuthorizations(eventContext string) ([]EventAuthorization, error)

func (*Client) ListEventAuthorizationsContext added in v0.7.2

func (api *Client) ListEventAuthorizationsContext(ctx context.Context, eventContext string) ([]EventAuthorization, error)

ListEventAuthorizationsContext lists authed users and teams for the given event_context. You must provide an app-level token to the client using OptionAppLevelToken. More info: https://api.slack.com/methods/apps.event.authorizations.list

func (*Client) ListFiles added in v0.6.1

func (api *Client) ListFiles(params ListFilesParameters) ([]File, *ListFilesParameters, error)

ListFiles retrieves all files according to the parameters given. Uses cursor based pagination.

func (*Client) ListFilesContext added in v0.6.1

func (api *Client) ListFilesContext(ctx context.Context, params ListFilesParameters) ([]File, *ListFilesParameters, error)

ListFilesContext retrieves all files according to the parameters given with a custom context.

For more details, see ListFiles documentation.

func (*Client) ListPins added in v0.1.0

func (api *Client) ListPins(channel string) ([]Item, *Paging, error)

ListPins returns information about the items a user reacted to.

func (*Client) ListPinsContext added in v0.2.0

func (api *Client) ListPinsContext(ctx context.Context, channel string) ([]Item, *Paging, error)

ListPinsContext returns information about the items a user reacted to with a custom context.

func (*Client) ListReactions added in v0.1.0

func (api *Client) ListReactions(params ListReactionsParameters) ([]ReactedItem, *Paging, error)

ListReactions returns information about the items a user reacted to.

func (*Client) ListReactionsContext added in v0.2.0

func (api *Client) ListReactionsContext(ctx context.Context, params ListReactionsParameters) ([]ReactedItem, *Paging, error)

ListReactionsContext returns information about the items a user reacted to with a custom context.

func (*Client) ListReminders added in v0.7.2

func (api *Client) ListReminders() ([]*Reminder, error)

ListReminders lists all the reminders created by or for the authenticated user

See https://api.slack.com/methods/reminders.list

func (*Client) ListRemindersContext added in v0.10.3

func (api *Client) ListRemindersContext(ctx context.Context) ([]*Reminder, error)

ListRemindersContext lists all the reminders created by or for the authenticated user with a custom context

For more details, see ListReminders documentation.

func (*Client) ListRemoteFiles added in v0.11.0

func (api *Client) ListRemoteFiles(params ListRemoteFilesParameters) ([]RemoteFile, error)

ListRemoteFiles retrieves all remote files according to the parameters given. Uses cursor based pagination. For more details: https://api.slack.com/methods/files.remote.list

func (*Client) ListRemoteFilesContext added in v0.11.0

func (api *Client) ListRemoteFilesContext(ctx context.Context, params ListRemoteFilesParameters) ([]RemoteFile, error)

ListRemoteFilesContext retrieves all remote files according to the parameters given with a custom context. Uses cursor based pagination. For more details see the ListRemoteFiles documentation.

func (*Client) ListStars added in v0.1.0

func (api *Client) ListStars(params StarsParameters) ([]Item, *Paging, error)

ListStars returns information about the stars a user added

func (*Client) ListStarsContext added in v0.2.0

func (api *Client) ListStarsContext(ctx context.Context, params StarsParameters) ([]Item, *Paging, error)

ListStarsContext returns information about the stars a user added with a custom context

func (*Client) ListStarsPaginated added in v0.6.1

func (api *Client) ListStarsPaginated(options ...ListStarsOption) StarredItemPagination

ListStarsPaginated fetches users in a paginated fashion, see ListStarsPaginationContext for usage.

func (*Client) ListTeams added in v0.12.0

func (api *Client) ListTeams(params ListTeamsParameters) ([]Team, string, error)

ListTeams returns all workspaces a token can access. More info: https://api.slack.com/methods/admin.teams.list

func (*Client) ListTeamsContext added in v0.12.0

func (api *Client) ListTeamsContext(ctx context.Context, params ListTeamsParameters) ([]Team, string, error)

ListTeams returns all workspaces a token can access with a custom context.

func (*Client) MarkConversation added in v0.7.4

func (api *Client) MarkConversation(channel, ts string) (err error)

MarkConversation sets the read mark of a conversation to a specific point

func (*Client) MarkConversationContext added in v0.7.4

func (api *Client) MarkConversationContext(ctx context.Context, channel, ts string) error

MarkConversationContext sets the read mark of a conversation to a specific point with a custom context

func (*Client) MuteChat added in v0.6.3

func (api *Client) MuteChat(channelID string) (*UserPrefsCarrier, error)

func (*Client) NewRTM added in v0.1.0

func (api *Client) NewRTM(options ...RTMOption) *RTM

NewRTM returns a RTM, which provides a fully managed connection to Slack's websocket-based Real-Time Messaging protocol.

func (*Client) OpenConversation added in v0.2.0

func (api *Client) OpenConversation(params *OpenConversationParameters) (*Channel, bool, bool, error)

OpenConversation opens or resumes a direct message or multi-person direct message

func (*Client) OpenConversationContext added in v0.2.0

func (api *Client) OpenConversationContext(ctx context.Context, params *OpenConversationParameters) (*Channel, bool, bool, error)

OpenConversationContext opens or resumes a direct message or multi-person direct message with a custom context

func (*Client) OpenDialog added in v0.3.0

func (api *Client) OpenDialog(triggerID string, dialog Dialog) (err error)

OpenDialog opens a dialog window where the triggerID originated from. EXPERIMENTAL: dialog functionality is currently experimental, api is not considered stable.

func (*Client) OpenDialogContext added in v0.3.0

func (api *Client) OpenDialogContext(ctx context.Context, triggerID string, dialog Dialog) (err error)

OpenDialogContext opens a dialog window where the triggerId originated from with a custom context EXPERIMENTAL: dialog functionality is currently experimental, api is not considered stable.

func (*Client) OpenView added in v0.6.2

func (api *Client) OpenView(triggerID string, view ModalViewRequest) (*ViewResponse, error)

OpenView opens a view for a user.

func (*Client) OpenViewContext added in v0.6.2

func (api *Client) OpenViewContext(
	ctx context.Context,
	triggerID string,
	view ModalViewRequest,
) (*ViewResponse, error)

OpenViewContext opens a view for a user with a custom context.

func (*Client) PostEphemeral added in v0.2.0

func (api *Client) PostEphemeral(channelID, userID string, options ...MsgOption) (string, error)

PostEphemeral sends an ephemeral message to a user in a channel. Message is escaped by default according to https://api.slack.com/docs/formatting Use http://davestevens.github.io/slack-message-builder/ to help crafting your message.

func (*Client) PostEphemeralContext added in v0.2.0

func (api *Client) PostEphemeralContext(ctx context.Context, channelID, userID string, options ...MsgOption) (timestamp string, err error)

PostEphemeralContext sends an ephemeal message to a user in a channel with a custom context For more details, see PostEphemeral documentation

func (*Client) PostMessage added in v0.1.0

func (api *Client) PostMessage(channelID string, options ...MsgOption) (string, string, error)

PostMessage sends a message to a channel. Message is escaped by default according to https://api.slack.com/docs/formatting Use http://davestevens.github.io/slack-message-builder/ to help crafting your message.

func (*Client) PostMessageContext added in v0.2.0

func (api *Client) PostMessageContext(ctx context.Context, channelID string, options ...MsgOption) (string, string, error)

PostMessageContext sends a message to a channel with a custom context For more details, see PostMessage documentation.

func (*Client) PublishView added in v0.6.2

func (api *Client) PublishView(userID string, view HomeTabViewRequest, hash string) (*ViewResponse, error)

PublishView publishes a static view for a user.

func (*Client) PublishViewContext added in v0.6.2

func (api *Client) PublishViewContext(
	ctx context.Context,
	userID string,
	view HomeTabViewRequest,
	hash string,
) (*ViewResponse, error)

PublishViewContext publishes a static view for a user with a custom context.

func (*Client) PushView added in v0.6.2

func (api *Client) PushView(triggerID string, view ModalViewRequest) (*ViewResponse, error)

PushView pushes a view onto the stack of a root view.

func (*Client) PushViewContext added in v0.6.2

func (api *Client) PushViewContext(
	ctx context.Context,
	triggerID string,
	view ModalViewRequest,
) (*ViewResponse, error)

PublishViewContext pushes a view onto the stack of a root view with a custom context.

func (*Client) RemoveBookmark added in v0.11.0

func (api *Client) RemoveBookmark(channelID, bookmarkID string) error

RemoveBookmark removes a bookmark from a channel

func (*Client) RemoveBookmarkContext added in v0.11.0

func (api *Client) RemoveBookmarkContext(ctx context.Context, channelID, bookmarkID string) error

RemoveBookmarkContext removes a bookmark from a channel with a custom context

func (*Client) RemovePin added in v0.1.0

func (api *Client) RemovePin(channel string, item ItemRef) error

RemovePin un-pins an item from a channel

func (*Client) RemovePinContext added in v0.2.0

func (api *Client) RemovePinContext(ctx context.Context, channel string, item ItemRef) error

RemovePinContext un-pins an item from a channel with a custom context

func (*Client) RemoveReaction added in v0.1.0

func (api *Client) RemoveReaction(name string, item ItemRef) error

RemoveReaction removes a reaction emoji from a message, file or file comment.

func (*Client) RemoveReactionContext added in v0.2.0

func (api *Client) RemoveReactionContext(ctx context.Context, name string, item ItemRef) error

RemoveReactionContext removes a reaction emoji from a message, file or file comment with a custom context.

func (*Client) RemoveRemoteFile added in v0.11.0

func (api *Client) RemoveRemoteFile(externalID, fileID string) (err error)

RemoveRemoteFile removes a remote file. For more details: https://api.slack.com/methods/files.remote.remove

func (*Client) RemoveRemoteFileContext added in v0.11.0

func (api *Client) RemoveRemoteFileContext(ctx context.Context, externalID, fileID string) (err error)

RemoveRemoteFileContext removes a remote file with a custom context For more information see the RemoveRemoteFiles documentation.

func (*Client) RemoveStar added in v0.1.0

func (api *Client) RemoveStar(channel string, item ItemRef) error

RemoveStar removes a starred item from a channel

func (*Client) RemoveStarContext added in v0.2.0

func (api *Client) RemoveStarContext(ctx context.Context, channel string, item ItemRef) error

RemoveStarContext removes a starred item from a channel with a custom context

func (*Client) RenameConversation added in v0.2.0

func (api *Client) RenameConversation(channelID, channelName string) (*Channel, error)

RenameConversation renames a conversation

func (*Client) RenameConversationContext added in v0.2.0

func (api *Client) RenameConversationContext(ctx context.Context, channelID, channelName string) (*Channel, error)

RenameConversationContext renames a conversation with a custom context

func (*Client) RevokeFilePublicURL added in v0.1.0

func (api *Client) RevokeFilePublicURL(fileID string) (*File, error)

RevokeFilePublicURL disables public/external sharing for a file

func (*Client) RevokeFilePublicURLContext added in v0.2.0

func (api *Client) RevokeFilePublicURLContext(ctx context.Context, fileID string) (*File, error)

RevokeFilePublicURLContext disables public/external sharing for a file with a custom context

func (*Client) RotateTokens added in v0.12.3

func (api *Client) RotateTokens(configToken string, refreshToken string) (*TokenResponse, error)

RotateTokens exchanges a refresh token for a new app configuration token

func (*Client) RotateTokensContext added in v0.12.3

func (api *Client) RotateTokensContext(ctx context.Context, configToken string, refreshToken string) (*TokenResponse, error)

RotateTokensContext exchanges a refresh token for a new app configuration token with a custom context

func (*Client) SaveWorkflowStepConfiguration added in v0.10.3

func (api *Client) SaveWorkflowStepConfiguration(workflowStepEditID string, inputs *WorkflowStepInputs, outputs *[]WorkflowStepOutput) error

func (*Client) SaveWorkflowStepConfigurationContext added in v0.10.3

func (api *Client) SaveWorkflowStepConfigurationContext(ctx context.Context, workflowStepEditID string, inputs *WorkflowStepInputs, outputs *[]WorkflowStepOutput) error

func (*Client) ScheduleMessage added in v0.6.3

func (api *Client) ScheduleMessage(channelID, postAt string, options ...MsgOption) (string, string, error)

ScheduleMessage sends a message to a channel. Message is escaped by default according to https://api.slack.com/docs/formatting Use http://davestevens.github.io/slack-message-builder/ to help crafting your message.

func (*Client) ScheduleMessageContext added in v0.10.3

func (api *Client) ScheduleMessageContext(ctx context.Context, channelID, postAt string, options ...MsgOption) (string, string, error)

ScheduleMessageContext sends a message to a channel with a custom context

For more details, see ScheduleMessage documentation.

func (*Client) Search added in v0.1.0

func (api *Client) Search(query string, params SearchParameters) (*SearchMessages, *SearchFiles, error)

func (*Client) SearchContext added in v0.2.0

func (api *Client) SearchContext(ctx context.Context, query string, params SearchParameters) (*SearchMessages, *SearchFiles, error)

func (*Client) SearchFiles added in v0.1.0

func (api *Client) SearchFiles(query string, params SearchParameters) (*SearchFiles, error)

func (*Client) SearchFilesContext added in v0.2.0

func (api *Client) SearchFilesContext(ctx context.Context, query string, params SearchParameters) (*SearchFiles, error)

func (*Client) SearchMessages added in v0.1.0

func (api *Client) SearchMessages(query string, params SearchParameters) (*SearchMessages, error)

func (*Client) SearchMessagesContext added in v0.2.0

func (api *Client) SearchMessagesContext(ctx context.Context, query string, params SearchParameters) (*SearchMessages, error)

func (*Client) SendAuthRevoke added in v0.5.0

func (api *Client) SendAuthRevoke(token string) (*AuthRevokeResponse, error)

SendAuthRevoke will send a revocation for our token

func (*Client) SendAuthRevokeContext added in v0.5.0

func (api *Client) SendAuthRevokeContext(ctx context.Context, token string) (*AuthRevokeResponse, error)

SendAuthRevokeContext will send a revocation request for our token to api.revoke with context

func (*Client) SendMessage added in v0.1.0

func (api *Client) SendMessage(channel string, options ...MsgOption) (string, string, string, error)

SendMessage more flexible method for configuring messages.

func (*Client) SendMessageContext added in v0.2.0

func (api *Client) SendMessageContext(ctx context.Context, channelID string, options ...MsgOption) (_channel string, _timestamp string, _text string, err error)

SendMessageContext more flexible method for configuring messages with a custom context.

func (*Client) SendSSOBindingEmail added in v0.1.0

func (api *Client) SendSSOBindingEmail(teamName, user string) error

SendSSOBindingEmail sends an SSO binding email to the specified user

func (*Client) SendSSOBindingEmailContext added in v0.2.0

func (api *Client) SendSSOBindingEmailContext(ctx context.Context, teamName, user string) error

SendSSOBindingEmailContext sends an SSO binding email to the specified user with a custom context

func (*Client) SetPurposeOfConversation added in v0.2.0

func (api *Client) SetPurposeOfConversation(channelID, purpose string) (*Channel, error)

SetPurposeOfConversation sets the purpose for a conversation

func (*Client) SetPurposeOfConversationContext added in v0.2.0

func (api *Client) SetPurposeOfConversationContext(ctx context.Context, channelID, purpose string) (*Channel, error)

SetPurposeOfConversationContext sets the purpose for a conversation with a custom context

func (*Client) SetRegular added in v0.1.0

func (api *Client) SetRegular(teamName, user string) error

SetRegular enables the specified user

func (*Client) SetRegularContext added in v0.2.0

func (api *Client) SetRegularContext(ctx context.Context, teamName, user string) error

SetRegularContext enables the specified user with a custom context

func (*Client) SetRestricted added in v0.1.0

func (api *Client) SetRestricted(teamName, uid string, channelIds ...string) error

SetRestricted converts a user into a restricted account

func (*Client) SetRestrictedContext added in v0.2.0

func (api *Client) SetRestrictedContext(ctx context.Context, teamName, uid string, channelIds ...string) error

SetRestrictedContext converts a user into a restricted account with a custom context

func (*Client) SetSnooze added in v0.1.0

func (api *Client) SetSnooze(minutes int) (*DNDStatus, error)

SetSnooze adjusts the snooze duration for a user's Do Not Disturb settings. If a snooze session is not already active for the user, invoking this method will begin one for the specified duration.

func (*Client) SetSnoozeContext added in v0.2.0

func (api *Client) SetSnoozeContext(ctx context.Context, minutes int) (*DNDStatus, error)

SetSnoozeContext adjusts the snooze duration for a user's Do Not Disturb settings with a custom context. For more information see the SetSnooze docs

func (*Client) SetTopicOfConversation added in v0.2.0

func (api *Client) SetTopicOfConversation(channelID, topic string) (*Channel, error)

SetTopicOfConversation sets the topic for a conversation

func (*Client) SetTopicOfConversationContext added in v0.2.0

func (api *Client) SetTopicOfConversationContext(ctx context.Context, channelID, topic string) (*Channel, error)

SetTopicOfConversationContext sets the topic for a conversation with a custom context

func (*Client) SetUltraRestricted added in v0.1.0

func (api *Client) SetUltraRestricted(teamName, uid, channel string) error

SetUltraRestricted converts a user into a single-channel guest

func (*Client) SetUltraRestrictedContext added in v0.2.0

func (api *Client) SetUltraRestrictedContext(ctx context.Context, teamName, uid, channel string) error

SetUltraRestrictedContext converts a user into a single-channel guest with a custom context

func (*Client) SetUserAsActive added in v0.1.0

func (api *Client) SetUserAsActive() error

SetUserAsActive marks the currently authenticated user as active

func (*Client) SetUserAsActiveContext added in v0.2.0

func (api *Client) SetUserAsActiveContext(ctx context.Context) (err error)

SetUserAsActiveContext marks the currently authenticated user as active with a custom context

func (*Client) SetUserCustomFields added in v0.12.0

func (api *Client) SetUserCustomFields(userID string, customFields map[string]UserProfileCustomField) error

SetUserCustomFields sets Custom Profile fields on the provided users account. Due to the non-repeating elements within the request, a map fields is required. The key in the map signifies the field that will be updated.

Note: You may need to change the way the custom field is populated within the Profile section of the Admin Console from SCIM or User Entered to API.

See GetTeamProfile for information to retrieve possible fields for your account.

func (*Client) SetUserCustomFieldsContext added in v0.12.0

func (api *Client) SetUserCustomFieldsContext(ctx context.Context, userID string, customFields map[string]UserProfileCustomField) error

SetUserCustomFieldsContext will set a users custom profile field with context.

For more information see SetUserCustomFields

func (*Client) SetUserCustomStatus added in v0.1.0

func (api *Client) SetUserCustomStatus(statusText, statusEmoji string, statusExpiration int64) error

SetUserCustomStatus will set a custom status and emoji for the currently authenticated user. If statusEmoji is "" and statusText is not, the Slack API will automatically set it to ":speech_balloon:". Otherwise, if both are "" the Slack API will unset the custom status/emoji. If statusExpiration is set to 0 the status will not expire.

func (*Client) SetUserCustomStatusContext added in v0.2.0

func (api *Client) SetUserCustomStatusContext(ctx context.Context, statusText, statusEmoji string, statusExpiration int64) error

SetUserCustomStatusContext will set a custom status and emoji for the currently authenticated user with a custom context

For more information see SetUserCustomStatus

func (*Client) SetUserCustomStatusContextWithUser added in v0.6.1

func (api *Client) SetUserCustomStatusContextWithUser(ctx context.Context, user, statusText, statusEmoji string, statusExpiration int64) error

SetUserCustomStatusContextWithUser will set a custom status and emoji for the provided user with a custom context

For more information see SetUserCustomStatus

func (*Client) SetUserCustomStatusWithUser added in v0.6.1

func (api *Client) SetUserCustomStatusWithUser(user, statusText, statusEmoji string, statusExpiration int64) error

SetUserCustomStatusWithUser will set a custom status and emoji for the provided user.

For more information see SetUserCustomStatus

func (*Client) SetUserPhoto added in v0.1.0

func (api *Client) SetUserPhoto(image string, params UserSetPhotoParams) error

SetUserPhoto changes the currently authenticated user's profile image

func (*Client) SetUserPhotoContext added in v0.2.0

func (api *Client) SetUserPhotoContext(ctx context.Context, image string, params UserSetPhotoParams) (err error)

SetUserPhotoContext changes the currently authenticated user's profile image using a custom context

func (*Client) SetUserPresence added in v0.1.0

func (api *Client) SetUserPresence(presence string) error

SetUserPresence changes the currently authenticated user presence

func (*Client) SetUserPresenceContext added in v0.2.0

func (api *Client) SetUserPresenceContext(ctx context.Context, presence string) error

SetUserPresenceContext changes the currently authenticated user presence with a custom context

func (*Client) SetUserRealName added in v0.7.0

func (api *Client) SetUserRealName(realName string) error

SetUserRealName changes the currently authenticated user's realName

For more information see SetUserRealNameContextWithUser

func (*Client) SetUserRealNameContextWithUser added in v0.7.0

func (api *Client) SetUserRealNameContextWithUser(ctx context.Context, user, realName string) error

SetUserRealNameContextWithUser will set a real name for the provided user with a custom context

func (*Client) ShareFilePublicURL added in v0.1.0

func (api *Client) ShareFilePublicURL(fileID string) (*File, []Comment, *Paging, error)

ShareFilePublicURL enabled public/external sharing for a file

func (*Client) ShareFilePublicURLContext added in v0.2.0

func (api *Client) ShareFilePublicURLContext(ctx context.Context, fileID string) (*File, []Comment, *Paging, error)

ShareFilePublicURLContext enabled public/external sharing for a file with a custom context

func (*Client) ShareRemoteFile added in v0.11.0

func (api *Client) ShareRemoteFile(channels []string, externalID, fileID string) (file *RemoteFile, err error)

ShareRemoteFile shares a remote file to channels For more details: https://api.slack.com/methods/files.remote.share

func (*Client) ShareRemoteFileContext added in v0.11.0

func (api *Client) ShareRemoteFileContext(ctx context.Context, channels []string, externalID, fileID string) (file *RemoteFile, err error)

ShareRemoteFileContext shares a remote file to channels with a custom context. For more details see the ShareRemoteFile documentation.

func (*Client) StartRTM added in v0.1.0

func (api *Client) StartRTM() (info *Info, websocketURL string, err error)

StartRTM calls the "rtm.start" endpoint and returns the provided URL and the full Info block.

To have a fully managed Websocket connection, use `NewRTM`, and call `ManageConnection()` on it.

func (*Client) StartRTMContext added in v0.2.0

func (api *Client) StartRTMContext(ctx context.Context) (info *Info, websocketURL string, err error)

StartRTMContext calls the "rtm.start" endpoint and returns the provided URL and the full Info block with a custom context.

To have a fully managed Websocket connection, use `NewRTM`, and call `ManageConnection()` on it.

func (*Client) StartSocketModeContext added in v0.8.0

func (api *Client) StartSocketModeContext(ctx context.Context) (info *SocketModeConnection, websocketURL string, err error)

StartSocketModeContext calls the "apps.connections.open" endpoint and returns the provided URL and the full Info block with a custom context.

To have a fully managed Socket Mode connection, use `socketmode.New()`, and call `Run()` on it.

func (*Client) UnArchiveConversation added in v0.2.0

func (api *Client) UnArchiveConversation(channelID string) error

UnArchiveConversation reverses conversation archival

func (*Client) UnArchiveConversationContext added in v0.2.0

func (api *Client) UnArchiveConversationContext(ctx context.Context, channelID string) error

UnArchiveConversationContext reverses conversation archival with a custom context

func (*Client) UnMuteChat added in v0.6.3

func (api *Client) UnMuteChat(channelID string) (*UserPrefsCarrier, error)

func (*Client) UnfurlMessage added in v0.5.0

func (api *Client) UnfurlMessage(channelID, timestamp string, unfurls map[string]Attachment, options ...MsgOption) (string, string, string, error)

UnfurlMessage unfurls a message in a channel

func (*Client) UnfurlMessageContext added in v0.10.0

func (api *Client) UnfurlMessageContext(ctx context.Context, channelID, timestamp string, unfurls map[string]Attachment, options ...MsgOption) (string, string, string, error)

UnfurlMessageContext unfurls a message in a channel with a custom context

func (*Client) UnfurlMessageWithAuthURL added in v0.8.0

func (api *Client) UnfurlMessageWithAuthURL(channelID, timestamp string, userAuthURL string, options ...MsgOption) (string, string, string, error)

UnfurlMessageWithAuthURL sends an unfurl request containing an authentication URL. For more details see: https://api.slack.com/reference/messaging/link-unfurling#authenticated_unfurls

func (*Client) UnfurlMessageWithAuthURLContext added in v0.8.0

func (api *Client) UnfurlMessageWithAuthURLContext(ctx context.Context, channelID, timestamp string, userAuthURL string, options ...MsgOption) (string, string, string, error)

UnfurlMessageWithAuthURLContext sends an unfurl request containing an authentication URL. For more details see: https://api.slack.com/reference/messaging/link-unfurling#authenticated_unfurls

func (*Client) UninstallApp added in v0.8.0

func (api *Client) UninstallApp(clientID, clientSecret string) error

func (*Client) UninstallAppContext added in v0.10.3

func (api *Client) UninstallAppContext(ctx context.Context, clientID, clientSecret string) error

func (*Client) UnsetUserCustomStatus added in v0.1.0

func (api *Client) UnsetUserCustomStatus() error

UnsetUserCustomStatus removes the custom status message for the currently authenticated user. This is a convenience method that wraps (*Client).SetUserCustomStatus().

func (*Client) UnsetUserCustomStatusContext added in v0.2.0

func (api *Client) UnsetUserCustomStatusContext(ctx context.Context) error

UnsetUserCustomStatusContext removes the custom status message for the currently authenticated user with a custom context. This is a convenience method that wraps (*Client).SetUserCustomStatus().

func (*Client) UpdateConfigTokens added in v0.12.3

func (api *Client) UpdateConfigTokens(response *TokenResponse)

UpdateConfigTokens replaces the configuration tokens in the client with those returned by the API

func (*Client) UpdateManifest added in v0.12.3

func (api *Client) UpdateManifest(manifest *Manifest, token string, appId string) (*UpdateManifestResponse, error)

UpdateManifest updates an app from an app manifest

func (*Client) UpdateManifestContext added in v0.12.3

func (api *Client) UpdateManifestContext(ctx context.Context, manifest *Manifest, token string, appId string) (*UpdateManifestResponse, error)

UpdateManifestContext updates an app from an app manifest with a custom context

func (*Client) UpdateMessage added in v0.1.0

func (api *Client) UpdateMessage(channelID, timestamp string, options ...MsgOption) (string, string, string, error)

UpdateMessage updates a message in a channel

func (*Client) UpdateMessageContext added in v0.2.0

func (api *Client) UpdateMessageContext(ctx context.Context, channelID, timestamp string, options ...MsgOption) (string, string, string, error)

UpdateMessageContext updates a message in a channel

func (*Client) UpdateRemoteFile added in v0.11.0

func (api *Client) UpdateRemoteFile(fileID string, params RemoteFileParameters) (remotefile *RemoteFile, err error)

UpdateRemoteFile updates a remote file For more details: https://api.slack.com/methods/files.remote.update

func (*Client) UpdateRemoteFileContext added in v0.11.0

func (api *Client) UpdateRemoteFileContext(ctx context.Context, fileID string, params RemoteFileParameters) (remotefile *RemoteFile, err error)

UpdateRemoteFileContext updates a remote file with a custom context For more details see the UpdateRemoteFile documentation.

func (*Client) UpdateUserGroup added in v0.1.0

func (api *Client) UpdateUserGroup(userGroupID string, options ...UpdateUserGroupsOption) (UserGroup, error)

UpdateUserGroup will update an existing user group

func (*Client) UpdateUserGroupContext added in v0.2.0

func (api *Client) UpdateUserGroupContext(ctx context.Context, userGroupID string, options ...UpdateUserGroupsOption) (UserGroup, error)

UpdateUserGroupContext will update an existing user group with a custom context

func (*Client) UpdateUserGroupMembers added in v0.1.0

func (api *Client) UpdateUserGroupMembers(userGroup string, members string) (UserGroup, error)

UpdateUserGroupMembers will update the members of an existing user group

func (*Client) UpdateUserGroupMembersContext added in v0.2.0

func (api *Client) UpdateUserGroupMembersContext(ctx context.Context, userGroup string, members string) (UserGroup, error)

UpdateUserGroupMembersContext will update the members of an existing user group with a custom context

func (*Client) UpdateView added in v0.6.2

func (api *Client) UpdateView(view ModalViewRequest, externalID, hash, viewID string) (*ViewResponse, error)

UpdateView updates an existing view.

func (*Client) UpdateViewContext added in v0.6.2

func (api *Client) UpdateViewContext(
	ctx context.Context,
	view ModalViewRequest,
	externalID, hash,
	viewID string,
) (*ViewResponse, error)

UpdateViewContext updates an existing view with a custom context.

func (*Client) UploadFile added in v0.1.0

func (api *Client) UploadFile(params FileUploadParameters) (file *File, err error)

UploadFile uploads a file

func (*Client) UploadFileContext added in v0.2.0

func (api *Client) UploadFileContext(ctx context.Context, params FileUploadParameters) (file *File, err error)

UploadFileContext uploads a file and setting a custom context

func (*Client) UploadFileV2 added in v0.12.1

func (api *Client) UploadFileV2(params UploadFileV2Parameters) (*FileSummary, error)

UploadFileV2 uploads file to a given slack channel using 3 steps -

  1. Get an upload URL using files.getUploadURLExternal API
  2. Send the file as a post to the URL provided by slack
  3. Complete the upload and share it to the specified channel using files.completeUploadExternal

func (*Client) UploadFileV2Context added in v0.12.1

func (api *Client) UploadFileV2Context(ctx context.Context, params UploadFileV2Parameters) (file *FileSummary, err error)

UploadFileV2 uploads file to a given slack channel using 3 steps with a custom context -

  1. Get an upload URL using files.getUploadURLExternal API
  2. Send the file as a post to the URL provided by slack
  3. Complete the upload and share it to the specified channel using files.completeUploadExternal

func (*Client) ValidateManifest added in v0.12.3

func (api *Client) ValidateManifest(manifest *Manifest, token string, appId string) (*ManifestResponse, error)

ValidateManifest sends a request to apps.manifest.validate to validate your app manifest

func (*Client) ValidateManifestContext added in v0.12.3

func (api *Client) ValidateManifestContext(ctx context.Context, manifest *Manifest, token string, appId string) (*ManifestResponse, error)

ValidateManifestContext sends a request to apps.manifest.validate to validate your app manifest with a custom context

func (*Client) WorkflowStepCompleted added in v0.11.2

func (api *Client) WorkflowStepCompleted(workflowStepExecuteID string, options ...WorkflowStepCompletedRequestOption) error

WorkflowStepCompleted indicates step is completed

func (*Client) WorkflowStepFailed added in v0.11.2

func (api *Client) WorkflowStepFailed(workflowStepExecuteID string, errorMessage string) error

WorkflowStepFailed indicates step is failed

type CommandsChangedEvent

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

CommandsChangedEvent represents the commands changed event

type Comment

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

Comment contains all the information relative to a comment

type ConfigurationModalRequest added in v0.10.3

type ConfigurationModalRequest struct {
	ModalViewRequest
}

func NewConfigurationModalRequest added in v0.10.3

func NewConfigurationModalRequest(blocks Blocks, privateMetaData string, externalID string) *ConfigurationModalRequest

type ConfirmationBlockObject added in v0.6.1

type ConfirmationBlockObject struct {
	Title   *TextBlockObject `json:"title"`
	Text    *TextBlockObject `json:"text"`
	Confirm *TextBlockObject `json:"confirm"`
	Deny    *TextBlockObject `json:"deny,omitempty"`
	Style   Style            `json:"style,omitempty"`
}

ConfirmationBlockObject defines a dialog that provides a confirmation step to any interactive element. This dialog will ask the user to confirm their action by offering a confirm and deny buttons.

More Information: https://api.slack.com/reference/messaging/composition-objects#confirm

func NewConfirmationBlockObject added in v0.6.1

func NewConfirmationBlockObject(title, text, confirm, deny *TextBlockObject) *ConfirmationBlockObject

NewConfirmationBlockObject returns an instance of a new Confirmation Block Object

func (*ConfirmationBlockObject) WithStyle added in v0.6.5

WithStyle add styling to confirmation object

type ConfirmationField added in v0.1.0

type ConfirmationField struct {
	Title       string `json:"title,omitempty"`        // Optional.
	Text        string `json:"text"`                   // Required.
	OkText      string `json:"ok_text,omitempty"`      // Optional. Defaults to "Okay"
	DismissText string `json:"dismiss_text,omitempty"` // Optional. Defaults to "Cancel"
}

ConfirmationField are used to ask users to confirm actions

type ConnectedEvent added in v0.1.0

type ConnectedEvent struct {
	ConnectionCount int // 1 = first time, 2 = second time
	Info            *Info
}

ConnectedEvent is used for when we connect to Slack

type ConnectingEvent added in v0.1.0

type ConnectingEvent struct {
	Attempt         int // 1 = first attempt, 2 = second attempt
	ConnectionCount int
}

ConnectingEvent contains information about our connection attempt

type ConnectionErrorEvent added in v0.1.0

type ConnectionErrorEvent struct {
	Attempt  int
	Backoff  time.Duration // how long we'll wait before the next attempt
	ErrorObj error
}

ConnectionErrorEvent contains information about a connection error

func (*ConnectionErrorEvent) Error added in v0.1.0

func (c *ConnectionErrorEvent) Error() string

type Container added in v0.6.3

type Container struct {
	Type         string      `json:"type"`
	ViewID       string      `json:"view_id"`
	MessageTs    string      `json:"message_ts"`
	ThreadTs     string      `json:"thread_ts,omitempty"`
	AttachmentID json.Number `json:"attachment_id"`
	ChannelID    string      `json:"channel_id"`
	IsEphemeral  bool        `json:"is_ephemeral"`
	IsAppUnfurl  bool        `json:"is_app_unfurl"`
}

type ContextBlock added in v0.6.1

type ContextBlock struct {
	Type            MessageBlockType `json:"type"`
	BlockID         string           `json:"block_id,omitempty"`
	ContextElements ContextElements  `json:"elements"`
}

ContextBlock defines data that is used to display message context, which can include both images and text.

More Information: https://api.slack.com/reference/messaging/blocks#context

func NewContextBlock added in v0.6.1

func NewContextBlock(blockID string, mixedElements ...MixedElement) *ContextBlock

NewContextBlock returns a new instance of a context block

func (ContextBlock) BlockType added in v0.6.1

func (s ContextBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type ContextElements added in v0.6.1

type ContextElements struct {
	Elements []MixedElement
}

func (*ContextElements) MarshalJSON added in v0.6.1

func (e *ContextElements) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaller interface for ContextElements so that any JSON marshalling is delegated and proper type determination can be made before marshal

func (*ContextElements) UnmarshalJSON added in v0.6.1

func (e *ContextElements) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaller interface for ContextElements, so that any JSON unmarshalling is delegated and proper type determination can be made before unmarshal

type Conversation added in v0.6.1

type Conversation struct {
	ID                 string   `json:"id"`
	Created            JSONTime `json:"created"`
	IsOpen             bool     `json:"is_open"`
	LastRead           string   `json:"last_read,omitempty"`
	Latest             *Message `json:"latest,omitempty"`
	UnreadCount        int      `json:"unread_count,omitempty"`
	UnreadCountDisplay int      `json:"unread_count_display,omitempty"`
	IsGroup            bool     `json:"is_group"`
	IsShared           bool     `json:"is_shared"`
	IsIM               bool     `json:"is_im"`
	IsExtShared        bool     `json:"is_ext_shared"`
	IsOrgShared        bool     `json:"is_org_shared"`
	IsGlobalShared     bool     `json:"is_global_shared"`
	IsPendingExtShared bool     `json:"is_pending_ext_shared"`
	IsPrivate          bool     `json:"is_private"`
	IsMpIM             bool     `json:"is_mpim"`
	Unlinked           int      `json:"unlinked"`
	NameNormalized     string   `json:"name_normalized"`
	NumMembers         int      `json:"num_members"`
	Priority           float64  `json:"priority"`
	User               string   `json:"user"`
	ConnectedTeamIDs   []string `json:"connected_team_ids,omitempty"`
	SharedTeamIDs      []string `json:"shared_team_ids,omitempty"`
	InternalTeamIDs    []string `json:"internal_team_ids,omitempty"`
}

Conversation is the foundation for IM and BaseGroupConversation

type CreateConversationParams added in v0.12.0

type CreateConversationParams struct {
	ChannelName string
	IsPrivate   bool
	TeamID      string
}

type CtxChannel

type CtxChannel struct {
	ID                 string `json:"id"`
	Name               string `json:"name"`
	IsExtShared        bool   `json:"is_ext_shared"`
	IsMPIM             bool   `json:"is_mpim"`
	ISOrgShared        bool   `json:"is_org_shared"`
	IsPendingExtShared bool   `json:"is_pending_ext_shared"`
	IsPrivate          bool   `json:"is_private"`
	IsShared           bool   `json:"is_shared"`
}

type CtxMessage

type CtxMessage struct {
	User      string `json:"user"`
	Username  string `json:"username"`
	Text      string `json:"text"`
	Timestamp string `json:"ts"`
	Type      string `json:"type"`
}

type DNDStatus added in v0.1.0

type DNDStatus struct {
	Enabled            bool `json:"dnd_enabled"`
	NextStartTimestamp int  `json:"next_dnd_start_ts"`
	NextEndTimestamp   int  `json:"next_dnd_end_ts"`
	SnoozeInfo
}

type DNDUpdatedEvent added in v0.1.0

type DNDUpdatedEvent struct {
	Type   string    `json:"type"`
	User   string    `json:"user"`
	Status DNDStatus `json:"dnd_status"`
}

DNDUpdatedEvent represents the update event for Do Not Disturb

type DatePickerBlockElement added in v0.6.1

type DatePickerBlockElement struct {
	Type        MessageElementType       `json:"type"`
	ActionID    string                   `json:"action_id,omitempty"`
	Placeholder *TextBlockObject         `json:"placeholder,omitempty"`
	InitialDate string                   `json:"initial_date,omitempty"`
	Confirm     *ConfirmationBlockObject `json:"confirm,omitempty"`
}

DatePickerBlockElement defines an element which lets users easily select a date from a calendar style UI. Date picker elements can be used inside of section and actions blocks.

More Information: https://api.slack.com/reference/messaging/block-elements#datepicker

func NewDatePickerBlockElement added in v0.6.1

func NewDatePickerBlockElement(actionID string) *DatePickerBlockElement

NewDatePickerBlockElement returns an instance of a date picker element

func (DatePickerBlockElement) ElementType added in v0.6.1

ElementType returns the type of the Element

type DateTimePickerBlockElement added in v0.12.2

type DateTimePickerBlockElement struct {
	Type            MessageElementType       `json:"type"`
	ActionID        string                   `json:"action_id,omitempty"`
	InitialDateTime int64                    `json:"initial_date_time,omitempty"`
	Confirm         *ConfirmationBlockObject `json:"confirm,omitempty"`
}

DateTimePickerBlockElement defines an element that allows the selection of both a date and a time of day formatted as a UNIX timestamp. More Information: https://api.slack.com/reference/messaging/block-elements#datetimepicker

func NewDateTimePickerBlockElement added in v0.12.2

func NewDateTimePickerBlockElement(actionID string) *DateTimePickerBlockElement

NewDatePickerBlockElement returns an instance of a datetime picker element

func (DateTimePickerBlockElement) ElementType added in v0.12.2

ElementType returns the type of the Element

type Debug added in v0.7.4

type Debug interface {
	Debug() bool

	// Debugf print a formatted debug line.
	Debugf(format string, v ...interface{})
	// Debugln print a debug line.
	Debugln(v ...interface{})
}

type DeleteScheduledMessageParameters added in v0.6.3

type DeleteScheduledMessageParameters struct {
	Channel            string
	ScheduledMessageID string
	AsUser             bool
}

type DesktopNotificationEvent added in v0.6.1

type DesktopNotificationEvent struct {
	Type            string `json:"type"`
	Title           string `json:"title"`
	Subtitle        string `json:"subtitle"`
	Message         string `json:"msg"`
	Timestamp       string `json:"ts"`
	Content         string `json:"content"`
	Channel         string `json:"channel"`
	LaunchURI       string `json:"launchUri"`
	AvatarImage     string `json:"avatarImage"`
	SsbFilename     string `json:"ssbFilename"`
	ImageURI        string `json:"imageUri"`
	IsShared        bool   `json:"is_shared"`
	IsChannelInvite bool   `json:"is_channel_invite"`
	EventTimestamp  string `json:"event_ts"`
}

DesktopNotificationEvent represents the update event for Desktop Notification.

type Dialog added in v0.3.0

type Dialog struct {
	TriggerID      string          `json:"trigger_id"`      // Required
	CallbackID     string          `json:"callback_id"`     // Required
	State          string          `json:"state,omitempty"` // Optional
	Title          string          `json:"title"`
	SubmitLabel    string          `json:"submit_label,omitempty"`
	NotifyOnCancel bool            `json:"notify_on_cancel"`
	Elements       []DialogElement `json:"elements"`
}

Dialog as in Slack dialogs https://api.slack.com/dialogs#option_element_attributes#top-level_dialog_attributes

Example
dialog := _mocDialog()
fmt.Println(*dialog)
Output:

{trigger_xyz callback_xyz  Dialog_title Send false []}

type DialogCallback added in v0.3.0

type DialogCallback InteractionCallback

DialogCallback DEPRECATED use InteractionCallback

type DialogElement added in v0.3.0

type DialogElement interface{}

DialogElement abstract type for dialogs.

type DialogInput added in v0.4.0

type DialogInput struct {
	Type        InputType `json:"type"`
	Label       string    `json:"label"`
	Name        string    `json:"name"`
	Placeholder string    `json:"placeholder"`
	Optional    bool      `json:"optional"`
	Hint        string    `json:"hint"`
}

DialogInput for dialogs input type text or menu

type DialogInputSelect added in v0.4.0

type DialogInputSelect struct {
	DialogInput
	Value           string               `json:"value,omitempty"`            //Optional.
	DataSource      SelectDataSource     `json:"data_source,omitempty"`      //Optional. Allowed values: "users", "channels", "conversations", "external".
	SelectedOptions []DialogSelectOption `json:"selected_options,omitempty"` //Optional. May hold at most one element, for use with "external" only.
	Options         []DialogSelectOption `json:"options,omitempty"`          //One of options or option_groups is required.
	OptionGroups    []DialogOptionGroup  `json:"option_groups,omitempty"`    //Provide up to 100 options.
	MinQueryLength  int                  `json:"min_query_length,omitempty"` //Optional. minimum characters before query is sent.
	Hint            string               `json:"hint,omitempty"`             //Optional. Additional hint text.
}

DialogInputSelect dialog support for select boxes.

func NewChannelsSelect added in v0.4.0

func NewChannelsSelect(name, label string) *DialogInputSelect

NewChannelsSelect returns a `Channels` select

func NewConversationsSelect added in v0.4.0

func NewConversationsSelect(name, label string) *DialogInputSelect

NewConversationsSelect returns a `Conversations` select

func NewExternalSelectDialogInput added in v0.9.2

func NewExternalSelectDialogInput(name, label string, options []DialogSelectOption) *DialogInputSelect

NewExternalSelectDialogInput constructor for a `external` datasource menu input

func NewGroupedSelectDialogInput added in v0.4.0

func NewGroupedSelectDialogInput(name, label string, options []DialogOptionGroup) *DialogInputSelect

NewGroupedSelectDialogInput creates grouped options select input for Dialogs.

func NewStaticSelectDialogInput added in v0.4.0

func NewStaticSelectDialogInput(name, label string, options []DialogSelectOption) *DialogInputSelect

NewStaticSelectDialogInput constructor for a `static` datasource menu input

func NewUsersSelect added in v0.4.0

func NewUsersSelect(name, label string) *DialogInputSelect

NewUsersSelect returns a `Users` select

type DialogInputValidationError added in v0.5.0

type DialogInputValidationError struct {
	Name  string `json:"name"`
	Error string `json:"error"`
}

DialogInputValidationError is an error when user inputs incorrect value to form from within a dialog

type DialogInputValidationErrors added in v0.5.0

type DialogInputValidationErrors struct {
	Errors []DialogInputValidationError `json:"errors"`
}

DialogInputValidationErrors lists the name of field and that error messages

type DialogOpenResponse added in v0.4.0

type DialogOpenResponse struct {
	SlackResponse
	DialogResponseMetadata DialogResponseMetadata `json:"response_metadata"`
}

DialogOpenResponse response from `dialog.open`

type DialogOptionGroup added in v0.4.0

type DialogOptionGroup struct {
	Label   string               `json:"label"`
	Options []DialogSelectOption `json:"options"`
}

DialogOptionGroup is a collection of options for creating a segmented table

func NewDialogOptionGroup added in v0.6.1

func NewDialogOptionGroup(label string, options ...DialogSelectOption) DialogOptionGroup

NewDialogOptionGroup creates a DialogOptionGroup from several select options

type DialogResponseMetadata added in v0.4.0

type DialogResponseMetadata struct {
	Messages []string `json:"messages"`
}

DialogResponseMetadata lists the error messages

type DialogSelectOption added in v0.4.0

type DialogSelectOption struct {
	Label string `json:"label"`
	Value string `json:"value"`
}

DialogSelectOption is an option for the user to select from the menu

type DialogSubmissionCallback added in v0.5.0

type DialogSubmissionCallback struct {
	// NOTE: State is only used with the dialog_submission type.
	// You should use InteractionCallback.BlockActionsState for block_actions type.
	State      string            `json:"-"`
	Submission map[string]string `json:"submission"`
}

DialogSubmissionCallback is sent from Slack when a user submits a form from within a dialog

type DialogTrigger added in v0.3.0

type DialogTrigger struct {
	TriggerID string `json:"trigger_id"` //Required. Must respond within 3 seconds.
	Dialog    Dialog `json:"dialog"`     //Required.
}

DialogTrigger ...

type DisconnectedEvent added in v0.1.0

type DisconnectedEvent struct {
	Intentional bool
	Cause       error
}

DisconnectedEvent contains information about how we disconnected

type DispatchActionConfig added in v0.10.0

type DispatchActionConfig struct {
	TriggerActionsOn []string `json:"trigger_actions_on,omitempty"`
}

type Display added in v0.12.3

type Display struct {
	Name            string `json:"name" yaml:"name"`
	Description     string `json:"description,omitempty" yaml:"description,omitempty"`
	LongDescription string `json:"long_description,omitempty" yaml:"long_description,omitempty"`
	BackgroundColor string `json:"background_color,omitempty" yaml:"background_color,omitempty"`
}

Display is a group of settings that describe parts of an app's appearance within Slack

type DividerBlock added in v0.6.1

type DividerBlock struct {
	Type    MessageBlockType `json:"type"`
	BlockID string           `json:"block_id,omitempty"`
}

DividerBlock for displaying a divider line between blocks (similar to <hr> tag in html)

More Information: https://api.slack.com/reference/messaging/blocks#divider

func NewDividerBlock added in v0.6.1

func NewDividerBlock() *DividerBlock

NewDividerBlock returns a new instance of a divider block

func (DividerBlock) BlockType added in v0.6.1

func (s DividerBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type EditBookmarkParameters added in v0.11.0

type EditBookmarkParameters struct {
	Title *string // Change the title. Set to "" to clear
	Emoji *string // Change the emoji. Set to "" to clear
	Link  string  // Change the link
}

type Edited added in v0.1.0

type Edited struct {
	User      string `json:"user,omitempty"`
	Timestamp string `json:"ts,omitempty"`
}

Edited indicates that a message has been edited.

type EmailDomainChangedEvent

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

EmailDomainChangedEvent represents the email domain changed event

type EmailTextInputBlockElement added in v0.12.0

type EmailTextInputBlockElement struct {
	Type                 MessageElementType    `json:"type"`
	ActionID             string                `json:"action_id,omitempty"`
	Placeholder          *TextBlockObject      `json:"placeholder,omitempty"`
	InitialValue         string                `json:"initial_value,omitempty"`
	DispatchActionConfig *DispatchActionConfig `json:"dispatch_action_config,omitempty"`
	FocusOnLoad          bool                  `json:"focus_on_load,omitempty"`
}

EmailTextInputBlockElement creates a field where a user can enter email data. email-text-input elements are currently only available in modals.

More Information: https://api.slack.com/reference/block-kit/block-elements#email

func NewEmailTextInputBlockElement added in v0.12.0

func NewEmailTextInputBlockElement(placeholder *TextBlockObject, actionID string) *EmailTextInputBlockElement

NewEmailTextInputBlockElement returns an instance of a plain-text input element

func (EmailTextInputBlockElement) ElementType added in v0.12.0

ElementType returns the type of the Element

type EmojiChangedEvent

type EmojiChangedEvent struct {
	Type           string   `json:"type"`
	SubType        string   `json:"subtype"`
	Name           string   `json:"name"`
	Names          []string `json:"names"`
	Value          string   `json:"value"`
	EventTimestamp string   `json:"event_ts"`
}

EmojiChangedEvent represents the emoji changed event

type Enterprise added in v0.9.5

type Enterprise struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

type EnterpriseUser added in v0.6.1

type EnterpriseUser struct {
	ID             string   `json:"id"`
	EnterpriseID   string   `json:"enterprise_id"`
	EnterpriseName string   `json:"enterprise_name"`
	IsAdmin        bool     `json:"is_admin"`
	IsOwner        bool     `json:"is_owner"`
	Teams          []string `json:"teams"`
}

EnterpriseUser is present when a user is part of Slack Enterprise Grid https://api.slack.com/types/user#enterprise_grid_user_objects

type Event

type Event struct {
	Type string `json:"type,omitempty"`
}

Event contains the event type

type EventAuthorization added in v0.7.2

type EventAuthorization struct {
	EnterpriseID        string `json:"enterprise_id"`
	TeamID              string `json:"team_id"`
	UserID              string `json:"user_id"`
	IsBot               bool   `json:"is_bot"`
	IsEnterpriseInstall bool   `json:"is_enterprise_install"`
}

type EventSubscriptions added in v0.12.3

type EventSubscriptions struct {
	RequestUrl string   `json:"request_url,omitempty" yaml:"request_url,omitempty"`
	BotEvents  []string `json:"bot_events,omitempty" yaml:"bot_events,omitempty"`
	UserEvents []string `json:"user_events,omitempty" yaml:"user_events,omitempty"`
}

EventSubscriptions is a group of settings that describe the Events API configuration

type ExportManifestResponse added in v0.12.3

type ExportManifestResponse struct {
	Manifest Manifest `json:"manifest,omitempty"`
	SlackResponse
}

type Features added in v0.12.3

type Features struct {
	AppHome       AppHome                `json:"app_home,omitempty" yaml:"app_home,omitempty"`
	BotUser       BotUser                `json:"bot_user,omitempty" yaml:"bot_user,omitempty"`
	Shortcuts     []Shortcut             `json:"shortcuts,omitempty" yaml:"shortcuts,omitempty"`
	SlashCommands []ManifestSlashCommand `json:"slash_commands,omitempty" yaml:"slash_commands,omitempty"`
	WorkflowSteps []WorkflowStep         `json:"workflow_steps,omitempty" yaml:"workflow_steps,omitempty"`
}

Features is a group of settings corresponding to the Features section of the app config pages

type File

type File struct {
	ID        string   `json:"id"`
	Created   JSONTime `json:"created"`
	Timestamp JSONTime `json:"timestamp"`

	Name              string `json:"name"`
	Title             string `json:"title"`
	Mimetype          string `json:"mimetype"`
	ImageExifRotation int    `json:"image_exif_rotation"`
	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"`

	Size int `json:"size"`

	URL                string `json:"url"`          // Deprecated - never set
	URLDownload        string `json:"url_download"` // Deprecated - never set
	URLPrivate         string `json:"url_private"`
	URLPrivateDownload string `json:"url_private_download"`

	OriginalH   int    `json:"original_h"`
	OriginalW   int    `json:"original_w"`
	Thumb64     string `json:"thumb_64"`
	Thumb80     string `json:"thumb_80"`
	Thumb160    string `json:"thumb_160"`
	Thumb360    string `json:"thumb_360"`
	Thumb360Gif string `json:"thumb_360_gif"`
	Thumb360W   int    `json:"thumb_360_w"`
	Thumb360H   int    `json:"thumb_360_h"`
	Thumb480    string `json:"thumb_480"`
	Thumb480W   int    `json:"thumb_480_w"`
	Thumb480H   int    `json:"thumb_480_h"`
	Thumb720    string `json:"thumb_720"`
	Thumb720W   int    `json:"thumb_720_w"`
	Thumb720H   int    `json:"thumb_720_h"`
	Thumb960    string `json:"thumb_960"`
	Thumb960W   int    `json:"thumb_960_w"`
	Thumb960H   int    `json:"thumb_960_h"`
	Thumb1024   string `json:"thumb_1024"`
	Thumb1024W  int    `json:"thumb_1024_w"`
	Thumb1024H  int    `json:"thumb_1024_h"`

	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"`
	Channels        []string `json:"channels"`
	Groups          []string `json:"groups"`
	IMs             []string `json:"ims"`
	InitialComment  Comment  `json:"initial_comment"`
	CommentsCount   int      `json:"comments_count"`
	NumStars        int      `json:"num_stars"`
	IsStarred       bool     `json:"is_starred"`
	Shares          Share    `json:"shares"`
}

File contains all the information for a file

type FileBlock added in v0.6.3

type FileBlock struct {
	Type       MessageBlockType `json:"type"`
	BlockID    string           `json:"block_id,omitempty"`
	ExternalID string           `json:"external_id"`
	Source     string           `json:"source"`
}

FileBlock defines data that is used to display a remote file.

More Information: https://api.slack.com/reference/block-kit/blocks#file

func NewFileBlock added in v0.6.3

func NewFileBlock(blockID string, externalID string, source string) *FileBlock

NewFileBlock returns a new instance of a file block

func (FileBlock) BlockType added in v0.6.3

func (s FileBlock) BlockType() MessageBlockType

BlockType returns the type of the block

type FileChangeEvent

type FileChangeEvent fileActionEvent

FileChangeEvent represents the File change event

type FileCommentAddedEvent

type FileCommentAddedEvent struct {
	Comment Comment `json:"comment"`
	// contains filtered or unexported fields
}

FileCommentAddedEvent represents the File comment added event

type FileCommentDeletedEvent

type FileCommentDeletedEvent struct {
	Comment string `json:"comment"`
	// contains filtered or unexported fields
}

FileCommentDeletedEvent represents the File comment deleted event

type FileCommentEditedEvent

type FileCommentEditedEvent struct {
	Comment Comment `json:"comment"`
	// contains filtered or unexported fields
}

FileCommentEditedEvent represents the File comment edited event

type FileCreatedEvent

type FileCreatedEvent fileActionEvent

FileCreatedEvent represents the File created event

type FileDeletedEvent

type FileDeletedEvent fileActionEvent

FileDeletedEvent represents the File deleted event

type FileInputBlockElement added in v0.12.4

type FileInputBlockElement struct {
	Type      MessageElementType `json:"type"`
	ActionID  string             `json:"action_id,omitempty"`
	FileTypes []string           `json:"filetypes,omitempty"`
	MaxFiles  int                `json:"max_files,omitempty"`
}

FileInputBlockElement creates a field where a user can upload a file.

File input elements are currently only available in modals.

More Information: https://api.slack.com/reference/block-kit/block-elements#file_input

func NewFileInputBlockElement added in v0.12.4

func NewFileInputBlockElement(actionID string) *FileInputBlockElement

NewFileInputBlockElement returns an instance of a file input element

func (FileInputBlockElement) ElementType added in v0.12.4

func (s FileInputBlockElement) ElementType() MessageElementType

ElementType returns the type of the Element

func (*FileInputBlockElement) WithFileTypes added in v0.12.4

func (s *FileInputBlockElement) WithFileTypes(fileTypes ...string) *FileInputBlockElement

WithFileTypes sets the file types that can be uploaded

func (*FileInputBlockElement) WithMaxFiles added in v0.12.4

func (s *FileInputBlockElement) WithMaxFiles(maxFiles int) *FileInputBlockElement

WithMaxFiles sets the maximum number of files that can be uploaded

type FilePrivateEvent

type FilePrivateEvent fileActionEvent

FilePrivateEvent represents the File private event

type FilePublicEvent

type FilePublicEvent fileActionEvent

FilePublicEvent represents the File public event

type FileSharedEvent

type FileSharedEvent fileActionEvent

FileSharedEvent represents the File shared event

type FileSummary added in v0.12.1

type FileSummary struct {
	ID    string `json:"id"`
	Title string `json:"title"`
}

type FileUnsharedEvent

type FileUnsharedEvent fileActionEvent

FileUnsharedEvent represents the File unshared event

type FileUploadParameters

type FileUploadParameters struct {
	File            string
	Content         string
	Reader          io.Reader
	Filetype        string
	Filename        string
	Title           string
	InitialComment  string
	Channels        []string
	ThreadTimestamp string
}

FileUploadParameters contains all the parameters necessary (including the optional ones) for an UploadFile() request.

There are three ways to upload a file. You can either set Content if file is small, set Reader if file is large, or provide a local file path in File to upload it from your filesystem.

Note that when using the Reader option, you *must* specify the Filename, otherwise the Slack API isn't happy.

type GetConversationHistoryParameters added in v0.2.0

type GetConversationHistoryParameters struct {
	ChannelID          string
	Cursor             string
	Inclusive          bool
	Latest             string
	Limit              int
	Oldest             string
	IncludeAllMetadata bool
}

type GetConversationHistoryResponse added in v0.2.0

type GetConversationHistoryResponse struct {
	SlackResponse
	HasMore          bool   `json:"has_more"`
	PinCount         int    `json:"pin_count"`
	Latest           string `json:"latest"`
	ResponseMetaData struct {
		NextCursor string `json:"next_cursor"`
	} `json:"response_metadata"`
	Messages []Message `json:"messages"`
}

type GetConversationInfoInput added in v0.12.0

type GetConversationInfoInput struct {
	ChannelID         string
	IncludeLocale     bool
	IncludeNumMembers bool
}

GetConversationInfoInput Defines the parameters of a GetConversationInfo and GetConversationInfoContext function

type GetConversationRepliesParameters added in v0.2.0

type GetConversationRepliesParameters struct {
	ChannelID          string
	Timestamp          string
	Cursor             string
	Inclusive          bool
	Latest             string
	Limit              int
	Oldest             string
	IncludeAllMetadata bool
}

type GetConversationsForUserParameters added in v0.4.0

type GetConversationsForUserParameters struct {
	UserID          string
	Cursor          string
	Types           []string
	Limit           int
	ExcludeArchived bool
	TeamID          string
}

type GetConversationsParameters added in v0.2.0

type GetConversationsParameters struct {
	Cursor          string
	ExcludeArchived bool
	Limit           int
	Types           []string
	TeamID          string
}

type GetFilesParameters

type GetFilesParameters struct {
	User          string
	Channel       string
	TimestampFrom JSONTime
	TimestampTo   JSONTime
	Types         string
	Count         int
	Page          int
	ShowHidden    bool
}

GetFilesParameters contains all the parameters necessary (including the optional ones) for a GetFiles() request

func NewGetFilesParameters

func NewGetFilesParameters() GetFilesParameters

NewGetFilesParameters provides an instance of GetFilesParameters with all the sane default values set

type GetReactionsParameters

type GetReactionsParameters struct {
	Full bool
}

GetReactionsParameters is the inputs to get reactions to an item.

func NewGetReactionsParameters

func NewGetReactionsParameters() GetReactionsParameters

NewGetReactionsParameters initializes the inputs to get reactions to an item.

type GetScheduledMessagesParameters added in v0.6.3

type GetScheduledMessagesParameters struct {
	Channel string
	Cursor  string
	Latest  string
	Limit   int
	Oldest  string
}

type GetUserGroupsOption added in v0.4.0

type GetUserGroupsOption func(*GetUserGroupsParams)

GetUserGroupsOption options for the GetUserGroups method call.

func GetUserGroupsOptionIncludeCount added in v0.4.0

func GetUserGroupsOptionIncludeCount(b bool) GetUserGroupsOption

GetUserGroupsOptionIncludeCount include the number of users in each User Group (default: false)

func GetUserGroupsOptionIncludeDisabled added in v0.4.0

func GetUserGroupsOptionIncludeDisabled(b bool) GetUserGroupsOption

GetUserGroupsOptionIncludeDisabled include disabled User Groups (default: false)

func GetUserGroupsOptionIncludeUsers added in v0.4.0

func GetUserGroupsOptionIncludeUsers(b bool) GetUserGroupsOption

GetUserGroupsOptionIncludeUsers include the list of users for each User Group (default: false)

type GetUserGroupsParams added in v0.4.0

type GetUserGroupsParams struct {
	IncludeCount    bool
	IncludeDisabled bool
	IncludeUsers    bool
}

GetUserGroupsParams contains arguments for GetUserGroups method call

type GetUserProfileParameters added in v0.9.0

type GetUserProfileParameters struct {
	UserID        string
	IncludeLabels bool
}

GetUserProfileParameters are the parameters required to get user profile

type GetUsersInConversationParameters added in v0.2.0

type GetUsersInConversationParameters struct {
	ChannelID string
	Cursor    string
	Limit     int
}

type GetUsersOption added in v0.3.0

type GetUsersOption func(*UserPagination)

GetUsersOption options for the GetUsers method call.

func GetUsersOptionLimit added in v0.3.0

func GetUsersOptionLimit(n int) GetUsersOption

GetUsersOptionLimit limit the number of users returned

func GetUsersOptionPresence added in v0.3.0

func GetUsersOptionPresence(n bool) GetUsersOption

GetUsersOptionPresence include user presence

func GetUsersOptionTeamID added in v0.11.1

func GetUsersOptionTeamID(teamId string) GetUsersOption

GetUsersOptionTeamID include team Id

type Group

type Group struct {
	GroupConversation
	IsGroup bool `json:"is_group"`
}

Group contains all the information for a group

type GroupArchiveEvent

type GroupArchiveEvent ChannelInfoEvent

GroupArchiveEvent represents the Group archive event

type GroupCloseEvent

type GroupCloseEvent ChannelInfoEvent

GroupCloseEvent represents the Group close event

type GroupConversation added in v0.6.1

type GroupConversation struct {
	Conversation
	Na