allyinvest/types.go

213 lines
7.3 KiB
Go

package main
import (
"encoding/xml"
"time"
)
type Accountbalance struct {
XMLName xml.Name `xml:"accountbalance"`
Account string `xml:"account"`
Accountvalue float64 `xml:"accountvalue"`
Buyingpower struct {
Text string `xml:",chardata"`
Cashavailableforwithdrawal float64 `xml:"cashavailableforwithdrawal"`
Daytrading float64 `xml:"daytrading"`
Equitypercentage float64 `xml:"equitypercentage"`
Options float64 `xml:"options"`
Soddaytrading float64 `xml:"soddaytrading"`
Sodoptions float64 `xml:"sodoptions"`
Sodstock float64 `xml:"sodstock"`
Stock float64 `xml:"stock"`
} `xml:"buyingpower"`
Fedcall float64 `xml:"fedcall"`
Housecall float64 `xml:"housecall"`
Money struct {
Text string `xml:",chardata"`
Accruedinterest float64 `xml:"accruedinterest"`
Cash float64 `xml:"cash"`
Cashavailable float64 `xml:"cashavailable"`
Marginbalance float64 `xml:"marginbalance"`
Mmf float64 `xml:"mmf"`
Total float64 `xml:"total"`
Uncleareddeposits float64 `xml:"uncleareddeposits"`
Unsettledfunds float64 `xml:"unsettledfunds"`
Yield float64 `xml:"yield"`
} `xml:"money"`
Securities struct {
Text string `xml:",chardata"`
Longoptions float64 `xml:"longoptions"`
Longstocks float64 `xml:"longstocks"`
Options float64 `xml:"options"`
Shortoptions float64 `xml:"shortoptions"`
Shortstocks float64 `xml:"shortstocks"`
Stocks float64 `xml:"stocks"`
Total float64 `xml:"total"`
} `xml:"securities"`
}
type Accountholdings struct {
XMLName xml.Name `xml:"accountholdings"`
Displaydata struct {
Text string `xml:",chardata"`
Totalsecurities string `xml:"totalsecurities"`
} `xml:"displaydata"`
Holding []struct {
Text string `xml:",chardata"`
Accounttype string `xml:"accounttype"`
Costbasis string `xml:"costbasis"`
Displaydata struct {
Text string `xml:",chardata"`
Accounttype string `xml:"accounttype"`
Assetclass string `xml:"assetclass"`
Change string `xml:"change"`
Costbasis string `xml:"costbasis"`
Desc string `xml:"desc"`
Lastprice string `xml:"lastprice"`
Marketvalue string `xml:"marketvalue"`
Marketvaluechange string `xml:"marketvaluechange"`
Qty string `xml:"qty"`
Symbol string `xml:"symbol"`
} `xml:"displaydata"`
Gainloss float64 `xml:"gainloss"`
Instrument struct {
Text string `xml:",chardata"`
Cusip string `xml:"cusip"`
Desc string `xml:"desc"`
Factor string `xml:"factor"`
Sectyp string `xml:"sectyp"`
Sym string `xml:"sym"`
} `xml:"instrument"`
Marketvalue float64 `xml:"marketvalue"`
Marketvaluechange float64 `xml:"marketvaluechange"`
Price float64 `xml:"price"`
Purchaseprice float64 `xml:"purchaseprice"`
Qty float64 `xml:"qty"`
Quote struct {
Text string `xml:",chardata"`
Change float64 `xml:"change"`
Lastprice float64 `xml:"lastprice"`
} `xml:"quote"`
Underlying string `xml:"underlying"`
} `xml:"holding"`
Totalsecurities float64 `xml:"totalsecurities"`
}
type AccountSummary struct {
XMLName xml.Name `xml:"accountsummary"`
Text string `xml:",chardata"`
Account string `xml:"account"`
Accountbalance Accountbalance `xml:"accountbalance"`
Accountholdings Accountholdings `xml:"accountholdings"`
}
type AccountResponse struct {
XMLName xml.Name `xml:"response"`
Text string `xml:",chardata"`
ID string `xml:"id,attr"`
Accounts struct {
Text string `xml:",chardata"`
Accountsummary []AccountSummary `xml:"accountsummary"`
} `xml:"accounts"`
}
type AccountBalance struct {
XMLName xml.Name `xml:"accountbalance"`
Account int `xml:"account"`
AccountName string `xml:"accountname"`
AccountValue float64 `xml:"accountvalue"`
}
type AccountBalanceResponse struct {
XMLName xml.Name `xml:"response"`
AccountBalances []AccountBalance `xml:"accountbalance"`
TotalBalance float64 `xml:"totalbalance>accountvalue"`
}
type AccountDetailResponse struct {
XMLName xml.Name `xml:"response"`
AccountBalance Accountbalance `xml:"accountbalance"`
AccountHoldings Accountholdings `xml:"accountholdings"`
}
type AccountDetailBalanceResponse struct {
XMLName xml.Name `xml:"response"`
AccountBalance Accountbalance `xml:"accountbalance"`
}
type AccountDetailHoldingsResponse struct {
XMLName xml.Name `xml:"response"`
AccountHoldings Accountholdings `xml:"accountholdings"`
}
type MarketClockResponse struct {
XMLName xml.Name `xml:"response"`
Date string `xml:"date"`
CurrentStatus string `xml:"status>current"`
Message string `xml:"message"`
UnixTime time.Time `xml:"unixtime"`
}
type MarketQuotesResponse struct {
XMLName xml.Name `xml:"response"`
Quotes []Quote `xml:"quotes"'`
}
/**
TODO: Finish this page https://www.ally.com/api/invest/documentation/market-ext-quotes-get-post/
*/
type Quote struct {
XMLName xml.Name `xml:"quote"`
AverageDailyPrice100 float64 `xml:"adp_100"`
AverageDailyPrice200 float64 `xml:"adp_200"`
AverageDailyPrice50 float64 `xml:"adp_50"`
AverageDailyVolume21 float64 `xml:"adv_21"`
AverageDailyVolume30 float64 `xml:"adv_30"`
AverageDailyVolume90 float64 `xml:"adv_90"`
AskPrice float64 `xml:"ask"`
AskTime time.Time `xml:"ask_time"`
AskSize int `xml:"asksz"`
Basis float64 `xml:"basis"`
Beta float64 `xml:"beta"`
Bid float64 `xml:"bid"`
BidTime time.Time `xml:"bid_time"`
BidSize int `xml:"bidsz"`
BidTick int `xml:"bidtick"`
Change float64 `xml:"chg"`
ChangeSign string `xml:"chg_sign"`
ChangeText string `xml:"chg_t"`
Close float64 `xml:"cl"`
Cusip float64 `xml:"cusip"`
Date string `xml:"date"`
Datetime string `xml:"datetime"`
Dividend float64 `xml:"div"`
DividendFrequency string `xml:"divfreq"`
DollarValue float64 `xml:"dollar_value"`
EarningsPerShare float64 `xml:"eps"`
CompanyName string `xml:"name"`
PercentChangeSinceClose float64 `xml:"pchg"`
PriorDayClose float64 `xml:"pcls"`
PriceEarningRatio float64 `xml:"pe"`
PriorDayHigh float64 `xml:"phi"`
PriorDayLow float64 `xml:"plo"`
PriorDayOpen float64 `xml:"popn"`
}
type MarketNewsResponse struct {
XMLName xml.Name `xml:"response"`
Articles []Article `xml:"articles"`
}
type Article struct {
XMLName xml.Name `xml:"article"`
Date string `xml:"date"`
Headline string `xml:"headline"`
Id string `xml:"id"`
Story string `xml:"story"`
}
type MarketNewsGetResponse struct {
XMLName xml.Name `xml:"response"`
Article Article `xml:"article"`
}