Documentation
¶
Index ¶
- Constants
- type ApiResponse
- type CipherService
- type Client
- type Heartbeat
- type HeartbeatIndexParams
- type HeartbeatService
- type HeartbeatsResponse
- type Message
- type MessageIndexParams
- type MessageResponse
- type MessageSendParams
- type MessageService
- type MessageThread
- type MessageThreadIndexParams
- type MessageThreadService
- type MessageThreadsResponse
- type MessagesResponse
- type Option
- type Response
Constants ¶
const EventTypeMessageCallMissed = "message.call.missed"
EventTypeMessageCallMissed is emitted when a new message is sent
const EventTypeMessagePhoneDelivered = "message.phone.delivered"
EventTypeMessagePhoneDelivered is emitted when the phone delivers a message
const EventTypeMessagePhoneReceived = "message.phone.received"
EventTypeMessagePhoneReceived is emitted when a new message is received by a mobile phone
const EventTypeMessagePhoneSent = "message.phone.sent"
EventTypeMessagePhoneSent is emitted when the phone sends a message
const EventTypeMessageSendExpired = "message.send.expired"
EventTypeMessageSendExpired is emitted when the phone a message expires
const EventTypeMessageSendFailed = "message.send.failed"
EventTypeMessageSendFailed is emitted when the phone could not send
const EventTypePhoneHeartbeatOffline = "phone.heartbeat.offline"
EventTypePhoneHeartbeatOffline is emitted when the phone is missing a heartbeat
const EventTypePhoneHeartbeatOnline = "phone.heartbeat.online"
EventTypePhoneHeartbeatOnline is emitted when the phone is missing a heartbeat
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ApiResponse ¶ added in v0.0.2
type CipherService ¶ added in v0.0.5
type CipherService service
CipherService is used to encrypt and decrypt SMS messages using the AES-256 algorithm
type Client ¶
type Client struct {
MessageThreads *MessageThreadService
Heartbeats *HeartbeatService
Messages *MessageService
Cipher *CipherService
// contains filtered or unexported fields
}
Client is the campay API client. Do not instantiate this client with Client{}. Use the New method instead.
type Heartbeat ¶ added in v0.0.2
type Heartbeat struct {
ID uuid.UUID `json:"id" example:"32343a19-da5e-4b1b-a767-3298a73703cb"`
Owner string `json:"owner" gorm:"index:idx_heartbeats_owner_timestamp" example:"+18005550199"`
UserID string `json:"user_id" example:"WB7DRDWrJZRGbYrv2CKGkqbzvqdC"`
Charging bool `json:"charging" example:"true"`
Timestamp time.Time `json:"timestamp" example:"2022-06-05T14:26:01.520828+03:00"`
}
Heartbeat represents is a pulse from an active phone
type HeartbeatIndexParams ¶ added in v0.0.2
type HeartbeatIndexParams struct {
Skip int `json:"skip"`
Owner string `json:"owner"`
Query *string `json:"query"`
Limit int `json:"limit"`
}
HeartbeatIndexParams is the payload for fetching entities.Heartbeat of a phone number
type HeartbeatService ¶ added in v0.0.2
type HeartbeatService service
HeartbeatService is the API client for the `/heartbeats` endpoint
func (*HeartbeatService) Index ¶ added in v0.0.2
func (service *HeartbeatService) Index(ctx context.Context, params *HeartbeatIndexParams) (*HeartbeatsResponse, *Response, error)
Index returns a list of heartbeats from an android phone. It will be sorted by timestamp in descending order.
API Docs: https://api.httpsms.com/index.html#/Heartbeats/get_heartbeats
type HeartbeatsResponse ¶ added in v0.0.2
type HeartbeatsResponse ApiResponse[[]Heartbeat]
HeartbeatsResponse is the response gotten with a message content
type Message ¶
type Message struct {
ID uuid.UUID `json:"id" example:"32343a19-da5e-4b1b-a767-3298a73703cb"`
RequestID *string `json:"request_id" example:"153554b5-ae44-44a0-8f4f-7bbac5657ad4"`
Owner string `json:"owner" example:"+18005550199"`
UserID string `json:"user_id" example:"WB7DRDWrJZRGbYrv2CKGkqbzvqdC"`
Contact string `json:"contact" example:"+18005550100"`
Content string `json:"content" example:"This is a sample text message"`
Type string `json:"type" example:"mobile-terminated"`
Status string `json:"status" example:"pending"`
Encrypted bool `json:"encrypted" example:"false"`
// SIM is the SIM card to use to send the message
// * SMS1: use the SIM card in slot 1
// * SMS2: use the SIM card in slot 2
SIM string `json:"sim" example:"SIM1"`
// SendDuration is the number of nanoseconds from when the request was received until when the mobile phone send the message
SendDuration *int64 `json:"send_time" example:"133414"`
RequestReceivedAt time.Time `json:"request_received_at" example:"2022-06-05T14:26:01.520828+03:00"`
CreatedAt time.Time `json:"created_at" example:"2022-06-05T14:26:02.302718+03:00"`
UpdatedAt time.Time `json:"updated_at" example:"2022-06-05T14:26:10.303278+03:00"`
OrderTimestamp time.Time `json:"order_timestamp" gorm:"index:idx_messages_order_timestamp" example:"2022-06-05T14:26:09.527976+03:00"`
LastAttemptedAt *time.Time `json:"last_attempted_at" example:"2022-06-05T14:26:09.527976+03:00"`
NotificationScheduledAt *time.Time `json:"scheduled_at" example:"2022-06-05T14:26:09.527976+03:00"`
SentAt *time.Time `json:"sent_at" example:"2022-06-05T14:26:09.527976+03:00"`
DeliveredAt *time.Time `json:"delivered_at" example:"2022-06-05T14:26:09.527976+03:00"`
ExpiredAt *time.Time `json:"expired_at" example:"2022-06-05T14:26:09.527976+03:00"`
FailedAt *time.Time `json:"failed_at" example:"2022-06-05T14:26:09.527976+03:00"`
CanBePolled bool `json:"can_be_polled" example:"false"`
SendAttemptCount uint `json:"send_attempt_count" example:"0"`
MaxSendAttempts uint `json:"max_send_attempts" example:"1"`
ReceivedAt *time.Time `json:"received_at" example:"2022-06-05T14:26:09.527976+03:00"`
FailureReason *string `json:"failure_reason" example:"UNKNOWN"`
}
Message represents and incoming or outgoing SMS message
type MessageIndexParams ¶ added in v0.0.2
type MessageIndexParams struct {
Skip int `json:"skip"`
Contact string `json:"contact"`
Owner string `json:"owner"`
Query *string `json:"query"`
Limit int `json:"limit"`
}
MessageIndexParams is the payload fetching entities.Message sent between 2 numbers
type MessageResponse ¶
type MessageResponse ApiResponse[Message]
MessageResponse is the response gotten with a message content
type MessageSendParams ¶
type MessageSendParams struct {
Content string `json:"content"`
From string `json:"from"`
Encrypted bool `json:"encrypted"`
RequestID string `json:"request_id,omitempty"`
To string `json:"to"`
}
MessageSendParams is the request payload for sending a message
type MessageService ¶ added in v0.0.2
type MessageService service
MessageService is the API client for the `/` endpoint
func (*MessageService) Index ¶ added in v0.0.2
func (service *MessageService) Index(ctx context.Context, params *MessageIndexParams) (*MessagesResponse, *Response, error)
Index returns a list of messages which are sent between 2 phone numbers. It will be sorted by timestamp in descending order.
API Docs: https://api.httpsms.com/index.html#/Messages/get_messages
func (*MessageService) Send ¶ added in v0.0.2
func (service *MessageService) Send(ctx context.Context, params *MessageSendParams) (*MessageResponse, *Response, error)
Send adds a new SMS message to be sent by the android phone
API Docs: https://api.httpsms.com/index.html#/Messages/post_messages_send
type MessageThread ¶ added in v0.0.2
type MessageThread struct {
ID uuid.UUID `json:"id" example:"32343a19-da5e-4b1b-a767-3298a73703ca"`
Owner string `json:"owner" example:"+18005550199"`
Contact string `json:"contact" example:"+18005550100"`
IsArchived bool `json:"is_archived" example:"false"`
UserID string `json:"user_id" example:"WB7DRDWrJZRGbYrv2CKGkqbzvqdC"`
Color string `json:"color" example:"indigo"`
Status string `json:"status" example:"pending"`
LastMessageContent string `json:"last_message_content" example:"This is a sample message content"`
LastMessageID uuid.UUID `json:"last_message_id" example:"32343a19-da5e-4b1b-a767-3298a73703ca"`
CreatedAt time.Time `json:"created_at" example:"2022-06-05T14:26:09.527976+03:00"`
UpdatedAt time.Time `json:"updated_at" example:"2022-06-05T14:26:09.527976+03:00"`
OrderTimestamp time.Time `json:"order_timestamp" example:"2022-06-05T14:26:09.527976+03:00"`
}
MessageThread represents a message thread between 2 phone numbers
type MessageThreadIndexParams ¶ added in v0.0.2
type MessageThreadIndexParams struct {
IsArchived bool `json:"is_archived"`
Skip int `json:"skip"`
Query *string `json:"query"`
Limit int `json:"limit"`
Owner string `json:"owner"`
}
MessageThreadIndexParams is the payload fetching entities.MessageThread sent between 2 numbers
type MessageThreadService ¶ added in v0.0.2
type MessageThreadService service
MessageThreadService is the API client for the `/message-threads` endpoint
func (*MessageThreadService) Delete ¶ added in v0.0.6
func (service *MessageThreadService) Delete(ctx context.Context, messageThreadID uuid.UUID) (*Response, error)
Delete a message thread from the database and also deletes all the messages in the thread.
API Docs: https://api.httpsms.com/index.html#/MessageThreads/delete_message_threads__messageThreadID_
func (*MessageThreadService) Index ¶ added in v0.0.2
func (service *MessageThreadService) Index(ctx context.Context, params *MessageThreadIndexParams) (*MessageThreadsResponse, *Response, error)
Index returns a list of contacts which a phone number has communicated with (threads). It will be sorted by timestamp in descending order.
API Docs: https://api.httpsms.com/index.html#/Channel%20Threads/get_message_threads
type MessageThreadsResponse ¶ added in v0.0.2
type MessageThreadsResponse ApiResponse[[]MessageThread]
MessageThreadsResponse is the response gotten with a message content
type MessagesResponse ¶ added in v0.0.2
type MessagesResponse ApiResponse[[]Message]
MessagesResponse is the response with multiple messages
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
Option is options for constructing a client
func WithAPIKey ¶
WithAPIKey sets the api key for the httpsms API
func WithBaseURL ¶
WithBaseURL sets the base url for the httpsms API
func WithHTTPClient ¶
WithHTTPClient sets the underlying HTTP client used for API requests. By default, http.DefaultClient is used.
