This package is not in the latest version of its module.
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
This section is empty.
This section is empty.
type CipherService service
CipherService is used to encrypt and decrypt SMS messages using the AES-256 algorithm
type Client struct {
MessageThreads *MessageThreadService
Heartbeats *HeartbeatService
Messages *MessageService
Cipher *CipherService
Phones *PhoneService
PhoneAPIKeys *PhoneAPIKeyService
Webhooks *WebhookService
// 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 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 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 service
HeartbeatService is the API client for the `/heartbeats` endpoint
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 ApiResponse[[]Heartbeat]
HeartbeatsResponse is the response gotten with a message content
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 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 ApiResponse[Message]
MessageResponse is the response gotten with a message content
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 service
MessageService is the API client for the `/` endpoint
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 (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 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 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 service
MessageThreadService is the API client for the `/message-threads` endpoint
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 (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 ApiResponse[[]MessageThread]
MessageThreadsResponse is the response gotten with a message content
type MessagesResponse ApiResponse[[]Message]
MessagesResponse is the response with multiple messages
type Option interface {
// contains filtered or unexported methods
}
Option is options for constructing a client
WithAPIKey sets the api key for the httpsms API
WithBaseURL sets the base url for the httpsms API
WithHTTPClient sets the underlying HTTP client used for API requests. By default, http.DefaultClient is used.
type Phone struct {
ID string `json:"id"`
UserID string `json:"user_id"`
PhoneNumber string `json:"phone_number"`
FcmToken *string `json:"fcm_token"`
MessagesPerMinute uint `json:"messages_per_minute"`
MaxSendAttempts uint `json:"max_send_attempts"`
MessageExpirationSeconds uint `json:"message_expiration_seconds"`
SIM string `json:"sim"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
Phone represents a phone registered in the httpSMS API
type PhoneAPIKey struct {
ID string `json:"id"`
Name string `json:"name"`
UserID string `json:"user_id"`
UserEmail string `json:"user_email"`
PhoneNumbers []string `json:"phone_numbers"`
PhoneIDs []string `json:"phone_ids"`
APIKey string `json:"api_key"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
PhoneAPIKey represents a phone API key
type PhoneAPIKeyResponse ApiResponse[PhoneAPIKey]
PhoneAPIKeyResponse is the response gotten with a phone api key
type PhoneAPIKeyService service
PhoneAPIKeyService is the API client for the phone api key endpoints
func (service *PhoneAPIKeyService) Store(ctx context.Context, params *PhoneAPIKeyStoreParams) (*PhoneAPIKeyResponse, *Response, error)
Store adds a new phone api key
type PhoneAPIKeyStoreParams struct {
Name string `json:"name"`
}
PhoneAPIKeyStoreParams is the request payload for creating a phone api key
type PhoneFCMTokenParams struct {
PhoneNumber string `json:"phone_number"`
FcmToken string `json:"fcm_token"`
SIM string `json:"sim,omitempty"`
}
PhoneFCMTokenParams is the request for binding FCM token to a phone via phone API key
type PhoneResponse ApiResponse[Phone]
PhoneResponse is the response gotten with a phone
type PhoneService service
PhoneService is the API client for the phone endpoints
func (service *PhoneService) Upsert(ctx context.Context, params *PhoneUpsertParams) (*PhoneResponse, *Response, error)
Upsert creates or updates a phone
func (service *PhoneService) UpsertFCMToken(ctx context.Context, params *PhoneFCMTokenParams) (*PhoneResponse, *Response, error)
UpsertFCMToken binds an FCM token to a phone via the phone API key
type PhoneUpsertParams struct {
PhoneNumber string `json:"phone_number"`
FcmToken string `json:"fcm_token,omitempty"`
MessagesPerMinute uint `json:"messages_per_minute,omitempty"`
MaxSendAttempts uint `json:"max_send_attempts,omitempty"`
MessageExpirationSeconds uint `json:"message_expiration_seconds,omitempty"`
SIM string `json:"sim,omitempty"`
}
PhoneUpsertParams is the request payload for creating/updating a phone
type Webhook struct {
ID string `json:"id"`
UserID string `json:"user_id"`
URL string `json:"url"`
SigningKey string `json:"signing_key"`
PhoneNumbers []string `json:"phone_numbers"`
Events []string `json:"events"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
Webhook represents a webhook registered in the httpSMS API
type WebhookResponse ApiResponse[Webhook]
WebhookResponse is the response gotten with a webhook
type WebhookService service
WebhookService is the API client for the webhook endpoints
func (service *WebhookService) Store(ctx context.Context, params *WebhookStoreParams) (*WebhookResponse, *Response, error)
Store adds a new webhook