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 Phone
- type PhoneAPIKey
- type PhoneAPIKeyResponse
- type PhoneAPIKeyService
- type PhoneAPIKeyStoreParams
- type PhoneFCMTokenParams
- type PhoneResponse
- type PhoneService
- type PhoneUpsertParams
- type Response
- type Webhook
- type WebhookResponse
- type WebhookService
- type WebhookStoreParams
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
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 ¶ 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 ¶
func WithBaseurl(/Education?url=https%3A%2F%2Fpkg.go.dev%2Fgithub.com%2FNdoleStudio%2FbaseURL%2520%253Ca%2520href%3D%2522%2FEducation%3Furl%3Dhttps%253A%252F%252Fpkg.go.dev%252Fbuiltin%2523string%2522%253Estring%253C%2Fa%253E) Option
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.
type Phone ¶ added in v0.0.8
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 ¶ added in v0.0.8
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 ¶ added in v0.0.8
type PhoneAPIKeyResponse ApiResponse[PhoneAPIKey]
PhoneAPIKeyResponse is the response gotten with a phone api key
type PhoneAPIKeyService ¶ added in v0.0.8
type PhoneAPIKeyService service
PhoneAPIKeyService is the API client for the phone api key endpoints
func (*PhoneAPIKeyService) Store ¶ added in v0.0.8
func (service *PhoneAPIKeyService) Store(ctx context.Context, params *PhoneAPIKeyStoreParams) (*PhoneAPIKeyResponse, *Response, error)
Store adds a new phone api key
type PhoneAPIKeyStoreParams ¶ added in v0.0.8
type PhoneAPIKeyStoreParams struct {
Name string `json:"name"`
}
PhoneAPIKeyStoreParams is the request payload for creating a phone api key
type PhoneFCMTokenParams ¶ added in v0.0.8
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 ¶ added in v0.0.8
type PhoneResponse ApiResponse[Phone]
PhoneResponse is the response gotten with a phone
type PhoneService ¶ added in v0.0.8
type PhoneService service
PhoneService is the API client for the phone endpoints
func (*PhoneService) Upsert ¶ added in v0.0.8
func (service *PhoneService) Upsert(ctx context.Context, params *PhoneUpsertParams) (*PhoneResponse, *Response, error)
Upsert creates or updates a phone
func (*PhoneService) UpsertFCMToken ¶ added in v0.0.8
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 ¶ added in v0.0.8
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 ¶ added in v0.0.8
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 ¶ added in v0.0.8
type WebhookResponse ApiResponse[Webhook]
WebhookResponse is the response gotten with a webhook
type WebhookService ¶ added in v0.0.8
type WebhookService service
WebhookService is the API client for the webhook endpoints
func (*WebhookService) Store ¶ added in v0.0.8
func (service *WebhookService) Store(ctx context.Context, params *WebhookStoreParams) (*WebhookResponse, *Response, error)
Store adds a new webhook
