package viewmodel

type ListNumbers struct {
	AvailableNumbers []Number `json:"available_phone_numbers,omitempty"`
	Page             int64    `json:"page,omitempty"`
	PageSize         int64    `json:"page_size,omitempty"`
	URI              string   `json:"uri,omitempty"`
	FirstPageURI     string   `json:"first_page_uri,omitempty"`
	PreviousPageURI  string   `json:"previous_page_uri,omitempty"`
	NextPageURI      string   `json:"next_page_uri,omitempty"`
	IncomingPhones   []Number `json:"incoming_phone_numbers,omitempty"`
}

type Number struct {
	SID                  *string      `json:"sid,omitempty"`
	AccountSID           *string      `json:"account_sid,omitempty"`
	FriendlyName         string       `json:"friendly_name,omitempty"`
	PhoneNumber          string       `json:"phone_number,omitempty"`
	Lata                 string       `json:"lata,omitempty"`
	RateCenter           string       `json:"rate_center,omitempty"`
	Latitude             string       `json:"latitude,omitempty"`
	Longitude            string       `json:"longitude,omitempty"`
	Region               string       `json:"region,omitempty"`
	PostalCode           string       `json:"postal_code,omitempty"`
	ISOCountry           string       `json:"iso_country,omitempty"`
	Beta                 bool         `json:"beta,omitempty"`
	Capabilities         Capabilities `json:"capabilities,omitempty"`
	VoiceURL             *string      `json:"voice_url,omitempty"`
	VoiceMethod          *string      `json:"voice_method,omitempty"`
	VoiceFallbackURL     *string      `json:"voice_fallback_url,omitempty"`
	VoiceFallbackMethod  *string      `json:"voice_fallback_method,omitempty"`
	VoiceCallerIDLookup  bool         `json:"voice_caller_id_lookup,omitempty"`
	VoiceApplicationSID  *string      `json:"voice_application_sid,omitempty"`
	DateCreated          *string      `json:"date_created,omitempty"`
	DateUpdated          *string      `json:"date_updated,omitempty"`
	SmsURL               *string      `json:"sms_url,omitempty"`
	SmsMethod            *string      `json:"sms_method,omitempty"`
	SmsFallbackURL       *string      `json:"sms_fallback_url,omitempty"`
	SmsFallbackMethod    *string      `json:"sms_fallback_method,omitempty"`
	SmsApplicationID     *string      `json:"sms_application_sid,omitempty"`
	StatusCallback       *string      `json:"status_callback,omitempty"`
	StatusCallbackMethod *string      `json:"status_callback_method,omitempty"`
	APIVersion           *string      `json:"api_version,omitempty"`
}

type Capabilities struct {
	Voice bool `json:"voice,omitempty"`
	SMS   bool `json:"SMS,omitempty"`
	MMS   bool `json:"MMS,omitempty"`
}

type ProxyNumber struct {
	From   string `json:"from,omitempty"`
	To     string `json:"to,omitempty"`
	Proxy  string `json:"proxy,omitempty"`
	Number Number `json:"details,omitempty"`
}

type SocketMessage struct {
	From    string `json:"from"`
	To      string `json:"to"`
	Message string `json:"message"`
	Filled  bool   `json:"-"`
}

type TwilioWebhook struct {
	ToCountry     string `json:"ToCountry,omitempty"`
	ToState       string `json:"ToState,omitempty"`
	SMSMessageSID string `json:"SmsMessageSid,omitempty"`
	NumMedia      string `json:"NumMedia,omitempty"`
	ToCity        string `json:"ToCity,omitempty"`
	FromZip       string `json:"FromZip,omitempty"`
	SMSSID        string `json:"SmsSid,omitempty"`
	FromState     string `json:"FromState,omitempty"`
	SMSStatus     string `json:"SmsStatus,omitempty"`
	FromCity      string `json:"FromCity,omitempty"`
	Body          string `json:"Body,omitempty"`
	FromCountry   string `json:"FromCountry,omitempty"`
	To            string `json:"To,omitempty"`
	ToZip         string `json:"ToZip,omitempty"`
	AddOns        string `json:"AddOns,omitempty"`
	NumSegments   string `json:"NumSegments,omitempty"`
	MessageSID    string `json:"MessageSid,omitempty"`
	AccountSID    string `json:"AccountSid,omitempty"`
	From          string `json:"From,omitempty"`
	APIVersion    string `json:"ApiVersion,omitempty"`
}
