diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index cd60d46..ccdfbb4 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 5d77204e-e413-4fd0-a14a-bad3aee2247a management: - docChecksum: 9f62ea35c6168986c8e3557d5df50b99 + docChecksum: f387ae03f10decba230886eaab322b20 docVersion: 0.0.3 speakeasyVersion: 1.404.5 generationVersion: 2.426.2 - releaseVersion: 0.8.3 - configChecksum: 7acd189d39d792696f68aef7f53ad9cf + releaseVersion: 0.8.4 + configChecksum: 533affc20b65c15402ffd92dfcb69f3b repoURL: https://github.com/LukeHagar/plexswift.git features: swift: diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index e992ebc..30c1909 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -12,7 +12,7 @@ generation: auth: oAuth2ClientCredentialsEnabled: true swift: - version: 0.8.3 + version: 0.8.4 author: LukeHagar description: Swift Client SDK Generated by Speakeasy imports: diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 93ecba1..e166031 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -11,7 +11,7 @@ targets: plexswift: source: plexapi codeSamplesNamespace: code-samples-swift-plexswift - codeSamplesRevisionDigest: sha256:561a22e563c724e4842e763f8f56e47a04fe4c85aff5729d3f887d9633507bda + codeSamplesRevisionDigest: sha256:20106c25ec86489069579bcd149cfca15f0066540312450af1e531dce819d6db outLocation: /github/workspace/repo workflow: workflowVersion: 1.0.0 diff --git a/README.md b/README.md index 30455d5..fa096e2 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ You can add `plexswift` to your project directly in Xcode `(File > Add Packages. ```bash dependencies: [ - .package(url: "https://github.com/LukeHagar/plexswift.git", .upToNextMajor(from: "0.8.3")) + .package(url: "https://github.com/LukeHagar/plexswift.git", .upToNextMajor(from: "0.8.4")) ] ``` @@ -276,7 +276,7 @@ case .empty: Certain parameters are configured globally. These parameters may be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, These global values will be used as defaults on the operations that use them. When such operations are called, there is a place in each to override the global value, if needed. -For example, you can set `ClientID` to `"gcgzw5rz2xovp84b4vha3a40"` at SDK initialization and then you do not have to pass the same value on calls to operations like `getPin`. But if you want to do so you may, which will locally override the global setting. See the example code below for a demonstration. +For example, you can set `ClientID` to `"gcgzw5rz2xovp84b4vha3a40"` at SDK initialization and then you do not have to pass the same value on calls to operations like `getServerResources`. But if you want to do so you may, which will locally override the global setting. See the example code below for a demonstration. ### Available Globals @@ -301,19 +301,26 @@ This is used to track the client application and its usage import Foundation import Plexswift -let client = Client() +let client = Client(security: .accessToken("")) -let response = try await client.plex.getPin( - request: Operations.GetPinRequest() +let response = try await client.plex.getServerResources( + request: Operations.GetServerResourcesRequest( + includeHttps: .enable, + includeIPv6: .enable, + includeRelay: .enable + ) ) switch response.data { -case .authPinContainer(let authPinContainer): +case .plexDevices(let plexDevices): // Handle response break case .badRequest(let badRequest): // Handle response break +case .unauthorized(let unauthorized): + // Handle response + break case .empty: // Handle empty response break diff --git a/RELEASES.md b/RELEASES.md index fac4b26..6bbfaad 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -712,4 +712,14 @@ Based on: ### Generated - [swift v0.8.3] . ### Releases -- [Swift Package Manager v0.8.3] https://github.com/LukeHagar/plexswift/releases/tag/v0.8.3 - . \ No newline at end of file +- [Swift Package Manager v0.8.3] https://github.com/LukeHagar/plexswift/releases/tag/v0.8.3 - . + +## 2024-09-30 00:08:14 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.404.5 (2.426.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [swift v0.8.4] . +### Releases +- [Swift Package Manager v0.8.4] https://github.com/LukeHagar/plexswift/releases/tag/v0.8.4 - . \ No newline at end of file diff --git a/Sources/Plexswift/internal/models/GetServerResourcesRequest+Serialization.swift b/Sources/Plexswift/internal/models/GetServerResourcesRequest+Serialization.swift index 9446598..ff15f5b 100644 --- a/Sources/Plexswift/internal/models/GetServerResourcesRequest+Serialization.swift +++ b/Sources/Plexswift/internal/models/GetServerResourcesRequest+Serialization.swift @@ -21,6 +21,7 @@ extension Operations.GetServerResourcesRequest: Serializable { extension Operations.GetServerResourcesRequest: QueryParameterSerializable { func serializedQueryParameters(with parameterDefaults: ParameterDefaults?, formatOverride: SerializableFormat?) throws -> [QueryParameter] { let builder = QueryParameterBuilder() + try builder.addQueryParameters(from: clientID, named: "X-Plex-Client-Identifier", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults) try builder.addQueryParameters(from: includeHttps, named: "includeHttps", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults) try builder.addQueryParameters(from: includeIPv6, named: "includeIPv6", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults) try builder.addQueryParameters(from: includeRelay, named: "includeRelay", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults) diff --git a/Sources/Plexswift/models/operations/Features.swift b/Sources/Plexswift/models/operations/Features.swift index 6eef09f..601a10d 100644 --- a/Sources/Plexswift/models/operations/Features.swift +++ b/Sources/Plexswift/models/operations/Features.swift @@ -11,28 +11,43 @@ extension Operations { case trebleShowFeatures = "TREBLE-show-features" case adCountdownTimer = "ad-countdown-timer" case adaptiveBitrate = "adaptive_bitrate" + case albumTypes = "album-types" + case allowDvr = "allow_dvr" case amazonLoopDebug = "amazon-loop-debug" case avodAdAnalysis = "avod-ad-analysis" case avodNewMedia = "avod-new-media" case blacklistGetSignin = "blacklist_get_signin" + case boostVoices = "boost-voices" + case cameraUpload = "camera_upload" case clientRadioStations = "client-radio-stations" case cloudflareTurnstileRequired = "cloudflare-turnstile-required" + case cloudsync = "cloudsync" case collections = "collections" case commentsAndRepliesPushNotifications = "comments_and_replies_push_notifications" case communityAccessPlexTv = "community_access_plex_tv" case companionsSonos = "companions_sonos" + case contentFilter = "content_filter" case customHomeRemoval = "custom-home-removal" case disableHomeUserFriendships = "disable_home_user_friendships" case disableSharingFriendships = "disable_sharing_friendships" + case downloadsGating = "downloads-gating" case drmSupport = "drm_support" + case dvr = "dvr" + case dvrBlockUnsupportedCountries = "dvr-block-unsupported-countries" + case epgRecentChannels = "epg-recent-channels" case excludeRestrictions = "exclude restrictions" case federatedAuth = "federated-auth" case friendRequestPushNotifications = "friend_request_push_notifications" + case grandfatherSync = "grandfather-sync" case guidedUpgrade = "guided-upgrade" + case hardwareTranscoding = "hardware_transcoding" case home = "home" + case hwtranscode = "hwtranscode" + case imaggaV2 = "imagga-v2" case increasePasswordComplexity = "increase-password-complexity" case ios14PrivacyBanner = "ios14-privacy-banner" case iterableNotificationTokens = "iterable-notification-tokens" + case itemClusters = "item_clusters" case keepPaymentMethod = "keep-payment-method" case kevinBacon = "kevin-bacon" case koreaConsent = "korea-consent" @@ -41,26 +56,47 @@ extension Operations { case lightningDvrPivot = "lightning-dvr-pivot" case liveTvSupportIncompleteSegments = "live-tv-support-incomplete-segments" case livetv = "livetv" + case lyrics = "lyrics" case metadataSearch = "metadata_search" + case musicAnalysis = "music-analysis" + case musicVideos = "music_videos" case newPlexPassPrices = "new_plex_pass_prices" case newsProviderSunsetModal = "news-provider-sunset-modal" + case nominatim = "nominatim" + case pass = "pass" case photosFavorites = "photos-favorites" case photosMetadataEdition = "photos-metadata-edition" + case photosV6Edit = "photosV6-edit" + case photosV6TvAlbums = "photosV6-tv-albums" case pmsHealth = "pms_health" + case premiumDashboard = "premium-dashboard" + case premiumMusicMetadata = "premium_music_metadata" case radio = "radio" case rateLimitClientToken = "rate-limit-client-token" case scrobblingServicePlexTv = "scrobbling-service-plex-tv" + case sessionBandwidthRestrictions = "session_bandwidth_restrictions" + case sessionKick = "session_kick" case sharedServerNotification = "shared_server_notification" case sharedSourceNotification = "shared_source_notification" + case signinNotification = "signin_notification" case signinWithApple = "signin_with_apple" + case silenceRemoval = "silence-removal" + case sleepTimer = "sleep-timer" case springServeAdProvider = "spring_serve_ad_provider" + case sync = "sync" + case sweetFades = "sweet-fades" case transcoderCache = "transcoder_cache" + case trailers = "trailers" case tunerSharing = "tuner-sharing" case twoFactorAuthentication = "two-factor-authentication" case unsupportedtuners = "unsupportedtuners" case upgrade3Ds2 = "upgrade-3ds2" + case visualizers = "visualizers" case vodSchema = "vod-schema" case vodCloudflare = "vod_cloudflare" + case volumeLeveling = "volume-leveling" case watchTogetherInvite = "watch-together-invite" + case watchlistRss = "watchlist-rss" case webServerDashboard = "web_server_dashboard" + case webhooks = "webhooks" }} diff --git a/Sources/Plexswift/models/operations/GetServerResourcesRequest.swift b/Sources/Plexswift/models/operations/GetServerResourcesRequest.swift index 6e96c2f..c306b5c 100644 --- a/Sources/Plexswift/models/operations/GetServerResourcesRequest.swift +++ b/Sources/Plexswift/models/operations/GetServerResourcesRequest.swift @@ -5,6 +5,11 @@ import Foundation extension Operations { /// A model object public struct GetServerResourcesRequest: APIValue { + /// The unique identifier for the client application + /// This is used to track the client application and its usage + /// (UUID, serial number, or other number unique per device) + /// + public let clientID: String? /// Include Https entries in the results public let includeHttps: Operations.IncludeHttps? /// Include IPv6 entries in the results @@ -16,13 +21,18 @@ extension Operations { /// Creates an object with the specified parameters /// + /// - Parameter clientID: The unique identifier for the client application + /// This is used to track the client application and its usage + /// (UUID, serial number, or other number unique per device) + /// /// - Parameter includeHttps: Include Https entries in the results /// - Parameter includeIPv6: Include IPv6 entries in the results /// - Parameter includeRelay: Include Relay addresses in the results /// E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 /// /// - public init(includeHttps: Operations.IncludeHttps? = nil, includeIPv6: Operations.IncludeIPv6? = nil, includeRelay: Operations.IncludeRelay? = nil) { + public init(clientID: String? = nil, includeHttps: Operations.IncludeHttps? = nil, includeIPv6: Operations.IncludeIPv6? = nil, includeRelay: Operations.IncludeRelay? = nil) { + self.clientID = clientID self.includeHttps = includeHttps self.includeIPv6 = includeIPv6 self.includeRelay = includeRelay diff --git a/Sources/Plexswift/models/operations/GetTokenDetailsFeatures.swift b/Sources/Plexswift/models/operations/GetTokenDetailsFeatures.swift index f8c8afb..9287d12 100644 --- a/Sources/Plexswift/models/operations/GetTokenDetailsFeatures.swift +++ b/Sources/Plexswift/models/operations/GetTokenDetailsFeatures.swift @@ -11,28 +11,43 @@ extension Operations { case trebleShowFeatures = "TREBLE-show-features" case adCountdownTimer = "ad-countdown-timer" case adaptiveBitrate = "adaptive_bitrate" + case albumTypes = "album-types" + case allowDvr = "allow_dvr" case amazonLoopDebug = "amazon-loop-debug" case avodAdAnalysis = "avod-ad-analysis" case avodNewMedia = "avod-new-media" case blacklistGetSignin = "blacklist_get_signin" + case boostVoices = "boost-voices" + case cameraUpload = "camera_upload" case clientRadioStations = "client-radio-stations" case cloudflareTurnstileRequired = "cloudflare-turnstile-required" + case cloudsync = "cloudsync" case collections = "collections" case commentsAndRepliesPushNotifications = "comments_and_replies_push_notifications" case communityAccessPlexTv = "community_access_plex_tv" case companionsSonos = "companions_sonos" + case contentFilter = "content_filter" case customHomeRemoval = "custom-home-removal" case disableHomeUserFriendships = "disable_home_user_friendships" case disableSharingFriendships = "disable_sharing_friendships" + case downloadsGating = "downloads-gating" case drmSupport = "drm_support" + case dvr = "dvr" + case dvrBlockUnsupportedCountries = "dvr-block-unsupported-countries" + case epgRecentChannels = "epg-recent-channels" case excludeRestrictions = "exclude restrictions" case federatedAuth = "federated-auth" case friendRequestPushNotifications = "friend_request_push_notifications" + case grandfatherSync = "grandfather-sync" case guidedUpgrade = "guided-upgrade" + case hardwareTranscoding = "hardware_transcoding" case home = "home" + case hwtranscode = "hwtranscode" + case imaggaV2 = "imagga-v2" case increasePasswordComplexity = "increase-password-complexity" case ios14PrivacyBanner = "ios14-privacy-banner" case iterableNotificationTokens = "iterable-notification-tokens" + case itemClusters = "item_clusters" case keepPaymentMethod = "keep-payment-method" case kevinBacon = "kevin-bacon" case koreaConsent = "korea-consent" @@ -41,26 +56,47 @@ extension Operations { case lightningDvrPivot = "lightning-dvr-pivot" case liveTvSupportIncompleteSegments = "live-tv-support-incomplete-segments" case livetv = "livetv" + case lyrics = "lyrics" case metadataSearch = "metadata_search" + case musicAnalysis = "music-analysis" + case musicVideos = "music_videos" case newPlexPassPrices = "new_plex_pass_prices" case newsProviderSunsetModal = "news-provider-sunset-modal" + case nominatim = "nominatim" + case pass = "pass" case photosFavorites = "photos-favorites" case photosMetadataEdition = "photos-metadata-edition" + case photosV6Edit = "photosV6-edit" + case photosV6TvAlbums = "photosV6-tv-albums" case pmsHealth = "pms_health" + case premiumDashboard = "premium-dashboard" + case premiumMusicMetadata = "premium_music_metadata" case radio = "radio" case rateLimitClientToken = "rate-limit-client-token" case scrobblingServicePlexTv = "scrobbling-service-plex-tv" + case sessionBandwidthRestrictions = "session_bandwidth_restrictions" + case sessionKick = "session_kick" case sharedServerNotification = "shared_server_notification" case sharedSourceNotification = "shared_source_notification" + case signinNotification = "signin_notification" case signinWithApple = "signin_with_apple" + case silenceRemoval = "silence-removal" + case sleepTimer = "sleep-timer" case springServeAdProvider = "spring_serve_ad_provider" + case sync = "sync" + case sweetFades = "sweet-fades" case transcoderCache = "transcoder_cache" + case trailers = "trailers" case tunerSharing = "tuner-sharing" case twoFactorAuthentication = "two-factor-authentication" case unsupportedtuners = "unsupportedtuners" case upgrade3Ds2 = "upgrade-3ds2" + case visualizers = "visualizers" case vodSchema = "vod-schema" case vodCloudflare = "vod_cloudflare" + case volumeLeveling = "volume-leveling" case watchTogetherInvite = "watch-together-invite" + case watchlistRss = "watchlist-rss" case webServerDashboard = "web_server_dashboard" + case webhooks = "webhooks" }} diff --git a/Sources/Plexswift/models/operations/PostUsersSignInDataAuthenticationFeatures.swift b/Sources/Plexswift/models/operations/PostUsersSignInDataAuthenticationFeatures.swift index 1a324c0..8f62fbf 100644 --- a/Sources/Plexswift/models/operations/PostUsersSignInDataAuthenticationFeatures.swift +++ b/Sources/Plexswift/models/operations/PostUsersSignInDataAuthenticationFeatures.swift @@ -11,28 +11,43 @@ extension Operations { case trebleShowFeatures = "TREBLE-show-features" case adCountdownTimer = "ad-countdown-timer" case adaptiveBitrate = "adaptive_bitrate" + case albumTypes = "album-types" + case allowDvr = "allow_dvr" case amazonLoopDebug = "amazon-loop-debug" case avodAdAnalysis = "avod-ad-analysis" case avodNewMedia = "avod-new-media" case blacklistGetSignin = "blacklist_get_signin" + case boostVoices = "boost-voices" + case cameraUpload = "camera_upload" case clientRadioStations = "client-radio-stations" case cloudflareTurnstileRequired = "cloudflare-turnstile-required" + case cloudsync = "cloudsync" case collections = "collections" case commentsAndRepliesPushNotifications = "comments_and_replies_push_notifications" case communityAccessPlexTv = "community_access_plex_tv" case companionsSonos = "companions_sonos" + case contentFilter = "content_filter" case customHomeRemoval = "custom-home-removal" case disableHomeUserFriendships = "disable_home_user_friendships" case disableSharingFriendships = "disable_sharing_friendships" + case downloadsGating = "downloads-gating" case drmSupport = "drm_support" + case dvr = "dvr" + case dvrBlockUnsupportedCountries = "dvr-block-unsupported-countries" + case epgRecentChannels = "epg-recent-channels" case excludeRestrictions = "exclude restrictions" case federatedAuth = "federated-auth" case friendRequestPushNotifications = "friend_request_push_notifications" + case grandfatherSync = "grandfather-sync" case guidedUpgrade = "guided-upgrade" + case hardwareTranscoding = "hardware_transcoding" case home = "home" + case hwtranscode = "hwtranscode" + case imaggaV2 = "imagga-v2" case increasePasswordComplexity = "increase-password-complexity" case ios14PrivacyBanner = "ios14-privacy-banner" case iterableNotificationTokens = "iterable-notification-tokens" + case itemClusters = "item_clusters" case keepPaymentMethod = "keep-payment-method" case kevinBacon = "kevin-bacon" case koreaConsent = "korea-consent" @@ -41,26 +56,47 @@ extension Operations { case lightningDvrPivot = "lightning-dvr-pivot" case liveTvSupportIncompleteSegments = "live-tv-support-incomplete-segments" case livetv = "livetv" + case lyrics = "lyrics" case metadataSearch = "metadata_search" + case musicAnalysis = "music-analysis" + case musicVideos = "music_videos" case newPlexPassPrices = "new_plex_pass_prices" case newsProviderSunsetModal = "news-provider-sunset-modal" + case nominatim = "nominatim" + case pass = "pass" case photosFavorites = "photos-favorites" case photosMetadataEdition = "photos-metadata-edition" + case photosV6Edit = "photosV6-edit" + case photosV6TvAlbums = "photosV6-tv-albums" case pmsHealth = "pms_health" + case premiumDashboard = "premium-dashboard" + case premiumMusicMetadata = "premium_music_metadata" case radio = "radio" case rateLimitClientToken = "rate-limit-client-token" case scrobblingServicePlexTv = "scrobbling-service-plex-tv" + case sessionBandwidthRestrictions = "session_bandwidth_restrictions" + case sessionKick = "session_kick" case sharedServerNotification = "shared_server_notification" case sharedSourceNotification = "shared_source_notification" + case signinNotification = "signin_notification" case signinWithApple = "signin_with_apple" + case silenceRemoval = "silence-removal" + case sleepTimer = "sleep-timer" case springServeAdProvider = "spring_serve_ad_provider" + case sync = "sync" + case sweetFades = "sweet-fades" case transcoderCache = "transcoder_cache" + case trailers = "trailers" case tunerSharing = "tuner-sharing" case twoFactorAuthentication = "two-factor-authentication" case unsupportedtuners = "unsupportedtuners" case upgrade3Ds2 = "upgrade-3ds2" + case visualizers = "visualizers" case vodSchema = "vod-schema" case vodCloudflare = "vod_cloudflare" + case volumeLeveling = "volume-leveling" case watchTogetherInvite = "watch-together-invite" + case watchlistRss = "watchlist-rss" case webServerDashboard = "web_server_dashboard" + case webhooks = "webhooks" }} diff --git a/Sources/Plexswift/models/operations/PostUsersSignInDataFeatures.swift b/Sources/Plexswift/models/operations/PostUsersSignInDataFeatures.swift index bd6f110..af00d89 100644 --- a/Sources/Plexswift/models/operations/PostUsersSignInDataFeatures.swift +++ b/Sources/Plexswift/models/operations/PostUsersSignInDataFeatures.swift @@ -11,28 +11,43 @@ extension Operations { case trebleShowFeatures = "TREBLE-show-features" case adCountdownTimer = "ad-countdown-timer" case adaptiveBitrate = "adaptive_bitrate" + case albumTypes = "album-types" + case allowDvr = "allow_dvr" case amazonLoopDebug = "amazon-loop-debug" case avodAdAnalysis = "avod-ad-analysis" case avodNewMedia = "avod-new-media" case blacklistGetSignin = "blacklist_get_signin" + case boostVoices = "boost-voices" + case cameraUpload = "camera_upload" case clientRadioStations = "client-radio-stations" case cloudflareTurnstileRequired = "cloudflare-turnstile-required" + case cloudsync = "cloudsync" case collections = "collections" case commentsAndRepliesPushNotifications = "comments_and_replies_push_notifications" case communityAccessPlexTv = "community_access_plex_tv" case companionsSonos = "companions_sonos" + case contentFilter = "content_filter" case customHomeRemoval = "custom-home-removal" case disableHomeUserFriendships = "disable_home_user_friendships" case disableSharingFriendships = "disable_sharing_friendships" + case downloadsGating = "downloads-gating" case drmSupport = "drm_support" + case dvr = "dvr" + case dvrBlockUnsupportedCountries = "dvr-block-unsupported-countries" + case epgRecentChannels = "epg-recent-channels" case excludeRestrictions = "exclude restrictions" case federatedAuth = "federated-auth" case friendRequestPushNotifications = "friend_request_push_notifications" + case grandfatherSync = "grandfather-sync" case guidedUpgrade = "guided-upgrade" + case hardwareTranscoding = "hardware_transcoding" case home = "home" + case hwtranscode = "hwtranscode" + case imaggaV2 = "imagga-v2" case increasePasswordComplexity = "increase-password-complexity" case ios14PrivacyBanner = "ios14-privacy-banner" case iterableNotificationTokens = "iterable-notification-tokens" + case itemClusters = "item_clusters" case keepPaymentMethod = "keep-payment-method" case kevinBacon = "kevin-bacon" case koreaConsent = "korea-consent" @@ -41,26 +56,47 @@ extension Operations { case lightningDvrPivot = "lightning-dvr-pivot" case liveTvSupportIncompleteSegments = "live-tv-support-incomplete-segments" case livetv = "livetv" + case lyrics = "lyrics" case metadataSearch = "metadata_search" + case musicAnalysis = "music-analysis" + case musicVideos = "music_videos" case newPlexPassPrices = "new_plex_pass_prices" case newsProviderSunsetModal = "news-provider-sunset-modal" + case nominatim = "nominatim" + case pass = "pass" case photosFavorites = "photos-favorites" case photosMetadataEdition = "photos-metadata-edition" + case photosV6Edit = "photosV6-edit" + case photosV6TvAlbums = "photosV6-tv-albums" case pmsHealth = "pms_health" + case premiumDashboard = "premium-dashboard" + case premiumMusicMetadata = "premium_music_metadata" case radio = "radio" case rateLimitClientToken = "rate-limit-client-token" case scrobblingServicePlexTv = "scrobbling-service-plex-tv" + case sessionBandwidthRestrictions = "session_bandwidth_restrictions" + case sessionKick = "session_kick" case sharedServerNotification = "shared_server_notification" case sharedSourceNotification = "shared_source_notification" + case signinNotification = "signin_notification" case signinWithApple = "signin_with_apple" + case silenceRemoval = "silence-removal" + case sleepTimer = "sleep-timer" case springServeAdProvider = "spring_serve_ad_provider" + case sync = "sync" + case sweetFades = "sweet-fades" case transcoderCache = "transcoder_cache" + case trailers = "trailers" case tunerSharing = "tuner-sharing" case twoFactorAuthentication = "two-factor-authentication" case unsupportedtuners = "unsupportedtuners" case upgrade3Ds2 = "upgrade-3ds2" + case visualizers = "visualizers" case vodSchema = "vod-schema" case vodCloudflare = "vod_cloudflare" + case volumeLeveling = "volume-leveling" case watchTogetherInvite = "watch-together-invite" + case watchlistRss = "watchlist-rss" case webServerDashboard = "web_server_dashboard" + case webhooks = "webhooks" }} diff --git a/Sources/plexswift/internal/client/URLRequestBuilder.swift b/Sources/plexswift/internal/client/URLRequestBuilder.swift index 27f9df0..46fa798 100644 --- a/Sources/plexswift/internal/client/URLRequestBuilder.swift +++ b/Sources/plexswift/internal/client/URLRequestBuilder.swift @@ -62,7 +62,7 @@ final class URLRequestBuilder: URLRequestConfiguration { urlRequest.setValue(contentType, forHTTPHeaderField: "Content-Type") } - urlRequest.setValue("speakeasy-sdk/swift 0.8.3 2.426.2 0.0.3 plexswift", forHTTPHeaderField: telemetryHeader.headerName) + urlRequest.setValue("speakeasy-sdk/swift 0.8.4 2.426.2 0.0.3 plexswift", forHTTPHeaderField: telemetryHeader.headerName) addSecurityParameters(to: &urlRequest) diff --git a/codeSamples.yaml b/codeSamples.yaml index f32d540..c440249 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -3,66 +3,6 @@ info: title: CodeSamples overlay for swift target version: 0.0.0 actions: - - target: $["paths"]["/clients"]["get"] - update: - x-codeSamples: - - lang: swift - label: getAvailableClients - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.server.getAvailableClients() - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/:/timeline"]["get"] - update: - x-codeSamples: - - lang: swift - label: getTimeline - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.video.getTimeline(\n request: Operations.GetTimelineRequest(\n context: \"home:hub.continueWatching\", \n duration: 10000, \n hasMDE: 1, \n key: \"/library/metadata/23409\", \n playBackTime: 2000, \n playQueueItemID: 1, \n ratingKey: 23409, \n row: 1, \n state: .playing, \n time: 2000\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/library/sections"]["get"] - update: - x-codeSamples: - - lang: swift - label: libraries - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.library.getAllLibraries() - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - target: $["paths"]["/transcode/sessions/{sessionKey}"]["delete"] update: x-codeSamples: @@ -91,29 +31,20 @@ actions: // Handle empty response break } - - target: $["paths"]["/updater/apply"]["put"] + - target: $["paths"]["/butler"]["delete"] update: x-codeSamples: - lang: swift - label: applyUpdates - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.updater.applyUpdates(\n request: Operations.ApplyUpdatesRequest(\n skip: .one, \n tonight: .zero\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/"]["get"] - update: - x-codeSamples: - - lang: swift - label: getServerCapabilities + label: stopAllTasks source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.server.getServerCapabilities() + let response = try await client.butler.stopAllTasks() switch response.data { - case .object(let object): - // Handle response - break case .badRequest(let badRequest): // Handle response break @@ -124,24 +55,23 @@ actions: // Handle empty response break } - - target: $["paths"]["/:/scrobble"]["get"] + - target: $["paths"]["/friends"]["get"] update: x-codeSamples: - lang: swift - label: markPlayed + label: getUserFriends source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.media.markPlayed( - request: Operations.MarkPlayedRequest( - key: 59398 - ) - ) + let response = try await client.plex.getUserFriends() switch response.data { + case .friends(let friends): + // Handle response + break case .badRequest(let badRequest): // Handle response break @@ -158,28 +88,36 @@ actions: - lang: swift label: getLibraryHubs source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.hubs.getLibraryHubs(\n request: Operations.GetLibraryHubsRequest(\n sectionId: 6728.76, \n count: 9010.22, \n onlyTransient: .zero\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/library/recentlyAdded"]["get"] + - target: $["paths"]["/library/sections/{sectionKey}/refresh"]["get"] update: x-codeSamples: - lang: swift - label: library - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getRecentlyAddedLibrary(\n request: Operations.GetRecentlyAddedLibraryRequest(\n type: .season, \n contentDirectoryID: 2, \n includeMeta: .enable, \n pinnedContentDirectoryID: [\n 336778,\n ], \n sectionID: 2, \n xPlexContainerSize: 50, \n xPlexContainerStart: 0\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/media/providers"]["get"] + label: metadata + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getRefreshLibraryMetadata(\n request: Operations.GetRefreshLibraryMetadataRequest(\n sectionKey: 9518, \n force: .one\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/playlists"]["get"] update: x-codeSamples: - lang: swift - label: providers + label: getPlaylists + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.getPlaylists(\n request: Operations.GetPlaylistsRequest(\n playlistType: .audio, \n smart: .zero\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/playlists/{playlistID}"]["put"] + update: + x-codeSamples: + - lang: swift + label: updatePlaylist + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.updatePlaylist(\n request: Operations.UpdatePlaylistRequest(\n playlistID: 3915, \n summary: \"\", \n title: \"\"\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/myplex/account"]["get"] + update: + x-codeSamples: + - lang: swift + label: getMyPlexAccount source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.server.getMediaProviders( - request: Operations.GetMediaProvidersRequest( - xPlexToken: "CV5xoxjTpFKUzBTShsaf" - ) - ) + let response = try await client.server.getMyPlexAccount() switch response.data { case .object(let object): @@ -195,22 +133,36 @@ actions: // Handle empty response break } - - target: $["paths"]["/library/sections/{sectionKey}"]["delete"] + - target: $["paths"]["/library/metadata/{ratingKey}/banner"]["get"] update: x-codeSamples: - lang: swift - label: deleteLibrary + label: image + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.media.getBannerImage(\n request: Operations.GetBannerImageRequest(\n height: 396, \n minSize: 1, \n ratingKey: 9518, \n upscale: 1, \n width: 396, \n xPlexToken: \"CV5xoxjTpFKUzBTShsaf\"\n )\n)\n\nswitch response.data {\ncase .bytes(let bytes):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/hubs"]["get"] + update: + x-codeSamples: + - lang: swift + label: getGlobalHubs + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.hubs.getGlobalHubs(\n request: Operations.GetGlobalHubsRequest(\n count: 1262.49, \n onlyTransient: .one\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/library/hashes"]["get"] + update: + x-codeSamples: + - lang: swift + label: getFileHash + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getFileHash(\n request: Operations.GetFileHashRequest(\n url: \"file://C:\\Image.png&type=13\", \n type: 4462.17\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/log/networked"]["get"] + update: + x-codeSamples: + - lang: swift + label: enablePaperTrail source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.library.deleteLibrary( - request: Operations.DeleteLibraryRequest( - sectionKey: 9518 - ) - ) + let response = try await client.log.enablePaperTrail() switch response.data { case .badRequest(let badRequest): @@ -223,150 +175,6 @@ actions: // Handle empty response break } - - target: $["paths"]["/library/sections/{sectionKey}/search"]["get"] - update: - x-codeSamples: - - lang: swift - label: library - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getSearchLibrary(\n request: Operations.GetSearchLibraryRequest(\n sectionKey: 9518, \n type: .tvShow\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/:/progress"]["post"] - update: - x-codeSamples: - - lang: swift - label: updatePlayProgress - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.media.updatePlayProgress(\n request: Operations.UpdatePlayProgressRequest(\n key: \"\", \n state: \"played\", \n time: 90000\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/companions"]["get"] - update: - x-codeSamples: - - lang: swift - label: getCompanionsData - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.plex.getCompanionsData() - - switch response.data { - case .responseBodies(let responseBodies): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/search"]["get"] - update: - x-codeSamples: - - lang: swift - label: getSearchResults - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.search.getSearchResults( - request: Operations.GetSearchResultsRequest( - query: "110" - ) - ) - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/library/metadata/{ratingKey}/children"]["get"] - update: - x-codeSamples: - - lang: swift - label: getMetadataChildren - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getMetadataChildren(\n request: Operations.GetMetadataChildrenRequest(\n ratingKey: 1539.14, \n includeElements: \"\"\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/statistics/bandwidth"]["get"] - update: - x-codeSamples: - - lang: swift - label: getBandwidthStatistics - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.statistics.getBandwidthStatistics( - request: Operations.GetBandwidthStatisticsRequest( - timespan: 4 - ) - ) - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/playlists"]["post"] - update: - x-codeSamples: - - lang: swift - label: createPlaylist - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.createPlaylist(\n request: Operations.CreatePlaylistRequest(\n smart: .one, \n title: \"\", \n type: .photo, \n uri: \"https://inborn-brochure.biz\", \n playQueueID: 3686.33\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/statistics/media"]["get"] - update: - x-codeSamples: - - lang: swift - label: getStatistics - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.statistics.getStatistics( - request: Operations.GetStatisticsRequest( - timespan: 4 - ) - ) - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - target: $["paths"]["/statistics/resources"]["get"] update: x-codeSamples: @@ -398,28 +206,45 @@ actions: // Handle empty response break } - - target: $["paths"]["/playlists/{playlistID}"]["put"] + - target: $["paths"]["/geoip"]["get"] update: x-codeSamples: - lang: swift - label: updatePlaylist - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.updatePlaylist(\n request: Operations.UpdatePlaylistRequest(\n playlistID: 3915, \n summary: \"\", \n title: \"\"\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/updater/check"]["put"] + label: getGeoData + source: |- + import Foundation + import Plexswift + + let client = Client() + + let response = try await client.plex.getGeoData() + + switch response.data { + case .geoData(let geoData): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/log"]["post"] update: x-codeSamples: - lang: swift - label: checkForUpdates + label: logMultiLine source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.updater.checkForUpdates( - request: Operations.CheckForUpdatesRequest( - download: .one - ) - ) + let response = try await client.log.logMultiLine() switch response.data { case .badRequest(let badRequest): @@ -432,18 +257,34 @@ actions: // Handle empty response break } - - target: $["paths"]["/servers"]["get"] + - target: $["paths"]["/playlists/upload"]["post"] update: x-codeSamples: - lang: swift - label: getServerList + label: uploadPlaylist + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.uploadPlaylist(\n request: Operations.UploadPlaylistRequest(\n force: .zero, \n path: \"/home/barkley/playlist.m3u\", \n sectionID: 1\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/users/signin"]["post"] + update: + x-codeSamples: + - lang: swift + label: data + source: "import Foundation\nimport Plexswift\n\nlet client = Client()\n\nlet response = try await client.authentication.postUsersSignInData(\n request: Operations.PostUsersSignInDataRequest(\n requestBody: Operations.PostUsersSignInDataRequestBody(\n login: \"username@email.com\", \n password: \"password123\", \n rememberMe: false, \n verificationCode: \"123456\"\n )\n )\n)\n\nswitch response.data {\ncase .userPlexAccount(let userPlexAccount):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/statistics/bandwidth"]["get"] + update: + x-codeSamples: + - lang: swift + label: getBandwidthStatistics source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.server.getServerList() + let response = try await client.statistics.getBandwidthStatistics( + request: Operations.GetBandwidthStatisticsRequest( + timespan: 4 + ) + ) switch response.data { case .object(let object): @@ -459,38 +300,23 @@ actions: // Handle empty response break } - - target: $["paths"]["/pins/{pinID}"]["get"] + - target: $["paths"]["/library/sections"]["get"] update: x-codeSamples: - lang: swift - label: getTokenByPinId - source: "import Foundation\nimport Plexswift\n\nlet client = Client()\n\nlet response = try await client.plex.getTokenByPinId(\n request: Operations.GetTokenByPinIdRequest(\n pinID: 408895, \n )\n)\n\nswitch response.data {\ncase .authPinContainer(let authPinContainer):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .object(let object):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/library/hashes"]["get"] - update: - x-codeSamples: - - lang: swift - label: getFileHash - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getFileHash(\n request: Operations.GetFileHashRequest(\n url: \"file://C:\\Image.png&type=13\", \n type: 4462.17\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/library/sections/{sectionKey}/{tag}"]["get"] - update: - x-codeSamples: - - lang: swift - label: items - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getLibraryItems(\n request: Operations.GetLibraryItemsRequest(\n sectionKey: 9518, \n tag: .edition, \n includeGuids: .enable, \n includeMeta: .enable, \n type: .tvShow, \n xPlexContainerSize: 50, \n xPlexContainerStart: 0\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/log"]["post"] - update: - x-codeSamples: - - lang: swift - label: logMultiLine + label: libraries source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.log.logMultiLine() + let response = try await client.library.getAllLibraries() switch response.data { + case .object(let object): + // Handle response + break case .badRequest(let badRequest): // Handle response break @@ -529,115 +355,18 @@ actions: // Handle empty response break } - - target: $["paths"]["/identity"]["get"] + - target: $["paths"]["/clients"]["get"] update: x-codeSamples: - lang: swift - label: identity - source: |- - import Foundation - import Plexswift - - let client = Client() - - let response = try await client.server.getServerIdentity() - - switch response.data { - case .object(let object): - // Handle response - break - case .requestTimeout(let requestTimeout): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/myplex/account"]["get"] - update: - x-codeSamples: - - lang: swift - label: getMyPlexAccount + label: getAvailableClients source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.server.getMyPlexAccount() - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/pins"]["post"] - update: - x-codeSamples: - - lang: swift - label: getPin - source: |- - import Foundation - import Plexswift - - let client = Client() - - let response = try await client.plex.getPin( - request: Operations.GetPinRequest( - strong: false - ) - ) - - switch response.data { - case .authPinContainer(let authPinContainer): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/hubs/home/recentlyAdded"]["get"] - update: - x-codeSamples: - - lang: swift - label: added - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.hubs.getRecentlyAdded(\n request: Operations.GetRecentlyAddedRequest(\n contentDirectoryID: 470161, \n type: .episode, \n includeMeta: .enable, \n pinnedContentDirectoryID: \"\", \n sectionID: 2, \n xPlexContainerSize: 50, \n xPlexContainerStart: 0\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/library/all/top"]["get"] - update: - x-codeSamples: - - lang: swift - label: getTopWatchedContent - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getTopWatchedContent(\n request: Operations.GetTopWatchedContentRequest(\n type: .season, \n includeGuids: 1\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/users/signin"]["post"] - update: - x-codeSamples: - - lang: swift - label: data - source: "import Foundation\nimport Plexswift\n\nlet client = Client()\n\nlet response = try await client.authentication.postUsersSignInData(\n request: Operations.PostUsersSignInDataRequest(\n requestBody: Operations.PostUsersSignInDataRequestBody(\n login: \"username@email.com\", \n password: \"password123\", \n rememberMe: false, \n verificationCode: \"123456\"\n )\n )\n)\n\nswitch response.data {\ncase .userPlexAccount(let userPlexAccount):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/status/sessions"]["get"] - update: - x-codeSamples: - - lang: swift - label: getSessions - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.sessions.getSessions() + let response = try await client.server.getAvailableClients() switch response.data { case .object(let object): @@ -681,18 +410,18 @@ actions: // Handle empty response break } - - target: $["paths"]["/activities"]["get"] + - target: $["paths"]["/butler"]["get"] update: x-codeSamples: - lang: swift - label: getServerActivities + label: getButlerTasks source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.activities.getServerActivities() + let response = try await client.butler.getButlerTasks() switch response.data { case .object(let object): @@ -708,6 +437,600 @@ actions: // Handle empty response break } + - target: $["paths"]["/companions"]["get"] + update: + x-codeSamples: + - lang: swift + label: getCompanionsData + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.plex.getCompanionsData() + + switch response.data { + case .responseBodies(let responseBodies): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/resources"]["get"] + update: + x-codeSamples: + - lang: swift + label: resources + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.plex.getServerResources(\n request: Operations.GetServerResourcesRequest(\n includeHttps: .disable, \n includeIPv6: .disable, \n includeRelay: .enable\n )\n)\n\nswitch response.data {\ncase .plexDevices(let plexDevices):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/search"]["get"] + update: + x-codeSamples: + - lang: swift + label: getSearchResults + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.search.getSearchResults( + request: Operations.GetSearchResultsRequest( + query: "110" + ) + ) + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/devices"]["get"] + update: + x-codeSamples: + - lang: swift + label: getDevices + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.server.getDevices() + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/library/sections/{sectionKey}"]["delete"] + update: + x-codeSamples: + - lang: swift + label: deleteLibrary + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.library.deleteLibrary( + request: Operations.DeleteLibraryRequest( + sectionKey: 9518 + ) + ) + + switch response.data { + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/security/token"]["get"] + update: + x-codeSamples: + - lang: swift + label: getTransientToken + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.authentication.getTransientToken(\n request: Operations.GetTransientTokenRequest(\n scope: .all, \n type: .delegation\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/user"]["get"] + update: + x-codeSamples: + - lang: swift + label: getTokenDetails + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.authentication.getTokenDetails() + + switch response.data { + case .userPlexAccount(let userPlexAccount): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/library/sections/{sectionKey}/search"]["get"] + update: + x-codeSamples: + - lang: swift + label: library + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getSearchLibrary(\n request: Operations.GetSearchLibraryRequest(\n sectionKey: 9518, \n type: .tvShow\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/playlists/{playlistID}/items"]["put"] + update: + x-codeSamples: + - lang: swift + label: addPlaylistContents + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.addPlaylistContents(\n request: Operations.AddPlaylistContentsRequest(\n playlistID: 8502.01, \n uri: \"server://12345/com.plexapp.plugins.library/library/metadata/1\", \n playQueueID: 123\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/updater/check"]["put"] + update: + x-codeSamples: + - lang: swift + label: checkForUpdates + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.updater.checkForUpdates( + request: Operations.CheckForUpdatesRequest( + download: .one + ) + ) + + switch response.data { + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/photo/:/transcode"]["get"] + update: + x-codeSamples: + - lang: swift + label: getResizedPhoto + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.server.getResizedPhoto(\n request: Operations.GetResizedPhotoRequest(\n blur: 20, \n height: 165, \n minSize: .one, \n opacity: 96541, \n upscale: .zero, \n url: \"/library/metadata/49564/thumb/1654258204\", \n width: 110\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/:/progress"]["post"] + update: + x-codeSamples: + - lang: swift + label: updatePlayProgress + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.media.updatePlayProgress(\n request: Operations.UpdatePlayProgressRequest(\n key: \"\", \n state: \"played\", \n time: 90000\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/butler/{taskName}"]["post"] + update: + x-codeSamples: + - lang: swift + label: startTask + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.butler.startTask( + request: Operations.StartTaskRequest( + taskName: .cleanOldBundles + ) + ) + + switch response.data { + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/security/resources"]["get"] + update: + x-codeSamples: + - lang: swift + label: getSourceConnectionInformation + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.authentication.getSourceConnectionInformation( + request: Operations.GetSourceConnectionInformationRequest( + source: "server://client-identifier" + ) + ) + + switch response.data { + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/updater/status"]["get"] + update: + x-codeSamples: + - lang: swift + label: getUpdateStatus + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.updater.getUpdateStatus() + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/library/metadata/{ratingKey}/thumb"]["get"] + update: + x-codeSamples: + - lang: swift + label: image + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.media.getThumbImage(\n request: Operations.GetThumbImageRequest(\n height: 396, \n minSize: 1, \n ratingKey: 9518, \n upscale: 1, \n width: 396, \n xPlexToken: \"CV5xoxjTpFKUzBTShsaf\"\n )\n)\n\nswitch response.data {\ncase .bytes(let bytes):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/:/timeline"]["get"] + update: + x-codeSamples: + - lang: swift + label: getTimeline + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.video.getTimeline(\n request: Operations.GetTimelineRequest(\n context: \"home:hub.continueWatching\", \n duration: 10000, \n hasMDE: 1, \n key: \"/library/metadata/23409\", \n playBackTime: 2000, \n playQueueItemID: 1, \n ratingKey: 23409, \n row: 1, \n state: .playing, \n time: 2000\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/home"]["get"] + update: + x-codeSamples: + - lang: swift + label: getHomeData + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.plex.getHomeData() + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/hubs/home/recentlyAdded"]["get"] + update: + x-codeSamples: + - lang: swift + label: added + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.hubs.getRecentlyAdded(\n request: Operations.GetRecentlyAddedRequest(\n contentDirectoryID: 470161, \n type: .episode, \n includeMeta: .enable, \n pinnedContentDirectoryID: \"\", \n sectionID: 2, \n xPlexContainerSize: 50, \n xPlexContainerStart: 0\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/playlists"]["post"] + update: + x-codeSamples: + - lang: swift + label: createPlaylist + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.createPlaylist(\n request: Operations.CreatePlaylistRequest(\n smart: .one, \n title: \"\", \n type: .photo, \n uri: \"https://inborn-brochure.biz\", \n playQueueID: 3686.33\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/status/sessions"]["get"] + update: + x-codeSamples: + - lang: swift + label: getSessions + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.sessions.getSessions() + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/"]["get"] + update: + x-codeSamples: + - lang: swift + label: getServerCapabilities + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.server.getServerCapabilities() + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/pins"]["post"] + update: + x-codeSamples: + - lang: swift + label: getPin + source: |- + import Foundation + import Plexswift + + let client = Client() + + let response = try await client.plex.getPin( + request: Operations.GetPinRequest( + strong: false + ) + ) + + switch response.data { + case .authPinContainer(let authPinContainer): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/playlists/{playlistID}/items"]["delete"] + update: + x-codeSamples: + - lang: swift + label: clearPlaylistContents + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.playlists.clearPlaylistContents( + request: Operations.ClearPlaylistContentsRequest( + playlistID: 1893.18 + ) + ) + + switch response.data { + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/transcode/sessions"]["get"] + update: + x-codeSamples: + - lang: swift + label: getTranscodeSessions + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.sessions.getTranscodeSessions() + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/identity"]["get"] + update: + x-codeSamples: + - lang: swift + label: identity + source: |- + import Foundation + import Plexswift + + let client = Client() + + let response = try await client.server.getServerIdentity() + + switch response.data { + case .object(let object): + // Handle response + break + case .requestTimeout(let requestTimeout): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/media/providers"]["get"] + update: + x-codeSamples: + - lang: swift + label: providers + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.server.getMediaProviders( + request: Operations.GetMediaProvidersRequest( + xPlexToken: "CV5xoxjTpFKUzBTShsaf" + ) + ) + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/butler"]["post"] + update: + x-codeSamples: + - lang: swift + label: startAllTasks + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.butler.startAllTasks() + + switch response.data { + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/library/all/top"]["get"] + update: + x-codeSamples: + - lang: swift + label: getTopWatchedContent + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getTopWatchedContent(\n request: Operations.GetTopWatchedContentRequest(\n type: .season, \n includeGuids: 1\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/updater/apply"]["put"] + update: + x-codeSamples: + - lang: swift + label: applyUpdates + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.updater.applyUpdates(\n request: Operations.ApplyUpdatesRequest(\n skip: .one, \n tonight: .zero\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/:/scrobble"]["get"] + update: + x-codeSamples: + - lang: swift + label: markPlayed + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.media.markPlayed( + request: Operations.MarkPlayedRequest( + key: 59398 + ) + ) + + switch response.data { + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } - target: $["paths"]["/activities/{activityUUID}"]["delete"] update: x-codeSamples: @@ -736,20 +1059,23 @@ actions: // Handle empty response break } - - target: $["paths"]["/butler"]["delete"] + - target: $["paths"]["/library/onDeck"]["get"] update: x-codeSamples: - lang: swift - label: stopAllTasks + label: getOnDeck source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.butler.stopAllTasks() + let response = try await client.library.getOnDeck() switch response.data { + case .object(let object): + // Handle response + break case .badRequest(let badRequest): // Handle response break @@ -760,20 +1086,20 @@ actions: // Handle empty response break } - - target: $["paths"]["/butler/{taskName}"]["post"] + - target: $["paths"]["/butler/{taskName}"]["delete"] update: x-codeSamples: - lang: swift - label: startTask + label: stopTask source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.butler.startTask( - request: Operations.StartTaskRequest( - taskName: .cleanOldBundles + let response = try await client.butler.stopTask( + request: Operations.StopTaskRequest( + taskName: .backupDatabase ) ) @@ -788,24 +1114,79 @@ actions: // Handle empty response break } - - target: $["paths"]["/hubs"]["get"] + - target: $["paths"]["/hubs/search/voice"]["get"] update: x-codeSamples: - lang: swift - label: getGlobalHubs - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.hubs.getGlobalHubs(\n request: Operations.GetGlobalHubsRequest(\n count: 1262.49, \n onlyTransient: .one\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/transcode/sessions"]["get"] + label: performVoiceSearch + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.search.performVoiceSearch(\n request: Operations.PerformVoiceSearchRequest(\n query: \"dead+poop\", \n limit: 5, \n sectionId: 4094.8\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/servers"]["get"] update: x-codeSamples: - lang: swift - label: getTranscodeSessions + label: getServerList source: |- import Foundation import Plexswift let client = Client(security: .accessToken("")) - let response = try await client.sessions.getTranscodeSessions() + let response = try await client.server.getServerList() + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/pins/{pinID}"]["get"] + update: + x-codeSamples: + - lang: swift + label: getTokenByPinId + source: "import Foundation\nimport Plexswift\n\nlet client = Client()\n\nlet response = try await client.plex.getTokenByPinId(\n request: Operations.GetTokenByPinIdRequest(\n pinID: 408895, \n )\n)\n\nswitch response.data {\ncase .authPinContainer(let authPinContainer):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .object(let object):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/library/sections/{sectionKey}"]["get"] + update: + x-codeSamples: + - lang: swift + label: details + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getLibraryDetails(\n request: Operations.GetLibraryDetailsRequest(\n sectionKey: 9518, \n includeDetails: .zero\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/status/sessions/history/all"]["get"] + update: + x-codeSamples: + - lang: swift + label: getSessionHistory + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.sessions.getSessionHistory(\n request: Operations.GetSessionHistoryRequest(\n accountId: 1, \n filter: Operations.QueryParamFilter(), \n librarySectionID: 12, \n sort: \"\"\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/log"]["get"] + update: + x-codeSamples: + - lang: swift + label: logLine + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.log.logLine(\n request: Operations.LogLineRequest(\n level: .three, \n message: \"Test log message\", \n source: \"Postman\"\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/statistics/media"]["get"] + update: + x-codeSamples: + - lang: swift + label: getStatistics + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.statistics.getStatistics( + request: Operations.GetStatisticsRequest( + timespan: 4 + ) + ) switch response.data { case .object(let object): @@ -848,12 +1229,45 @@ actions: // Handle empty response break } - - target: $["paths"]["/hubs/search/voice"]["get"] + - target: $["paths"]["/video/:/transcode/universal/start.mpd"]["get"] update: x-codeSamples: - lang: swift - label: performVoiceSearch - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.search.performVoiceSearch(\n request: Operations.PerformVoiceSearchRequest(\n query: \"dead+poop\", \n limit: 5, \n sectionId: 4094.8\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + label: startUniversalTranscode + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.video.startUniversalTranscode(\n request: Operations.StartUniversalTranscodeRequest(\n hasMDE: 1, \n mediaIndex: 0, \n partIndex: 0, \n path: \"/library/metadata/23409\", \n `protocol`: \"hls\", \n addDebugOverlay: 0, \n audioBoost: 100, \n autoAdjustQuality: 0, \n directPlay: 0, \n directStream: 0, \n fastSeek: 0, \n location: \"lan\", \n mediaBufferSize: 102400, \n session: \"zvcage8b7rkioqcm8f4uns4c\", \n subtites: \"burn\", \n subtitleSize: 100\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/activities"]["get"] + update: + x-codeSamples: + - lang: swift + label: getServerActivities + source: |- + import Foundation + import Plexswift + + let client = Client(security: .accessToken("")) + + let response = try await client.activities.getServerActivities() + + switch response.data { + case .object(let object): + // Handle response + break + case .badRequest(let badRequest): + // Handle response + break + case .unauthorized(let unauthorized): + // Handle response + break + case .empty: + // Handle empty response + break + } + - target: $["paths"]["/library/sections/{sectionKey}/{tag}"]["get"] + update: + x-codeSamples: + - lang: swift + label: items + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getLibraryItems(\n request: Operations.GetLibraryItemsRequest(\n sectionKey: 9518, \n tag: .edition, \n includeGuids: .enable, \n includeMeta: .enable, \n type: .tvShow, \n xPlexContainerSize: 50, \n xPlexContainerStart: 0\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - target: $["paths"]["/library/metadata/{ratingKey}"]["get"] update: x-codeSamples: @@ -885,223 +1299,24 @@ actions: // Handle empty response break } - - target: $["paths"]["/playlists/{playlistID}/items"]["put"] + - target: $["paths"]["/library/sections/watchlist/{filter}"]["get"] update: x-codeSamples: - lang: swift - label: addPlaylistContents - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.addPlaylistContents(\n request: Operations.AddPlaylistContentsRequest(\n playlistID: 8502.01, \n uri: \"server://12345/com.plexapp.plugins.library/library/metadata/1\", \n playQueueID: 123\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/security/token"]["get"] + label: list + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.watchlist.getWatchList(\n request: Operations.GetWatchListRequest(\n filter: .available, \n xPlexToken: \"CV5xoxjTpFKUzBTShsaf\", \n includeCollections: .zero, \n includeExternalMedia: .zero, \n libtype: .show, \n maxresults: 49173, \n sort: \"\", \n xPlexContainerSize: 50, \n xPlexContainerStart: 0\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/hubs/search"]["get"] update: x-codeSamples: - lang: swift - label: getTransientToken - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.authentication.getTransientToken(\n request: Operations.GetTransientTokenRequest(\n scope: .all, \n type: .delegation\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/security/resources"]["get"] + label: performSearch + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.search.performSearch(\n request: Operations.PerformSearchRequest(\n query: \"dylan\", \n limit: 5, \n sectionId: 1516.53\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + - target: $["paths"]["/library/metadata/{ratingKey}/children"]["get"] update: x-codeSamples: - lang: swift - label: getSourceConnectionInformation - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.authentication.getSourceConnectionInformation( - request: Operations.GetSourceConnectionInformationRequest( - source: "server://client-identifier" - ) - ) - - switch response.data { - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/library/onDeck"]["get"] - update: - x-codeSamples: - - lang: swift - label: getOnDeck - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.library.getOnDeck() - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/playlists"]["get"] - update: - x-codeSamples: - - lang: swift - label: getPlaylists - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.getPlaylists(\n request: Operations.GetPlaylistsRequest(\n playlistType: .audio, \n smart: .zero\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/devices"]["get"] - update: - x-codeSamples: - - lang: swift - label: getDevices - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.server.getDevices() - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/library/metadata/{ratingKey}/banner"]["get"] - update: - x-codeSamples: - - lang: swift - label: image - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.media.getBannerImage(\n request: Operations.GetBannerImageRequest(\n height: 396, \n minSize: 1, \n ratingKey: 9518, \n upscale: 1, \n width: 396, \n xPlexToken: \"CV5xoxjTpFKUzBTShsaf\"\n )\n)\n\nswitch response.data {\ncase .bytes(let bytes):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/home"]["get"] - update: - x-codeSamples: - - lang: swift - label: getHomeData - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.plex.getHomeData() - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/resources"]["get"] - update: - x-codeSamples: - - lang: swift - label: resources - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.plex.getServerResources(\n request: Operations.GetServerResourcesRequest(\n includeHttps: .disable, \n includeIPv6: .disable, \n includeRelay: .enable\n )\n)\n\nswitch response.data {\ncase .plexDevices(let plexDevices):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/log/networked"]["get"] - update: - x-codeSamples: - - lang: swift - label: enablePaperTrail - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.log.enablePaperTrail() - - switch response.data { - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/updater/status"]["get"] - update: - x-codeSamples: - - lang: swift - label: getUpdateStatus - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.updater.getUpdateStatus() - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/friends"]["get"] - update: - x-codeSamples: - - lang: swift - label: getUserFriends - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.plex.getUserFriends() - - switch response.data { - case .friends(let friends): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } + label: getMetadataChildren + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getMetadataChildren(\n request: Operations.GetMetadataChildrenRequest(\n ratingKey: 1539.14, \n includeElements: \"\"\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - target: $["paths"]["/playlists/{playlistID}"]["get"] update: x-codeSamples: @@ -1133,230 +1348,15 @@ actions: // Handle empty response break } - - target: $["paths"]["/library/sections/{sectionKey}/refresh"]["get"] - update: - x-codeSamples: - - lang: swift - label: metadata - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getRefreshLibraryMetadata(\n request: Operations.GetRefreshLibraryMetadataRequest(\n sectionKey: 9518, \n force: .one\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - target: $["paths"]["/playlists/{playlistID}/items"]["get"] update: x-codeSamples: - lang: swift label: getPlaylistContents source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.getPlaylistContents(\n request: Operations.GetPlaylistContentsRequest(\n playlistID: 5004.46, \n type: .episode\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/playlists/{playlistID}/items"]["delete"] + - target: $["paths"]["/library/recentlyAdded"]["get"] update: x-codeSamples: - lang: swift - label: clearPlaylistContents - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.playlists.clearPlaylistContents( - request: Operations.ClearPlaylistContentsRequest( - playlistID: 1893.18 - ) - ) - - switch response.data { - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/status/sessions/history/all"]["get"] - update: - x-codeSamples: - - lang: swift - label: getSessionHistory - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.sessions.getSessionHistory(\n request: Operations.GetSessionHistoryRequest(\n accountId: 1, \n filter: Operations.QueryParamFilter(), \n librarySectionID: 12, \n sort: \"\"\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/playlists/upload"]["post"] - update: - x-codeSamples: - - lang: swift - label: uploadPlaylist - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.playlists.uploadPlaylist(\n request: Operations.UploadPlaylistRequest(\n force: .zero, \n path: \"/home/barkley/playlist.m3u\", \n sectionID: 1\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/user"]["get"] - update: - x-codeSamples: - - lang: swift - label: getTokenDetails - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.authentication.getTokenDetails() - - switch response.data { - case .userPlexAccount(let userPlexAccount): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/photo/:/transcode"]["get"] - update: - x-codeSamples: - - lang: swift - label: getResizedPhoto - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.server.getResizedPhoto(\n request: Operations.GetResizedPhotoRequest(\n blur: 20, \n height: 165, \n minSize: .one, \n opacity: 96541, \n upscale: .zero, \n url: \"/library/metadata/49564/thumb/1654258204\", \n width: 110\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/video/:/transcode/universal/start.mpd"]["get"] - update: - x-codeSamples: - - lang: swift - label: startUniversalTranscode - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.video.startUniversalTranscode(\n request: Operations.StartUniversalTranscodeRequest(\n hasMDE: 1, \n mediaIndex: 0, \n partIndex: 0, \n path: \"/library/metadata/23409\", \n `protocol`: \"hls\", \n addDebugOverlay: 0, \n audioBoost: 100, \n autoAdjustQuality: 0, \n directPlay: 0, \n directStream: 0, \n fastSeek: 0, \n location: \"lan\", \n mediaBufferSize: 102400, \n session: \"zvcage8b7rkioqcm8f4uns4c\", \n subtites: \"burn\", \n subtitleSize: 100\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/butler"]["get"] - update: - x-codeSamples: - - lang: swift - label: getButlerTasks - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.butler.getButlerTasks() - - switch response.data { - case .object(let object): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/butler"]["post"] - update: - x-codeSamples: - - lang: swift - label: startAllTasks - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.butler.startAllTasks() - - switch response.data { - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/hubs/search"]["get"] - update: - x-codeSamples: - - lang: swift - label: performSearch - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.search.performSearch(\n request: Operations.PerformSearchRequest(\n query: \"dylan\", \n limit: 5, \n sectionId: 1516.53\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/library/sections/watchlist/{filter}"]["get"] - update: - x-codeSamples: - - lang: swift - label: list - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.watchlist.getWatchList(\n request: Operations.GetWatchListRequest(\n filter: .available, \n xPlexToken: \"CV5xoxjTpFKUzBTShsaf\", \n includeCollections: .zero, \n includeExternalMedia: .zero, \n libtype: .show, \n maxresults: 49173, \n sort: \"\", \n xPlexContainerSize: 50, \n xPlexContainerStart: 0\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/library/metadata/{ratingKey}/thumb"]["get"] - update: - x-codeSamples: - - lang: swift - label: image - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.media.getThumbImage(\n request: Operations.GetThumbImageRequest(\n height: 396, \n minSize: 1, \n ratingKey: 9518, \n upscale: 1, \n width: 396, \n xPlexToken: \"CV5xoxjTpFKUzBTShsaf\"\n )\n)\n\nswitch response.data {\ncase .bytes(let bytes):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/butler/{taskName}"]["delete"] - update: - x-codeSamples: - - lang: swift - label: stopTask - source: |- - import Foundation - import Plexswift - - let client = Client(security: .accessToken("")) - - let response = try await client.butler.stopTask( - request: Operations.StopTaskRequest( - taskName: .backupDatabase - ) - ) - - switch response.data { - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/geoip"]["get"] - update: - x-codeSamples: - - lang: swift - label: getGeoData - source: |- - import Foundation - import Plexswift - - let client = Client() - - let response = try await client.plex.getGeoData() - - switch response.data { - case .geoData(let geoData): - // Handle response - break - case .badRequest(let badRequest): - // Handle response - break - case .unauthorized(let unauthorized): - // Handle response - break - case .empty: - // Handle empty response - break - } - - target: $["paths"]["/library/sections/{sectionKey}"]["get"] - update: - x-codeSamples: - - lang: swift - label: details - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getLibraryDetails(\n request: Operations.GetLibraryDetailsRequest(\n sectionKey: 9518, \n includeDetails: .zero\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" - - target: $["paths"]["/log"]["get"] - update: - x-codeSamples: - - lang: swift - label: logLine - source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.log.logLine(\n request: Operations.LogLineRequest(\n level: .three, \n message: \"Test log message\", \n source: \"Postman\"\n )\n)\n\nswitch response.data {\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}" + label: library + source: "import Foundation\nimport Plexswift\n\nlet client = Client(security: .accessToken(\"\"))\n\nlet response = try await client.library.getRecentlyAddedLibrary(\n request: Operations.GetRecentlyAddedLibraryRequest(\n type: .season, \n contentDirectoryID: 2, \n includeMeta: .enable, \n pinnedContentDirectoryID: [\n 336778,\n ], \n sectionID: 2, \n xPlexContainerSize: 50, \n xPlexContainerStart: 0\n )\n)\n\nswitch response.data {\ncase .object(let object):\n // Handle response\n break\ncase .badRequest(let badRequest):\n // Handle response\n break\ncase .unauthorized(let unauthorized):\n // Handle response\n break\ncase .empty:\n // Handle empty response\n break\n}"