types

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2026 License: GPL-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PlexSessionCacheDuration = 30 * time.Second
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ActionStatus added in v0.3.0

type ActionStatus struct {
	ID         int       `json:"id"`
	Status     string    `json:"status"`
	Action     string    `json:"action"`
	ActionID   int       `json:"action_id"`
	Type       string    `json:"type"`
	Client     string    `json:"client"`
	Filter     string    `json:"filter"`
	FilterID   int       `json:"filter_id"`
	Rejections []string  `json:"rejections"`
	ReleaseID  int       `json:"release_id"`
	Timestamp  time.Time `json:"timestamp"`
}

type AuthConfig

type AuthConfig struct {
	Issuer       string
	ClientID     string
	ClientSecret string
	RedirectURL  string
}

AuthConfig holds the OIDC configuration

type AutobrrDetails added in v0.3.0

type AutobrrDetails struct {
	IRC []IRCStatus `json:"irc,omitempty"`
}

type AutobrrServiceHealth added in v0.3.0

type AutobrrServiceHealth struct {
	ServiceID   string         `json:"serviceId"`
	Status      string         `json:"status"`
	Message     string         `json:"message"`
	LastChecked time.Time      `json:"lastChecked"`
	Stats       *AutobrrStats  `json:"stats,omitempty"`
	Details     AutobrrDetails `json:"details"`
}

type AutobrrStats added in v0.3.0

type AutobrrStats struct {
	TotalCount          int `json:"total_count"`
	FilteredCount       int `json:"filtered_count"`
	FilterRejectedCount int `json:"filter_rejected_count"`
	PushApprovedCount   int `json:"push_approved_count"`
	PushRejectedCount   int `json:"push_rejected_count"`
	PushErrorCount      int `json:"push_error_count"`
}

type BazarrBadges added in v0.3.0

type BazarrBadges struct {
	Episodes      int    `json:"episodes"`
	Movies        int    `json:"movies"`
	Providers     int    `json:"providers"`
	Status        int    `json:"status"`
	SonarrSignalR string `json:"sonarr_signalr"`
	RadarrSignalR string `json:"radarr_signalr"`
	Announcements int    `json:"announcements"`
}

BazarrBadges represents Bazarr /api/badges.

type BazarrHealthIssue added in v0.3.0

type BazarrHealthIssue struct {
	Object string `json:"object"`
	Issue  string `json:"issue"`
}

BazarrHealthIssue represents a single system health issue.

type BazarrHealthIssuesEnvelope added in v0.3.0

type BazarrHealthIssuesEnvelope struct {
	Data []BazarrHealthIssue `json:"data"`
}

BazarrHealthIssuesEnvelope represents Bazarr /api/system/health response.

type BazarrProviderStatus added in v0.3.0

type BazarrProviderStatus struct {
	Name   string `json:"name"`
	Status string `json:"status"`
	Retry  string `json:"retry"`
}

BazarrProviderStatus represents provider health from /api/providers.

type BazarrProvidersEnvelope added in v0.3.0

type BazarrProvidersEnvelope struct {
	Data []BazarrProviderStatus `json:"data"`
}

BazarrProvidersEnvelope represents Bazarr /api/providers response.

type BazarrSummaryResponse added in v0.3.0

type BazarrSummaryResponse struct {
	Badges       BazarrBadges           `json:"badges"`
	Providers    []BazarrProviderStatus `json:"providers"`
	HealthIssues []BazarrHealthIssue    `json:"healthIssues"`
}

BazarrSummaryResponse is the combined payload used by API handlers and SSE.

type BazarrSystemStatus added in v0.3.0

type BazarrSystemStatus struct {
	BazarrVersion string `json:"bazarr_version"`
}

BazarrSystemStatus contains the status payload from Bazarr.

type BazarrSystemStatusEnvelope added in v0.3.0

type BazarrSystemStatusEnvelope struct {
	Data BazarrSystemStatus `json:"data"`
}

BazarrSystemStatusEnvelope represents Bazarr /api/system/status.

type Changes

type Changes struct {
	New   []string `json:"new"`
	Fixed []string `json:"fixed"`
}

type Episode added in v0.3.0

type Episode struct {
	ID                       int    `json:"id"`
	SeriesID                 int    `json:"seriesId"`
	EpisodeNumber            int    `json:"episodeNumber"`
	SeasonNumber             int    `json:"seasonNumber"`
	Title                    string `json:"title"`
	AirDate                  string `json:"airDate"`
	AirDateUTC               string `json:"airDateUtc"`
	Overview                 string `json:"overview"`
	HasFile                  bool   `json:"hasFile"`
	Monitored                bool   `json:"monitored"`
	AbsoluteEpisodeNumber    int    `json:"absoluteEpisodeNumber"`
	UnverifiedSceneNumbering bool   `json:"unverifiedSceneNumbering"`
}

Episode represents an episode in Sonarr

type EpisodeBasic added in v0.3.0

type EpisodeBasic struct {
	ID            int `json:"id"`
	EpisodeNumber int `json:"episodeNumber"`
	SeasonNumber  int `json:"seasonNumber"`
}

EpisodeBasic represents a basic episode structure for queue items

type FindServiceParams added in v0.3.0

type FindServiceParams struct {
	InstanceID     string
	InstancePrefix string
	URL            string
	AccessURL      string
}

type FindUserParams added in v0.3.0

type FindUserParams struct {
	ID       int64
	Username string
	Email    string
}

type IRCStatus added in v0.3.0

type IRCStatus struct {
	Name    string `json:"name"`
	Healthy bool   `json:"healthy"`
	Enabled bool   `json:"enabled"`
}

type Indexer added in v0.3.0

type Indexer struct {
	ID                 int    `json:"id"`
	Name               string `json:"name"`
	Identifier         string `json:"identifier"`
	IdentifierExternal string `json:"identifier_external"`
}

type JellyfinMediaStream added in v0.3.0

type JellyfinMediaStream struct {
	Codec    string `json:"Codec"`
	BitRate  int64  `json:"BitRate"`
	Channels int    `json:"Channels"`
	Index    int    `json:"Index"`
	Width    int    `json:"Width"`
	Height   int    `json:"Height"`
}

type JellyfinNowPlayingItem added in v0.3.0

type JellyfinNowPlayingItem struct {
	Name         string                `json:"Name"`
	SeriesName   string                `json:"SeriesName"`
	Type         string                `json:"Type"`
	RunTimeTicks int64                 `json:"RunTimeTicks"`
	MediaStreams []JellyfinMediaStream `json:"MediaStreams"`
}

type JellyfinPlayerState added in v0.3.0

type JellyfinPlayerState struct {
	PositionTicks    int64  `json:"PositionTicks"`
	IsPaused         bool   `json:"IsPaused"`
	PlayMethod       string `json:"PlayMethod"`
	AudioStreamIndex *int   `json:"AudioStreamIndex"`
}

type JellyfinSession added in v0.3.0

type JellyfinSession struct {
	ID                 string                   `json:"Id"`
	UserName           string                   `json:"UserName"`
	Client             string                   `json:"Client"`
	DeviceName         string                   `json:"DeviceName"`
	DeviceType         string                   `json:"DeviceType"`
	ApplicationVersion string                   `json:"ApplicationVersion"`
	IsActive           bool                     `json:"IsActive"`
	PlayState          *JellyfinPlayerState     `json:"PlayState"`
	NowPlayingItem     *JellyfinNowPlayingItem  `json:"NowPlayingItem"`
	TranscodingInfo    *JellyfinTranscodingInfo `json:"TranscodingInfo"`
}

type JellyfinSummaryResponse added in v0.3.0

type JellyfinSummaryResponse struct {
	System   JellyfinSystemInfo `json:"system"`
	Sessions []JellyfinSession  `json:"sessions"`
}

type JellyfinSystemInfo added in v0.3.0

type JellyfinSystemInfo struct {
	ServerName  string `json:"ServerName"`
	Version     string `json:"Version"`
	ProductName string `json:"ProductName"`
	ID          string `json:"Id"`
}

type JellyfinTranscodingInfo added in v0.3.0

type JellyfinTranscodingInfo struct {
	AudioCodec           string  `json:"AudioCodec"`
	VideoCodec           string  `json:"VideoCodec"`
	Container            string  `json:"Container"`
	IsVideoDirect        bool    `json:"IsVideoDirect"`
	IsAudioDirect        bool    `json:"IsAudioDirect"`
	Bitrate              int64   `json:"Bitrate"`
	CompletionPercentage float64 `json:"CompletionPercentage"`
	Width                int     `json:"Width"`
	Height               int     `json:"Height"`
	AudioChannels        int     `json:"AudioChannels"`
}

type LidarrQueueDeleteOptions added in v0.3.0

type LidarrQueueDeleteOptions struct {
	RemoveFromClient bool `json:"removeFromClient"`
	Blocklist        bool `json:"blocklist"`
	SkipRedownload   bool `json:"skipRedownload"`
	ChangeCategory   bool `json:"changeCategory"`
}

LidarrQueueDeleteOptions represents options for deleting a queue item.

type LidarrQueueItem added in v0.3.0

type LidarrQueueItem struct {
	ID                    int                   `json:"id"`
	Title                 string                `json:"title"`
	Status                string                `json:"status"`
	TimeLeft              string                `json:"timeleft,omitempty"`
	EstimatedCompletionAt string                `json:"estimatedCompletionTime"`
	Protocol              string                `json:"protocol"`
	Indexer               string                `json:"indexer"`
	DownloadClient        string                `json:"downloadClient"`
	Size                  int64                 `json:"size"`
	SizeLeft              int64                 `json:"sizeleft"`
	CustomFormatScore     int                   `json:"customFormatScore"`
	TrackedDownloadStatus string                `json:"trackedDownloadStatus"`
	TrackedDownloadState  string                `json:"trackedDownloadState"`
	StatusMessages        []LidarrStatusMessage `json:"statusMessages"`
	ErrorMessage          string                `json:"errorMessage"`
	DownloadID            string                `json:"downloadId"`
}

LidarrQueueItem represents a record in the Lidarr queue.

type LidarrQueueResponse added in v0.3.0

type LidarrQueueResponse struct {
	Page          int               `json:"page"`
	PageSize      int               `json:"pageSize"`
	SortKey       string            `json:"sortKey"`
	SortDirection string            `json:"sortDirection"`
	TotalRecords  int               `json:"totalRecords"`
	Records       []LidarrQueueItem `json:"records"`
}

LidarrQueueResponse represents the queue response from Lidarr API.

type LidarrStatusMessage added in v0.3.0

type LidarrStatusMessage struct {
	Title    string   `json:"title"`
	Messages []string `json:"messages"`
}

LidarrStatusMessage represents detailed status information for a queue record.

type LoginRequest

type LoginRequest struct {
	Username string `json:"username" binding:"required"`
	Password string `json:"password" binding:"required"`
}

LoginRequest represents the login credentials

type MediaContainer

type MediaContainer struct {
	XMLName  xml.Name `xml:"MediaContainer"`
	Version  string   `xml:"version,attr"`
	Platform string   `xml:"platform,attr"`
}

type MediaRequest

type MediaRequest struct {
	ID        int       `json:"id"`
	Status    int       `json:"status"`
	CreatedAt time.Time `json:"createdAt"`
	UpdatedAt time.Time `json:"updatedAt"`
	Media     struct {
		ID                int      `json:"id"`
		TmdbID            int      `json:"tmdbId"`
		TvdbID            int      `json:"tvdbId"`
		Status            int      `json:"status"`
		Requests          []string `json:"requests"`
		CreatedAt         string   `json:"createdAt"`
		UpdatedAt         string   `json:"updatedAt"`
		MediaType         string   `json:"mediaType"`
		ServiceUrl        string   `json:"serviceUrl"`
		Title             string   `json:"title,omitempty"`
		ExternalServiceID int      `json:"externalServiceId,omitempty"`
	} `json:"media"`
	RequestedBy struct {
		ID           int    `json:"id"`
		Email        string `json:"email"`
		Username     string `json:"username"`
		PlexToken    string `json:"plexToken"`
		PlexUsername string `json:"plexUsername"`
		UserType     int    `json:"userType"`
		Permissions  int    `json:"permissions"`
		Avatar       string `json:"avatar"`
		CreatedAt    string `json:"createdAt"`
		UpdatedAt    string `json:"updatedAt"`
		RequestCount int    `json:"requestCount"`
	} `json:"requestedBy"`
	ModifiedBy struct {
		ID           int    `json:"id"`
		Email        string `json:"email"`
		Username     string `json:"username"`
		PlexToken    string `json:"plexToken"`
		PlexUsername string `json:"plexUsername"`
		UserType     int    `json:"userType"`
		Permissions  int    `json:"permissions"`
		Avatar       string `json:"avatar"`
		CreatedAt    string `json:"createdAt"`
		UpdatedAt    string `json:"updatedAt"`
		RequestCount int    `json:"requestCount"`
	} `json:"modifiedBy"`
	Is4k       bool   `json:"is4k"`
	ServerID   int    `json:"serverId"`
	ProfileID  int    `json:"profileId"`
	RootFolder string `json:"rootFolder"`
}

type NzbgetHistoryItem added in v0.3.0

type NzbgetHistoryItem struct {
	NZBID            int64  `json:"NZBID"`
	Kind             string `json:"Kind"`
	Name             string `json:"Name"`
	NZBName          string `json:"NZBName"`
	Category         string `json:"Category"`
	Status           string `json:"Status"`
	HistoryTime      int64  `json:"HistoryTime"`
	FileSizeMB       int64  `json:"FileSizeMB"`
	DownloadedSizeMB int64  `json:"DownloadedSizeMB"`
	DownloadTimeSec  int64  `json:"DownloadTimeSec"`
}

type NzbgetQueueItem added in v0.3.0

type NzbgetQueueItem struct {
	NZBID            int64  `json:"NZBID"`
	NZBName          string `json:"NZBName"`
	Category         string `json:"Category"`
	Status           string `json:"Status"`
	RemainingSizeLo  uint64 `json:"RemainingSizeLo"`
	RemainingSizeHi  uint64 `json:"RemainingSizeHi"`
	RemainingSizeMB  int64  `json:"RemainingSizeMB"`
	DownloadedSizeMB int64  `json:"DownloadedSizeMB"`
	DownloadTimeSec  int64  `json:"DownloadTimeSec"`
	Health           int64  `json:"Health"`
	CriticalHealth   int64  `json:"CriticalHealth"`
}

type NzbgetStatus added in v0.3.0

type NzbgetStatus struct {
	RemainingSizeLo uint64 `json:"RemainingSizeLo"`
	RemainingSizeHi uint64 `json:"RemainingSizeHi"`
	RemainingSizeMB int64  `json:"RemainingSizeMB"`

	DownloadRate   int64  `json:"DownloadRate"`
	DownloadRateLo uint64 `json:"DownloadRateLo"`
	DownloadRateHi uint64 `json:"DownloadRateHi"`

	DownloadPaused bool `json:"DownloadPaused"`
	PostPaused     bool `json:"PostPaused"`
	ScanPaused     bool `json:"ScanPaused"`
	ServerStandBy  bool `json:"ServerStandBy"`
	QuotaReached   bool `json:"QuotaReached"`

	ServerTime int64 `json:"ServerTime"`
	ResumeTime int64 `json:"ResumeTime"`

	FreeDiskSpaceLo  uint64 `json:"FreeDiskSpaceLo"`
	FreeDiskSpaceHi  uint64 `json:"FreeDiskSpaceHi"`
	FreeDiskSpaceMB  int64  `json:"FreeDiskSpaceMB"`
	TotalDiskSpaceLo uint64 `json:"TotalDiskSpaceLo"`
	TotalDiskSpaceHi uint64 `json:"TotalDiskSpaceHi"`
	TotalDiskSpaceMB int64  `json:"TotalDiskSpaceMB"`
}

type NzbgetSummaryResponse added in v0.3.0

type NzbgetSummaryResponse struct {
	Status         NzbgetStatus        `json:"status"`
	Queue          []NzbgetQueueItem   `json:"queue"`
	FailedCount    int                 `json:"failedCount"`
	RecentFailures []NzbgetHistoryItem `json:"recentFailures"`
}

type OverseerrDetails added in v0.3.0

type OverseerrDetails struct {
	PendingCount  int `json:"pendingCount"`
	TotalRequests int `json:"totalRequests"`
}

type OverseerrServiceHealth added in v0.3.0

type OverseerrServiceHealth struct {
	ServiceID   string           `json:"serviceId"`
	Status      string           `json:"status"`
	Message     string           `json:"message"`
	LastChecked time.Time        `json:"lastChecked"`
	Stats       OverseerrStats   `json:"stats"`
	Details     OverseerrDetails `json:"details"`
}

type OverseerrStats added in v0.3.0

type OverseerrStats struct {
	Requests     []MediaRequest `json:"requests"`
	PendingCount int            `json:"pendingCount"`
}

type PlexMedia

type PlexMedia struct {
	AudioChannels int        `json:"audioChannels"`
	AudioCodec    string     `json:"audioCodec"`
	Bitrate       int        `json:"bitrate"`
	Container     string     `json:"container"`
	Duration      int        `json:"duration"`
	ID            string     `json:"id"`
	Selected      bool       `json:"selected"`
	Part          []PlexPart `json:"Part"`
}

type PlexPIN added in v0.3.0

type PlexPIN struct {
	ID        int    `json:"id"`
	Code      string `json:"code"`
	AuthToken string `json:"authToken"`
	ExpiresIn int    `json:"expiresIn"`
}

type PlexPart

type PlexPart struct {
	Container    string       `json:"container"`
	Duration     int          `json:"duration"`
	File         string       `json:"file"`
	HasThumbnail string       `json:"hasThumbnail"`
	ID           string       `json:"id"`
	Key          string       `json:"key"`
	Size         int64        `json:"size"`
	Decision     string       `json:"decision"`
	Selected     bool         `json:"selected"`
	Stream       []PlexStream `json:"Stream"`
}

type PlexPlayer

type PlexPlayer struct {
	Address             string `json:"address"`
	Device              string `json:"device"`
	MachineIdentifier   string `json:"machineIdentifier"`
	Model               string `json:"model"`
	Platform            string `json:"platform"`
	PlatformVersion     string `json:"platformVersion"`
	Product             string `json:"product"`
	Profile             string `json:"profile"`
	State               string `json:"state"`
	RemotePublicAddress string `json:"remotePublicAddress"`
	Title               string `json:"title"`
	Vendor              string `json:"vendor"`
	Version             string `json:"version"`
}

type PlexResponse

type PlexResponse struct {
	MediaContainer MediaContainer `json:"MediaContainer"`
}

type PlexSession

type PlexSession struct {
	AddedAt              int64                 `json:"addedAt"`
	Art                  string                `json:"art"`
	Duration             int                   `json:"duration"`
	GrandparentArt       string                `json:"grandparentArt"`
	GrandparentGuid      string                `json:"grandparentGuid"`
	GrandparentKey       string                `json:"grandparentKey"`
	GrandparentRatingKey string                `json:"grandparentRatingKey"`
	GrandparentThumb     string                `json:"grandparentThumb"`
	GrandparentTitle     string                `json:"grandparentTitle"`
	Guid                 string                `json:"guid"`
	Index                int                   `json:"index"`
	Key                  string                `json:"key"`
	LibrarySectionID     string                `json:"librarySectionID"`
	LibrarySectionKey    string                `json:"librarySectionKey"`
	LibrarySectionTitle  string                `json:"librarySectionTitle"`
	MusicAnalysisVersion string                `json:"musicAnalysisVersion"`
	ParentGuid           string                `json:"parentGuid"`
	ParentIndex          int                   `json:"parentIndex"`
	ParentKey            string                `json:"parentKey"`
	ParentRatingKey      string                `json:"parentRatingKey"`
	ParentStudio         string                `json:"parentStudio"`
	ParentThumb          string                `json:"parentThumb"`
	ParentTitle          string                `json:"parentTitle"`
	ParentYear           int                   `json:"parentYear"`
	RatingCount          int                   `json:"ratingCount"`
	RatingKey            string                `json:"ratingKey"`
	SessionKey           string                `json:"sessionKey"`
	Thumb                string                `json:"thumb"`
	Title                string                `json:"title"`
	TitleSort            string                `json:"titleSort"`
	Type                 string                `json:"type"`
	UpdatedAt            int64                 `json:"updatedAt"`
	ViewOffset           int                   `json:"viewOffset"`
	Media                []PlexMedia           `json:"Media"`
	User                 *PlexUser             `json:"User,omitempty"`
	Player               *PlexPlayer           `json:"Player,omitempty"`
	Session              *PlexSessionInfo      `json:"Session,omitempty"`
	TranscodeSession     *PlexTranscodeSession `json:"TranscodeSession,omitempty"`
}

type PlexSessionInfo

type PlexSessionInfo struct {
	ID        string `json:"id"`
	Bandwidth int    `json:"bandwidth"`
	Location  string `json:"location"`
}

type PlexSessionsResponse

type PlexSessionsResponse struct {
	MediaContainer struct {
		Size     int           `json:"size"`
		Metadata []PlexSession `json:"Metadata"`
	} `json:"MediaContainer"`
}

type PlexStream

type PlexStream struct {
	AlbumGain            string `json:"albumGain"`
	AlbumPeak            string `json:"albumPeak"`
	AlbumRange           string `json:"albumRange"`
	AudioChannelLayout   string `json:"audioChannelLayout"`
	BitDepth             int    `json:"bitDepth"`
	Bitrate              int    `json:"bitrate"`
	Channels             int    `json:"channels"`
	Codec                string `json:"codec"`
	DisplayTitle         string `json:"displayTitle"`
	ExtendedDisplayTitle string `json:"extendedDisplayTitle"`
	Gain                 string `json:"gain"`
	ID                   string `json:"id"`
	Index                int    `json:"index"`
	Loudness             string `json:"loudness"`
	LRA                  string `json:"lra"`
	Peak                 string `json:"peak"`
	SamplingRate         int    `json:"samplingRate"`
	Selected             bool   `json:"selected"`
	StreamType           int    `json:"streamType"`
	Location             string `json:"location"`
}

type PlexTranscodeSession

type PlexTranscodeSession struct {
	Key                     string  `json:"key"`
	Throttled               bool    `json:"throttled"`
	Complete                bool    `json:"complete"`
	Progress                float64 `json:"progress"`
	Speed                   float64 `json:"speed"`
	Size                    int64   `json:"size"`
	VideoDecision           string  `json:"videoDecision"`
	AudioDecision           string  `json:"audioDecision"`
	Protocol                string  `json:"protocol"`
	Container               string  `json:"container"`
	VideoCodec              string  `json:"videoCodec"`
	AudioCodec              string  `json:"audioCodec"`
	Width                   int     `json:"width"`
	Height                  int     `json:"height"`
	TranscodeHwRequested    bool    `json:"transcodeHwRequested"`
	TranscodeHwFullPipeline bool    `json:"transcodeHwFullPipeline"`
	TimeStamp               float64 `json:"timeStamp"`
	MaxOffsetAvailable      float64 `json:"maxOffsetAvailable"`
	MinOffsetAvailable      float64 `json:"minOffsetAvailable"`
}

type PlexUser

type PlexUser struct {
	ID    string `json:"id"`
	Title string `json:"title"`
	Thumb string `json:"thumb"`
}

type ProwlarrIndexer

type ProwlarrIndexer struct {
	ID                  int    `json:"id"`
	Name                string `json:"name"`
	Label               string `json:"label"`
	Enable              bool   `json:"enable"`
	Priority            int    `json:"priority"`
	AverageResponseTime int    `json:"averageResponseTime"`
	NumberOfGrabs       int    `json:"numberOfGrabs"`
	NumberOfQueries     int    `json:"numberOfQueries"`
}

type ProwlarrIndexerStats added in v0.3.0

type ProwlarrIndexerStats struct {
	ID                        int    `json:"id"`
	IndexerID                 int    `json:"indexerId"`
	IndexerName               string `json:"indexerName"`
	AverageResponseTime       int    `json:"averageResponseTime"`
	NumberOfQueries           int    `json:"numberOfQueries"`
	NumberOfGrabs             int    `json:"numberOfGrabs"`
	NumberOfRssQueries        int    `json:"numberOfRssQueries"`
	NumberOfAuthQueries       int    `json:"numberOfAuthQueries"`
	NumberOfFailedQueries     int    `json:"numberOfFailedQueries"`
	NumberOfFailedGrabs       int    `json:"numberOfFailedGrabs"`
	NumberOfFailedRssQueries  int    `json:"numberOfFailedRssQueries"`
	NumberOfFailedAuthQueries int    `json:"numberOfFailedAuthQueries"`
}

type ProwlarrIndexerStatsResponse added in v0.3.0

type ProwlarrIndexerStatsResponse struct {
	Indexers []ProwlarrIndexerStats `json:"indexers"`
}

type ProwlarrStatsResponse

type ProwlarrStatsResponse struct {
	GrabCount    int `json:"grabCount"`
	FailCount    int `json:"failCount"`
	IndexerCount int `json:"indexerCount"`
}

type QueueRecord

type QueueRecord struct {
	ID                                  int             `json:"id"`
	SeriesID                            int             `json:"seriesId"`
	EpisodeID                           int             `json:"episodeId"`
	SeasonNumber                        int             `json:"seasonNumber"`
	Series                              Series          `json:"series"`
	Episode                             Episode         `json:"episode"`
	Title                               string          `json:"title"`
	Status                              string          `json:"status"`
	Size                                int64           `json:"size"`
	SizeLeft                            int64           `json:"sizeleft"`
	TimeLeft                            string          `json:"timeleft,omitempty"`
	EstimatedCompletionTime             string          `json:"estimatedCompletionTime"`
	Added                               string          `json:"added"`
	DownloadClient                      string          `json:"downloadClient"`
	DownloadID                          string          `json:"downloadId"`
	Protocol                            string          `json:"protocol"`
	Indexer                             string          `json:"indexer"`
	OutputPath                          string          `json:"outputPath"`
	TrackedDownloadStatus               string          `json:"trackedDownloadStatus"`
	TrackedDownloadState                string          `json:"trackedDownloadState"`
	StatusMessages                      []StatusMessage `json:"statusMessages"`
	ErrorMessage                        string          `json:"errorMessage"`
	DownloadClientHasPostImportCategory bool            `json:"downloadClientHasPostImportCategory"`
	EpisodeHasFile                      bool            `json:"episodeHasFile"`
	CustomFormatScore                   int             `json:"customFormatScore"`
	Episodes                            []EpisodeBasic  `json:"episodes"`
}

QueueRecord represents a record in the Sonarr queue

type QuiCrossSeedRun added in v0.3.0

type QuiCrossSeedRun struct {
	ID              int64      `json:"id"`
	Status          string     `json:"status"`
	Mode            string     `json:"mode"`
	TriggeredBy     string     `json:"triggeredBy"`
	StartedAt       time.Time  `json:"startedAt"`
	CompletedAt     *time.Time `json:"completedAt,omitempty"`
	CandidatesFound int        `json:"candidatesFound"`
	TorrentsAdded   int        `json:"torrentsAdded"`
	TorrentsFailed  int        `json:"torrentsFailed"`
	TorrentsSkipped int        `json:"torrentsSkipped"`
	Message         string     `json:"message,omitempty"`
	ErrorMessage    string     `json:"errorMessage,omitempty"`
}

type QuiCrossSeedSettings added in v0.3.0

type QuiCrossSeedSettings struct {
	Enabled            bool `json:"enabled"`
	RunIntervalMinutes int  `json:"runIntervalMinutes"`
}

type QuiCrossSeedStatus added in v0.3.0

type QuiCrossSeedStatus struct {
	Settings  *QuiCrossSeedSettings `json:"settings,omitempty"`
	LastRun   *QuiCrossSeedRun      `json:"lastRun,omitempty"`
	NextRunAt *time.Time            `json:"nextRunAt,omitempty"`
	Running   bool                  `json:"running"`
}

type QuiHealthResponse added in v0.3.0

type QuiHealthResponse struct {
	Status string `json:"status"`
}

type QuiInstance added in v0.3.0

type QuiInstance struct {
	ID                 int    `json:"id"`
	Name               string `json:"name"`
	Connected          bool   `json:"connected"`
	IsActive           bool   `json:"isActive"`
	ConnectionStatus   string `json:"connectionStatus,omitempty"`
	HasDecryptionError bool   `json:"hasDecryptionError,omitempty"`
}

type QuiInstanceTransfer added in v0.3.0

type QuiInstanceTransfer struct {
	InstanceID       int    `json:"instanceId"`
	Name             string `json:"name"`
	Connected        bool   `json:"connected"`
	Active           bool   `json:"active"`
	ConnectionStatus string `json:"connectionStatus,omitempty"`
	Downloaded       int64  `json:"downloaded"`
	Uploaded         int64  `json:"uploaded"`
	DownloadSpeed    int64  `json:"downloadSpeed"`
	UploadSpeed      int64  `json:"uploadSpeed"`
	DHTNodes         int    `json:"dhtNodes"`
}

type QuiTransferInfo added in v0.3.0

type QuiTransferInfo struct {
	ConnectionStatus string `json:"connection_status"`
	DHTNodes         int    `json:"dht_nodes"`
	Downloaded       int64  `json:"dl_info_data"`
	DownloadSpeed    int64  `json:"dl_info_speed"`
	DownloadRate     int64  `json:"dl_rate_limit"`
	Uploaded         int64  `json:"up_info_data"`
	UploadSpeed      int64  `json:"up_info_speed"`
	UploadRate       int64  `json:"up_rate_limit"`
}

type QuiTransferSummary added in v0.3.0

type QuiTransferSummary struct {
	TotalInstances     int   `json:"totalInstances"`
	ActiveInstances    int   `json:"activeInstances"`
	ConnectedInstances int   `json:"connectedInstances"`
	DownloadSpeed      int64 `json:"downloadSpeed"`
	UploadSpeed        int64 `json:"uploadSpeed"`
	Downloaded         int64 `json:"downloaded"`
	Uploaded           int64 `json:"uploaded"`
	DHTNodes           int   `json:"dhtNodes"`
}

type RadarrCustomFormat

type RadarrCustomFormat struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

RadarrCustomFormat represents a custom format in Radarr

type RadarrMovie

type RadarrMovie struct {
	Title         string               `json:"title"`
	OriginalTitle string               `json:"originalTitle"`
	Year          int                  `json:"year"`
	FolderPath    string               `json:"folderPath"`
	CustomFormats []RadarrCustomFormat `json:"customFormats"`
}

RadarrMovie represents the movie information in a queue record

type RadarrMovieResponse

type RadarrMovieResponse struct {
	ID            int     `json:"id"`
	Title         string  `json:"title"`
	OriginalTitle string  `json:"originalTitle"`
	Year          int     `json:"year"`
	Overview      string  `json:"overview"`
	ImdbId        string  `json:"imdbId"`
	TmdbId        int     `json:"tmdbId"`
	Status        string  `json:"status"`
	Added         string  `json:"added"`
	HasFile       bool    `json:"hasFile"`
	Path          string  `json:"path"`
	SizeOnDisk    int64   `json:"sizeOnDisk"`
	Runtime       int     `json:"runtime"`
	Ratings       Ratings `json:"ratings"`
}

RadarrMovieResponse represents a movie from Radarr's movie endpoint

type RadarrQueueDeleteOptions

type RadarrQueueDeleteOptions struct {
	RemoveFromClient bool `json:"removeFromClient"`
	Blocklist        bool `json:"blocklist"`
	SkipRedownload   bool `json:"skipRedownload"`
	ChangeCategory   bool `json:"changeCategory"`
}

RadarrQueueDeleteOptions represents the options for deleting a queue item

type RadarrQueueRecord

type RadarrQueueRecord struct {
	ID                      int                   `json:"id"`
	MovieID                 int                   `json:"movieId"`
	Title                   string                `json:"title"`
	Status                  string                `json:"status"`
	TimeLeft                string                `json:"timeleft,omitempty"`
	EstimatedCompletionTime string                `json:"estimatedCompletionTime"`
	Protocol                string                `json:"protocol"` // "usenet" or "torrent"
	Indexer                 string                `json:"indexer"`
	DownloadClient          string                `json:"downloadClient"`
	Size                    int64                 `json:"size"`
	SizeLeft                int64                 `json:"sizeleft"`
	CustomFormatScore       int                   `json:"customFormatScore"`
	TrackedDownloadStatus   string                `json:"trackedDownloadStatus"`
	TrackedDownloadState    string                `json:"trackedDownloadState"`
	StatusMessages          []RadarrStatusMessage `json:"statusMessages"`
	ErrorMessage            string                `json:"errorMessage"`
	DownloadId              string                `json:"downloadId"`
	Movie                   RadarrMovie           `json:"movie"`
}

RadarrQueueRecord represents a record in the Radarr queue

type RadarrQueueResponse

type RadarrQueueResponse struct {
	Page          int                 `json:"page"`
	PageSize      int                 `json:"pageSize"`
	SortKey       string              `json:"sortKey"`
	SortDirection string              `json:"sortDirection"`
	TotalRecords  int                 `json:"totalRecords"`
	Records       []RadarrQueueRecord `json:"records"`
}

RadarrQueueResponse represents the queue response from Radarr API

type RadarrQueueStats added in v0.3.0

type RadarrQueueStats struct {
	TotalRecords     int   `json:"totalRecords"`     // Total number of records in the queue
	DownloadingCount int   `json:"downloadingCount"` // Number of items currently downloading
	TotalSize        int64 `json:"totalSize"`        // Total size of all items in the queue
}

RadarrQueueStats represents statistics about the Radarr queue

type RadarrStatusMessage

type RadarrStatusMessage struct {
	Title    string   `json:"title"`
	Messages []string `json:"messages"`
}

RadarrStatusMessage represents detailed status information for a queue record

type Rating

type Rating struct {
	Value float64 `json:"value"`
	Votes int     `json:"votes"`
}

Rating represents a single rating source

type Ratings

type Ratings struct {
	Tmdb  Rating `json:"tmdb"`
	Imdb  Rating `json:"imdb"`
	Value int    `json:"value"`
	Votes int    `json:"votes"`
}

Ratings represents rating information for a movie

type ReadarrQueueDeleteOptions added in v0.3.0

type ReadarrQueueDeleteOptions struct {
	RemoveFromClient bool `json:"removeFromClient"`
	Blocklist        bool `json:"blocklist"`
	SkipRedownload   bool `json:"skipRedownload"`
	ChangeCategory   bool `json:"changeCategory"`
}

ReadarrQueueDeleteOptions represents options for deleting a queue item.

type ReadarrQueueItem added in v0.3.0

type ReadarrQueueItem struct {
	ID                    int                    `json:"id"`
	Title                 string                 `json:"title"`
	Status                string                 `json:"status"`
	TimeLeft              string                 `json:"timeleft,omitempty"`
	EstimatedCompletionAt string                 `json:"estimatedCompletionTime"`
	Protocol              string                 `json:"protocol"`
	Indexer               string                 `json:"indexer"`
	DownloadClient        string                 `json:"downloadClient"`
	Size                  int64                  `json:"size"`
	SizeLeft              int64                  `json:"sizeleft"`
	CustomFormatScore     int                    `json:"customFormatScore"`
	TrackedDownloadStatus string                 `json:"trackedDownloadStatus"`
	TrackedDownloadState  string                 `json:"trackedDownloadState"`
	StatusMessages        []ReadarrStatusMessage `json:"statusMessages"`
	ErrorMessage          string                 `json:"errorMessage"`
	DownloadID            string                 `json:"downloadId"`
}

ReadarrQueueItem represents a record in the Readarr queue.

type ReadarrQueueResponse added in v0.3.0

type ReadarrQueueResponse struct {
	Page          int                `json:"page"`
	PageSize      int                `json:"pageSize"`
	SortKey       string             `json:"sortKey"`
	SortDirection string             `json:"sortDirection"`
	TotalRecords  int                `json:"totalRecords"`
	Records       []ReadarrQueueItem `json:"records"`
}

ReadarrQueueResponse represents the queue response from Readarr API.

type ReadarrStatusMessage added in v0.3.0

type ReadarrStatusMessage struct {
	Title    string   `json:"title"`
	Messages []string `json:"messages"`
}

ReadarrStatusMessage represents detailed status information for a queue record.

type RegisterRequest

type RegisterRequest struct {
	Username string `json:"username" binding:"required,min=3,max=32"`
	Email    string `json:"email" binding:"required,email"`
	Password string `json:"password" binding:"required,min=8"`
}

RegisterRequest represents the registration data

type Release added in v0.3.0

type Release struct {
	ID              int            `json:"id"`
	FilterStatus    string         `json:"filter_status"`
	Rejections      []string       `json:"rejections"`
	Indexer         Indexer        `json:"indexer"`
	Filter          string         `json:"filter"`
	Protocol        string         `json:"protocol"`
	Implementation  string         `json:"implementation"`
	Timestamp       time.Time      `json:"timestamp"`
	Type            ReleaseType    `json:"type"`
	InfoURL         string         `json:"info_url"`
	DownloadURL     string         `json:"download_url"`
	GroupID         string         `json:"group_id"`
	TorrentID       string         `json:"torrent_id"`
	Name            string         `json:"name"`
	NormalizedHash  string         `json:"normalized_hash"`
	Size            int64          `json:"size"`
	Title           string         `json:"title"`
	SubTitle        string         `json:"sub_title"`
	Category        string         `json:"category"`
	Season          int            `json:"season"`
	Episode         int            `json:"episode"`
	Year            int            `json:"year"`
	Month           int            `json:"month"`
	Day             int            `json:"day"`
	Resolution      string         `json:"resolution"`
	Source          string         `json:"source"`
	Codec           []string       `json:"codec"`
	Container       string         `json:"container"`
	HDR             []string       `json:"hdr"`
	Group           string         `json:"group"`
	Proper          bool           `json:"proper"`
	Repack          bool           `json:"repack"`
	Website         string         `json:"website"`
	Hybrid          bool           `json:"hybrid"`
	Edition         []string       `json:"edition"`
	Cut             []string       `json:"cut"`
	MediaProcessing string         `json:"media_processing"`
	Origin          string         `json:"origin"`
	Uploader        string         `json:"uploader"`
	PreTime         string         `json:"pre_time"`
	ActionStatus    []ActionStatus `json:"action_status"`
}

type ReleaseType added in v0.3.0

type ReleaseType string

ReleaseType is a custom type that can handle both string and number types

func (*ReleaseType) UnmarshalJSON added in v0.3.0

func (rt *ReleaseType) UnmarshalJSON(data []byte) error

type ReleasesResponse added in v0.3.0

type ReleasesResponse struct {
	Data       []Release `json:"data"`
	Count      int       `json:"count"`
	NextCursor int       `json:"next_cursor"`
}

type RequestsResponse

type RequestsResponse struct {
	PageInfo struct {
		Pages    int `json:"pages"`
		PageSize int `json:"pageSize"`
		Results  int `json:"results"`
		Page     int `json:"page"`
	} `json:"pageInfo"`
	Results []MediaRequest `json:"results"`
}

type RequestsStats

type RequestsStats struct {
	PendingCount int            `json:"pendingCount"`
	Requests     []MediaRequest `json:"requests"`
}

type SabnzbdHistory added in v0.3.0

type SabnzbdHistory struct {
	NoOfSlots int                  `json:"noofslots"`
	Slots     []SabnzbdHistorySlot `json:"slots"`
}

type SabnzbdHistoryEnvelope added in v0.3.0

type SabnzbdHistoryEnvelope struct {
	History SabnzbdHistory `json:"history"`
}

type SabnzbdHistorySlot added in v0.3.0

type SabnzbdHistorySlot struct {
	NzoID       string `json:"nzo_id"`
	Name        string `json:"name"`
	Status      string `json:"status"`
	FailMessage string `json:"fail_message"`
	Category    string `json:"category"`
	Size        string `json:"size"`
	Completed   int64  `json:"completed"`
}

type SabnzbdQueue added in v0.3.0

type SabnzbdQueue struct {
	Version         string             `json:"version"`
	Status          string             `json:"status"`
	Paused          bool               `json:"paused"`
	Speed           string             `json:"speed"`
	KBPerSec        string             `json:"kbpersec"`
	TimeLeft        string             `json:"timeleft"`
	SizeLeft        string             `json:"sizeleft"`
	Size            string             `json:"size"`
	MBLeft          string             `json:"mbleft"`
	MB              string             `json:"mb"`
	NoOfSlots       string             `json:"noofslots"`
	NoOfSlotsTotal  string             `json:"noofslots_total"`
	Diskspace1      string             `json:"diskspace1"`
	Diskspace2      string             `json:"diskspace2"`
	DiskspaceTotal1 string             `json:"diskspacetotal1"`
	DiskspaceTotal2 string             `json:"diskspacetotal2"`
	Diskspace1Norm  string             `json:"diskspace1_norm"`
	Diskspace2Norm  string             `json:"diskspace2_norm"`
	HaveWarnings    string             `json:"have_warnings"`
	SpeedLimitAbs   string             `json:"speedlimit_abs"`
	Slots           []SabnzbdQueueSlot `json:"slots"`
}

type SabnzbdQueueEnvelope added in v0.3.0

type SabnzbdQueueEnvelope struct {
	Queue SabnzbdQueue `json:"queue"`
}

type SabnzbdQueueSlot added in v0.3.0

type SabnzbdQueueSlot struct {
	NzoID      string `json:"nzo_id"`
	Filename   string `json:"filename"`
	Status     string `json:"status"`
	Size       string `json:"size"`
	SizeLeft   string `json:"sizeleft"`
	Percentage string `json:"percentage"`
	TimeLeft   string `json:"timeleft"`
	Category   string `json:"cat"`
	Priority   string `json:"priority"`
}

type SabnzbdSummaryResponse added in v0.3.0

type SabnzbdSummaryResponse struct {
	Queue          SabnzbdQueue         `json:"queue"`
	FailedCount    int                  `json:"failedCount"`
	RecentFailures []SabnzbdHistorySlot `json:"recentFailures"`
}

type SabnzbdVersionEnvelope added in v0.3.0

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

type Series added in v0.3.0

type Series struct {
	ID               int    `json:"id"`
	Title            string `json:"title"`
	Path             string `json:"path"`
	Year             int    `json:"year"`
	Status           string `json:"status"`
	Overview         string `json:"overview"`
	Network          string `json:"network"`
	AirTime          string `json:"airTime"`
	Monitored        bool   `json:"monitored"`
	QualityProfileID int    `json:"qualityProfileId"`
	SeasonFolder     bool   `json:"seasonFolder"`
	Runtime          int    `json:"runtime"`
	TvdbID           int    `json:"tvdbId"`
	TvRageID         int    `json:"tvRageId"`
	TvMazeID         int    `json:"tvMazeId"`
	FirstAired       string `json:"firstAired"`
	LastAired        string `json:"lastAired"`
	SeriesType       string `json:"seriesType"`
	CleanTitle       string `json:"cleanTitle"`
	ImdbID           string `json:"imdbId"`
	TitleSlug        string `json:"titleSlug"`
}

Series represents a TV series in Sonarr

type ServiceConfigResponse

type ServiceConfigResponse struct {
	InstanceID  string `json:"instanceId"`
	DisplayName string `json:"displayName"`
	URL         string `json:"url"`
	APIKey      string `json:"apiKey,omitempty"`
}

type ServiceHealth

type ServiceHealth struct {
	Status          string    `json:"status"`
	ResponseTime    int64     `json:"responseTime"`
	LastChecked     time.Time `json:"lastChecked"`
	Message         string    `json:"message"`
	UpdateAvailable bool      `json:"updateAvailable"`
	Version         string    `json:"version,omitempty"`
}

type SessionData

type SessionData struct {
	ExpiresAt time.Time `json:"expires_at"`
	UserID    int64     `json:"user_id,omitempty"`   // Added for built-in auth
	AuthType  string    `json:"auth_type,omitempty"` // "oidc" or "builtin"
}

SessionData holds the session information

type SonarrQueueDeleteOptions

type SonarrQueueDeleteOptions struct {
	RemoveFromClient bool `json:"removeFromClient"`
	Blocklist        bool `json:"blocklist"`
	SkipRedownload   bool `json:"skipRedownload"`
	ChangeCategory   bool `json:"changeCategory"`
}

SonarrQueueDeleteOptions represents the options for deleting a queue item in Sonarr

type SonarrQueueResponse

type SonarrQueueResponse struct {
	Page          int           `json:"page"`
	PageSize      int           `json:"pageSize"`
	SortKey       string        `json:"sortKey"`
	SortDirection string        `json:"sortDirection"`
	TotalRecords  int           `json:"totalRecords"`
	Records       []QueueRecord `json:"records"`
}

SonarrQueueResponse represents the queue response from Sonarr API

type SonarrStatsResponse

type SonarrStatsResponse struct {
	MovieCount       int   `json:"movieCount"`
	EpisodeCount     int   `json:"episodeCount"`
	EpisodeFileCount int   `json:"episodeFileCount"`
	FreeSpaceBytes   int64 `json:"freeSpaceBytes"`
	TotalSpaceBytes  int64 `json:"totalSpaceBytes"`
	Monitored        int   `json:"monitored"`
	Unmonitored      int   `json:"unmonitored"`
	QueuedCount      int   `json:"queuedCount"`
	MissingCount     int   `json:"missingCount"`
}

SonarrStatsResponse represents the stats response from Sonarr API

type SonarrUpdateResponse added in v0.3.0

type SonarrUpdateResponse struct {
	Version     string `json:"version"`
	Installed   bool   `json:"installed"`
	Installable bool   `json:"installable"`
}

SonarrUpdateResponse represents an update response from Sonarr

type StatusMessage

type StatusMessage struct {
	Title    string   `json:"title"`
	Messages []string `json:"messages"`
}

StatusMessage represents a status message in the queue

type StatusResponse

type StatusResponse struct {
	Version         string `json:"version"`
	CommitTag       string `json:"commitTag"`
	Status          int    `json:"status"`
	UpdateAvailable bool   `json:"updateAvailable"`
}

type TraefikCertificate added in v0.3.0

type TraefikCertificate struct {
	CommonName       string   `json:"commonName,omitempty"`
	Serial           string   `json:"serial,omitempty"`
	SANs             []string `json:"sans,omitempty"`
	NotAfter         string   `json:"notAfter"`
	NotAfterUnix     int64    `json:"notAfterUnix"`
	ExpiresInSeconds int64    `json:"expiresInSeconds"`
	Status           string   `json:"status"`
}

type TraefikCertificateSummary added in v0.3.0

type TraefikCertificateSummary struct {
	Total               int                  `json:"total"`
	Expired             int                  `json:"expired"`
	ExpiringSoon        int                  `json:"expiringSoon"`
	NextExpiry          string               `json:"nextExpiry,omitempty"`
	NextExpiryUnix      int64                `json:"nextExpiryUnix,omitempty"`
	NextExpiryInSeconds int64                `json:"nextExpiryInSeconds,omitempty"`
	MetricsURL          string               `json:"metricsUrl,omitempty"`
	MetricName          string               `json:"metricName,omitempty"`
	Certificates        []TraefikCertificate `json:"certificates,omitempty"`
}

type TraefikFeatures added in v0.3.0

type TraefikFeatures struct {
	Tracing   string `json:"tracing"`
	Metrics   string `json:"metrics"`
	AccessLog bool   `json:"accessLog"`
}

type TraefikOverviewResponse added in v0.3.0

type TraefikOverviewResponse struct {
	HTTP      TraefikSchemeOverview `json:"http"`
	TCP       TraefikSchemeOverview `json:"tcp"`
	UDP       TraefikSchemeOverview `json:"udp"`
	Features  TraefikFeatures       `json:"features"`
	Providers []string              `json:"providers,omitempty"`
}

type TraefikRouter added in v0.3.0

type TraefikRouter struct {
	Name        string   `json:"name"`
	Provider    string   `json:"provider"`
	Status      string   `json:"status"`
	Rule        string   `json:"rule"`
	Service     string   `json:"service"`
	EntryPoints []string `json:"entryPoints,omitempty"`
	Middlewares []string `json:"middlewares,omitempty"`
	Using       []string `json:"using,omitempty"`
}

type TraefikSchemeOverview added in v0.3.0

type TraefikSchemeOverview struct {
	Routers     *TraefikSection `json:"routers,omitempty"`
	Services    *TraefikSection `json:"services,omitempty"`
	Middlewares *TraefikSection `json:"middlewares,omitempty"`
}

type TraefikSection added in v0.3.0

type TraefikSection struct {
	Total    int `json:"total"`
	Warnings int `json:"warnings"`
	Errors   int `json:"errors"`
}

type TraefikSummaryResponse added in v0.3.0

type TraefikSummaryResponse struct {
	Overview     TraefikOverviewResponse    `json:"overview"`
	IssueRouters []TraefikRouter            `json:"issueRouters"`
	Certificates *TraefikCertificateSummary `json:"certificates,omitempty"`
}

type TraefikVersionResponse added in v0.3.0

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

type UpdateResponse

type UpdateResponse struct {
	Version     string    `json:"version"`
	Branch      string    `json:"branch"`
	ReleaseDate time.Time `json:"releaseDate"`
	FileName    string    `json:"fileName"`
	URL         string    `json:"url"`
	Installed   bool      `json:"installed"`
	InstalledOn time.Time `json:"installedOn"`
	Installable bool      `json:"installable"`
	Latest      bool      `json:"latest"`
	Changes     Changes   `json:"changes"`
	Hash        string    `json:"hash"`
}

type UptimeKumaMonitor added in v0.3.0

type UptimeKumaMonitor struct {
	ID             string `json:"id"`
	Name           string `json:"name"`
	Type           string `json:"type"`
	URL            string `json:"url,omitempty"`
	Status         string `json:"status"`
	ResponseTimeMs int64  `json:"responseTimeMs,omitempty"`
}

type UptimeKumaSummaryResponse added in v0.3.0

type UptimeKumaSummaryResponse struct {
	Monitors []UptimeKumaMonitor `json:"monitors"`
}

type User

type User struct {
	ID           int64     `json:"id"`
	Username     string    `json:"username"`
	Email        string    `json:"email"`
	PasswordHash string    `json:"-"`
	CreatedAt    time.Time `json:"created_at"`
	UpdatedAt    time.Time `json:"updated_at"`
}

User represents a user in the system

type VersionResponse added in v0.3.0

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

type WebhookProxyRequest

type WebhookProxyRequest struct {
	TargetUrl string `json:"targetUrl"`
	APIKey    string `json:"apiKey"`
}

Jump to

Keyboard shortcuts

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