// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.

package operations

import (
	"github.com/LukeHagar/plexgo/models/components"
	"net/http"
)

type Feature struct {
	Directory []components.Directory `json:"Directory,omitempty"`
	Key       *string                `json:"key,omitempty"`
	Type      *string                `json:"type,omitempty"`
}

func (f *Feature) GetDirectory() []components.Directory {
	if f == nil {
		return nil
	}
	return f.Directory
}

func (f *Feature) GetKey() *string {
	if f == nil {
		return nil
	}
	return f.Key
}

func (f *Feature) GetType() *string {
	if f == nil {
		return nil
	}
	return f.Type
}

// ListProvidersMediaContainer - `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
// Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
// The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
type ListProvidersMediaContainer struct {
	// A unique identifier for the provider, e.g. `com.plexapp.plugins.library`.
	Identifier *string `json:"identifier,omitempty"`
	// The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
	//
	Offset *int64 `json:"offset,omitempty"`
	Size   *int64 `json:"size,omitempty"`
	// The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
	//
	TotalSize            *int64  `json:"totalSize,omitempty"`
	AllowCameraUpload    *bool   `json:"allowCameraUpload,omitempty"`
	AllowChannelAccess   *bool   `json:"allowChannelAccess,omitempty"`
	AllowMediaDeletion   *bool   `json:"allowMediaDeletion,omitempty"`
	AllowSharing         *bool   `json:"allowSharing,omitempty"`
	AllowSync            *bool   `json:"allowSync,omitempty"`
	AllowTuners          *bool   `json:"allowTuners,omitempty"`
	BackgroundProcessing *bool   `json:"backgroundProcessing,omitempty"`
	Certificate          *bool   `json:"certificate,omitempty"`
	CompanionProxy       *bool   `json:"companionProxy,omitempty"`
	CountryCode          *string `json:"countryCode,omitempty"`
	Diagnostics          *string `json:"diagnostics,omitempty"`
	EventStream          *bool   `json:"eventStream,omitempty"`
	FriendlyName         *string `json:"friendlyName,omitempty"`
	HubSearch            *bool   `json:"hubSearch,omitempty"`
	ItemClusters         *bool   `json:"itemClusters,omitempty"`
	Livetv               *int64  `json:"livetv,omitempty"`
	MachineIdentifier    any     `json:"machineIdentifier,omitempty"`
	MediaProviders       *bool   `json:"mediaProviders,omitempty"`
	Multiuser            *bool   `json:"multiuser,omitempty"`
	MusicAnalysis        *int64  `json:"musicAnalysis,omitempty"`
	MyPlex               *bool   `json:"myPlex,omitempty"`
	MyPlexMappingState   any     `json:"myPlexMappingState,omitempty"`
	MyPlexSigninState    any     `json:"myPlexSigninState,omitempty"`
	MyPlexSubscription   *bool   `json:"myPlexSubscription,omitempty"`
	MyPlexUsername       *string `json:"myPlexUsername,omitempty"`
	OfflineTranscode     any     `json:"offlineTranscode,omitempty"`
	// A comma-separated list of features which are enabled for the server owner
	OwnerFeatures                 *string `json:"ownerFeatures,omitempty"`
	Platform                      *string `json:"platform,omitempty"`
	PlatformVersion               *string `json:"platformVersion,omitempty"`
	PluginHost                    *bool   `json:"pluginHost,omitempty"`
	PushNotifications             *bool   `json:"pushNotifications,omitempty"`
	ReadOnlyLibraries             *bool   `json:"readOnlyLibraries,omitempty"`
	StreamingBrainABRVersion      *int64  `json:"streamingBrainABRVersion,omitempty"`
	StreamingBrainVersion         *int64  `json:"streamingBrainVersion,omitempty"`
	Sync                          *bool   `json:"sync,omitempty"`
	TranscoderActiveVideoSessions *int64  `json:"transcoderActiveVideoSessions,omitempty"`
	TranscoderAudio               *bool   `json:"transcoderAudio,omitempty"`
	TranscoderLyrics              *bool   `json:"transcoderLyrics,omitempty"`
	TranscoderPhoto               *bool   `json:"transcoderPhoto,omitempty"`
	TranscoderSubtitles           *bool   `json:"transcoderSubtitles,omitempty"`
	TranscoderVideo               *bool   `json:"transcoderVideo,omitempty"`
	// The suggested video quality bitrates to present to the user
	TranscoderVideoBitrates  any     `json:"transcoderVideoBitrates,omitempty"`
	TranscoderVideoQualities *string `json:"transcoderVideoQualities,omitempty"`
	// The suggested video resolutions to the above quality bitrates
	TranscoderVideoResolutions any       `json:"transcoderVideoResolutions,omitempty"`
	UpdatedAt                  *int64    `json:"updatedAt,omitempty"`
	Updater                    *bool     `json:"updater,omitempty"`
	Version                    *string   `json:"version,omitempty"`
	VoiceSearch                *bool     `json:"voiceSearch,omitempty"`
	Feature                    []Feature `json:"Feature,omitempty"`
	// A comma-separated list of default protocols for the provider, which can be:
	// - `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis.
	Protocols *string `json:"protocols,omitempty"`
	// The title of the provider.
	Title *string `json:"title,omitempty"`
	// This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`).
	Types *string `json:"types,omitempty"`
}

func (l *ListProvidersMediaContainer) GetIdentifier() *string {
	if l == nil {
		return nil
	}
	return l.Identifier
}

func (l *ListProvidersMediaContainer) GetOffset() *int64 {
	if l == nil {
		return nil
	}
	return l.Offset
}

func (l *ListProvidersMediaContainer) GetSize() *int64 {
	if l == nil {
		return nil
	}
	return l.Size
}

func (l *ListProvidersMediaContainer) GetTotalSize() *int64 {
	if l == nil {
		return nil
	}
	return l.TotalSize
}

func (l *ListProvidersMediaContainer) GetAllowCameraUpload() *bool {
	if l == nil {
		return nil
	}
	return l.AllowCameraUpload
}

func (l *ListProvidersMediaContainer) GetAllowChannelAccess() *bool {
	if l == nil {
		return nil
	}
	return l.AllowChannelAccess
}

func (l *ListProvidersMediaContainer) GetAllowMediaDeletion() *bool {
	if l == nil {
		return nil
	}
	return l.AllowMediaDeletion
}

func (l *ListProvidersMediaContainer) GetAllowSharing() *bool {
	if l == nil {
		return nil
	}
	return l.AllowSharing
}

func (l *ListProvidersMediaContainer) GetAllowSync() *bool {
	if l == nil {
		return nil
	}
	return l.AllowSync
}

func (l *ListProvidersMediaContainer) GetAllowTuners() *bool {
	if l == nil {
		return nil
	}
	return l.AllowTuners
}

func (l *ListProvidersMediaContainer) GetBackgroundProcessing() *bool {
	if l == nil {
		return nil
	}
	return l.BackgroundProcessing
}

func (l *ListProvidersMediaContainer) GetCertificate() *bool {
	if l == nil {
		return nil
	}
	return l.Certificate
}

func (l *ListProvidersMediaContainer) GetCompanionProxy() *bool {
	if l == nil {
		return nil
	}
	return l.CompanionProxy
}

func (l *ListProvidersMediaContainer) GetCountryCode() *string {
	if l == nil {
		return nil
	}
	return l.CountryCode
}

func (l *ListProvidersMediaContainer) GetDiagnostics() *string {
	if l == nil {
		return nil
	}
	return l.Diagnostics
}

func (l *ListProvidersMediaContainer) GetEventStream() *bool {
	if l == nil {
		return nil
	}
	return l.EventStream
}

func (l *ListProvidersMediaContainer) GetFriendlyName() *string {
	if l == nil {
		return nil
	}
	return l.FriendlyName
}

func (l *ListProvidersMediaContainer) GetHubSearch() *bool {
	if l == nil {
		return nil
	}
	return l.HubSearch
}

func (l *ListProvidersMediaContainer) GetItemClusters() *bool {
	if l == nil {
		return nil
	}
	return l.ItemClusters
}

func (l *ListProvidersMediaContainer) GetLivetv() *int64 {
	if l == nil {
		return nil
	}
	return l.Livetv
}

func (l *ListProvidersMediaContainer) GetMachineIdentifier() any {
	if l == nil {
		return nil
	}
	return l.MachineIdentifier
}

func (l *ListProvidersMediaContainer) GetMediaProviders() *bool {
	if l == nil {
		return nil
	}
	return l.MediaProviders
}

func (l *ListProvidersMediaContainer) GetMultiuser() *bool {
	if l == nil {
		return nil
	}
	return l.Multiuser
}

func (l *ListProvidersMediaContainer) GetMusicAnalysis() *int64 {
	if l == nil {
		return nil
	}
	return l.MusicAnalysis
}

func (l *ListProvidersMediaContainer) GetMyPlex() *bool {
	if l == nil {
		return nil
	}
	return l.MyPlex
}

func (l *ListProvidersMediaContainer) GetMyPlexMappingState() any {
	if l == nil {
		return nil
	}
	return l.MyPlexMappingState
}

func (l *ListProvidersMediaContainer) GetMyPlexSigninState() any {
	if l == nil {
		return nil
	}
	return l.MyPlexSigninState
}

func (l *ListProvidersMediaContainer) GetMyPlexSubscription() *bool {
	if l == nil {
		return nil
	}
	return l.MyPlexSubscription
}

func (l *ListProvidersMediaContainer) GetMyPlexUsername() *string {
	if l == nil {
		return nil
	}
	return l.MyPlexUsername
}

func (l *ListProvidersMediaContainer) GetOfflineTranscode() any {
	if l == nil {
		return nil
	}
	return l.OfflineTranscode
}

func (l *ListProvidersMediaContainer) GetOwnerFeatures() *string {
	if l == nil {
		return nil
	}
	return l.OwnerFeatures
}

func (l *ListProvidersMediaContainer) GetPlatform() *string {
	if l == nil {
		return nil
	}
	return l.Platform
}

func (l *ListProvidersMediaContainer) GetPlatformVersion() *string {
	if l == nil {
		return nil
	}
	return l.PlatformVersion
}

func (l *ListProvidersMediaContainer) GetPluginHost() *bool {
	if l == nil {
		return nil
	}
	return l.PluginHost
}

func (l *ListProvidersMediaContainer) GetPushNotifications() *bool {
	if l == nil {
		return nil
	}
	return l.PushNotifications
}

func (l *ListProvidersMediaContainer) GetReadOnlyLibraries() *bool {
	if l == nil {
		return nil
	}
	return l.ReadOnlyLibraries
}

func (l *ListProvidersMediaContainer) GetStreamingBrainABRVersion() *int64 {
	if l == nil {
		return nil
	}
	return l.StreamingBrainABRVersion
}

func (l *ListProvidersMediaContainer) GetStreamingBrainVersion() *int64 {
	if l == nil {
		return nil
	}
	return l.StreamingBrainVersion
}

func (l *ListProvidersMediaContainer) GetSync() *bool {
	if l == nil {
		return nil
	}
	return l.Sync
}

func (l *ListProvidersMediaContainer) GetTranscoderActiveVideoSessions() *int64 {
	if l == nil {
		return nil
	}
	return l.TranscoderActiveVideoSessions
}

func (l *ListProvidersMediaContainer) GetTranscoderAudio() *bool {
	if l == nil {
		return nil
	}
	return l.TranscoderAudio
}

func (l *ListProvidersMediaContainer) GetTranscoderLyrics() *bool {
	if l == nil {
		return nil
	}
	return l.TranscoderLyrics
}

func (l *ListProvidersMediaContainer) GetTranscoderPhoto() *bool {
	if l == nil {
		return nil
	}
	return l.TranscoderPhoto
}

func (l *ListProvidersMediaContainer) GetTranscoderSubtitles() *bool {
	if l == nil {
		return nil
	}
	return l.TranscoderSubtitles
}

func (l *ListProvidersMediaContainer) GetTranscoderVideo() *bool {
	if l == nil {
		return nil
	}
	return l.TranscoderVideo
}

func (l *ListProvidersMediaContainer) GetTranscoderVideoBitrates() any {
	if l == nil {
		return nil
	}
	return l.TranscoderVideoBitrates
}

func (l *ListProvidersMediaContainer) GetTranscoderVideoQualities() *string {
	if l == nil {
		return nil
	}
	return l.TranscoderVideoQualities
}

func (l *ListProvidersMediaContainer) GetTranscoderVideoResolutions() any {
	if l == nil {
		return nil
	}
	return l.TranscoderVideoResolutions
}

func (l *ListProvidersMediaContainer) GetUpdatedAt() *int64 {
	if l == nil {
		return nil
	}
	return l.UpdatedAt
}

func (l *ListProvidersMediaContainer) GetUpdater() *bool {
	if l == nil {
		return nil
	}
	return l.Updater
}

func (l *ListProvidersMediaContainer) GetVersion() *string {
	if l == nil {
		return nil
	}
	return l.Version
}

func (l *ListProvidersMediaContainer) GetVoiceSearch() *bool {
	if l == nil {
		return nil
	}
	return l.VoiceSearch
}

func (l *ListProvidersMediaContainer) GetFeature() []Feature {
	if l == nil {
		return nil
	}
	return l.Feature
}

func (l *ListProvidersMediaContainer) GetProtocols() *string {
	if l == nil {
		return nil
	}
	return l.Protocols
}

func (l *ListProvidersMediaContainer) GetTitle() *string {
	if l == nil {
		return nil
	}
	return l.Title
}

func (l *ListProvidersMediaContainer) GetTypes() *string {
	if l == nil {
		return nil
	}
	return l.Types
}

// ListProvidersResponseBody - OK
type ListProvidersResponseBody struct {
	MediaContainer *ListProvidersMediaContainer `json:"MediaContainer,omitempty"`
}

func (l *ListProvidersResponseBody) GetMediaContainer() *ListProvidersMediaContainer {
	if l == nil {
		return nil
	}
	return l.MediaContainer
}

type ListProvidersResponse struct {
	// HTTP response content type for this operation
	ContentType string
	// HTTP response status code for this operation
	StatusCode int
	// Raw HTTP response; suitable for custom response parsing
	RawResponse *http.Response
	// OK
	Object *ListProvidersResponseBody
}

func (l *ListProvidersResponse) GetContentType() string {
	if l == nil {
		return ""
	}
	return l.ContentType
}

func (l *ListProvidersResponse) GetStatusCode() int {
	if l == nil {
		return 0
	}
	return l.StatusCode
}

func (l *ListProvidersResponse) GetRawResponse() *http.Response {
	if l == nil {
		return nil
	}
	return l.RawResponse
}

func (l *ListProvidersResponse) GetObject() *ListProvidersResponseBody {
	if l == nil {
		return nil
	}
	return l.Object
}
