Documentation ¶
Index ¶
- Constants
- Variables
- func GenerateConfirmationCode(identitySecret, tag string, current int64) (string, error)
- func GenerateTwoFactorCode(sharedSecret string, current int64) (string, error)
- type APIResponse
- type ChatFriendResponse
- type ChatLogMessage
- type ChatMessage
- type ChatResponse
- type Confirmation
- type EconAction
- type EconDesc
- type EconItem
- type EconItemDesc
- type EconTag
- type EscrowSteamGuardInfo
- type Filter
- type FinalizeTwoFactorInfo
- type Friend
- type Game
- type InventoryAppStats
- type InventoryContext
- type InventoryItem
- type ItemTag
- type LoginResponse
- type LoginSession
- type MarketBuyOrderResponse
- type MarketItemPrice
- type MarketItemPriceOverview
- type MarketItemResponse
- type MarketSellResponse
- type OAuth
- type OwnedGamesResponse
- type PhoneAPIResponse
- type PlayerBan
- type PlayerSummary
- type ServerTimeTip
- type Session
- func (session *Session) AcceptTradeOffer(id uint64) error
- func (session *Session) AddPhoneNumber(number string) error
- func (session *Session) AnswerConfirmation(confirmation *Confirmation, identitySecret, answer string, current int64) error
- func (session *Session) CancelBuyOrder(orderid uint64) error
- func (session *Session) CancelTradeOffer(id uint64) error
- func (session *Session) ChatFriendState(sid SteamID) (*ChatFriendResponse, error)
- func (session *Session) ChatLog(partner uint32) ([]*ChatLogMessage, error)
- func (session *Session) ChatLogin(uiMode string) error
- func (session *Session) ChatLogoff() error
- func (session *Session) ChatPoll(timeoutSeconds string) (*ChatResponse, error)
- func (session *Session) ChatSendMessage(sid SteamID, message, messageType string) error
- func (session *Session) ConfirmRemovePhoneNumber(mobileCode string) error
- func (session *Session) DeclineTradeOffer(id uint64) error
- func (session *Session) DisableTwoFactor(revocationCode string) error
- func (session *Session) EnableTwoFactor() (*TwoFactorInfo, error)
- func (session *Session) FinalizeTwoFactor(authCode, mobileCode string) (*FinalizeTwoFactorInfo, error)
- func (session *Session) GetConfirmations(identitySecret string, current int64) ([]*Confirmation, error)
- func (session *Session) GetEscrowGuardInfo(sid SteamID, token string) (*EscrowSteamGuardInfo, error)
- func (session *Session) GetFilterableInventory(sid SteamID, appID, contextID uint64, filters []Filter) ([]InventoryItem, error)
- func (session *Session) GetFriends(sid SteamID) ([]*Friend, error)
- func (session *Session) GetInventory(sid SteamID, appID, contextID uint64, tradableOnly bool) ([]InventoryItem, error)
- func (session *Session) GetInventoryAppStats(sid SteamID) (map[string]InventoryAppStats, error)
- func (session *Session) GetMarketItemPriceHistory(appID uint64, marketHashName string) ([]*MarketItemPrice, error)
- func (session *Session) GetMarketItemPriceOverview(appID uint64, country, currencyID, marketHashName string) (*MarketItemPriceOverview, error)
- func (session *Session) GetMyTradeToken() (string, error)
- func (session *Session) GetOwnedGames(sid SteamID, freeGames bool, appInfo bool) (*OwnedGamesResponse, error)
- func (session *Session) GetPlayerBans(steamids string) ([]*PlayerBan, error)
- func (session *Session) GetPlayerSummaries(steamids string) ([]*PlayerSummary, error)
- func (session *Session) GetProfileURL() (string, error)
- func (session *Session) GetRequiredSteamAppVersion(appID int) (int, error)
- func (session *Session) GetSteamID() SteamID
- func (session *Session) GetTradeOffer(id uint64) (*TradeOffer, error)
- func (session *Session) GetTradeOffers(filter uint32, timeCutOff time.Time) (*TradeOfferResponse, error)
- func (session *Session) GetTradeReceivedItems(receiptID uint64) ([]*InventoryItem, error)
- func (session *Session) GetWebAPIKey() (string, error)
- func (session *Session) InitiateRemovePhoneNumber() error
- func (session *Session) Login(accountName, password, sharedSecret string, timeOffset time.Duration) error
- func (session *Session) LoginTwoFactorCode(accountName, password, twoFactorCode string) error
- func (session *Session) PlaceBuyOrder(appid uint64, priceTotal float64, quantity uint64, ...) (*MarketBuyOrderResponse, error)
- func (session *Session) PrepareForSteamStore()
- func (session *Session) ReSendVerificationCode() error
- func (session *Session) RegisterWebAPIKey(domain string) (string, error)
- func (session *Session) ResolveVanityURL(vanityURL string) (uint64, error)
- func (session *Session) RevokeWebAPIKey() error
- func (session *Session) SellItem(item *InventoryItem, amount, price uint64) (*MarketSellResponse, error)
- func (session *Session) SendTradeOffer(offer *TradeOffer, sid SteamID, token string) error
- func (session *Session) SetLanguage(lang string)
- func (session *Session) SetProfileInfo(profileURL string, values *map[string][]string) error
- func (session *Session) SetProfilePrivacy(profileURL string, commentPrivacy string, privacy uint8) error
- func (session *Session) SetupProfile(profileURL string) error
- func (session *Session) ValidatePhoneNumber(number string) error
- func (session *Session) VerifyPhoneNumber(code string) error
- type SteamID
- func (sid *SteamID) GetAccountID() uint32
- func (sid *SteamID) GetAccountInstance() uint32
- func (sid *SteamID) GetAccountType() uint32
- func (sid *SteamID) GetAccountUniverse() uint32
- func (sid *SteamID) Parse(accid uint32, instance uint32, accountType uint32, universe uint8)
- func (sid *SteamID) ParseDefaults(accid uint32)
- func (sid *SteamID) ParseSteam2ID(input string) error
- func (sid *SteamID) ParseSteam3ID(input string) error
- func (sid *SteamID) ToSteam2ID() string
- func (sid *SteamID) ToSteam3ID() string
- func (sid *SteamID) ToString() string
- type TradeOffer
- type TradeOfferResponse
- type TwoFactorInfo
Constants ¶
const ( PersonaStateOffline = iota PersonaStateOnline PersonaStateBusy PersonaStateAway PersonaStateSnooze PersonaStateLookingToTrade PersonaStateLookingToPlay )
const ( PersonaStateFlagRichPresence = 1 << 0 PersonaStateFlagInJoinableGame = 1 << 1 PersonaStateFlagWeb = 1 << 8 PersonaStateFlagMobile = 1 << 9 PersonaStateFlagBigPicture = 1 << 10 )
const ( MessageTypeStatus = "personastate" MessageTypeTyping = "typing" MessageTypeSayText = "saytext" )
const ( ChatUIModeMobile = "mobile" // empty string works too ChatUIModeWeb = "web" )
const ( CurrencyUSD = "1" CurrencyGBP = "2" CurrencyEUR = "3" CurrencyCHF = "4" CurrencyRUB = "5" CurrencyPLN = "6" CurrencyBRL = "7" CurrencyJPY = "8" CurrencyNOK = "9" CurrencyIDR = "10" CurrencyMYR = "11" CurrencyPHP = "12" CurrencySGD = "13" CurrencyTHB = "14" CurrencyVND = "15" CurrencyKRW = "16" CurrencyTRY = "17" CurrencyUAH = "18" CurrencyMXN = "19" CurrencyCAD = "20" CurrencyAUD = "21" CurrencyNZD = "22" CurrencyCNY = "23" CurrencyINR = "24" CurrencyCLP = "25" CurrencyPEN = "26" CurrencyCOP = "27" CurrencyZAR = "28" CurrencyHKD = "29" CurrencyTWD = "30" CurrencySAR = "31" CurrencyAED = "32" CurrencyARS = "34" CurrencyILS = "35" CurrencyBYN = "36" CurrencyKZT = "37" CurrencyKWD = "38" CurrencyQAR = "39" CurrencyCRC = "40" CurrencyUYU = "41" CurrencyRMB = "9000" )
const ( PrivacyStatePrivate = 1 PrivacyStateFriendsOnly = 2 PrivacyStatePublic = 3 )
const ( CommentSettingSelf = "commentselfonly" CommentSettingFriends = "commentfriendsonly" CommentSettingPublic = "commentanyone" )
const ( UniverseInvalid = iota UniversePublic UniverseBeta UniverseInternal UniverseDev )
const ( AccountTypeInvalid = iota AccountTypeIndividual AccountTypeMultiSeat AccountTypeGameServer AccountTypeAnonymousGameServer AccountTypePending AccountTypeContentServer AccountTypeClan AccountTypeChat AccountTypeP2PSuperSeeder AccountTypeAnonymous )
const ( AccountInstanceAll = iota AccountInstanceDesktop AccountInstanceConsole AccountInstanceWeb )
const ( ChatInstanceFlagClan = 0x80000 ChatInstanceFlagLobby = 0x40000 ChatInstanceFlagMMSLobby = 0x20000 )
const ( TradeStateNone = iota TradeStateInvalid TradeStateActive TradeStateAccepted TradeStateCountered TradeStateExpired TradeStateCanceled TradeStateDeclined TradeStateInvalidItems TradeStateCreatedNeedsConfirmation TradeStateCanceledByTwoFactor TradeStateInEscrow )
const ( TradeConfirmationNone = iota TradeConfirmationEmail TradeConfirmationMobileApp TradeConfirmationMobile )
const ( TradeFilterNone = iota TradeFilterSentOffers = 1 << 0 TradeFilterRecvOffers = 1 << 1 TradeFilterActiveOnly = 1 << 3 TradeFilterHistoricalOnly = 1 << 4 TradeFilterItemDescriptions = 1 << 5 )
const (
InventoryEndpoint = "http://steamcommunity.com/inventory/%d/%d/%d?"
)
Variables ¶
var ( ErrConfirmationsUnknownError = errors.New("unknown error occurered finding confirmations") ErrCannotFindConfirmations = errors.New("unable to find confirmations") ErrCannotFindDescriptions = errors.New("unable to find confirmation descriptions") ErrConfiramtionsDescMismatch = errors.New("cannot match confirmations with their respective descriptions") )
var ( ErrInvalidUsername = errors.New("invalid username") ErrNeedTwoFactor = errors.New("invalid twofactor code") )
var ( ErrCannotLoadPrices = errors.New("unable to load prices at this time") ErrInvalidPriceResponse = errors.New("invalid market pricehistory response") )
var ( ErrInvalidSteam2ID = errors.New("invalid input specified for a Steam 2 ID") ErrInvalidSteam3ID = errors.New("invalid input specified for a Steam 3 ID") )
var ( ErrReceiptMatch = errors.New("unable to match items in trade receipt") ErrCannotAcceptActive = errors.New("unable to accept a non-active trade") ErrCannotFindOfferInfo = errors.New("unable to match data from trade offer url") )
var ( ErrCannotRegisterKey = errors.New("unable to register API key") ErrCannotRevokeKey = errors.New("unable to revoke API key") ErrAccessDenied = errors.New("access is denied") ErrKeyNotFound = errors.New("key not found") )
var ErrCannotDisable = errors.New("unable to process disable two factor request")
var ErrCannotFindVanityMatch = errors.New("no match for the vanity URL")
var ErrInvalidPhoneNumber = errors.New("invalid phone number specified")
Functions ¶
Types ¶
type APIResponse ¶
type APIResponse struct {
Inner *TradeOfferResponse `json:"response"`
}
type ChatFriendResponse ¶
type ChatFriendResponse struct { AccountID uint32 `json:"m_unAccountID"` SteamID SteamID `json:"m_ulSteamID,string"` Name string `json:"m_strName"` State uint8 `json:"m_ePersonaState"` StateFlags uint32 `json:"m_nPersonaStateFlags"` AvatarHash string `json:"m_strAvatarHash"` InGame bool `json:"m_bIngame"` InGameAppID uint64 `json:"m_nInGameAppID,string"` InGameName string `json:"m_strInGameName"` LastMessage int64 `json:"m_tsLastMessage"` LastView int64 `json:"m_tsLastView"` }
type ChatLogMessage ¶
type ChatMessage ¶
type ChatMessage struct { Type string `json:"type"` Text string `json:"text"` TimestampOff int64 `json:"timestamp"` UTCTimestamp int64 `json:"utc_timestamp"` Partner uint32 `json:"accountid_from"` StatusFlags uint32 `json:"status_flags"` PersonaState uint32 `json:"persona_state"` PersonaName string `json:"persona_name"` }
type ChatResponse ¶
type ChatResponse struct { Message int `json:"message"` // Login / Internal UmqID string `json:"umqid"` // Login / Internal TimestampOff int64 `json:"timestamp"` // Login UTCTimestamp int64 `json:"utc_timestamp"` // Login Push int `json:"push"` // Login ErrorMessage string `json:"error"` // All (returned as error if not "OK") MessageBase uint32 `json:"messagebase"` // ChatPoll LastMessages uint32 `json:"messagelast"` // ChatPoll Messages []*ChatMessage `json:"messages"` // ChatPoll SecTimeout uint32 `json:"sectimeout"` // ChatPoll }
type Confirmation ¶
type EconAction ¶
type EconItem ¶
type EconItem struct { AssetID uint64 `json:"assetid,string,omitempty"` InstanceID uint64 `json:"instanceid,string,omitempty"` ClassID uint64 `json:"classid,string,omitempty"` AppID uint32 `json:"appid"` ContextID uint64 `json:"contextid,string"` Amount uint16 `json:"amount,string"` Missing bool `json:"missing,omitempty"` }
type EconItemDesc ¶
type EconItemDesc struct { ClassID uint64 `json:"classid,string"` // for matching with EconItem InstanceID uint64 `json:"instanceid,string"` // for matching with EconItem Tradable int `json:"tradable"` BackgroundColor string `json:"background_color"` IconURL string `json:"icon_url"` IconLargeURL string `json:"icon_url_large"` IconDragURL string `json:"icon_drag_url"` Name string `json:"name"` NameColor string `json:"name_color"` MarketName string `json:"market_name"` MarketHashName string `json:"market_hash_name"` Comodity bool `json:"comodity"` Actions []*EconAction `json:"actions"` Tags []*EconTag `json:"tags"` Descriptions []*EconDesc `json:"descriptions"` }
type EscrowSteamGuardInfo ¶
type Filter ¶
type Filter func(*InventoryItem) bool
Filter get InventoryItem and return true if item meet its condition false otherwise
func IsTradable ¶
IsTradable return Filter for item.Tradable option
type FinalizeTwoFactorInfo ¶
type InventoryAppStats ¶
type InventoryAppStats struct { AppID uint64 `json:"appid"` Name string `json:"name"` AssetCount uint32 `json:"asset_count"` Icon string `json:"icon"` Link string `json:"link"` InventoryLogo string `json:"inventory_logo"` TradePermissions string `json:"trade_permissions"` Contexts map[string]*InventoryContext `json:"rgContexts"` }
type InventoryContext ¶
type InventoryItem ¶
type InventoryItem struct { AppID uint32 `json:"appid"` ContextID uint64 `json:"contextid"` AssetID uint64 `json:"id,string,omitempty"` ClassID uint64 `json:"classid,string,omitempty"` InstanceID uint64 `json:"instanceid,string,omitempty"` Amount uint64 `json:"amount,string"` Desc *EconItemDesc `json:"-"` /* May be nil */ }
Due to the JSON being string, etc... we cannot re-use EconItem Also, "assetid" is included as "id" not as assetid.
type LoginResponse ¶
type LoginSession ¶
type MarketBuyOrderResponse ¶
type MarketItemPrice ¶
type MarketItemPriceOverview ¶
type MarketItemResponse ¶
type MarketSellResponse ¶
type OwnedGamesResponse ¶
type PhoneAPIResponse ¶
type PlayerBan ¶
type PlayerBan struct { SteamID uint64 `json:"SteamId,string"` CommunityBanned bool `json:"CommunityBanned"` VACBanned bool `json:"VACBanned"` NumberOfVACBans int `json:"NumberOfVACBans"` DaysSinceLastBan int `json:"DaysSinceLastBan"` NumberOfGameBans int `json:"NumberOfGameBans"` EconomyBan string `json:"EconomyBan"` }
type PlayerSummary ¶
type PlayerSummary struct { SteamID SteamID `json:"steamid,string"` VisibilityState uint32 `json:"communityvisibilitystate"` ProfileState uint32 `json:"profilestate"` PersonaName string `json:"personaname"` PersonaState uint32 `json:"personastate"` PersonaStateFlags uint32 `json:"personastateflags"` RealName string `json:"realname"` LastLogoff int64 `json:"lastlogoff"` ProfileURL string `json:"profileurl"` AvatarURL string `json:"avatar"` AvatarMediumURL string `json:"avatarmedium"` AvatarFullURL string `json:"avatarfull"` PrimaryClanID uint64 `json:"primaryclanid,string"` TimeCreated int64 `json:"timecreated"` LocCountryCode string `json:"loccountrycode"` LocStateCode string `json:"locstatecode"` LocCityID uint32 `json:"loccityid"` GameID uint64 `json:"gameid,string"` GameServerIP string `json:"gameserverip"` GameExtraInfo string `json:"gameextrainfo"` }
type ServerTimeTip ¶
type ServerTimeTip struct { Time int64 `json:"server_time,string"` SkewToleranceSeconds uint32 `json:"skew_tolerance_seconds,string"` LargeTimeJink uint32 `json:"large_time_jink,string"` ProbeFrequencySeconds uint32 `json:"probe_frequency_seconds"` AdjustedTimeProbeFrequencySeconds uint32 `json:"adjusted_time_probe_frequency_seconds"` HintProbeFrequencySeconds uint32 `json:"hint_probe_frequency_seconds"` SyncTimeout uint32 `json:"sync_timeout"` TryAgainSeconds uint32 `json:"try_again_seconds"` MaxAttempts uint32 `json:"max_attempts"` }
func GetTimeTip ¶
func GetTimeTip() (*ServerTimeTip, error)
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
func NewSessionWithAPIKey ¶
func (*Session) AcceptTradeOffer ¶
func (*Session) AddPhoneNumber ¶
func (*Session) AnswerConfirmation ¶
func (session *Session) AnswerConfirmation(confirmation *Confirmation, identitySecret, answer string, current int64) error
func (*Session) CancelBuyOrder ¶
func (*Session) CancelTradeOffer ¶
func (*Session) ChatFriendState ¶
func (session *Session) ChatFriendState(sid SteamID) (*ChatFriendResponse, error)
func (*Session) ChatLog ¶
func (session *Session) ChatLog(partner uint32) ([]*ChatLogMessage, error)
func (*Session) ChatLogoff ¶
func (*Session) ChatPoll ¶
func (session *Session) ChatPoll(timeoutSeconds string) (*ChatResponse, error)
func (*Session) ChatSendMessage ¶
func (*Session) ConfirmRemovePhoneNumber ¶
func (*Session) DeclineTradeOffer ¶
func (*Session) DisableTwoFactor ¶
func (*Session) EnableTwoFactor ¶
func (session *Session) EnableTwoFactor() (*TwoFactorInfo, error)
func (*Session) FinalizeTwoFactor ¶
func (session *Session) FinalizeTwoFactor(authCode, mobileCode string) (*FinalizeTwoFactorInfo, error)
func (*Session) GetConfirmations ¶
func (session *Session) GetConfirmations(identitySecret string, current int64) ([]*Confirmation, error)
func (*Session) GetEscrowGuardInfo ¶
func (session *Session) GetEscrowGuardInfo(sid SteamID, token string) (*EscrowSteamGuardInfo, error)
func (*Session) GetFilterableInventory ¶
func (*Session) GetInventory ¶
func (*Session) GetInventoryAppStats ¶
func (session *Session) GetInventoryAppStats(sid SteamID) (map[string]InventoryAppStats, error)
func (*Session) GetMarketItemPriceHistory ¶
func (session *Session) GetMarketItemPriceHistory(appID uint64, marketHashName string) ([]*MarketItemPrice, error)
func (*Session) GetMarketItemPriceOverview ¶
func (session *Session) GetMarketItemPriceOverview(appID uint64, country, currencyID, marketHashName string) (*MarketItemPriceOverview, error)
func (*Session) GetMyTradeToken ¶
func (*Session) GetOwnedGames ¶
func (*Session) GetPlayerBans ¶
func (*Session) GetPlayerSummaries ¶
func (session *Session) GetPlayerSummaries(steamids string) ([]*PlayerSummary, error)
func (*Session) GetProfileURL ¶
func (*Session) GetRequiredSteamAppVersion ¶
func (*Session) GetSteamID ¶
func (*Session) GetTradeOffer ¶
func (session *Session) GetTradeOffer(id uint64) (*TradeOffer, error)
func (*Session) GetTradeOffers ¶
func (*Session) GetTradeReceivedItems ¶
func (session *Session) GetTradeReceivedItems(receiptID uint64) ([]*InventoryItem, error)
func (*Session) GetWebAPIKey ¶
func (*Session) InitiateRemovePhoneNumber ¶
func (*Session) Login ¶
func (session *Session) Login(accountName, password, sharedSecret string, timeOffset time.Duration) error
Login requests log in information first, then generates two factor code, and proceeds to do the actual login, this provides a better chance that the code generated will work because of the slowness of the API.
func (*Session) LoginTwoFactorCode ¶
LoginTwoFactorCode logs in with the @twoFactorCode provided, note that in the case of having shared secret known, then it's better to use Login() because it's more accurate. Note: You can provide an empty two factor code if two factor authentication is not enabled on the account provided.
func (*Session) PlaceBuyOrder ¶
func (*Session) PrepareForSteamStore ¶
func (session *Session) PrepareForSteamStore()
func (*Session) ReSendVerificationCode ¶
func (*Session) RegisterWebAPIKey ¶
func (*Session) ResolveVanityURL ¶
func (*Session) RevokeWebAPIKey ¶
func (*Session) SellItem ¶
func (session *Session) SellItem(item *InventoryItem, amount, price uint64) (*MarketSellResponse, error)
func (*Session) SendTradeOffer ¶
func (session *Session) SendTradeOffer(offer *TradeOffer, sid SteamID, token string) error
func (*Session) SetLanguage ¶
func (*Session) SetProfileInfo ¶
func (*Session) SetProfilePrivacy ¶
func (*Session) SetupProfile ¶
func (*Session) ValidatePhoneNumber ¶
func (*Session) VerifyPhoneNumber ¶
type SteamID ¶
type SteamID uint64
* Full Steam 64-bit ID * Upper 32 bits Lower 32 bits * Upper 16 bits Lower 16 bits * Universe Type Acc Instance Account ID * |||| |||| xxxx |||| xxxx xx|| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||
func (*SteamID) GetAccountID ¶
func (*SteamID) GetAccountInstance ¶
func (*SteamID) GetAccountType ¶
func (*SteamID) GetAccountUniverse ¶
func (*SteamID) ParseDefaults ¶
func (*SteamID) ParseSteam2ID ¶
func (*SteamID) ParseSteam3ID ¶
func (*SteamID) ToSteam2ID ¶
func (*SteamID) ToSteam3ID ¶
type TradeOffer ¶
type TradeOffer struct { ID uint64 `json:"tradeofferid,string"` Partner uint32 `json:"accountid_other"` ReceiptID uint64 `json:"tradeid,string"` RecvItems []*EconItem `json:"items_to_receive"` SendItems []*EconItem `json:"items_to_give"` Message string `json:"message"` State uint8 `json:"trade_offer_state"` ConfirmationMethod uint8 `json:"confirmation_method"` Created int64 `json:"time_created"` Updated int64 `json:"time_updated"` Expires int64 `json:"expiration_time"` EscrowEndDate int64 `json:"escrow_end_date"` RealTime bool `json:"from_real_time_trade"` IsOurOffer bool `json:"is_our_offer"` }
func (*TradeOffer) Accept ¶
func (offer *TradeOffer) Accept(session *Session) error
func (*TradeOffer) Cancel ¶
func (offer *TradeOffer) Cancel(session *Session) error
type TradeOfferResponse ¶
type TradeOfferResponse struct { Offer *TradeOffer `json:"offer"` // GetTradeOffer SentOffers []*TradeOffer `json:"trade_offers_sent"` // GetTradeOffers ReceivedOffers []*TradeOffer `json:"trade_offers_received"` // GetTradeOffers Descriptions []*EconItemDesc `json:"descriptions"` // GetTradeOffers }
type TwoFactorInfo ¶
type TwoFactorInfo struct { Status uint32 `json:"status"` IdentitySecret string `json:"identity_secret"` Secret1 string `json:"secret_1"` SerialNumber uint64 `json:"serial_number,string"` RevocationCode string `json:"revocation_code"` URI string `json:"uri"` ServerTime uint64 `json:"server_time,string"` TokenGID string `json:"token_gid"` }