API calls ========= Host Management --------------- ```go type HostKind int const ( KindHTTP HostKind = iota KindTCP KindIRC KindProxy ) type Host struct { ID string `gorethink:"id,omitempty"` Hostname string `gorethink:"hostname"` OnionHostname string `gorethink:"onionhostname"` Token string `gorethink:"token"` OnionKey []byte `gorethink:"onionKey" json:"-"` // PEM-encoded Kind HostKind `gorethink:"hostKind"` Port string `gorethink:"port"` AllowedUsers []string `gorethink:"allowedUsers"` } ``` ### AddHost This creates a new host in the routing mesh. ```go type AddHostRequest struct { BaseAPICall Hostname string OnionKey *rsa.PrivateKey } type AddHostResponse struct { ID string Token string // JWT Hostname string OnionHostname string } ``` ### GetHost ### ModifyHost Token Management ---------------- ```go type Token struct { ID string `gorethink:"id,omitempty" json:"jti"` ExpiresAt int64 `json:"exp,omitempty"` IssuedAt int64 `json:"iat,omitempty"` Issuer string `json:"iss,omitempty"` Subject string `json:"sub,omitempty"` Revoked bool RevocationID string Scopes []string `json:"scopes"` } ``` ### CreateInitialToken ### ValidateToken ### CreateToken ### ListTokens ### RevokeToken Metrics ------- ### Report Returns the following data for the last minute, the last 5 minutes and the last 10 minutes: - Number of requests processed - Total request latency - Longest request latency - Shortest request latency Users ----- ```go type User struct { ID string `gorethink:"id,omitempty"` Email string `gorethink:"email"` OauthMethod string `gorethink:"oauthMethod"` IsAdmin bool `gorethink:"isADmin"` } ``` ### Login ### Logout ### Promote ### Demote ### AddNewLoginMethod