dtos

package
v0.0.1-test Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2022 License: AGPL-3.0 Imports: 20 Imported by: 496

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetGravatarHash

func GetGravatarHash(text string) ([]byte, bool)

func GetGravatarUrl

func GetGravatarUrl(text string) string

func GetGravatarUrlWithDefault

func GetGravatarUrlWithDefault(text string, defaultText string) string

func IsHiddenUser

func IsHiddenUser(userLogin string, signedInUser *user.SignedInUser, cfg *setting.Cfg) bool

Types

type AddInviteForm

type AddInviteForm struct {
	LoginOrEmail string       `json:"loginOrEmail" binding:"Required"`
	Name         string       `json:"name"`
	Role         org.RoleType `json:"role" binding:"Required"`
	SendEmail    bool         `json:"sendEmail"`
}

type AdminCreateUserForm

type AdminCreateUserForm struct {
	Email    string `json:"email"`
	Login    string `json:"login"`
	Name     string `json:"name"`
	Password string `json:"password" binding:"Required"`
	OrgId    int64  `json:"orgId"`
}

type AdminUpdateUserPasswordForm

type AdminUpdateUserPasswordForm struct {
	Password string `json:"password" binding:"Required"`
}

type AdminUpdateUserPermissionsForm

type AdminUpdateUserPermissionsForm struct {
	IsGrafanaAdmin bool `json:"isGrafanaAdmin"`
}

type AlertNotification

type AlertNotification struct {
	Id                    int64            `json:"id"`
	Uid                   string           `json:"uid"`
	Name                  string           `json:"name"`
	Type                  string           `json:"type"`
	IsDefault             bool             `json:"isDefault"`
	SendReminder          bool             `json:"sendReminder"`
	DisableResolveMessage bool             `json:"disableResolveMessage"`
	Frequency             string           `json:"frequency"`
	Created               time.Time        `json:"created"`
	Updated               time.Time        `json:"updated"`
	Settings              *simplejson.Json `json:"settings"`
	SecureFields          map[string]bool  `json:"secureFields"`
}

func NewAlertNotification

func NewAlertNotification(notification *models.AlertNotification) *AlertNotification

type AlertNotificationLookup

type AlertNotificationLookup struct {
	Id        int64  `json:"id"`
	Uid       string `json:"uid"`
	Name      string `json:"name"`
	Type      string `json:"type"`
	IsDefault bool   `json:"isDefault"`
}

func NewAlertNotificationLookup

func NewAlertNotificationLookup(notification *models.AlertNotification) *AlertNotificationLookup

type AlertTestCommand

type AlertTestCommand struct {
	Dashboard *simplejson.Json `json:"dashboard" binding:"Required"`
	PanelId   int64            `json:"panelId" binding:"Required"`
}

type AlertTestResult

type AlertTestResult struct {
	Firing         bool                  `json:"firing"`
	State          models.AlertStateType `json:"state"`
	ConditionEvals string                `json:"conditionEvals"`
	TimeMs         string                `json:"timeMs"`
	Error          string                `json:"error,omitempty"`
	EvalMatches    []*EvalMatch          `json:"matches,omitempty"`
	Logs           []*AlertTestResultLog `json:"logs,omitempty"`
}

type AlertTestResultLog

type AlertTestResultLog struct {
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

type AnnotationActions

type AnnotationActions struct {
	CanAdd    bool `json:"canAdd"`
	CanEdit   bool `json:"canEdit"`
	CanDelete bool `json:"canDelete"`
}

type AnnotationPermission

type AnnotationPermission struct {
	Dashboard    AnnotationActions `json:"dashboard"`
	Organization AnnotationActions `json:"organization"`
}

type AnyId

type AnyId struct {
	Id int64 `json:"id"`
}

type ApiKeyDTO

type ApiKeyDTO struct {
	Id            int64                  `json:"id"`
	Name          string                 `json:"name"`
	Role          org.RoleType           `json:"role"`
	Expiration    *time.Time             `json:"expiration,omitempty"`
	AccessControl accesscontrol.Metadata `json:"accessControl,omitempty"`
}

type CalculateDiffOptions

type CalculateDiffOptions struct {
	Base     CalculateDiffTarget `json:"base" binding:"Required"`
	New      CalculateDiffTarget `json:"new" binding:"Required"`
	DiffType string              `json:"diffType" binding:"Required"`
}

type CalculateDiffTarget

type CalculateDiffTarget struct {
	DashboardId      int64            `json:"dashboardId"`
	Version          int              `json:"version"`
	UnsavedDashboard *simplejson.Json `json:"unsavedDashboard"`
}

type CompleteInviteForm

type CompleteInviteForm struct {
	InviteCode      string `json:"inviteCode"`
	Email           string `json:"email" binding:"Required"`
	Name            string `json:"name"`
	Username        string `json:"username"`
	Password        string `json:"password"`
	ConfirmPassword string `json:"confirmPassword"`
}

type CreateShortURLCmd

type CreateShortURLCmd struct {
	Path string `json:"path"`
}

type CurrentUser

type CurrentUser struct {
	IsSignedIn                 bool               `json:"isSignedIn"`
	Id                         int64              `json:"id"`
	ExternalUserId             string             `json:"externalUserId"`
	Login                      string             `json:"login"`
	Email                      string             `json:"email"`
	Name                       string             `json:"name"`
	LightTheme                 bool               `json:"lightTheme"`
	OrgCount                   int                `json:"orgCount"`
	OrgId                      int64              `json:"orgId"`
	OrgName                    string             `json:"orgName"`
	OrgRole                    org.RoleType       `json:"orgRole"`
	IsGrafanaAdmin             bool               `json:"isGrafanaAdmin"`
	GravatarUrl                string             `json:"gravatarUrl"`
	Timezone                   string             `json:"timezone"`
	WeekStart                  string             `json:"weekStart"`
	Locale                     string             `json:"locale"`
	HelpFlags1                 user.HelpFlags1    `json:"helpFlags1"`
	HasEditPermissionInFolders bool               `json:"hasEditPermissionInFolders"`
	Permissions                UserPermissionsMap `json:"permissions,omitempty"`
}

type DashboardACLUpdateItem

type DashboardACLUpdateItem struct {
	UserID int64         `json:"userId"`
	TeamID int64         `json:"teamId"`
	Role   *org.RoleType `json:"role,omitempty"`
	// Permission level
	// Description:
	// * `1` - View
	// * `2` - Edit
	// * `4` - Admin
	// Enum: 1,2,4
	Permission models.PermissionType `json:"permission"`
}

swagger:model

type DashboardFullWithMeta

type DashboardFullWithMeta struct {
	Meta      DashboardMeta    `json:"meta"`
	Dashboard *simplejson.Json `json:"dashboard"`
}

type DashboardMeta

type DashboardMeta struct {
	IsStarred                  bool                  `json:"isStarred,omitempty"`
	IsSnapshot                 bool                  `json:"isSnapshot,omitempty"`
	Type                       string                `json:"type,omitempty"`
	CanSave                    bool                  `json:"canSave"`
	CanEdit                    bool                  `json:"canEdit"`
	CanAdmin                   bool                  `json:"canAdmin"`
	CanStar                    bool                  `json:"canStar"`
	CanDelete                  bool                  `json:"canDelete"`
	Slug                       string                `json:"slug"`
	Url                        string                `json:"url"`
	Expires                    time.Time             `json:"expires"`
	Created                    time.Time             `json:"created"`
	Updated                    time.Time             `json:"updated"`
	UpdatedBy                  string                `json:"updatedBy"`
	CreatedBy                  string                `json:"createdBy"`
	Version                    int                   `json:"version"`
	HasACL                     bool                  `json:"hasAcl" xorm:"has_acl"`
	IsFolder                   bool                  `json:"isFolder"`
	FolderId                   int64                 `json:"folderId"`
	FolderUid                  string                `json:"folderUid"`
	FolderTitle                string                `json:"folderTitle"`
	FolderUrl                  string                `json:"folderUrl"`
	Provisioned                bool                  `json:"provisioned"`
	ProvisionedExternalId      string                `json:"provisionedExternalId"`
	AnnotationsPermissions     *AnnotationPermission `json:"annotationsPermissions"`
	PublicDashboardAccessToken string                `json:"publicDashboardAccessToken"`
	PublicDashboardUID         string                `json:"publicDashboardUid"`
	PublicDashboardEnabled     bool                  `json:"publicDashboardEnabled"`
}

type DashboardRedirect

type DashboardRedirect struct {
	RedirectUri string `json:"redirectUri"`
}

type DataSource

type DataSource struct {
	Id               int64                  `json:"id"`
	UID              string                 `json:"uid"`
	OrgId            int64                  `json:"orgId"`
	Name             string                 `json:"name"`
	Type             string                 `json:"type"`
	TypeLogoUrl      string                 `json:"typeLogoUrl"`
	Access           datasources.DsAccess   `json:"access"`
	Url              string                 `json:"url"`
	User             string                 `json:"user"`
	Database         string                 `json:"database"`
	BasicAuth        bool                   `json:"basicAuth"`
	BasicAuthUser    string                 `json:"basicAuthUser"`
	WithCredentials  bool                   `json:"withCredentials"`
	IsDefault        bool                   `json:"isDefault"`
	JsonData         *simplejson.Json       `json:"jsonData,omitempty"`
	SecureJsonFields map[string]bool        `json:"secureJsonFields"`
	Version          int                    `json:"version"`
	ReadOnly         bool                   `json:"readOnly"`
	AccessControl    accesscontrol.Metadata `json:"accessControl,omitempty"`
}

type DataSourceList

type DataSourceList []DataSourceListItemDTO

func (DataSourceList) Len

func (slice DataSourceList) Len() int

func (DataSourceList) Less

func (slice DataSourceList) Less(i, j int) bool

func (DataSourceList) Swap

func (slice DataSourceList) Swap(i, j int)

type DataSourceListItemDTO

type DataSourceListItemDTO struct {
	Id          int64                `json:"id"`
	UID         string               `json:"uid"`
	OrgId       int64                `json:"orgId"`
	Name        string               `json:"name"`
	Type        string               `json:"type"`
	TypeName    string               `json:"typeName"`
	TypeLogoUrl string               `json:"typeLogoUrl"`
	Access      datasources.DsAccess `json:"access"`
	Url         string               `json:"url"`
	User        string               `json:"user"`
	Database    string               `json:"database"`
	BasicAuth   bool                 `json:"basicAuth"`
	IsDefault   bool                 `json:"isDefault"`
	JsonData    *simplejson.Json     `json:"jsonData,omitempty"`
	ReadOnly    bool                 `json:"readOnly"`
}

type EvalMatch

type EvalMatch struct {
	Tags   map[string]string `json:"tags,omitempty"`
	Metric string            `json:"metric"`
	Value  null.Float        `json:"value"`
}

type Folder

type Folder struct {
	Id            int64                  `json:"id"`
	Uid           string                 `json:"uid"`
	Title         string                 `json:"title"`
	Url           string                 `json:"url"`
	HasACL        bool                   `json:"hasAcl" xorm:"has_acl"`
	CanSave       bool                   `json:"canSave"`
	CanEdit       bool                   `json:"canEdit"`
	CanAdmin      bool                   `json:"canAdmin"`
	CanDelete     bool                   `json:"canDelete"`
	CreatedBy     string                 `json:"createdBy"`
	Created       time.Time              `json:"created"`
	UpdatedBy     string                 `json:"updatedBy"`
	Updated       time.Time              `json:"updated"`
	Version       int                    `json:"version"`
	AccessControl accesscontrol.Metadata `json:"accessControl,omitempty"`
}

type FolderSearchHit

type FolderSearchHit struct {
	Id            int64                  `json:"id"`
	Uid           string                 `json:"uid"`
	Title         string                 `json:"title"`
	AccessControl accesscontrol.Metadata `json:"accessControl,omitempty"`
}

type IndexViewData

type IndexViewData struct {
	User                    *CurrentUser
	Settings                map[string]interface{}
	AppUrl                  string
	AppSubUrl               string
	GoogleAnalyticsId       string
	GoogleAnalytics4Id      string
	GoogleTagManagerId      string
	NavTree                 *navtree.NavTreeRoot
	BuildVersion            string
	BuildCommit             string
	Theme                   string
	NewGrafanaVersionExists bool
	NewGrafanaVersion       string
	AppName                 string
	AppNameBodyClass        string
	FavIcon                 template.URL
	AppleTouchIcon          template.URL
	AppTitle                string
	Sentry                  *setting.Sentry
	ContentDeliveryURL      string
	// Nonce is a cryptographic identifier for use with Content Security Policy.
	Nonce string
}

type InstallPluginCommand

type InstallPluginCommand struct {
	Version string `json:"version"`
}

type InviteInfo

type InviteInfo struct {
	Email     string `json:"email"`
	Name      string `json:"name"`
	Username  string `json:"username"`
	InvitedBy string `json:"invitedBy"`
}

type LivePublishCmd

type LivePublishCmd struct {
	Channel string          `json:"channel"`
	Data    json.RawMessage `json:"data,omitempty"`
}

type LivePublishResponse

type LivePublishResponse struct {
}

type LoginCommand

type LoginCommand struct {
	User     string `json:"user" binding:"Required"`
	Password string `json:"password" binding:"Required"`
	Remember bool   `json:"remember"`
}

type MassDeleteAnnotationsCmd

type MassDeleteAnnotationsCmd struct {
	DashboardId  int64  `json:"dashboardId"`
	PanelId      int64  `json:"panelId"`
	AnnotationId int64  `json:"annotationId"`
	DashboardUID string `json:"dashboardUID,omitempty"`
}

type MetricRequest

type MetricRequest struct {
	// From Start time in epoch timestamps in milliseconds or relative using Grafana time units.
	// required: true
	// example: now-1h
	From string `json:"from"`
	// To End time in epoch timestamps in milliseconds or relative using Grafana time units.
	// required: true
	// example: now
	To string `json:"to"`
	// queries.refId – Specifies an identifier of the query. Is optional and default to “A”.
	// queries.datasourceId – Specifies the data source to be queried. Each query in the request must have an unique datasourceId.
	// queries.maxDataPoints - Species maximum amount of data points that dashboard panel can render. Is optional and default to 100.
	// queries.intervalMs - Specifies the time interval in milliseconds of time series. Is optional and defaults to 1000.
	// required: true
	// example: [ { "refId": "A", "intervalMs": 86400000, "maxDataPoints": 1092, "datasource":{ "uid":"PD8C576611E62080A" }, "rawSql": "SELECT 1 as valueOne, 2 as valueTwo", "format": "table" } ]
	Queries []*simplejson.Json `json:"queries"`
	// required: false
	Debug bool `json:"debug"`

	PublicDashboardAccessToken string `json:"publicDashboardAccessToken"`

	HTTPRequest *http.Request `json:"-"`
}

swagger:model

func (*MetricRequest) CloneWithQueries

func (mr *MetricRequest) CloneWithQueries(queries []*simplejson.Json) MetricRequest

func (*MetricRequest) GetUniqueDatasourceTypes

func (mr *MetricRequest) GetUniqueDatasourceTypes() []string

type NewApiKeyResult

type NewApiKeyResult struct {
	// example: 1
	ID int64 `json:"id"`
	// example: grafana
	Name string `json:"name"`
	// example: glsa_yscW25imSKJIuav8zF37RZmnbiDvB05G_fcaaf58a
	Key string `json:"key"`
}

swagger:model

type NotificationTestCommand

type NotificationTestCommand struct {
	ID                    int64             `json:"id,omitempty"`
	Name                  string            `json:"name"`
	Type                  string            `json:"type"`
	SendReminder          bool              `json:"sendReminder"`
	DisableResolveMessage bool              `json:"disableResolveMessage"`
	Frequency             string            `json:"frequency"`
	Settings              *simplejson.Json  `json:"settings"`
	SecureSettings        map[string]string `json:"secureSettings"`
}

type PatchAnnotationsCmd

type PatchAnnotationsCmd struct {
	Id      int64    `json:"id"`
	Time    int64    `json:"time"`
	TimeEnd int64    `json:"timeEnd,omitempty"` // Optional
	Text    string   `json:"text"`
	Tags    []string `json:"tags"`
}

type PatchPrefsCmd

type PatchPrefsCmd struct {
	// Enum: light,dark
	Theme *string `json:"theme,omitempty"`
	// The numerical :id of a favorited dashboard
	// Default:0
	HomeDashboardID *int64 `json:"homeDashboardId,omitempty"`
	// Enum: utc,browser
	Timezone         *string                      `json:"timezone,omitempty"`
	WeekStart        *string                      `json:"weekStart,omitempty"`
	Locale           *string                      `json:"locale,omitempty"`
	Navbar           *pref.NavbarPreference       `json:"navbar,omitempty"`
	QueryHistory     *pref.QueryHistoryPreference `json:"queryHistory,omitempty"`
	HomeDashboardUID *string                      `json:"homeDashboardUID,omitempty"`
}

swagger:model

type PauseAlertCommand

type PauseAlertCommand struct {
	AlertId int64 `json:"alertId"`
	Paused  bool  `json:"paused"`
}

type PauseAllAlertsCommand

type PauseAllAlertsCommand struct {
	Paused bool `json:"paused"`
}

type PlaylistDashboard

type PlaylistDashboard struct {
	Id    int64  `json:"id"`
	Slug  string `json:"slug"`
	Title string `json:"title"`
	Uri   string `json:"uri"`
	Url   string `json:"url"`
	Order int    `json:"order"`
}

type PlaylistDashboardsSlice

type PlaylistDashboardsSlice []PlaylistDashboard

func (PlaylistDashboardsSlice) Len

func (slice PlaylistDashboardsSlice) Len() int

func (PlaylistDashboardsSlice) Less

func (slice PlaylistDashboardsSlice) Less(i, j int) bool

func (PlaylistDashboardsSlice) Swap

func (slice PlaylistDashboardsSlice) Swap(i, j int)

type PluginList

type PluginList []PluginListItem

func (PluginList) Len

func (slice PluginList) Len() int

func (PluginList) Less

func (slice PluginList) Less(i, j int) bool

func (PluginList) Swap

func (slice PluginList) Swap(i, j int)

type PluginListItem

type PluginListItem struct {
	Name          string                  `json:"name"`
	Type          string                  `json:"type"`
	Id            string                  `json:"id"`
	Enabled       bool                    `json:"enabled"`
	Pinned        bool                    `json:"pinned"`
	Info          plugins.Info            `json:"info"`
	Dependencies  plugins.Dependencies    `json:"dependencies"`
	LatestVersion string                  `json:"latestVersion"`
	HasUpdate     bool                    `json:"hasUpdate"`
	DefaultNavUrl string                  `json:"defaultNavUrl"`
	Category      string                  `json:"category"`
	State         plugins.ReleaseState    `json:"state"`
	Signature     plugins.SignatureStatus `json:"signature"`
	SignatureType plugins.SignatureType   `json:"signatureType"`
	SignatureOrg  string                  `json:"signatureOrg"`
	AccessControl accesscontrol.Metadata  `json:"accessControl,omitempty"`
}

type PluginSetting

type PluginSetting struct {
	Name             string                 `json:"name"`
	Type             string                 `json:"type"`
	Id               string                 `json:"id"`
	Enabled          bool                   `json:"enabled"`
	Pinned           bool                   `json:"pinned"`
	Module           string                 `json:"module"`
	BaseUrl          string                 `json:"baseUrl"`
	Info             plugins.Info           `json:"info"`
	Includes         []*plugins.Includes    `json:"includes"`
	Dependencies     plugins.Dependencies   `json:"dependencies"`
	JsonData         map[string]interface{} `json:"jsonData"`
	SecureJsonFields map[string]bool        `json:"secureJsonFields"`
	DefaultNavUrl    string                 `json:"defaultNavUrl"`

	LatestVersion string                  `json:"latestVersion"`
	HasUpdate     bool                    `json:"hasUpdate"`
	State         plugins.ReleaseState    `json:"state"`
	Signature     plugins.SignatureStatus `json:"signature"`
	SignatureType plugins.SignatureType   `json:"signatureType"`
	SignatureOrg  string                  `json:"signatureOrg"`
}

type PostAnnotationsCmd

type PostAnnotationsCmd struct {
	DashboardId  int64  `json:"dashboardId"`
	DashboardUID string `json:"dashboardUID,omitempty"`
	PanelId      int64  `json:"panelId"`
	Time         int64  `json:"time"`
	TimeEnd      int64  `json:"timeEnd,omitempty"` // Optional
	// required: true
	Text string           `json:"text"`
	Tags []string         `json:"tags"`
	Data *simplejson.Json `json:"data"`
}

type PostGraphiteAnnotationsCmd

type PostGraphiteAnnotationsCmd struct {
	When int64       `json:"when"`
	What string      `json:"what"`
	Data string      `json:"data"`
	Tags interface{} `json:"tags"`
}

type Prefs

type Prefs struct {
	Theme            string                      `json:"theme"`
	HomeDashboardID  int64                       `json:"homeDashboardId"`
	HomeDashboardUID string                      `json:"homeDashboardUID,omitempty"`
	Timezone         string                      `json:"timezone"`
	WeekStart        string                      `json:"weekStart"`
	Locale           string                      `json:"locale"`
	Navbar           pref.NavbarPreference       `json:"navbar,omitempty"`
	QueryHistory     pref.QueryHistoryPreference `json:"queryHistory,omitempty"`
}

type ResetUserPasswordForm

type ResetUserPasswordForm struct {
	Code            string `json:"code"`
	NewPassword     string `json:"newPassword"`
	ConfirmPassword string `json:"confirmPassword"`
}

type RestoreDashboardVersionCommand

type RestoreDashboardVersionCommand struct {
	Version int `json:"version" binding:"Required"`
}

type SendResetPasswordEmailForm

type SendResetPasswordEmailForm struct {
	UserOrEmail string `json:"userOrEmail" binding:"Required"`
}

type ShortURL

type ShortURL struct {
	UID string `json:"uid"`
	URL string `json:"url"`
}

type SignUpForm

type SignUpForm struct {
	Email string `json:"email" binding:"Required"`
}

type SignUpStep2Form

type SignUpStep2Form struct {
	Email    string `json:"email"`
	Name     string `json:"name"`
	Username string `json:"username"`
	Password string `json:"password"`
	Code     string `json:"code"`
	OrgName  string `json:"orgName"`
}

type TrimDashboardFullWithMeta

type TrimDashboardFullWithMeta struct {
	Meta      *simplejson.Json `json:"meta"`
	Dashboard *simplejson.Json `json:"dashboard"`
}

type UpdateAnnotationsCmd

type UpdateAnnotationsCmd struct {
	Id      int64    `json:"id"`
	Time    int64    `json:"time"`
	TimeEnd int64    `json:"timeEnd,omitempty"` // Optional
	Text    string   `json:"text"`
	Tags    []string `json:"tags"`
}

type UpdateDashboardACLCommand

type UpdateDashboardACLCommand struct {
	Items []DashboardACLUpdateItem `json:"items"`
}

swagger:model

type UpdateOrgAddressForm

type UpdateOrgAddressForm struct {
	Address1 string `json:"address1"`
	Address2 string `json:"address2"`
	City     string `json:"city"`
	ZipCode  string `json:"zipcode"`
	State    string `json:"state"`
	Country  string `json:"country"`
}

type UpdateOrgForm

type UpdateOrgForm struct {
	Name string `json:"name" binding:"Required"`
}

type UpdatePrefsCmd

type UpdatePrefsCmd struct {
	// Enum: light,dark
	Theme string `json:"theme"`
	// The numerical :id of a favorited dashboard
	// Default:0
	HomeDashboardID  int64   `json:"homeDashboardId"`
	HomeDashboardUID *string `json:"homeDashboardUID,omitempty"`
	// Enum: utc,browser
	Timezone     string                       `json:"timezone"`
	WeekStart    string                       `json:"weekStart"`
	Navbar       *pref.NavbarPreference       `json:"navbar,omitempty"`
	QueryHistory *pref.QueryHistoryPreference `json:"queryHistory,omitempty"`
	Locale       string                       `json:"locale"`
}

swagger:model

type UserLookupDTO

type UserLookupDTO struct {
	UserID    int64  `json:"userId"`
	Login     string `json:"login"`
	AvatarURL string `json:"avatarUrl"`
}

type UserPermissionsMap

type UserPermissionsMap map[string]bool

type UserToken

type UserToken struct {
	Id                     int64     `json:"id"`
	IsActive               bool      `json:"isActive"`
	ClientIp               string    `json:"clientIp"`
	Device                 string    `json:"device"`
	OperatingSystem        string    `json:"os"`
	OperatingSystemVersion string    `json:"osVersion"`
	Browser                string    `json:"browser"`
	BrowserVersion         string    `json:"browserVersion"`
	CreatedAt              time.Time `json:"createdAt"`
	SeenAt                 time.Time `json:"seenAt"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL