reamaze

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Feb 20, 2024 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ReamazeFilterArchived   ReamazeFilter = "archived"
	ReamazeFilterOpen       ReamazeFilter = "open"
	ReamazeFilterUnassigned ReamazeFilter = "unassigned"
	ReamazeFilterAll        ReamazeFilter = "all"
	ReamazeSortUpdated      ReamazeSort   = "updated"
	ReamazeSortChanged      ReamazeSort   = "changed"
	ReamazeSortCreatedAt    ReamazeSort   = "create_at"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ArticlesOption

type ArticlesOption interface {
	Apply(*ReamazeArticlesOptions)
}

type Client

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

Reamaze Client

func NewClient

func NewClient(email, apiToken, brand string) (*Client, error)

NewClient creates a new re:amaze client that uses the given workspace with user and pass.

func (*Client) CreateArticle

func (c *Client) CreateArticle(req *CreateArticleRequest) (*CreateArticleResponse, error)

CreateArticle will allow you to update the article. https://www.reamaze.com/api/put_article

func (*Client) CreateContact

func (c *Client) CreateContact(req *CreateContactRequest) (*GetContactResponse, error)

CreateContact creates new Contact https://www.reamaze.com/api/post_contacts

func (*Client) CreateContactIdentities

func (c *Client) CreateContactIdentities(identifier string, req *CreateContactIdentitiesRequest, identifierType ...ReamazeIdentifier) (*GetContactIdentitiesResponse, error)

CreateContactIdentities creates Contact Identities https://www.reamaze.com/api/post_identities Call to identities will allow you to attach an email, mobile number, twitter handle or instagram user to a contact.

func (*Client) CreateConversation

func (c *Client) CreateConversation(req *CreateConversationRequest) (*CreateConversationResponse, error)

CreateConversation is creating new conversation in reamaze

func (*Client) CreateIncident

func (c *Client) CreateIncident(req *CreateIncidentRequest) (*CreateIncidentResponse, error)

CreateIncident will allow you to create a new incident https://www.reamaze.com/api/post_incident The incidents_systems_attributes attribute is optional. The status attribute in updates_attributes can be one of the following: [investigating, identified, monitoring, resolved] The status attribute in incidents_systems_attributes can be one of the following: [operational, degraded_performance, partial_outage, major_outage, under_maintenance]

func (*Client) CreateMessage

func (c *Client) CreateMessage(slug string, req *CreateMessageRequest) (*CreateMessageResponse, error)

CreateMessage will allow you to create a new message under a specific conversation https://www.reamaze.com/api/post_messages

func (*Client) CreateNote

func (c *Client) CreateNote(identifier string, req *CreateNoteRequest) (*CreateNoteResponse, error)

CreateNote will allow you to attach an note to a contact https://www.reamaze.com/api/post_notes This allows you to create one note for a contact. You can also create many notes at a time for a contact through the update contacts endpoint creator_email is optional and should be the staff email address for the Re:amaze staff user who you want to be attributed to creating the note. Otherwise, the creator will be the user making the request. created_at is optional and will default to the current time.

func (*Client) CreateResponseTemplate

func (c *Client) CreateResponseTemplate(req *CreateResponseTemplateRequest) (*CreateResponseTemplateResponse, error)

CreateResponseTemplate will allow you to create a new Response Template https://www.reamaze.com/api/post_response_template

func (*Client) CreateStaff

func (c *Client) CreateStaff(req *CreateStaffRequest) (*CreateStaffResponse, error)

CreateStaff will allow you to create new staff user. Please keep in mind that this may have an impact on your monthly subscription cost https://www.reamaze.com/api/post_staff No invite emails are sent to the created user's email. This is to prevent potential abuse. The created user will be asked to change their password the first time they log in.

func (*Client) DeleteNote

func (c *Client) DeleteNote(identifier string, noteID string) (*DeleteNoteResponse, error)

DeleteNote will delete a note with the given id from the contact https://www.reamaze.com/api/delete_note

func (*Client) GetArticle

func (c *Client) GetArticle(slug string) (*GetArticleResponse, error)

GetArticle will allow you to retrieve a specific Help Article https://www.reamaze.com/api/get_article

func (*Client) GetArticles

func (c *Client) GetArticles(o ...ArticlesOption) (*GetArticlesResponse, error)

GetArticles will allow you to retrieve Help Articles for the Brand optional parameters WithArticlePage(int), WithArticleStatus(ReamazeArticleStatus),WithArticleQuery(string) https://www.reamaze.com/api/get_articles

func (*Client) GetChannel

func (c *Client) GetChannel(slug string) (*GetChannelResponse, error)

GetChannel will allow you to retrieve a specific channel https://www.reamaze.com/api/get_channel

func (*Client) GetChannels

func (c *Client) GetChannels() (*GetChannelsResponse, error)

GetChannels will allow you to retrieve channels for the Brand https://www.reamaze.com/api/get_channels

func (*Client) GetContact

func (c *Client) GetContact(identifier string) (*GetContactResponse, error)

GetContact getting Contact for identifier

func (*Client) GetContactIdentities

func (c *Client) GetContactIdentities(identifier string) (*GetContactIdentitiesResponse, error)

GetContactIdentities gets Contact's Identities https://www.reamaze.com/api/get_identities Identities types are one of 'email', 'twitter','facebook', 'instagram', 'igsid' (Instagram-scoped ID), or 'mobile'.

func (*Client) GetContacts

func (c *Client) GetContacts() (*GetContactsResponse, error)

GetContacts retrieves all contacts for the Account Note that unlike other resources, contacts are tied to the account, not the individual brand. TODO: adding params q,data,sort,type,page

func (*Client) GetConversation

func (c *Client) GetConversation(slug string) (*GetConversationResponse, error)

GetConversation retrieve a specific conversation

func (*Client) GetConversations

func (c *Client) GetConversations(o ...ConversationsOption) (*GetConversationsResponse, error)

GetConversations retrieve conversations for the Brand

func (*Client) GetIncident

func (c *Client) GetIncident(identifier string) (*GetIncidentResponse, error)

GetIncidents will allow you to retrieve the incidents for the Brand https://www.reamaze.com/api/get_incident

func (*Client) GetIncidents

func (c *Client) GetIncidents() (*GetIncidentsResponse, error)

GetIncidents will allow you to retrieve the incidents for the Brand https://www.reamaze.com/api/get_incidents

func (*Client) GetMessages

func (c *Client) GetMessages() (*GetMessagesResponse, error)

GetMessages call to messages will allow you to retrieve individual messages for all conversations in the Brand https://www.reamaze.com/api/get_messages

func (*Client) GetNotes

func (c *Client) GetNotes(identifier string) (*GetNotesResponse, error)

GetNotes gets all the Notes for provided identifier https://www.reamaze.com/api/get_notes

func (*Client) GetReportsChannelSummary

func (c *Client) GetReportsChannelSummary(o ...ReportsOption) (*GetReportsChannelSummaryResponse, error)

GetReportsChannelSummary returns a channel report summarizing channel metrics The start and end dates of the report will default to the last 30 days. Time frames can be no smaller than 1 day and no larger than 1 year. https://www.reamaze.com/api/get_reports_channel_summary

func (*Client) GetReportsResponseTime

func (c *Client) GetReportsResponseTime(o ...ReportsOption) (*GetReportsResponseTimeRespone, error)

GetReportsResponseTime Returns a daily response time metric and a response times summary object. Response times are reported in seconds. https://www.reamaze.com/api/get_reports_response_time

func (*Client) GetReportsStaff

func (c *Client) GetReportsStaff(o ...ReportsOption) (*GetReportsStaffResponse, error)

GetReportsStaffResponse returns a staff report summarizing staff metrics The start and end dates of the report will default to the last 30 days. Time frames can be no smaller than 1 day and no larger than 1 year. https://www.reamaze.com/api/get_reports_staff

func (*Client) GetReportsTags

func (c *Client) GetReportsTags(o ...ReportsOption) (*GetReportsTagsResponse, error)

GetReportsTags returns a tag report summarizing tag usage The start and end dates of the report will default to the last 30 days. Time frames can be no smaller than 1 day and no larger than 1 year. https://www.reamaze.com/api/get_reports_tags

func (*Client) GetReportsVolume

func (c *Client) GetReportsVolume(o ...ReportsOption) (*GetReportsVolumeResponse, error)

GetReportsVolume returns a daily volume count The start and end dates of the report will default to the last 30 days. Time frames can be no smaller than 1 day and no larger than 1 year. https://www.reamaze.com/api/get_reports_volume

func (*Client) GetResponseTemplate

func (c *Client) GetResponseTemplate(identifier string) (*GetResponseTemplateResponse, error)

GetResponseTemplate will allow you to retrieve a specific Response Template https://www.reamaze.com/api/get_response_template

func (*Client) GetResponseTemplates

func (c *Client) GetResponseTemplates() (*GetResponseTemplatesResponse, error)

GetResponseTemplates will allow you to retrieve Response Templates for the Brand. This will also return personal Response Templates depending on the user role https://www.reamaze.com/api/get_response_templates TODO add the q and page handlers q with any string will search over response templates by keywords. page with any number will allow you to paginate through results

func (*Client) GetStaff

func (c *Client) GetStaff(o ...StaffOption) (*GetStaffResponse, error)

GetStaff will allow you to retrieve staff users for the Account https://www.reamaze.com/api/get_staff

func (*Client) GetSystems

func (c *Client) GetSystems() (*GetSystemsResponse, error)

GetSystems will allow you to retrieve the systems for the Brand https://www.reamaze.com/api/get_systems

func (*Client) UpdateArticle

func (c *Client) UpdateArticle(slug string, req *UpdateArticleRequest) (*UpdateArticleResponse, error)

UpdateArticle will allow you to update the article. https://www.reamaze.com/api/put_article

func (*Client) UpdateContact

func (c *Client) UpdateContact(identifier string, req *UpdateContactRequest, identifierType ...ReamazeIdentifier) (*GetContactResponse, error)

UpdateContact update existing Contact https://www.reamaze.com/api/put_contacts This re:amaze endpoint can only change name, friendly_name, external_avatar_url and data attributes

func (*Client) UpdateConversation

func (c *Client) UpdateConversation(slug string, req *UpdateConversationRequest) (*GetConversationResponse, error)

UpdateConversation updates a conversation with tags_list,assignee,status,category or brand

func (*Client) UpdateIncident

func (c *Client) UpdateIncident(identifier string, req *UpdateIncidentRequest) (*UpdateIncidentResponse, error)

UpdateIncident will allow you to retrieve the incidents for the Brand https://www.reamaze.com/api/put_incident

func (*Client) UpdateNote

func (c *Client) UpdateNote(identifier string, noteID string, req *UpdateNoteRequest) (*UpdateNoteResponse, error)

UpdateNote will allow you to update a note with the given id https://www.reamaze.com/api/put_note

func (*Client) UpdateResponseTemplate

func (c *Client) UpdateResponseTemplate(identifier string, req *UpdateResponseTemplateRequest) (*UpdateResponseTemplateResponse, error)

UpdateResponseTemplate will allow you to update the response template https://www.reamaze.com/api/put_response_template

type ConversationsOption

type ConversationsOption interface {
	Apply(*ReamazeOptions)
}

type CreateArticleRequest

type CreateArticleRequest struct {
	Article struct {
		Title   string               `json:"title,omitempty"`
		Body    string               `json:"body,omitempty"`
		Status  ReamazeArticleStatus `json:"status,omitempty"`
		TopicID string               `json:"topic_id,omitempty"`
	} `json:"article,omitempty"`
}

type CreateArticleResponse

type CreateArticleResponse ReamazeArticle

type CreateContactIdentitiesRequest

type CreateContactIdentitiesRequest struct {
	Identity struct {
		Type       ReamazeIdentifier `json:"type"`
		Identifier string            `json:"identifier"`
	} `json:"identity"`
}

type CreateContactRequest

type CreateContactRequest struct {
	Contact struct {
		Name              string             `json:"name"`
		Email             string             `json:"email"`
		Mobile            ReamazePhoneNumber `json:"mobile"`
		FriendlyName      string             `json:"friendly_name"`
		ID                string             `json:"id"`
		ExternalAvatarURL string             `json:"external_avatar_url"`
		Notes             []string           `json:"notes"`
		Data              interface{}        `json:"data"`
	} `json:"contact"`
}

type CreateConversationRequest

type CreateConversationRequest struct {
	Conversation struct {
		Subject             string        `json:"subject,omitempty"`
		Category            string        `json:"category,omitempty"`
		TagList             []string      `json:"tag_list,omitempty"`
		Status              ReamazeStatus `json:"status,omitempty"`
		SupressNotification bool          `json:"suppress_notifications,omitempty"` // You can optionally pass in a message[suppress_notifications] boolean attribute with a value of true to prevent Reamaze from sending any email (or integration) notifications related to this message.
		SupressAutoresolve  bool          `json:"suppress_autoresolve,omitempty"`   // You can optionally pass in a message[suppress_autoresolve] boolean attribute with a value of true to prevent Reamaze from marking the conversation as resolved when message[user] is a staff user.
		Data                any           `json:"data,omitempty"`
		Message             struct {
			Body        string   `json:"body,omitempty"`
			Attachment  string   `json:"attachment,omitempty"`
			Attachments []string `json:"attachments,omitempty"`
		} `json:"message,omitempty"`
		User struct {
			Name  string `json:"name,omitempty"`
			Email string `json:"email,omitempty"`
			Data  any    `json:"data,omitempty"`
		} `json:"user,omitempty"`
	} `json:"conversation,omitempty"`
}

type CreateConversationResponse

type CreateConversationResponse struct {
	Subject   string    `json:"subject"`
	Slug      string    `json:"slug"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
	Origin    int       `json:"origin"`
	Data      any       `json:"data"`
	HoldUntil any       `json:"hold_until"`
	Author    struct {
		ID           int    `json:"id"`
		Name         string `json:"name"`
		Data         any    `json:"data"`
		Email        string `json:"email"`
		Twitter      string `json:"twitter"`
		Facebook     string `json:"facebook"`
		Instagram    string `json:"instagram"`
		Mobile       string `json:"mobile"`
		FriendlyName string `json:"friendly_name"`
		DisplayName  string `json:"display_name"`
	} `json:"author"`
	Assignee       any      `json:"assignee"`
	PermaURL       string   `json:"perma_url"`
	TagList        []string `json:"tag_list"`
	Status         int      `json:"status"`
	DisplaySubject string   `json:"display_subject"`
	Category       struct {
		Name                     string `json:"name"`
		Slug                     string `json:"slug"`
		Email                    string `json:"email"`
		Channel                  int    `json:"channel"`
		SettingsDisplayHTMLEmail string `json:"settings_display_html_email"`
	} `json:"category"`
	LastCustomerMessage struct {
		Body      string    `json:"body"`
		CreatedAt time.Time `json:"created_at"`
	} `json:"last_customer_message"`
	Followers []struct {
		ID           int    `json:"id"`
		Name         string `json:"name"`
		Data         any    `json:"data"`
		Email        string `json:"email"`
		Twitter      string `json:"twitter"`
		Facebook     string `json:"facebook"`
		Instagram    string `json:"instagram"`
		Mobile       string `json:"mobile"`
		FriendlyName string `json:"friendly_name"`
		DisplayName  string `json:"display_name"`
		Staff        bool   `json:"staff?"`
		Customer     bool   `json:"customer?"`
		Bot          bool   `json:"bot?"`
	} `json:"followers"`
	Message struct {
		Body string `json:"body"`
	} `json:"message"`
	ReadOnly     bool `json:"readOnly"`
	MessageCount int  `json:"message_count"`
}

type CreateIncidentRequest

type CreateIncidentRequest UpdateIncidentRequest

type CreateIncidentResponse

type CreateIncidentResponse GetIncidentResponse

type CreateMessageRequest

type CreateMessageRequest struct {
	Message struct {
		Body       string            `json:"body"`
		Visibility ReamazeVisibility `json:"visibility,omitempty"`
		OriginID   string            `json:"origin_id,omitempty"`
		User       *struct {
			Name  string `json:"name,omitempty"`
			Email string `json:"email,omitempty"`
		} `json:"user,omitempty"`
		SupressNotification bool     `json:"suppress_notifications,omitempty"` // You can optionally pass in a message[suppress_notifications] boolean attribute with a value of true to prevent Reamaze from sending any email (or integration) notifications related to this message.
		SupressAutoresolve  bool     `json:"suppress_autoresolve,omitempty"`
		Attachment          string   `json:"attachment,omitempty"`
		Attachments         []string `json:"attachments,omitempty"`
	} `json:"message"`
}

type CreateMessageResponse

type CreateMessageResponse struct {
	Body       string `json:"body"`
	Visibility int    `json:"visibility"`
	CreatedAt  string `json:"created_at"`
	OriginID   string `json:"origin_id"`
	User       struct {
		Name  string `json:"name"`
		Email string `json:"email"`
	} `json:"user"`
	Conversation struct {
		Subject   string `json:"subject"`
		Slug      string `json:"slug"`
		CreatedAt string `json:"created_at"`
		Category  struct {
			Name    string `json:"name"`
			Slug    string `json:"slug"`
			Email   string `json:"email"`
			Channel int    `json:"channel"`
		} `json:"category"`
	} `json:"conversation"`
}

type CreateNoteRequest

type CreateNoteRequest struct {
	Body         string    `json:"body"`
	CreatorEmail string    `json:"creator_email"`
	CreatedAt    time.Time `json:"created_at"`
}

CreatorEmail is optional and should be the staff email address for the Re:amaze staff user who you want to be attributed to creating the note. Otherwise, the creator will not be updated. CreatedAt is optional and will not be updated if not passed in.

type CreateNoteResponse

type CreateNoteResponse Note

type CreateResponseTemplateRequest

type CreateResponseTemplateRequest struct {
	ResponseTemplate struct {
		Name       string `json:"name"`
		Body       string `json:"body"`
		IsPersonal int    `json:"is_personal"`
	} `json:"response_template"`
}

type CreateResponseTemplateResponse

type CreateResponseTemplateResponse GetResponseTemplateResponse

type CreateStaffRequest

type CreateStaffRequest struct {
	Staff struct {
		Name     string `json:"name,omitempty"`
		Email    string `json:"email,omitempty"`
		Password string `json:"password,omitempty"`
	} `json:"staff,omitempty"`
}

type CreateStaffResponse

type CreateStaffResponse struct {
	Name              string    `json:"name,omitempty"`
	CreatedAt         time.Time `json:"created_at,omitempty"`
	Email             string    `json:"email,omitempty"`
	DisplayName       string    `json:"display_name,omitempty"`
	NotificationEmail string    `json:"notification_email,omitempty"`
	Role              struct {
		ID          any    `json:"id,omitempty"`
		Name        string `json:"name,omitempty"`
		Description any    `json:"description,omitempty"`
		Admin       bool   `json:"admin?,omitempty"`
		Default     bool   `json:"default?,omitempty"`
		Permissions struct {
			ManageStaff                      bool  `json:"manage_staff?,omitempty"`
			ManageStaffRole                  bool  `json:"manage_staff_role?,omitempty"`
			ManageDepartments                bool  `json:"manage_departments?,omitempty"`
			ViewStaff                        bool  `json:"view_staff?,omitempty"`
			ManageSubscriptions              bool  `json:"manage_subscriptions?,omitempty"`
			ManageInvoiceEmail               bool  `json:"manage_invoice_email?,omitempty"`
			ManageKb                         bool  `json:"manage_kb?,omitempty"`
			ManageAccount                    bool  `json:"manage_account?,omitempty"`
			ManageResponseTemplates          bool  `json:"manage_response_templates?,omitempty"`
			ManagePersonalResponseTemplates  bool  `json:"manage_personal_response_templates?,omitempty"`
			ManageWorkflows                  bool  `json:"manage_workflows?,omitempty"`
			ManageChatbots                   bool  `json:"manage_chatbots?,omitempty"`
			ManagePushCampaigns              bool  `json:"manage_push_campaigns?,omitempty"`
			ManageWebsiteIntegrations        bool  `json:"manage_website_integrations?,omitempty"`
			ManageDeveloperSettings          bool  `json:"manage_developer_settings?,omitempty"`
			ManageAssignments                bool  `json:"manage_assignments?,omitempty"`
			ManageIncidents                  bool  `json:"manage_incidents?,omitempty"`
			ManageNotes                      bool  `json:"manage_notes?,omitempty"`
			DeleteConversations              bool  `json:"delete_conversations?,omitempty"`
			AccessVoice                      bool  `json:"access_voice?,omitempty"`
			AccessVideoCall                  bool  `json:"access_video_call?,omitempty"`
			AccessAiFeatures                 bool  `json:"access_ai_features?,omitempty"`
			AccessWebhookSubscriptionsAPI    bool  `json:"access_webhook_subscriptions_api?,omitempty"`
			ManageTags                       bool  `json:"manage_tags?,omitempty"`
			AccessChat                       bool  `json:"access_chat?,omitempty"`
			AccessLiveView                   bool  `json:"access_live_view?,omitempty"`
			AccessReports                    bool  `json:"access_reports?,omitempty"`
			AccessStaffReports               bool  `json:"access_staff_reports?,omitempty"`
			ReplyToCustomers                 bool  `json:"reply_to_customers?,omitempty"`
			EditCustomers                    bool  `json:"edit_customers?,omitempty"`
			RestrictChannels                 bool  `json:"restrict_channels?,omitempty"`
			MoveAcrossRestrictedChannels     bool  `json:"move_across_restricted_channels?,omitempty"`
			AssignAcrossRestrictedChannels   bool  `json:"assign_across_restricted_channels?,omitempty"`
			ViewReportsForRestrictedChannels bool  `json:"view_reports_for_restricted_channels?,omitempty"`
			VisibleChannelIds                []any `json:"visible_channel_ids,omitempty"`
			ViewAllContacts                  bool  `json:"view_all_contacts?,omitempty"`
			ExportContacts                   bool  `json:"export_contacts?,omitempty"`
			MaxChats                         int   `json:"max_chats,omitempty"`
			BigcommerceAccess                struct {
				Access         bool `json:"access,omitempty"`
				ProcessRefunds bool `json:"process_refunds,omitempty"`
			} `json:"bigcommerce_access,omitempty"`
			LoyaltylionAccess struct {
				Access bool `json:"access,omitempty"`
				Edit   bool `json:"edit,omitempty"`
			} `json:"loyaltylion_access,omitempty"`
			PipedriveAccess struct {
				Access      bool `json:"access,omitempty"`
				ManageDeals bool `json:"manage_deals,omitempty"`
			} `json:"pipedrive_access,omitempty"`
			ShopifyAccess struct {
				Access             bool `json:"access,omitempty"`
				EditDetails        bool `json:"edit_details,omitempty"`
				ProcessRefunds     bool `json:"process_refunds,omitempty"`
				ProcessCancels     bool `json:"process_cancels,omitempty"`
				ManageDraftOrders  bool `json:"manage_draft_orders,omitempty"`
				ManageFulfillments bool `json:"manage_fulfillments,omitempty"`
			} `json:"shopify_access,omitempty"`
			StripeAccess struct {
				Access              bool `json:"access,omitempty"`
				ProcessRefunds      bool `json:"process_refunds,omitempty"`
				CancelSubscriptions bool `json:"cancel_subscriptions,omitempty"`
			} `json:"stripe_access,omitempty"`
			WoocommerceAccess struct {
				Access         bool `json:"access,omitempty"`
				ProcessRefunds bool `json:"process_refunds,omitempty"`
			} `json:"woocommerce_access,omitempty"`
			YotpoAccess struct {
				Access bool `json:"access,omitempty"`
			} `json:"yotpo_access,omitempty"`
			GbmAccess struct {
				Access bool `json:"access,omitempty"`
			} `json:"gbm_access,omitempty"`
			WixAccess struct {
				Access bool `json:"access,omitempty"`
			} `json:"wix_access,omitempty"`
		} `json:"permissions,omitempty"`
	} `json:"role,omitempty"`
}

type DeleteNoteResponse

type DeleteNoteResponse Note

type GetArticleResponse

type GetArticleResponse ReamazeArticle

type GetArticlesResponse

type GetArticlesResponse struct {
	PageSize   int `json:"page_size,omitempty"`
	PageCount  int `json:"page_count,omitempty"`
	TotalCount int `json:"total_count,omitempty"`
	Articles   []struct {
		Title     string    `json:"title,omitempty"`
		Body      string    `json:"body,omitempty"`
		Slug      string    `json:"slug,omitempty"`
		Status    int       `json:"status,omitempty"`
		CreatedAt time.Time `json:"created_at,omitempty"`
		UpdatedAt time.Time `json:"updated_at,omitempty"`
		URL       string    `json:"url,omitempty"`
		Author    struct {
			ID           int    `json:"id,omitempty"`
			Name         string `json:"name,omitempty"`
			Data         any    `json:"data,omitempty"`
			Email        string `json:"email,omitempty"`
			Twitter      string `json:"twitter,omitempty"`
			Facebook     string `json:"facebook,omitempty"`
			Instagram    string `json:"instagram,omitempty"`
			Mobile       string `json:"mobile,omitempty"`
			FriendlyName string `json:"friendly_name,omitempty"`
			DisplayName  string `json:"display_name,omitempty"`
		} `json:"author,omitempty"`
		EmbeddedURL string `json:"embedded_url,omitempty"`
		Topic       struct {
			Name string `json:"name,omitempty"`
			Slug string `json:"slug,omitempty"`
		} `json:"topic,omitempty"`
	} `json:"articles,omitempty"`
}

type GetChannelResponse

type GetChannelResponse struct {
	Name                  string                   `json:"name"`
	Slug                  string                   `json:"slug"`
	Email                 string                   `json:"email"`
	CreatedAt             time.Time                `json:"created_at"`
	UpdatedAt             time.Time                `json:"updated_at"`
	Channel               ReamazeChannelType       `json:"channel"`
	Visibility            ReamazeChannelVisibility `json:"visibility"`
	SpamFilterEnabled     bool                     `json:"spam_filter_enabled"`
	ReplyFromOrigin       bool                     `json:"reply_from_origin"`
	Verified              bool                     `json:"verified"`
	VerificationEmail     string                   `json:"verification_email"`
	LastVerified          time.Time                `json:"last_verified"`
	SettingsReplyFromName string                   `json:"settings_reply_from_name"`
	SettingsSignature     string                   `json:"settings_signature"`
	Brand                 struct {
		Name string `json:"name"`
		URL  string `json:"url"`
	} `json:"brand"`
}

The settings_reply_from_name value determines the whether the "From" name for replies is set to the channel name ("channel"), the brand name ("brand"), or the responding staff user's name ("staff")

type GetChannelsResponse

type GetChannelsResponse struct {
	TotalCount int `json:"total_count"`
	Channels   []struct {
		Name                  string                   `json:"name"`
		Slug                  string                   `json:"slug"`
		Email                 string                   `json:"email"`
		CreatedAt             time.Time                `json:"created_at"`
		UpdatedAt             time.Time                `json:"updated_at"`
		Channel               ReamazeChannelType       `json:"channel"`
		Visibility            ReamazeChannelVisibility `json:"visibility"`
		SpamFilterEnabled     bool                     `json:"spam_filter_enabled"`
		ReplyFromOrigin       bool                     `json:"reply_from_origin"`
		Verified              bool                     `json:"verified"`
		VerificationEmail     string                   `json:"verification_email"`
		LastVerified          time.Time                `json:"last_verified"`
		SettingsReplyFromName string                   `json:"settings_reply_from_name"`
		SettingsSignature     string                   `json:"settings_signature"`
		Brand                 struct {
			Name string `json:"name"`
			URL  string `json:"url"`
		} `json:"brand"`
	} `json:"channels"`
}

The settings_reply_from_name value determines the whether the "From" name for replies is set to the channel name ("channel"), the brand name ("brand"), or the responding staff user's name ("staff")

type GetContactIdentitiesResponse

type GetContactIdentitiesResponse struct {
	Identities []struct {
		Type       ReamazeIdentifier `json:"type"`
		Identifier string            `json:"identifier"`
	} `json:"identities"`
}

type GetContactResponse

type GetContactResponse struct {
	Name         string      `json:"name"`
	Data         interface{} `json:"data"`
	CreatedAt    time.Time   `json:"created_at"`
	UpdatedAt    time.Time   `json:"updated_at"`
	Email        string      `json:"email"`
	Twitter      string      `json:"twitter"`
	Facebook     string      `json:"facebook"`
	Instagram    string      `json:"instagram"`
	Mobile       string      `json:"mobile"`
	FriendlyName string      `json:"friendly_name"`
	ID           string      `json:"id"`
	ID0          int         `json:"_id"`
	Notes        []Note      `json:"notes"`
}

type GetContactsResponse

type GetContactsResponse struct {
	PageSize   int `json:"page_size"`
	PageCount  int `json:"page_count"`
	TotalCount int `json:"total_count"`
	Contacts   []struct {
		Name         string      `json:"name"`
		Data         interface{} `json:"data"`
		CreatedAt    time.Time   `json:"created_at"`
		UpdatedAt    time.Time   `json:"updated_at"`
		Email        string      `json:"email"`
		Twitter      string      `json:"twitter"`
		Facebook     string      `json:"facebook"`
		Instagram    string      `json:"instagram"`
		Mobile       string      `json:"mobile"`
		FriendlyName string      `json:"friendly_name"`
		ID           int         `json:"_id"`
		Notes        []Note      `json:"notes"`
		ID0          string      `json:"id,omitempty"`
	} `json:"contacts"`
}

type GetConversationResponse

type GetConversationResponse struct {
	Subject   string    `json:"subject,omitempty"`
	Slug      string    `json:"slug,omitempty"`
	CreatedAt time.Time `json:"created_at,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitempty"`
	Origin    int       `json:"origin,omitempty"`
	Data      any       `json:"data,omitempty"`
	HoldUntil any       `json:"hold_until,omitempty"`
	Author    struct {
		ID           int    `json:"id,omitempty"`
		Name         string `json:"name,omitempty"`
		Data         any    `json:"data"`
		Email        string `json:"email,omitempty"`
		Twitter      string `json:"twitter,omitempty"`
		Facebook     string `json:"facebook,omitempty"`
		Instagram    string `json:"instagram,omitempty"`
		Mobile       string `json:"mobile,omitempty"`
		FriendlyName string `json:"friendly_name,omitempty"`
		DisplayName  string `json:"display_name,omitempty"`
	} `json:"author"`
	Assignee       any      `json:"assignee,omitempty"`
	PermaURL       string   `json:"perma_url,omitempty"`
	TagList        []string `json:"tag_list,omitempty"`
	Status         int      `json:"status,omitempty"`
	DisplaySubject string   `json:"display_subject,omitempty"`
	Category       struct {
		Name                     string `json:"name,omitempty"`
		Slug                     string `json:"slug,omitempty"`
		Email                    string `json:"email,omitempty"`
		Channel                  int    `json:"channel,omitempty"`
		SettingsDisplayHTMLEmail string `json:"settings_display_html_email,omitempty"`
	} `json:"category,omitempty"`
	LastCustomerMessage struct {
		Body      string    `json:"body,omitempty"`
		CreatedAt time.Time `json:"created_at,omitempty"`
	} `json:"last_customer_message,omitempty"`
	Followers []struct {
		ID           int    `json:"id,omitempty"`
		Name         string `json:"name,omitempty"`
		Data         any    `json:"data"`
		Email        string `json:"email,omitempty"`
		Twitter      string `json:"twitter,omitempty"`
		Facebook     string `json:"facebook,omitempty"`
		Instagram    string `json:"instagram,omitempty"`
		Mobile       string `json:"mobile,omitempty"`
		FriendlyName string `json:"friendly_name,omitempty"`
		DisplayName  string `json:"display_name,omitempty"`
		Staff        bool   `json:"staff?,omitempty"`
		Customer     bool   `json:"customer?,omitempty"`
		Bot          bool   `json:"bot?,omitempty"`
	} `json:"followers,omitempty"`
	Message struct {
		Body string `json:"body,omitempty"`
	} `json:"message"`
	ReadOnly     bool `json:"readOnly,omitempty"`
	MessageCount int  `json:"message_count,omitempty"`
}

type GetConversationsResponse

type GetConversationsResponse struct {
	PageSize      int                       `json:"page_size,omitempty"`
	PageCount     int                       `json:"page_count,omitempty"`
	TotalCount    int                       `json:"total_count,omitempty"`
	Conversations []GetConversationResponse `json:"conversations,omitempty"`
}

type GetIncidentResponse

type GetIncidentResponse struct {
	ID        string `json:"id,omitempty"`
	Title     string `json:"title,omitempty"`
	CreatedAt string `json:"created_at,omitempty"`
	UpdatedAt string `json:"updated_at,omitempty"`
	Status    string `json:"status,omitempty"`
	Updates   []struct {
		ID      string `json:"id,omitempty"`
		Status  string `json:"status,omitempty"`
		Message string `json:"message,omitempty"`
	} `json:"updates,omitempty"`
	IncidentsSystems []struct {
		ID       string `json:"id,omitempty"`
		SystemID string `json:"system_id,omitempty"`
		Status   string `json:"status,omitempty"`
		System   struct {
			ID    string `json:"id,omitempty"`
			Title string `json:"title,omitempty"`
		} `json:"system,omitempty"`
	} `json:"incidents_systems,omitempty"`
}

type GetIncidentsResponse

type GetIncidentsResponse []struct {
	ID          string    `json:"id,omitempty"`
	Title       string    `json:"title,omitempty"`
	AccountID   int       `json:"account_id,omitempty"`
	BrandID     int       `json:"brand_id,omitempty"`
	CreatedAt   time.Time `json:"created_at,omitempty"`
	UpdatedAt   time.Time `json:"updated_at,omitempty"`
	Status      string    `json:"status,omitempty"`
	ExternalURL string    `json:"external_url,omitempty"`
	Updates     []struct {
		ID        string    `json:"id,omitempty"`
		Status    string    `json:"status,omitempty"`
		Message   string    `json:"message,omitempty"`
		CreatedAt time.Time `json:"created_at,omitempty"`
	} `json:"updates,omitempty"`
	IncidentsSystems []struct {
		ID       string `json:"id,omitempty"`
		SystemID string `json:"system_id,omitempty"`
		Status   string `json:"status,omitempty"`
		System   struct {
			ID    string `json:"id,omitempty"`
			Title string `json:"title,omitempty"`
		} `json:"system,omitempty"`
	} `json:"incidents_systems,omitempty"`
}

type GetMessagesResponse

type GetMessagesResponse struct {
	PageSize   int `json:"page_size"`
	PageCount  int `json:"page_count"`
	TotalCount int `json:"total_count"`
	Messages   []struct {
		Visibility   int       `json:"visibility"`
		Origin       int       `json:"origin"`
		CreatedAt    time.Time `json:"created_at"`
		Conversation struct {
			Subject   string    `json:"subject"`
			Slug      string    `json:"slug"`
			CreatedAt time.Time `json:"created_at"`
			Category  struct {
				ID      int    `json:"id"`
				Name    string `json:"name"`
				Slug    string `json:"slug"`
				Email   string `json:"email"`
				Channel int    `json:"channel"`
			} `json:"category"`
			Followers []any `json:"followers"`
		} `json:"conversation"`
		Attachments []struct {
			ThumbURL        string `json:"thumb_url"`
			URL             string `json:"url"`
			Image           bool   `json:"image?"`
			FileContentType string `json:"file_content_type"`
			FileFileName    string `json:"file_file_name"`
			FileFileSize    int    `json:"file_file_size"`
		} `json:"attachments"`
		Body             string `json:"body"`
		DirectRecipients []any  `json:"direct_recipients"`
		Recipients       []any  `json:"recipients"`
		User             struct {
			Name   string `json:"name"`
			Email  string `json:"email"`
			Mobile any    `json:"mobile"`
			Staff  bool   `json:"staff?"`
		} `json:"user,omitempty"`
		Meta struct {
			Subject  string `json:"Subject"`
			Language struct {
				Name     string `json:"name"`
				Code     string `json:"code"`
				Reliable bool   `json:"reliable"`
			} `json:"language"`
		} `json:"meta,omitempty"`
	} `json:"messages"`
}

type GetNotesResponse

type GetNotesResponse []Note

type GetReportsChannelSummaryResponse

type GetReportsChannelSummaryResponse struct {
	Channels map[string]struct {
		Category struct {
			ID              int    `json:"id,omitempty"`
			Name            string `json:"name,omitempty"`
			ChannelType     int    `json:"channel_type,omitempty"`
			ChannelTypeName string `json:"channel_type_name,omitempty"`
		} `json:"category,omitempty"`
		Brand struct {
			ID   int    `json:"id,omitempty"`
			Name string `json:"name,omitempty"`
			URL  string `json:"url,omitempty"`
		} `json:"brand,omitempty"`
		StaffResponses             int     `json:"staff_responses,omitempty"`
		CustomerResponses          int     `json:"customer_responses,omitempty"`
		AverageResponseTimeSeconds any     `json:"average_response_time_seconds,omitempty"`
		Appreciations              int     `json:"appreciations,omitempty"`
		ActiveConversations        int     `json:"active_conversations,omitempty"`
		ResolvedConversations      int     `json:"resolved_conversations,omitempty"`
		ArchivedConversations      int     `json:"archived_conversations,omitempty"`
		AverageSatisfactionRating  float64 `json:"average_satisfaction_rating,omitempty"`
		AverageThreadSize          float64 `json:"average_thread_size,omitempty"`
	} `json:"channels,omitempty"`
	StartDate string `json:"start_date,omitempty"`
	EndDate   string `json:"end_date,omitempty"`
}

type GetReportsResponseTimeRespone

type GetReportsResponseTimeRespone struct {
	ResponseTimes map[string]float64 `json:"response_times,omitempty"`
	Summary       struct {
		Averages struct {
			InRange   float64 `json:"in_range,omitempty"`
			ThisMonth float64 `json:"this_month,omitempty"`
			ThisWeek  float64 `json:"this_week,omitempty"`
		} `json:"averages,omitempty"`
		Trends struct {
			Last30Days struct {
				Average    float64 `json:"average,omitempty"`
				ChangeRate any     `json:"change_rate,omitempty"`
			} `json:"last_30_days,omitempty"`
			Last7Days struct {
				Average    float64 `json:"average,omitempty"`
				ChangeRate string  `json:"change_rate,omitempty"`
			} `json:"last_7_days,omitempty"`
		} `json:"trends,omitempty"`
		Ratio struct {
			Under1Hour float64 `json:"under_1_hour,omitempty"`
			Under1Day  float64 `json:"under_1_day,omitempty"`
			Under1Week float64 `json:"under_1_week,omitempty"`
		} `json:"ratio,omitempty"`
	} `json:"summary,omitempty"`
	StartDate string `json:"start_date,omitempty"`
	EndDate   string `json:"end_date,omitempty"`
}

type GetReportsStaffResponse

type GetReportsStaffResponse struct {
	Report struct {
		RelacjeHiLIVE struct {
			ResponseCount       int            `json:"response_count,omitempty"`
			ArchivedCount       int            `json:"archived_count,omitempty"`
			ResolvedCount       int            `json:"resolved_count,omitempty"`
			SatisfactionAverage any            `json:"satisfaction_average,omitempty"`
			AppreciationsCount  any            `json:"appreciations_count,omitempty"`
			ResponsesTrend      map[string]int `json:"responses_trend,omitempty"`
			ResponseTimeSeconds float64        `json:"response_time_seconds,omitempty"`
		} `json:"Relacje HiLIVE,omitempty"`
	} `json:"report,omitempty"`
	StartDate string `json:"start_date,omitempty"`
	EndDate   string `json:"end_date,omitempty"`
}

type GetReportsTagsResponse

type GetReportsTagsResponse struct {
	Tags      map[string]int `json:"tags,omitempty"`
	StartDate string         `json:"start_date,omitempty"`
	EndDate   string         `json:"end_date,omitempty"`
}

type GetReportsVolumeResponse

type GetReportsVolumeResponse struct {
	ConversationCounts map[string]int `json:"conversation_counts,omitempty"`
	StartDate          string         `json:"start_date,omitempty"`
	EndDate            string         `json:"end_date,omitempty"`
}

type GetResponseTemplateResponse

type GetResponseTemplateResponse struct {
	ID                    int    `json:"id"`
	Name                  string `json:"name"`
	Body                  string `json:"body"`
	ResponseTemplateGroup struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
	} `json:"response_template_group"`
}

type GetResponseTemplatesResponse

type GetResponseTemplatesResponse struct {
	ResponseTemplates []struct {
		ID                    int    `json:"id"`
		Name                  string `json:"name"`
		Body                  string `json:"body"`
		ResponseTemplateGroup struct {
			ID   int    `json:"id"`
			Name string `json:"name"`
		} `json:"response_template_group"`
	} `json:"response_templates"`
}

type GetStaffResponse

type GetStaffResponse struct {
	PageSize   int `json:"page_size,omitempty"`
	PageCount  int `json:"page_count,omitempty"`
	TotalCount int `json:"total_count,omitempty"`
	Staff      []struct {
		Name              string    `json:"name,omitempty"`
		CreatedAt         time.Time `json:"created_at,omitempty"`
		Email             string    `json:"email,omitempty"`
		DisplayName       string    `json:"display_name,omitempty"`
		NotificationEmail string    `json:"notification_email,omitempty"`
		Role              struct {
			ID          any    `json:"id,omitempty"`
			Name        string `json:"name,omitempty"`
			Description any    `json:"description,omitempty"`
			Admin       bool   `json:"admin?,omitempty"`
			Default     bool   `json:"default?,omitempty"`
			Permissions struct {
				ManageStaff                      bool  `json:"manage_staff?,omitempty"`
				ManageStaffRole                  bool  `json:"manage_staff_role?,omitempty"`
				ManageDepartments                bool  `json:"manage_departments?,omitempty"`
				ViewStaff                        bool  `json:"view_staff?,omitempty"`
				ManageSubscriptions              bool  `json:"manage_subscriptions?,omitempty"`
				ManageInvoiceEmail               bool  `json:"manage_invoice_email?,omitempty"`
				ManageKb                         bool  `json:"manage_kb?,omitempty"`
				ManageAccount                    bool  `json:"manage_account?,omitempty"`
				ManageResponseTemplates          bool  `json:"manage_response_templates?,omitempty"`
				ManagePersonalResponseTemplates  bool  `json:"manage_personal_response_templates?,omitempty"`
				ManageWorkflows                  bool  `json:"manage_workflows?,omitempty"`
				ManageChatbots                   bool  `json:"manage_chatbots?,omitempty"`
				ManagePushCampaigns              bool  `json:"manage_push_campaigns?,omitempty"`
				ManageWebsiteIntegrations        bool  `json:"manage_website_integrations?,omitempty"`
				ManageDeveloperSettings          bool  `json:"manage_developer_settings?,omitempty"`
				ManageAssignments                bool  `json:"manage_assignments?,omitempty"`
				ManageIncidents                  bool  `json:"manage_incidents?,omitempty"`
				ManageNotes                      bool  `json:"manage_notes?,omitempty"`
				DeleteConversations              bool  `json:"delete_conversations?,omitempty"`
				AccessVoice                      bool  `json:"access_voice?,omitempty"`
				AccessVideoCall                  bool  `json:"access_video_call?,omitempty"`
				AccessAiFeatures                 bool  `json:"access_ai_features?,omitempty"`
				AccessWebhookSubscriptionsAPI    bool  `json:"access_webhook_subscriptions_api?,omitempty"`
				ManageTags                       bool  `json:"manage_tags?,omitempty"`
				AccessChat                       bool  `json:"access_chat?,omitempty"`
				AccessLiveView                   bool  `json:"access_live_view?,omitempty"`
				AccessReports                    bool  `json:"access_reports?,omitempty"`
				AccessStaffReports               bool  `json:"access_staff_reports?,omitempty"`
				ReplyToCustomers                 bool  `json:"reply_to_customers?,omitempty"`
				EditCustomers                    bool  `json:"edit_customers?,omitempty"`
				RestrictChannels                 bool  `json:"restrict_channels?,omitempty"`
				MoveAcrossRestrictedChannels     bool  `json:"move_across_restricted_channels?,omitempty"`
				AssignAcrossRestrictedChannels   bool  `json:"assign_across_restricted_channels?,omitempty"`
				ViewReportsForRestrictedChannels bool  `json:"view_reports_for_restricted_channels?,omitempty"`
				VisibleChannelIds                []any `json:"visible_channel_ids,omitempty"`
				ViewAllContacts                  bool  `json:"view_all_contacts?,omitempty"`
				ExportContacts                   bool  `json:"export_contacts?,omitempty"`
				MaxChats                         int   `json:"max_chats,omitempty"`
				BigcommerceAccess                struct {
					Access         bool `json:"access,omitempty"`
					ProcessRefunds bool `json:"process_refunds,omitempty"`
				} `json:"bigcommerce_access,omitempty"`
				LoyaltylionAccess struct {
					Access bool `json:"access,omitempty"`
					Edit   bool `json:"edit,omitempty"`
				} `json:"loyaltylion_access,omitempty"`
				PipedriveAccess struct {
					Access      bool `json:"access,omitempty"`
					ManageDeals bool `json:"manage_deals,omitempty"`
				} `json:"pipedrive_access,omitempty"`
				ShopifyAccess struct {
					Access             bool `json:"access,omitempty"`
					EditDetails        bool `json:"edit_details,omitempty"`
					ProcessRefunds     bool `json:"process_refunds,omitempty"`
					ProcessCancels     bool `json:"process_cancels,omitempty"`
					ManageDraftOrders  bool `json:"manage_draft_orders,omitempty"`
					ManageFulfillments bool `json:"manage_fulfillments,omitempty"`
				} `json:"shopify_access,omitempty"`
				StripeAccess struct {
					Access              bool `json:"access,omitempty"`
					ProcessRefunds      bool `json:"process_refunds,omitempty"`
					CancelSubscriptions bool `json:"cancel_subscriptions,omitempty"`
				} `json:"stripe_access,omitempty"`
				WoocommerceAccess struct {
					Access         bool `json:"access,omitempty"`
					ProcessRefunds bool `json:"process_refunds,omitempty"`
				} `json:"woocommerce_access,omitempty"`
				YotpoAccess struct {
					Access bool `json:"access,omitempty"`
				} `json:"yotpo_access,omitempty"`
				GbmAccess struct {
					Access bool `json:"access,omitempty"`
				} `json:"gbm_access,omitempty"`
				WixAccess struct {
					Access bool `json:"access,omitempty"`
				} `json:"wix_access,omitempty"`
			} `json:"permissions,omitempty"`
		} `json:"role,omitempty"`
	} `json:"staff,omitempty"`
}

type GetSystemsResponse

type GetSystemsResponse []struct {
	ID              string    `json:"id,omitempty"`
	Title           string    `json:"title,omitempty"`
	AccountID       int       `json:"account_id,omitempty"`
	BrandID         int       `json:"brand_id,omitempty"`
	CreatedAt       time.Time `json:"created_at,omitempty"`
	UpdatedAt       time.Time `json:"updated_at,omitempty"`
	Status          string    `json:"status,omitempty"`
	ActiveIncidents []struct {
		ID          string    `json:"id,omitempty"`
		Title       string    `json:"title,omitempty"`
		AccountID   int       `json:"account_id,omitempty"`
		BrandID     int       `json:"brand_id,omitempty"`
		CreatedAt   time.Time `json:"created_at,omitempty"`
		UpdatedAt   time.Time `json:"updated_at,omitempty"`
		Status      string    `json:"status,omitempty"`
		ExternalURL string    `json:"external_url,omitempty"`
		Updates     []struct {
			ID        string    `json:"id,omitempty"`
			Status    string    `json:"status,omitempty"`
			Message   string    `json:"message,omitempty"`
			CreatedAt time.Time `json:"created_at,omitempty"`
		} `json:"updates,omitempty"`
		IncidentsSystems []struct {
			ID       string `json:"id,omitempty"`
			SystemID string `json:"system_id,omitempty"`
			Status   string `json:"status,omitempty"`
			System   struct {
				ID    string `json:"id,omitempty"`
				Title string `json:"title,omitempty"`
			} `json:"system,omitempty"`
		} `json:"incidents_systems,omitempty"`
	} `json:"active_incidents,omitempty"`
}

type Note

type Note struct {
	ID        string    `json:"id,omitempty"`
	Note      string    `json:"note,omitempty"`
	CreatedAt time.Time `json:"created_at,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitempty"`
	Creator   struct {
		Email string `json:"email,omitempty"`
		Name  string `json:"name,omitempty"`
	} `json:"creator,omitempty"`
}

type ReamazeArticle

type ReamazeArticle struct {
	Title     string    `json:"title,omitempty"`
	Body      string    `json:"body,omitempty"`
	Slug      string    `json:"slug,omitempty"`
	Status    int       `json:"status,omitempty"`
	CreatedAt time.Time `json:"created_at,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitempty"`
	URL       string    `json:"url,omitempty"`
	Author    struct {
		ID           int    `json:"id,omitempty"`
		Name         string `json:"name,omitempty"`
		Data         any    `json:"data,omitempty"`
		Email        string `json:"email,omitempty"`
		Twitter      string `json:"twitter,omitempty"`
		Facebook     string `json:"facebook,omitempty"`
		Instagram    string `json:"instagram,omitempty"`
		Mobile       string `json:"mobile,omitempty"`
		FriendlyName string `json:"friendly_name,omitempty"`
		DisplayName  string `json:"display_name,omitempty"`
	} `json:"author,omitempty"`
	EmbeddedURL string `json:"embedded_url,omitempty"`
	Topic       struct {
		Name string `json:"name,omitempty"`
		Slug string `json:"slug,omitempty"`
	} `json:"topic,omitempty"`
}

type ReamazeArticlePage

type ReamazeArticlePage int

func WithArticlePage

func WithArticlePage(page int) ReamazeArticlePage

func (ReamazeArticlePage) Apply

type ReamazeArticleQuery

type ReamazeArticleQuery string

func WithArticleQuery

func WithArticleQuery(query string) ReamazeArticleQuery

func (ReamazeArticleQuery) Apply

type ReamazeArticleStatus

type ReamazeArticleStatus int
const (
	ReamazeArticleStatusPublished ReamazeArticleStatus = 0
	ReamazeArticleStatusDraft     ReamazeArticleStatus = 1
	ReamazeArticleStatusInternal  ReamazeArticleStatus = 2
)

func WithArticleStatus

func WithArticleStatus(status ReamazeArticleStatus) ReamazeArticleStatus

func (ReamazeArticleStatus) Apply

type ReamazeArticlesOptions

type ReamazeArticlesOptions struct {
	ReamazeArticlesStatus string
	ReamazeArticlesQuery  string
	ReamazeArticlesPage   string
}

func (ReamazeArticlesOptions) GetQuery

func (r ReamazeArticlesOptions) GetQuery() string

type ReamazeCategory

type ReamazeCategory string

func WithCategory

func WithCategory(category string) ReamazeCategory

func (ReamazeCategory) Apply

func (w ReamazeCategory) Apply(o *ReamazeOptions)

type ReamazeChannelType

type ReamazeChannelType int
const (
	ReamazeChannelEmail             ReamazeChannelType = 1
	ReamazeChannelTwitter           ReamazeChannelType = 2
	ReamazeChannelFacebook          ReamazeChannelType = 3
	ReamazeChannelChat              ReamazeChannelType = 6
	ReamazeChannelInstagram         ReamazeChannelType = 8
	ReamazeChannelSMS               ReamazeChannelType = 9
	ReamazeChannelVoice             ReamazeChannelType = 10
	ReamazeChannelFacebookMessanger ReamazeChannelType = 12
	ReamazeChannelFacebookLead      ReamazeChannelType = 13
	ReamazeChannelInstagramAd       ReamazeChannelType = 14
	ReamazeChannelWhatsApp          ReamazeChannelType = 15
	ReamazeChannelInstagramDM       ReamazeChannelType = 16
)

func (ReamazeChannelType) Name

func (w ReamazeChannelType) Name() string

type ReamazeChannelVisibility

type ReamazeChannelVisibility int
const (
	ReamazeChannelVisibilityPrivate ReamazeChannelVisibility = 0
	ReamazeChannelVisibilityPublic  ReamazeChannelVisibility = 1
)

func (ReamazeChannelVisibility) Name

type ReamazeData

type ReamazeData map[string]string

func WithData

func WithData(data map[string]string) ReamazeData

func (ReamazeData) Apply

func (w ReamazeData) Apply(o *ReamazeOptions)

type ReamazeEndDate

type ReamazeEndDate time.Time

func WithEndDate

func WithEndDate(year int, month int, day int) ReamazeEndDate

func (ReamazeEndDate) Apply

func (w ReamazeEndDate) Apply(o *ReamazeOptions)

type ReamazeFilter

type ReamazeFilter string

func WithFilter

func WithFilter(filter ReamazeFilter) ReamazeFilter

func (ReamazeFilter) Apply

func (w ReamazeFilter) Apply(o *ReamazeOptions)

type ReamazeFor

type ReamazeFor string

func WithFor

func WithFor(email string) ReamazeFor

func (ReamazeFor) Apply

func (w ReamazeFor) Apply(o *ReamazeOptions)

type ReamazeForID

type ReamazeForID string

func WithForID

func WithForID(id string) ReamazeForID

func (ReamazeForID) Apply

func (w ReamazeForID) Apply(o *ReamazeOptions)

type ReamazeIdentifier

type ReamazeIdentifier string
const (
	ReamazeIdentifierEmail     ReamazeIdentifier = "email"
	ReamazeIdentifierMobile    ReamazeIdentifier = "mobile"
	ReamazeIdentifierFacebook  ReamazeIdentifier = "facebook"
	ReamazeIdentifierTwitter   ReamazeIdentifier = "twitter"
	ReamazeIdentifierInstagram ReamazeIdentifier = "instagram"
)

type ReamazeIncidentSystemStatus

type ReamazeIncidentSystemStatus string
const (
	ReamazeIncidentSystemStatusOperational         ReamazeIncidentSystemStatus = "operational"
	ReamazeIncidentSystemStatusDegradedPerformance ReamazeIncidentSystemStatus = "degraded_performance"
	ReamazeIncidentSystemStatusPartialOutage       ReamazeIncidentSystemStatus = "partial_outage"
	ReamazeIncidentSystemStatusMajorOutage         ReamazeIncidentSystemStatus = "major_outage"
	ReamazeIncidentSystemStatusUnderMaintenance    ReamazeIncidentSystemStatus = "under_maintenance"
)

type ReamazeIncidentUpdateStatus

type ReamazeIncidentUpdateStatus string
const (
	ReamazeIncidentUpdateSatusInvestigating ReamazeIncidentUpdateStatus = "investigating"
	ReamazeIncidentUpdateStatusIdentified   ReamazeIncidentUpdateStatus = "identified"
	ReamazeIncidentUpdateStatusMonitoring   ReamazeIncidentUpdateStatus = "monitoring"
	ReamazeIncidentUpdateStatusResolved     ReamazeIncidentUpdateStatus = "resolved"
)

type ReamazeOptions

type ReamazeOptions struct {
	ReamazeFilter    string
	ReamazeFor       string
	ReamazeForID     string
	ReamazeSort      string
	ReamazeTag       string
	ReamazeCategory  string
	ReamazeData      string
	ReamazePage      string
	ReamazeStartDate string
	ReamazeEndDate   string
}

func (ReamazeOptions) GetQuery

func (r ReamazeOptions) GetQuery() string

type ReamazePage

type ReamazePage int

func WithPage

func WithPage(page int) ReamazePage

func (ReamazePage) Apply

func (w ReamazePage) Apply(o *ReamazeOptions)

type ReamazePhoneNumber

type ReamazePhoneNumber string

Contacts models

func (ReamazePhoneNumber) Validate

func (w ReamazePhoneNumber) Validate() bool

type ReamazeReportOptions

type ReamazeReportOptions struct {
	ReamazeStartDate string
	ReamazeEndDate   string
}

func (ReamazeReportOptions) GetQuery

func (r ReamazeReportOptions) GetQuery() string

type ReamazeReportsEndDate

type ReamazeReportsEndDate time.Time

func WithReportsEndDate

func WithReportsEndDate(year int, month int, day int) ReamazeReportsEndDate

func (ReamazeReportsEndDate) Apply

type ReamazeReportsStartDate

type ReamazeReportsStartDate time.Time

func WithReportsStartDate

func WithReportsStartDate(year, month, day int) ReamazeReportsStartDate

func (ReamazeReportsStartDate) Apply

type ReamazeSort

type ReamazeSort string

func WithSort

func WithSort(sort ReamazeSort) ReamazeSort

func (ReamazeSort) Apply

func (w ReamazeSort) Apply(o *ReamazeOptions)

type ReamazeStaffOptions

type ReamazeStaffOptions struct {
	ReamazeStaffPage string
}

func (ReamazeStaffOptions) GetQuery

func (r ReamazeStaffOptions) GetQuery() string

type ReamazeStaffPage

type ReamazeStaffPage int

func WithStaffPage

func WithStaffPage(page int) ReamazeStaffPage

func (ReamazeStaffPage) Apply

type ReamazeStartDate

type ReamazeStartDate time.Time

func WithStartDate

func WithStartDate(year, month, day int) ReamazeStartDate

func (ReamazeStartDate) Apply

func (w ReamazeStartDate) Apply(o *ReamazeOptions)

type ReamazeStatus

type ReamazeStatus int
const (
	ReamazeStatusUnresolved ReamazeStatus = iota
	ReamazeStatusPending
	ReamazeStatusResolved
	ReamazeStatusSpam
	ReamazeStatusArchived
	ReamazeStatusOnHold
	ReamazeStatusAutoResolved
	ReamazeStatusChatbotAssigned
	ReamazeStatusChatbotResolved
)

type ReamazeTags

type ReamazeTags []string

func WithTags

func WithTags(w ...string) ReamazeTags

func (ReamazeTags) Apply

func (w ReamazeTags) Apply(o *ReamazeOptions)

type ReamazeVisibility

type ReamazeVisibility int
const (
	ReamazeVisibilityRegular      ReamazeVisibility = 0
	ReamazeVisibilityInternalNote ReamazeVisibility = 1
)

type ReportsOption

type ReportsOption interface {
	Apply(*ReamazeReportOptions)
}

type StaffOption

type StaffOption interface {
	Apply(*ReamazeStaffOptions)
}

type UpdateArticleRequest

type UpdateArticleRequest ReamazeArticle

type UpdateArticleResponse

type UpdateArticleResponse ReamazeArticle

type UpdateContactRequest

type UpdateContactRequest struct {
	Contact struct {
		Name              string   `json:"name"`
		FriendlyName      string   `json:"friendly_name"`
		ExternalAvatarURL string   `json:"external_avatar_url"`
		Notes             []string `json:"notes"`
		Data              any      `json:"data"`
	} `json:"contact"`
}

type UpdateConversationRequest

type UpdateConversationRequest struct {
	Conversation struct {
		TagList  []string      `json:"tag_list,omitempty"`
		Status   ReamazeStatus `json:"status,omitempty"`
		Data     any           `json:"data,omitempty"`
		Assignee string        `json:"assignee,omitempty"`
		Category string        `json:"category,omitempty"`
		Brand    string        `json:"brand,omitempty"`
	} `json:"conversation,omitempty"`
}

type UpdateIncidentRequest

type UpdateIncidentRequest struct {
	Incident struct {
		Title             string `json:"title,omitempty"`
		UpdatesAttributes []struct {
			Status  ReamazeIncidentUpdateStatus `json:"status,omitempty"`
			Message string                      `json:"message,omitempty"`
		} `json:"updates_attributes,omitempty"`
		IncidentsSystemsAttributes []struct {
			ID       string                      `json:"id,omitempty"`
			SystemID string                      `json:"system_id,omitempty"`
			Status   ReamazeIncidentSystemStatus `json:"status,omitempty"`
		} `json:"incidents_systems_attributes,omitempty"`
	} `json:"incident,omitempty"`
}

type UpdateIncidentResponse

type UpdateIncidentResponse GetIncidentResponse

type UpdateNoteRequest

type UpdateNoteRequest CreateNoteRequest

type UpdateNoteResponse

type UpdateNoteResponse Note

type UpdateResponseTemplateRequest

type UpdateResponseTemplateRequest CreateResponseTemplateRequest

type UpdateResponseTemplateResponse

type UpdateResponseTemplateResponse GetResponseTemplateResponse

Jump to

Keyboard shortcuts

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