Documentation
¶
Index ¶
- Constants
- func Bool(b bool) param.Opt[bool]
- func BoolPtr(v bool) *bool
- func DefaultClientOptions() []option.RequestOption
- func File(rdr io.Reader, filename string, contentType string) file
- func Float(f float64) param.Opt[float64]
- func FloatPtr(v float64) *float64
- func Int(i int64) param.Opt[int64]
- func IntPtr(v int64) *int64
- func Opt[T comparable](v T) param.Opt[T]
- func Ptr[T any](v T) *T
- func String(s string) param.Opt[string]
- func StringPtr(v string) *string
- func Time(t time.Time) param.Opt[time.Time]
- func TimePtr(v time.Time) *time.Time
- type Account
- type AccountContactSearchParams
- type AccountContactSearchResponse
- type AccountContactService
- type AccountService
- type AssetDownloadParams
- type AssetDownloadResponse
- type AssetService
- type Attachment
- type AttachmentSize
- type AttachmentType
- type Chat
- type ChatArchiveParams
- type ChatGetParams
- type ChatListParams
- type ChatListParamsDirection
- type ChatListResponse
- type ChatNewParams
- type ChatNewParamsType
- type ChatNewResponse
- type ChatParticipants
- type ChatReminderNewParams
- type ChatReminderNewParamsReminder
- type ChatReminderService
- type ChatSearchParams
- type ChatSearchParamsDirection
- type ChatSearchParamsInbox
- type ChatSearchParamsScope
- type ChatSearchParamsType
- type ChatService
- func (r *ChatService) Archive(ctx context.Context, chatID string, body ChatArchiveParams, ...) (err error)
- func (r *ChatService) Get(ctx context.Context, chatID string, query ChatGetParams, ...) (res *Chat, err error)
- func (r *ChatService) List(ctx context.Context, query ChatListParams, opts ...option.RequestOption) (res *pagination.CursorNoLimit[ChatListResponse], err error)
- func (r *ChatService) ListAutoPaging(ctx context.Context, query ChatListParams, opts ...option.RequestOption) *pagination.CursorNoLimitAutoPager[ChatListResponse]
- func (r *ChatService) New(ctx context.Context, body ChatNewParams, opts ...option.RequestOption) (res *ChatNewResponse, err error)
- func (r *ChatService) Search(ctx context.Context, query ChatSearchParams, opts ...option.RequestOption) (res *pagination.CursorSearch[Chat], err error)
- func (r *ChatService) SearchAutoPaging(ctx context.Context, query ChatSearchParams, opts ...option.RequestOption) *pagination.CursorSearchAutoPager[Chat]
- type ChatType
- type Client
- func (r *Client) Delete(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Execute(ctx context.Context, method string, path string, params any, res any, ...) error
- func (r *Client) Focus(ctx context.Context, body FocusParams, opts ...option.RequestOption) (res *FocusResponse, err error)
- func (r *Client) Get(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Patch(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Post(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Put(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Search(ctx context.Context, query SearchParams, opts ...option.RequestOption) (res *SearchResponse, err error)
- type Error
- type FocusParams
- type FocusResponse
- type Message
- type MessageListParams
- type MessageListParamsDirection
- type MessageSearchParams
- type MessageSearchParamsChatType
- type MessageSearchParamsDirection
- type MessageSearchParamsSender
- type MessageSendParams
- type MessageSendResponse
- type MessageService
- func (r *MessageService) List(ctx context.Context, chatID string, query MessageListParams, ...) (res *pagination.CursorSortKey[shared.Message], err error)
- func (r *MessageService) ListAutoPaging(ctx context.Context, chatID string, query MessageListParams, ...) *pagination.CursorSortKeyAutoPager[shared.Message]
- func (r *MessageService) Search(ctx context.Context, query MessageSearchParams, opts ...option.RequestOption) (res *pagination.CursorSearch[shared.Message], err error)
- func (r *MessageService) SearchAutoPaging(ctx context.Context, query MessageSearchParams, opts ...option.RequestOption) *pagination.CursorSearchAutoPager[shared.Message]
- func (r *MessageService) Send(ctx context.Context, chatID string, body MessageSendParams, ...) (res *MessageSendResponse, err error)
- type Reaction
- type SearchParams
- type SearchResponse
- type SearchResponseResults
- type SearchResponseResultsMessages
- type User
Constants ¶
const AttachmentTypeAudio = shared.AttachmentTypeAudio
Equals "audio"
const AttachmentTypeImg = shared.AttachmentTypeImg
Equals "img"
const AttachmentTypeUnknown = shared.AttachmentTypeUnknown
Equals "unknown"
const AttachmentTypeVideo = shared.AttachmentTypeVideo
Equals "video"
Variables ¶
This section is empty.
Functions ¶
func DefaultClientOptions ¶
func DefaultClientOptions() []option.RequestOption
DefaultClientOptions read from the environment (BEEPER_ACCESS_TOKEN, BEEPER_DESKTOP_BASE_URL). This should be used to initialize new clients.
func Opt ¶
func Opt[T comparable](v T) param.Opt[T]
Types ¶
type Account ¶
type Account struct {
// Chat account added to Beeper. Use this to route account-scoped actions.
AccountID string `json:"accountID,required"`
// Display-only human-readable network name (e.g., 'WhatsApp', 'Messenger').
//
// Deprecated: deprecated
Network string `json:"network,required"`
// User the account belongs to.
User shared.User `json:"user,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
AccountID respjson.Field
Network respjson.Field
User respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
A chat account added to Beeper
func (*Account) UnmarshalJSON ¶
type AccountContactSearchParams ¶
type AccountContactSearchParams struct {
// Text to search users by. Network-specific behavior.
Query string `query:"query,required" json:"-"`
// contains filtered or unexported fields
}
func (AccountContactSearchParams) URLQuery ¶
func (r AccountContactSearchParams) URLQuery() (v url.Values, err error)
URLQuery serializes AccountContactSearchParams's query parameters as `url.Values`.
type AccountContactSearchResponse ¶
type AccountContactSearchResponse struct {
Items []shared.User `json:"items,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Items respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (AccountContactSearchResponse) RawJSON ¶
func (r AccountContactSearchResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*AccountContactSearchResponse) UnmarshalJSON ¶
func (r *AccountContactSearchResponse) UnmarshalJSON(data []byte) error
type AccountContactService ¶
type AccountContactService struct {
Options []option.RequestOption
}
Manage contacts on a specific account
AccountContactService contains methods and other services that help with interacting with the beeperdesktop API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewAccountContactService method instead.
func NewAccountContactService ¶
func NewAccountContactService(opts ...option.RequestOption) (r AccountContactService)
NewAccountContactService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*AccountContactService) Search ¶
func (r *AccountContactService) Search(ctx context.Context, accountID string, query AccountContactSearchParams, opts ...option.RequestOption) (res *AccountContactSearchResponse, err error)
Search contacts across on a specific account using the network's search API. Only use for creating new chats.
type AccountService ¶
type AccountService struct {
Options []option.RequestOption
// Manage contacts on a specific account
Contacts AccountContactService
}
Manage connected chat accounts
AccountService contains methods and other services that help with interacting with the beeperdesktop API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewAccountService method instead.
func NewAccountService ¶
func NewAccountService(opts ...option.RequestOption) (r AccountService)
NewAccountService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*AccountService) List ¶
func (r *AccountService) List(ctx context.Context, opts ...option.RequestOption) (res *[]Account, err error)
Lists chat accounts across networks (WhatsApp, Telegram, Twitter/X, etc.) actively connected to this Beeper Desktop instance
type AssetDownloadParams ¶
type AssetDownloadParams struct {
// Matrix content URL (mxc:// or localmxc://) for the asset to download.
URL string `json:"url,required"`
// contains filtered or unexported fields
}
func (AssetDownloadParams) MarshalJSON ¶
func (r AssetDownloadParams) MarshalJSON() (data []byte, err error)
func (*AssetDownloadParams) UnmarshalJSON ¶
func (r *AssetDownloadParams) UnmarshalJSON(data []byte) error
type AssetDownloadResponse ¶
type AssetDownloadResponse struct {
// Error message if the download failed.
Error string `json:"error"`
// Local file URL to the downloaded asset.
SrcURL string `json:"srcURL"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Error respjson.Field
SrcURL respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (AssetDownloadResponse) RawJSON ¶
func (r AssetDownloadResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*AssetDownloadResponse) UnmarshalJSON ¶
func (r *AssetDownloadResponse) UnmarshalJSON(data []byte) error
type AssetService ¶
type AssetService struct {
Options []option.RequestOption
}
Manage assets in Beeper Desktop, like message attachments
AssetService contains methods and other services that help with interacting with the beeperdesktop API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewAssetService method instead.
func NewAssetService ¶
func NewAssetService(opts ...option.RequestOption) (r AssetService)
NewAssetService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*AssetService) Download ¶
func (r *AssetService) Download(ctx context.Context, body AssetDownloadParams, opts ...option.RequestOption) (res *AssetDownloadResponse, err error)
Download a Matrix asset using its mxc:// or localmxc:// URL to the device running Beeper Desktop and return the local file URL.
type AttachmentSize ¶
type AttachmentSize = shared.AttachmentSize
Pixel dimensions of the attachment: width/height in px.
This is an alias to an internal type.
type AttachmentType ¶
type AttachmentType = shared.AttachmentType
Attachment type.
This is an alias to an internal type.
type Chat ¶
type Chat struct {
// Unique identifier of the chat across Beeper.
ID string `json:"id,required"`
// Account ID this chat belongs to.
AccountID string `json:"accountID,required"`
// Display-only human-readable network name (e.g., 'WhatsApp', 'Messenger').
//
// Deprecated: deprecated
Network string `json:"network,required"`
// Chat participants information.
Participants ChatParticipants `json:"participants,required"`
// Display title of the chat as computed by the client/server.
Title string `json:"title,required"`
// Chat type: 'single' for direct messages, 'group' for group chats.
//
// Any of "single", "group".
Type ChatType `json:"type,required"`
// Number of unread messages.
UnreadCount int64 `json:"unreadCount,required"`
// True if chat is archived.
IsArchived bool `json:"isArchived"`
// True if chat notifications are muted.
IsMuted bool `json:"isMuted"`
// True if chat is pinned.
IsPinned bool `json:"isPinned"`
// Timestamp of last activity.
LastActivity time.Time `json:"lastActivity" format:"date-time"`
// Last read message sortKey.
LastReadMessageSortKey string `json:"lastReadMessageSortKey"`
// Local chat ID specific to this Beeper Desktop installation.
LocalChatID string `json:"localChatID,nullable"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ID respjson.Field
AccountID respjson.Field
Network respjson.Field
Participants respjson.Field
Title respjson.Field
Type respjson.Field
UnreadCount respjson.Field
IsArchived respjson.Field
IsMuted respjson.Field
IsPinned respjson.Field
LastActivity respjson.Field
LastReadMessageSortKey respjson.Field
LocalChatID respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (*Chat) UnmarshalJSON ¶
type ChatArchiveParams ¶
type ChatArchiveParams struct {
// True to archive, false to unarchive
Archived param.Opt[bool] `json:"archived,omitzero"`
// contains filtered or unexported fields
}
func (ChatArchiveParams) MarshalJSON ¶
func (r ChatArchiveParams) MarshalJSON() (data []byte, err error)
func (*ChatArchiveParams) UnmarshalJSON ¶
func (r *ChatArchiveParams) UnmarshalJSON(data []byte) error
type ChatGetParams ¶
type ChatGetParams struct {
// Maximum number of participants to return. Use -1 for all; otherwise 0–500.
// Defaults to all (-1).
MaxParticipantCount param.Opt[int64] `query:"maxParticipantCount,omitzero" json:"-"`
// contains filtered or unexported fields
}
func (ChatGetParams) URLQuery ¶
func (r ChatGetParams) URLQuery() (v url.Values, err error)
URLQuery serializes ChatGetParams's query parameters as `url.Values`.
type ChatListParams ¶
type ChatListParams struct {
// Opaque pagination cursor; do not inspect. Use together with 'direction'.
Cursor param.Opt[string] `query:"cursor,omitzero" json:"-"`
// Limit to specific account IDs. If omitted, fetches from all accounts.
AccountIDs []string `query:"accountIDs,omitzero" json:"-"`
// Pagination direction used with 'cursor': 'before' fetches older results, 'after'
// fetches newer results. Defaults to 'before' when only 'cursor' is provided.
//
// Any of "after", "before".
Direction ChatListParamsDirection `query:"direction,omitzero" json:"-"`
// contains filtered or unexported fields
}
func (ChatListParams) URLQuery ¶
func (r ChatListParams) URLQuery() (v url.Values, err error)
URLQuery serializes ChatListParams's query parameters as `url.Values`.
type ChatListParamsDirection ¶
type ChatListParamsDirection string
Pagination direction used with 'cursor': 'before' fetches older results, 'after' fetches newer results. Defaults to 'before' when only 'cursor' is provided.
const ( ChatListParamsDirectionAfter ChatListParamsDirection = "after" ChatListParamsDirectionBefore ChatListParamsDirection = "before" )
type ChatListResponse ¶
type ChatListResponse struct {
// Last message preview for this chat, if available.
Preview shared.Message `json:"preview"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Preview respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
Chat
}
func (ChatListResponse) RawJSON ¶
func (r ChatListResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*ChatListResponse) UnmarshalJSON ¶
func (r *ChatListResponse) UnmarshalJSON(data []byte) error
type ChatNewParams ¶
type ChatNewParams struct {
// Account to create the chat on.
AccountID string `json:"accountID,required"`
// User IDs to include in the new chat.
ParticipantIDs []string `json:"participantIDs,omitzero,required"`
// Chat type to create: 'single' requires exactly one participantID; 'group'
// supports multiple participants and optional title.
//
// Any of "single", "group".
Type ChatNewParamsType `json:"type,omitzero,required"`
// Optional first message content if the platform requires it to create the chat.
MessageText param.Opt[string] `json:"messageText,omitzero"`
// Optional title for group chats; ignored for single chats on most platforms.
Title param.Opt[string] `json:"title,omitzero"`
// contains filtered or unexported fields
}
func (ChatNewParams) MarshalJSON ¶
func (r ChatNewParams) MarshalJSON() (data []byte, err error)
func (*ChatNewParams) UnmarshalJSON ¶
func (r *ChatNewParams) UnmarshalJSON(data []byte) error
type ChatNewParamsType ¶
type ChatNewParamsType string
Chat type to create: 'single' requires exactly one participantID; 'group' supports multiple participants and optional title.
const ( ChatNewParamsTypeSingle ChatNewParamsType = "single" ChatNewParamsTypeGroup ChatNewParamsType = "group" )
type ChatNewResponse ¶
type ChatNewResponse struct {
// Newly created chat ID.
ChatID string `json:"chatID,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ChatID respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (ChatNewResponse) RawJSON ¶
func (r ChatNewResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*ChatNewResponse) UnmarshalJSON ¶
func (r *ChatNewResponse) UnmarshalJSON(data []byte) error
type ChatParticipants ¶
type ChatParticipants struct {
// True if there are more participants than included in items.
HasMore bool `json:"hasMore,required"`
// Participants returned for this chat (limited by the request; may be a subset).
Items []shared.User `json:"items,required"`
// Total number of participants in the chat.
Total int64 `json:"total,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
HasMore respjson.Field
Items respjson.Field
Total respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Chat participants information.
func (ChatParticipants) RawJSON ¶
func (r ChatParticipants) RawJSON() string
Returns the unmodified JSON received from the API
func (*ChatParticipants) UnmarshalJSON ¶
func (r *ChatParticipants) UnmarshalJSON(data []byte) error
type ChatReminderNewParams ¶
type ChatReminderNewParams struct {
// Reminder configuration
Reminder ChatReminderNewParamsReminder `json:"reminder,omitzero,required"`
// contains filtered or unexported fields
}
func (ChatReminderNewParams) MarshalJSON ¶
func (r ChatReminderNewParams) MarshalJSON() (data []byte, err error)
func (*ChatReminderNewParams) UnmarshalJSON ¶
func (r *ChatReminderNewParams) UnmarshalJSON(data []byte) error
type ChatReminderNewParamsReminder ¶
type ChatReminderNewParamsReminder struct {
// Unix timestamp in milliseconds when reminder should trigger
RemindAtMs float64 `json:"remindAtMs,required"`
// Cancel reminder if someone messages in the chat
DismissOnIncomingMessage param.Opt[bool] `json:"dismissOnIncomingMessage,omitzero"`
// contains filtered or unexported fields
}
Reminder configuration
The property RemindAtMs is required.
func (ChatReminderNewParamsReminder) MarshalJSON ¶
func (r ChatReminderNewParamsReminder) MarshalJSON() (data []byte, err error)
func (*ChatReminderNewParamsReminder) UnmarshalJSON ¶
func (r *ChatReminderNewParamsReminder) UnmarshalJSON(data []byte) error
type ChatReminderService ¶
type ChatReminderService struct {
Options []option.RequestOption
}
Manage reminders for chats
ChatReminderService contains methods and other services that help with interacting with the beeperdesktop API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewChatReminderService method instead.
func NewChatReminderService ¶
func NewChatReminderService(opts ...option.RequestOption) (r ChatReminderService)
NewChatReminderService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*ChatReminderService) Delete ¶
func (r *ChatReminderService) Delete(ctx context.Context, chatID string, opts ...option.RequestOption) (err error)
Clear an existing reminder from a chat
func (*ChatReminderService) New ¶
func (r *ChatReminderService) New(ctx context.Context, chatID string, body ChatReminderNewParams, opts ...option.RequestOption) (err error)
Set a reminder for a chat at a specific time
type ChatSearchParams ¶
type ChatSearchParams struct {
// Include chats marked as Muted by the user, which are usually less important.
// Default: true. Set to false if the user wants a more refined search.
IncludeMuted param.Opt[bool] `query:"includeMuted,omitzero" json:"-"`
// Set to true to only retrieve chats that have unread messages
UnreadOnly param.Opt[bool] `query:"unreadOnly,omitzero" json:"-"`
// Opaque pagination cursor; do not inspect. Use together with 'direction'.
Cursor param.Opt[string] `query:"cursor,omitzero" json:"-"`
// Provide an ISO datetime string to only retrieve chats with last activity after
// this time
LastActivityAfter param.Opt[time.Time] `query:"lastActivityAfter,omitzero" format:"date-time" json:"-"`
// Provide an ISO datetime string to only retrieve chats with last activity before
// this time
LastActivityBefore param.Opt[time.Time] `query:"lastActivityBefore,omitzero" format:"date-time" json:"-"`
// Set the maximum number of chats to retrieve. Valid range: 1-200, default is 50
Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
// Literal token search (non-semantic). Use single words users type (e.g.,
// "dinner"). When multiple words provided, ALL must match. Case-insensitive.
Query param.Opt[string] `query:"query,omitzero" json:"-"`
// Provide an array of account IDs to filter chats from specific messaging accounts
// only
AccountIDs []string `query:"accountIDs,omitzero" json:"-"`
// Pagination direction used with 'cursor': 'before' fetches older results, 'after'
// fetches newer results. Defaults to 'before' when only 'cursor' is provided.
//
// Any of "after", "before".
Direction ChatSearchParamsDirection `query:"direction,omitzero" json:"-"`
// Filter by inbox type: "primary" (non-archived, non-low-priority),
// "low-priority", or "archive". If not specified, shows all chats.
//
// Any of "primary", "low-priority", "archive".
Inbox ChatSearchParamsInbox `query:"inbox,omitzero" json:"-"`
// Search scope: 'titles' matches title + network; 'participants' matches
// participant names.
//
// Any of "titles", "participants".
Scope ChatSearchParamsScope `query:"scope,omitzero" json:"-"`
// Specify the type of chats to retrieve: use "single" for direct messages, "group"
// for group chats, or "any" to get all types
//
// Any of "single", "group", "any".
Type ChatSearchParamsType `query:"type,omitzero" json:"-"`
// contains filtered or unexported fields
}
func (ChatSearchParams) URLQuery ¶
func (r ChatSearchParams) URLQuery() (v url.Values, err error)
URLQuery serializes ChatSearchParams's query parameters as `url.Values`.
type ChatSearchParamsDirection ¶
type ChatSearchParamsDirection string
Pagination direction used with 'cursor': 'before' fetches older results, 'after' fetches newer results. Defaults to 'before' when only 'cursor' is provided.
const ( ChatSearchParamsDirectionAfter ChatSearchParamsDirection = "after" ChatSearchParamsDirectionBefore ChatSearchParamsDirection = "before" )
type ChatSearchParamsInbox ¶
type ChatSearchParamsInbox string
Filter by inbox type: "primary" (non-archived, non-low-priority), "low-priority", or "archive". If not specified, shows all chats.
const ( ChatSearchParamsInboxPrimary ChatSearchParamsInbox = "primary" ChatSearchParamsInboxLowPriority ChatSearchParamsInbox = "low-priority" ChatSearchParamsInboxArchive ChatSearchParamsInbox = "archive" )
type ChatSearchParamsScope ¶
type ChatSearchParamsScope string
Search scope: 'titles' matches title + network; 'participants' matches participant names.
const ( ChatSearchParamsScopeTitles ChatSearchParamsScope = "titles" ChatSearchParamsScopeParticipants ChatSearchParamsScope = "participants" )
type ChatSearchParamsType ¶
type ChatSearchParamsType string
Specify the type of chats to retrieve: use "single" for direct messages, "group" for group chats, or "any" to get all types
const ( ChatSearchParamsTypeSingle ChatSearchParamsType = "single" ChatSearchParamsTypeGroup ChatSearchParamsType = "group" ChatSearchParamsTypeAny ChatSearchParamsType = "any" )
type ChatService ¶
type ChatService struct {
Options []option.RequestOption
// Manage reminders for chats
Reminders ChatReminderService
}
Manage chats
ChatService contains methods and other services that help with interacting with the beeperdesktop API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewChatService method instead.
func NewChatService ¶
func NewChatService(opts ...option.RequestOption) (r ChatService)
NewChatService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*ChatService) Archive ¶
func (r *ChatService) Archive(ctx context.Context, chatID string, body ChatArchiveParams, opts ...option.RequestOption) (err error)
Archive or unarchive a chat. Set archived=true to move to archive, archived=false to move back to inbox
func (*ChatService) Get ¶
func (r *ChatService) Get(ctx context.Context, chatID string, query ChatGetParams, opts ...option.RequestOption) (res *Chat, err error)
Retrieve chat details including metadata, participants, and latest message
func (*ChatService) List ¶
func (r *ChatService) List(ctx context.Context, query ChatListParams, opts ...option.RequestOption) (res *pagination.CursorNoLimit[ChatListResponse], err error)
List all chats sorted by last activity (most recent first). Combines all accounts into a single paginated list.
func (*ChatService) ListAutoPaging ¶
func (r *ChatService) ListAutoPaging(ctx context.Context, query ChatListParams, opts ...option.RequestOption) *pagination.CursorNoLimitAutoPager[ChatListResponse]
List all chats sorted by last activity (most recent first). Combines all accounts into a single paginated list.
func (*ChatService) New ¶
func (r *ChatService) New(ctx context.Context, body ChatNewParams, opts ...option.RequestOption) (res *ChatNewResponse, err error)
Create a single or group chat on a specific account using participant IDs and optional title.
func (*ChatService) Search ¶
func (r *ChatService) Search(ctx context.Context, query ChatSearchParams, opts ...option.RequestOption) (res *pagination.CursorSearch[Chat], err error)
Search chats by title/network or participants using Beeper Desktop's renderer algorithm.
func (*ChatService) SearchAutoPaging ¶
func (r *ChatService) SearchAutoPaging(ctx context.Context, query ChatSearchParams, opts ...option.RequestOption) *pagination.CursorSearchAutoPager[Chat]
Search chats by title/network or participants using Beeper Desktop's renderer algorithm.
type ChatType ¶
type ChatType string
Chat type: 'single' for direct messages, 'group' for group chats.
type Client ¶
type Client struct {
Options []option.RequestOption
// Manage connected chat accounts
Accounts AccountService
// Manage chats
Chats ChatService
// Manage messages in chats
Messages MessageService
// Manage assets in Beeper Desktop, like message attachments
Assets AssetService
}
Client creates a struct with services and top level methods that help with interacting with the beeperdesktop API. You should not instantiate this client directly, and instead use the NewClient method instead.
func NewClient ¶
func NewClient(opts ...option.RequestOption) (r Client)
NewClient generates a new client with the default option read from the environment (BEEPER_ACCESS_TOKEN, BEEPER_DESKTOP_BASE_URL). The option passed in as arguments are applied after these default arguments, and all option will be passed down to the services and requests that this client makes.
func (*Client) Delete ¶
func (r *Client) Delete(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Delete makes a DELETE request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Execute ¶
func (r *Client) Execute(ctx context.Context, method string, path string, params any, res any, opts ...option.RequestOption) error
Execute makes a request with the given context, method, URL, request params, response, and request options. This is useful for hitting undocumented endpoints while retaining the base URL, auth, retries, and other options from the client.
If a byte slice or an io.Reader is supplied to params, it will be used as-is for the request body.
The params is by default serialized into the body using encoding/json. If your type implements a MarshalJSON function, it will be used instead to serialize the request. If a URLQuery method is implemented, the returned url.Values will be used as query strings to the url.
If your params struct uses param.Field, you must provide either [MarshalJSON], [URLQuery], and/or [MarshalForm] functions. It is undefined behavior to use a struct uses param.Field without specifying how it is serialized.
Any "…Params" object defined in this library can be used as the request argument. Note that 'path' arguments will not be forwarded into the url.
The response body will be deserialized into the res variable, depending on its type:
- A pointer to a *http.Response is populated by the raw response.
- A pointer to a byte array will be populated with the contents of the request body.
- A pointer to any other type uses this library's default JSON decoding, which respects UnmarshalJSON if it is defined on the type.
- A nil value will not read the response body.
For even greater flexibility, see option.WithResponseInto and option.WithResponseBodyInto.
func (*Client) Focus ¶
func (r *Client) Focus(ctx context.Context, body FocusParams, opts ...option.RequestOption) (res *FocusResponse, err error)
Focus Beeper Desktop and optionally navigate to a specific chat, message, or pre-fill draft text and attachment.
func (*Client) Get ¶
func (r *Client) Get(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Get makes a GET request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Patch ¶
func (r *Client) Patch(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Patch makes a PATCH request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Post ¶
func (r *Client) Post(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Post makes a POST request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Put ¶
func (r *Client) Put(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Put makes a PUT request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Search ¶
func (r *Client) Search(ctx context.Context, query SearchParams, opts ...option.RequestOption) (res *SearchResponse, err error)
Returns matching chats, participant name matches in groups, and the first page of messages in one call. Paginate messages via search-messages. Paginate chats via search-chats. Uses the same sorting as the chat search in the app.
type FocusParams ¶
type FocusParams struct {
// Optional Beeper chat ID (or local chat ID) to focus after opening the app. If
// omitted, only opens/focuses the app.
ChatID param.Opt[string] `json:"chatID,omitzero"`
// Optional draft attachment path to populate in the message input field.
DraftAttachmentPath param.Opt[string] `json:"draftAttachmentPath,omitzero"`
// Optional draft text to populate in the message input field.
DraftText param.Opt[string] `json:"draftText,omitzero"`
// Optional message ID. Jumps to that message in the chat when opening.
MessageID param.Opt[string] `json:"messageID,omitzero"`
// contains filtered or unexported fields
}
func (FocusParams) MarshalJSON ¶
func (r FocusParams) MarshalJSON() (data []byte, err error)
func (*FocusParams) UnmarshalJSON ¶
func (r *FocusParams) UnmarshalJSON(data []byte) error
type FocusResponse ¶
type FocusResponse struct {
// Whether the app was successfully opened/focused.
Success bool `json:"success,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Success respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
Response indicating successful app focus action.
func (FocusResponse) RawJSON ¶
func (r FocusResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*FocusResponse) UnmarshalJSON ¶
func (r *FocusResponse) UnmarshalJSON(data []byte) error
type MessageListParams ¶
type MessageListParams struct {
// Opaque pagination cursor; do not inspect. Use together with 'direction'.
Cursor param.Opt[string] `query:"cursor,omitzero" json:"-"`
// Pagination direction used with 'cursor': 'before' fetches older results, 'after'
// fetches newer results. Defaults to 'before' when only 'cursor' is provided.
//
// Any of "after", "before".
Direction MessageListParamsDirection `query:"direction,omitzero" json:"-"`
// contains filtered or unexported fields
}
func (MessageListParams) URLQuery ¶
func (r MessageListParams) URLQuery() (v url.Values, err error)
URLQuery serializes MessageListParams's query parameters as `url.Values`.
type MessageListParamsDirection ¶
type MessageListParamsDirection string
Pagination direction used with 'cursor': 'before' fetches older results, 'after' fetches newer results. Defaults to 'before' when only 'cursor' is provided.
const ( MessageListParamsDirectionAfter MessageListParamsDirection = "after" MessageListParamsDirectionBefore MessageListParamsDirection = "before" )
type MessageSearchParams ¶
type MessageSearchParams struct {
// Exclude messages marked Low Priority by the user. Default: true. Set to false to
// include all.
ExcludeLowPriority param.Opt[bool] `query:"excludeLowPriority,omitzero" json:"-"`
// Include messages in chats marked as Muted by the user, which are usually less
// important. Default: true. Set to false if the user wants a more refined search.
IncludeMuted param.Opt[bool] `query:"includeMuted,omitzero" json:"-"`
// Opaque pagination cursor; do not inspect. Use together with 'direction'.
Cursor param.Opt[string] `query:"cursor,omitzero" json:"-"`
// Only include messages with timestamp strictly after this ISO 8601 datetime
// (e.g., '2024-07-01T00:00:00Z' or '2024-07-01T00:00:00+02:00').
DateAfter param.Opt[time.Time] `query:"dateAfter,omitzero" format:"date-time" json:"-"`
// Only include messages with timestamp strictly before this ISO 8601 datetime
// (e.g., '2024-07-31T23:59:59Z' or '2024-07-31T23:59:59+02:00').
DateBefore param.Opt[time.Time] `query:"dateBefore,omitzero" format:"date-time" json:"-"`
// Maximum number of messages to return.
Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
// Literal word search (NOT semantic). Finds messages containing these EXACT words
// in any order. Use single words users actually type, not concepts or phrases.
// Example: use "dinner" not "dinner plans", use "sick" not "health issues". If
// omitted, returns results filtered only by other parameters.
Query param.Opt[string] `query:"query,omitzero" json:"-"`
// Limit search to specific account IDs.
AccountIDs []string `query:"accountIDs,omitzero" json:"-"`
// Limit search to specific chat IDs.
ChatIDs []string `query:"chatIDs,omitzero" json:"-"`
// Filter by chat type: 'group' for group chats, 'single' for 1:1 chats.
//
// Any of "group", "single".
ChatType MessageSearchParamsChatType `query:"chatType,omitzero" json:"-"`
// Pagination direction used with 'cursor': 'before' fetches older results, 'after'
// fetches newer results. Defaults to 'before' when only 'cursor' is provided.
//
// Any of "after", "before".
Direction MessageSearchParamsDirection `query:"direction,omitzero" json:"-"`
// Filter messages by media types. Use ['any'] for any media type, or specify exact
// types like ['video', 'image']. Omit for no media filtering.
//
// Any of "any", "video", "image", "link", "file".
MediaTypes []string `query:"mediaTypes,omitzero" json:"-"`
// Filter by sender: 'me' (messages sent by the authenticated user), 'others'
// (messages sent by others), or a specific user ID string (user.id).
Sender MessageSearchParamsSender `query:"sender,omitzero" json:"-"`
// contains filtered or unexported fields
}
func (MessageSearchParams) URLQuery ¶
func (r MessageSearchParams) URLQuery() (v url.Values, err error)
URLQuery serializes MessageSearchParams's query parameters as `url.Values`.
type MessageSearchParamsChatType ¶
type MessageSearchParamsChatType string
Filter by chat type: 'group' for group chats, 'single' for 1:1 chats.
const ( MessageSearchParamsChatTypeGroup MessageSearchParamsChatType = "group" MessageSearchParamsChatTypeSingle MessageSearchParamsChatType = "single" )
type MessageSearchParamsDirection ¶
type MessageSearchParamsDirection string
Pagination direction used with 'cursor': 'before' fetches older results, 'after' fetches newer results. Defaults to 'before' when only 'cursor' is provided.
const ( MessageSearchParamsDirectionAfter MessageSearchParamsDirection = "after" MessageSearchParamsDirectionBefore MessageSearchParamsDirection = "before" )
type MessageSearchParamsSender ¶
type MessageSearchParamsSender string
Filter by sender: 'me' (messages sent by the authenticated user), 'others' (messages sent by others), or a specific user ID string (user.id).
const ( MessageSearchParamsSenderMe MessageSearchParamsSender = "me" MessageSearchParamsSenderOthers MessageSearchParamsSender = "others" )
type MessageSendParams ¶
type MessageSendParams struct {
// Provide a message ID to send this as a reply to an existing message
ReplyToMessageID param.Opt[string] `json:"replyToMessageID,omitzero"`
// Text content of the message you want to send. You may use markdown.
Text param.Opt[string] `json:"text,omitzero"`
// contains filtered or unexported fields
}
func (MessageSendParams) MarshalJSON ¶
func (r MessageSendParams) MarshalJSON() (data []byte, err error)
func (*MessageSendParams) UnmarshalJSON ¶
func (r *MessageSendParams) UnmarshalJSON(data []byte) error
type MessageSendResponse ¶
type MessageSendResponse struct {
// Unique identifier of the chat.
ChatID string `json:"chatID,required"`
// Pending message ID
PendingMessageID string `json:"pendingMessageID,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
ChatID respjson.Field
PendingMessageID respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (MessageSendResponse) RawJSON ¶
func (r MessageSendResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*MessageSendResponse) UnmarshalJSON ¶
func (r *MessageSendResponse) UnmarshalJSON(data []byte) error
type MessageService ¶
type MessageService struct {
Options []option.RequestOption
}
Manage messages in chats
MessageService contains methods and other services that help with interacting with the beeperdesktop API.
Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewMessageService method instead.
func NewMessageService ¶
func NewMessageService(opts ...option.RequestOption) (r MessageService)
NewMessageService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.
func (*MessageService) List ¶
func (r *MessageService) List(ctx context.Context, chatID string, query MessageListParams, opts ...option.RequestOption) (res *pagination.CursorSortKey[shared.Message], err error)
List all messages in a chat with cursor-based pagination. Sorted by timestamp.
func (*MessageService) ListAutoPaging ¶
func (r *MessageService) ListAutoPaging(ctx context.Context, chatID string, query MessageListParams, opts ...option.RequestOption) *pagination.CursorSortKeyAutoPager[shared.Message]
List all messages in a chat with cursor-based pagination. Sorted by timestamp.
func (*MessageService) Search ¶
func (r *MessageService) Search(ctx context.Context, query MessageSearchParams, opts ...option.RequestOption) (res *pagination.CursorSearch[shared.Message], err error)
Search messages across chats using Beeper's message index
func (*MessageService) SearchAutoPaging ¶
func (r *MessageService) SearchAutoPaging(ctx context.Context, query MessageSearchParams, opts ...option.RequestOption) *pagination.CursorSearchAutoPager[shared.Message]
Search messages across chats using Beeper's message index
func (*MessageService) Send ¶
func (r *MessageService) Send(ctx context.Context, chatID string, body MessageSendParams, opts ...option.RequestOption) (res *MessageSendResponse, err error)
Send a text message to a specific chat. Supports replying to existing messages. Returns the sent message ID.
type SearchParams ¶
type SearchParams struct {
// User-typed search text. Literal word matching (NOT semantic).
Query string `query:"query,required" json:"-"`
// contains filtered or unexported fields
}
func (SearchParams) URLQuery ¶
func (r SearchParams) URLQuery() (v url.Values, err error)
URLQuery serializes SearchParams's query parameters as `url.Values`.
type SearchResponse ¶
type SearchResponse struct {
Results SearchResponseResults `json:"results,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Results respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (SearchResponse) RawJSON ¶
func (r SearchResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*SearchResponse) UnmarshalJSON ¶
func (r *SearchResponse) UnmarshalJSON(data []byte) error
type SearchResponseResults ¶
type SearchResponseResults struct {
// Top chat results.
Chats []Chat `json:"chats,required"`
// Top group results by participant matches.
InGroups []Chat `json:"in_groups,required"`
Messages SearchResponseResultsMessages `json:"messages,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Chats respjson.Field
InGroups respjson.Field
Messages respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (SearchResponseResults) RawJSON ¶
func (r SearchResponseResults) RawJSON() string
Returns the unmodified JSON received from the API
func (*SearchResponseResults) UnmarshalJSON ¶
func (r *SearchResponseResults) UnmarshalJSON(data []byte) error
type SearchResponseResultsMessages ¶
type SearchResponseResultsMessages struct {
// Map of chatID -> chat details for chats referenced in items.
Chats map[string]Chat `json:"chats,required"`
// True if additional results can be fetched using the provided cursors.
HasMore bool `json:"hasMore,required"`
// Messages matching the query and filters.
Items []shared.Message `json:"items,required"`
// Cursor for fetching newer results (use with direction='after'). Opaque string;
// do not inspect.
NewestCursor string `json:"newestCursor,required"`
// Cursor for fetching older results (use with direction='before'). Opaque string;
// do not inspect.
OldestCursor string `json:"oldestCursor,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Chats respjson.Field
HasMore respjson.Field
Items respjson.Field
NewestCursor respjson.Field
OldestCursor respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (SearchResponseResultsMessages) RawJSON ¶
func (r SearchResponseResultsMessages) RawJSON() string
Returns the unmodified JSON received from the API
func (*SearchResponseResultsMessages) UnmarshalJSON ¶
func (r *SearchResponseResultsMessages) UnmarshalJSON(data []byte) error
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
encoding/json
Package json implements encoding and decoding of JSON as defined in RFC 7159.
|
Package json implements encoding and decoding of JSON as defined in RFC 7159. |
|
encoding/json/shims
This package provides shims over Go 1.2{2,3} APIs which are missing from Go 1.22, and used by the Go 1.24 encoding/json package.
|
This package provides shims over Go 1.2{2,3} APIs which are missing from Go 1.22, and used by the Go 1.24 encoding/json package. |
|
packages
|
|