ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.401.2

This commit is contained in:
speakeasybot
2024-09-22 00:09:30 +00:00
parent 62f64fc047
commit 10585d93c7
42 changed files with 1808 additions and 1234 deletions

View File

@@ -1,12 +1,12 @@
lockVersion: 2.0.0 lockVersion: 2.0.0
id: 5d77204e-e413-4fd0-a14a-bad3aee2247a id: 5d77204e-e413-4fd0-a14a-bad3aee2247a
management: management:
docChecksum: 1b63d7c28734a44b0339f405b186b290 docChecksum: 82a4a9784fb0e66e1c64f130701cdd08
docVersion: 0.0.3 docVersion: 0.0.3
speakeasyVersion: 1.401.2 speakeasyVersion: 1.401.2
generationVersion: 2.421.3 generationVersion: 2.421.3
releaseVersion: 0.7.0 releaseVersion: 0.7.1
configChecksum: 328d2e540df29d38d8fd33e39ea9a7bc configChecksum: a70babc1988451efc03d40b9ae2d9385
repoURL: https://github.com/LukeHagar/plexswift.git repoURL: https://github.com/LukeHagar/plexswift.git
features: features:
swift: swift:
@@ -43,6 +43,7 @@ generatedFiles:
- Sources/Plexswift/internal/api/_UpdaterAPI.swift - Sources/Plexswift/internal/api/_UpdaterAPI.swift
- Sources/Plexswift/internal/api/_VideoAPI.swift - Sources/Plexswift/internal/api/_VideoAPI.swift
- Sources/Plexswift/internal/api/_WatchlistAPI.swift - Sources/Plexswift/internal/api/_WatchlistAPI.swift
- Sources/Plexswift/internal/models/ActiveDirection+Serialization.swift
- Sources/Plexswift/internal/models/AddPlaylistContentsRequest+Serialization.swift - Sources/Plexswift/internal/models/AddPlaylistContentsRequest+Serialization.swift
- Sources/Plexswift/internal/models/ApplyUpdatesRequest+Serialization.swift - Sources/Plexswift/internal/models/ApplyUpdatesRequest+Serialization.swift
- Sources/Plexswift/internal/models/AutoSelectSubtitle+Serialization.swift - Sources/Plexswift/internal/models/AutoSelectSubtitle+Serialization.swift
@@ -51,6 +52,7 @@ generatedFiles:
- Sources/Plexswift/internal/models/ClearPlaylistContentsRequest+Serialization.swift - Sources/Plexswift/internal/models/ClearPlaylistContentsRequest+Serialization.swift
- Sources/Plexswift/internal/models/CreatePlaylistQueryParamType+Serialization.swift - Sources/Plexswift/internal/models/CreatePlaylistQueryParamType+Serialization.swift
- Sources/Plexswift/internal/models/CreatePlaylistRequest+Serialization.swift - Sources/Plexswift/internal/models/CreatePlaylistRequest+Serialization.swift
- Sources/Plexswift/internal/models/DefaultDirection+Serialization.swift
- Sources/Plexswift/internal/models/DefaultSubtitleAccessibility+Serialization.swift - Sources/Plexswift/internal/models/DefaultSubtitleAccessibility+Serialization.swift
- Sources/Plexswift/internal/models/DefaultSubtitleForced+Serialization.swift - Sources/Plexswift/internal/models/DefaultSubtitleForced+Serialization.swift
- Sources/Plexswift/internal/models/DeleteLibraryRequest+Serialization.swift - Sources/Plexswift/internal/models/DeleteLibraryRequest+Serialization.swift
@@ -58,6 +60,7 @@ generatedFiles:
- Sources/Plexswift/internal/models/Download+Serialization.swift - Sources/Plexswift/internal/models/Download+Serialization.swift
- Sources/Plexswift/internal/models/Features+Serialization.swift - Sources/Plexswift/internal/models/Features+Serialization.swift
- Sources/Plexswift/internal/models/Filter+Serialization.swift - Sources/Plexswift/internal/models/Filter+Serialization.swift
- Sources/Plexswift/internal/models/FlattenSeasons+Serialization.swift
- Sources/Plexswift/internal/models/Force+Serialization.swift - Sources/Plexswift/internal/models/Force+Serialization.swift
- Sources/Plexswift/internal/models/GetBandwidthStatisticsRequest+Serialization.swift - Sources/Plexswift/internal/models/GetBandwidthStatisticsRequest+Serialization.swift
- Sources/Plexswift/internal/models/GetBannerImageRequest+Serialization.swift - Sources/Plexswift/internal/models/GetBannerImageRequest+Serialization.swift
@@ -65,7 +68,9 @@ generatedFiles:
- Sources/Plexswift/internal/models/GetGlobalHubsRequest+Serialization.swift - Sources/Plexswift/internal/models/GetGlobalHubsRequest+Serialization.swift
- Sources/Plexswift/internal/models/GetLibraryDetailsRequest+Serialization.swift - Sources/Plexswift/internal/models/GetLibraryDetailsRequest+Serialization.swift
- Sources/Plexswift/internal/models/GetLibraryHubsRequest+Serialization.swift - Sources/Plexswift/internal/models/GetLibraryHubsRequest+Serialization.swift
- Sources/Plexswift/internal/models/GetLibraryItemsLibraryResponseType+Serialization.swift
- Sources/Plexswift/internal/models/GetLibraryItemsRequest+Serialization.swift - Sources/Plexswift/internal/models/GetLibraryItemsRequest+Serialization.swift
- Sources/Plexswift/internal/models/GetLibraryItemsType+Serialization.swift
- Sources/Plexswift/internal/models/GetMediaProvidersRequest+Serialization.swift - Sources/Plexswift/internal/models/GetMediaProvidersRequest+Serialization.swift
- Sources/Plexswift/internal/models/GetMetaDataByRatingKeyRequest+Serialization.swift - Sources/Plexswift/internal/models/GetMetaDataByRatingKeyRequest+Serialization.swift
- Sources/Plexswift/internal/models/GetMetadataChildrenRequest+Serialization.swift - Sources/Plexswift/internal/models/GetMetadataChildrenRequest+Serialization.swift
@@ -96,6 +101,7 @@ generatedFiles:
- Sources/Plexswift/internal/models/GetTransientTokenQueryParamType+Serialization.swift - Sources/Plexswift/internal/models/GetTransientTokenQueryParamType+Serialization.swift
- Sources/Plexswift/internal/models/GetTransientTokenRequest+Serialization.swift - Sources/Plexswift/internal/models/GetTransientTokenRequest+Serialization.swift
- Sources/Plexswift/internal/models/GetWatchListRequest+Serialization.swift - Sources/Plexswift/internal/models/GetWatchListRequest+Serialization.swift
- Sources/Plexswift/internal/models/HasThumbnail+Serialization.swift
- Sources/Plexswift/internal/models/IncludeCollections+Serialization.swift - Sources/Plexswift/internal/models/IncludeCollections+Serialization.swift
- Sources/Plexswift/internal/models/IncludeDetails+Serialization.swift - Sources/Plexswift/internal/models/IncludeDetails+Serialization.swift
- Sources/Plexswift/internal/models/IncludeExternalMedia+Serialization.swift - Sources/Plexswift/internal/models/IncludeExternalMedia+Serialization.swift
@@ -142,6 +148,7 @@ generatedFiles:
- Sources/Plexswift/internal/models/Security+Serialization.swift - Sources/Plexswift/internal/models/Security+Serialization.swift
- Sources/Plexswift/internal/models/SharedServers+Serialization.swift - Sources/Plexswift/internal/models/SharedServers+Serialization.swift
- Sources/Plexswift/internal/models/SharedSources+Serialization.swift - Sources/Plexswift/internal/models/SharedSources+Serialization.swift
- Sources/Plexswift/internal/models/ShowOrdering+Serialization.swift
- Sources/Plexswift/internal/models/Skip+Serialization.swift - Sources/Plexswift/internal/models/Skip+Serialization.swift
- Sources/Plexswift/internal/models/Smart+Serialization.swift - Sources/Plexswift/internal/models/Smart+Serialization.swift
- Sources/Plexswift/internal/models/StartTaskRequest+Serialization.swift - Sources/Plexswift/internal/models/StartTaskRequest+Serialization.swift
@@ -162,6 +169,8 @@ generatedFiles:
- Sources/Plexswift/internal/models/WatchedIndicator+Serialization.swift - Sources/Plexswift/internal/models/WatchedIndicator+Serialization.swift
- Sources/Plexswift/models/ModelScopes.swift - Sources/Plexswift/models/ModelScopes.swift
- Sources/Plexswift/models/operations/Account.swift - Sources/Plexswift/models/operations/Account.swift
- Sources/Plexswift/models/operations/Action.swift
- Sources/Plexswift/models/operations/ActiveDirection.swift
- Sources/Plexswift/models/operations/Activity.swift - Sources/Plexswift/models/operations/Activity.swift
- Sources/Plexswift/models/operations/AddPlaylistContentsBadRequest.swift - Sources/Plexswift/models/operations/AddPlaylistContentsBadRequest.swift
- Sources/Plexswift/models/operations/AddPlaylistContentsErrors.swift - Sources/Plexswift/models/operations/AddPlaylistContentsErrors.swift
@@ -200,6 +209,7 @@ generatedFiles:
- Sources/Plexswift/models/operations/ClearPlaylistContentsRequest.swift - Sources/Plexswift/models/operations/ClearPlaylistContentsRequest.swift
- Sources/Plexswift/models/operations/ClearPlaylistContentsResponse.swift - Sources/Plexswift/models/operations/ClearPlaylistContentsResponse.swift
- Sources/Plexswift/models/operations/ClearPlaylistContentsUnauthorized.swift - Sources/Plexswift/models/operations/ClearPlaylistContentsUnauthorized.swift
- Sources/Plexswift/models/operations/Collection.swift
- Sources/Plexswift/models/operations/Connections.swift - Sources/Plexswift/models/operations/Connections.swift
- Sources/Plexswift/models/operations/Context.swift - Sources/Plexswift/models/operations/Context.swift
- Sources/Plexswift/models/operations/Country.swift - Sources/Plexswift/models/operations/Country.swift
@@ -213,6 +223,7 @@ generatedFiles:
- Sources/Plexswift/models/operations/CreatePlaylistResponse.swift - Sources/Plexswift/models/operations/CreatePlaylistResponse.swift
- Sources/Plexswift/models/operations/CreatePlaylistResponseBody.swift - Sources/Plexswift/models/operations/CreatePlaylistResponseBody.swift
- Sources/Plexswift/models/operations/CreatePlaylistUnauthorized.swift - Sources/Plexswift/models/operations/CreatePlaylistUnauthorized.swift
- Sources/Plexswift/models/operations/DefaultDirection.swift
- Sources/Plexswift/models/operations/DefaultSubtitleAccessibility.swift - Sources/Plexswift/models/operations/DefaultSubtitleAccessibility.swift
- Sources/Plexswift/models/operations/DefaultSubtitleForced.swift - Sources/Plexswift/models/operations/DefaultSubtitleForced.swift
- Sources/Plexswift/models/operations/DeleteLibraryBadRequest.swift - Sources/Plexswift/models/operations/DeleteLibraryBadRequest.swift
@@ -242,6 +253,7 @@ generatedFiles:
- Sources/Plexswift/models/operations/Field.swift - Sources/Plexswift/models/operations/Field.swift
- Sources/Plexswift/models/operations/FieldType.swift - Sources/Plexswift/models/operations/FieldType.swift
- Sources/Plexswift/models/operations/Filter.swift - Sources/Plexswift/models/operations/Filter.swift
- Sources/Plexswift/models/operations/FlattenSeasons.swift
- Sources/Plexswift/models/operations/Force.swift - Sources/Plexswift/models/operations/Force.swift
- Sources/Plexswift/models/operations/Friend.swift - Sources/Plexswift/models/operations/Friend.swift
- Sources/Plexswift/models/operations/Genre.swift - Sources/Plexswift/models/operations/Genre.swift
@@ -358,7 +370,10 @@ generatedFiles:
- Sources/Plexswift/models/operations/GetLibraryItemsFieldType.swift - Sources/Plexswift/models/operations/GetLibraryItemsFieldType.swift
- Sources/Plexswift/models/operations/GetLibraryItemsFilter.swift - Sources/Plexswift/models/operations/GetLibraryItemsFilter.swift
- Sources/Plexswift/models/operations/GetLibraryItemsGenre.swift - Sources/Plexswift/models/operations/GetLibraryItemsGenre.swift
- Sources/Plexswift/models/operations/GetLibraryItemsImage.swift
- Sources/Plexswift/models/operations/GetLibraryItemsLibraryErrors.swift - Sources/Plexswift/models/operations/GetLibraryItemsLibraryErrors.swift
- Sources/Plexswift/models/operations/GetLibraryItemsLibraryResponseType.swift
- Sources/Plexswift/models/operations/GetLibraryItemsLibraryType.swift
- Sources/Plexswift/models/operations/GetLibraryItemsMedia.swift - Sources/Plexswift/models/operations/GetLibraryItemsMedia.swift
- Sources/Plexswift/models/operations/GetLibraryItemsMediaContainer.swift - Sources/Plexswift/models/operations/GetLibraryItemsMediaContainer.swift
- Sources/Plexswift/models/operations/GetLibraryItemsMetadata.swift - Sources/Plexswift/models/operations/GetLibraryItemsMetadata.swift
@@ -671,6 +686,7 @@ generatedFiles:
- Sources/Plexswift/models/operations/GetWatchListUnauthorized.swift - Sources/Plexswift/models/operations/GetWatchListUnauthorized.swift
- Sources/Plexswift/models/operations/GetWatchListWatchlistErrors.swift - Sources/Plexswift/models/operations/GetWatchListWatchlistErrors.swift
- Sources/Plexswift/models/operations/Guids.swift - Sources/Plexswift/models/operations/Guids.swift
- Sources/Plexswift/models/operations/HasThumbnail.swift
- Sources/Plexswift/models/operations/Hub.swift - Sources/Plexswift/models/operations/Hub.swift
- Sources/Plexswift/models/operations/Image.swift - Sources/Plexswift/models/operations/Image.swift
- Sources/Plexswift/models/operations/IncludeCollections.swift - Sources/Plexswift/models/operations/IncludeCollections.swift
@@ -782,6 +798,7 @@ generatedFiles:
- Sources/Plexswift/models/operations/Setting.swift - Sources/Plexswift/models/operations/Setting.swift
- Sources/Plexswift/models/operations/SharedServers.swift - Sources/Plexswift/models/operations/SharedServers.swift
- Sources/Plexswift/models/operations/SharedSources.swift - Sources/Plexswift/models/operations/SharedSources.swift
- Sources/Plexswift/models/operations/ShowOrdering.swift
- Sources/Plexswift/models/operations/Skip.swift - Sources/Plexswift/models/operations/Skip.swift
- Sources/Plexswift/models/operations/Smart.swift - Sources/Plexswift/models/operations/Smart.swift
- Sources/Plexswift/models/operations/Sort.swift - Sources/Plexswift/models/operations/Sort.swift
@@ -832,6 +849,7 @@ generatedFiles:
- Sources/Plexswift/models/operations/TranscodeSession.swift - Sources/Plexswift/models/operations/TranscodeSession.swift
- Sources/Plexswift/models/operations/Trials.swift - Sources/Plexswift/models/operations/Trials.swift
- Sources/Plexswift/models/operations/TypeModel.swift - Sources/Plexswift/models/operations/TypeModel.swift
- Sources/Plexswift/models/operations/UltraBlurColors.swift
- Sources/Plexswift/models/operations/UpdatePlayProgressBadRequest.swift - Sources/Plexswift/models/operations/UpdatePlayProgressBadRequest.swift
- Sources/Plexswift/models/operations/UpdatePlayProgressErrors.swift - Sources/Plexswift/models/operations/UpdatePlayProgressErrors.swift
- Sources/Plexswift/models/operations/UpdatePlayProgressMediaErrors.swift - Sources/Plexswift/models/operations/UpdatePlayProgressMediaErrors.swift
@@ -1189,7 +1207,9 @@ examples:
title: TV Shows title: TV Shows
type: show type: show
Metadata: Metadata:
- Country: - Collection:
- tag: Working NL Subs
Country:
- tag: United States of America - tag: United States of America
- tag: United States of America - tag: United States of America
Director: Director:
@@ -1201,35 +1221,53 @@ examples:
- tag: Adventure - tag: Adventure
Guid: Guid:
- id: imdb://tt13015952 - id: imdb://tt13015952
Image:
- alt: Episode 1
type: background
url: /library/metadata/45521/thumb/1644710589
- alt: Episode 1
type: background
url: /library/metadata/45521/thumb/1644710589
Media: Media:
- Part: - Part:
- container: mkv - audioProfile: dts
container: mkv
duration: 11558112 duration: 11558112
file: /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv file: /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv
hasThumbnail: "1"
id: 119542 id: 119542
indexes: sd
key: /library/parts/119542/1680457526/file.mkv key: /library/parts/119542/1680457526/file.mkv
size: 36158371307 size: 36158371307
videoProfile: main 10 videoProfile: main 10
- container: mkv - audioProfile: dts
container: mkv
duration: 11558112 duration: 11558112
file: /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv file: /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv
hasThumbnail: "1"
id: 119542 id: 119542
indexes: sd
key: /library/parts/119542/1680457526/file.mkv key: /library/parts/119542/1680457526/file.mkv
size: 36158371307 size: 36158371307
videoProfile: main 10 videoProfile: main 10
- container: mkv - audioProfile: dts
container: mkv
duration: 11558112 duration: 11558112
file: /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv file: /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv
hasThumbnail: "1"
id: 119542 id: 119542
indexes: sd
key: /library/parts/119542/1680457526/file.mkv key: /library/parts/119542/1680457526/file.mkv
size: 36158371307 size: 36158371307
videoProfile: main 10 videoProfile: main 10
aspectRatio: 1.85 aspectRatio: 1.85
audioChannels: 6 audioChannels: 6
audioCodec: eac3 audioCodec: eac3
audioProfile: dts
bitrate: 25025 bitrate: 25025
container: mkv container: mkv
duration: 11558112 duration: 11558112
hasVoiceActivity: false
height: 2072 height: 2072
id: 119534 id: 119534
videoCodec: hevc videoCodec: hevc
@@ -1241,20 +1279,28 @@ examples:
- tag: Sigourney Weaver - tag: Sigourney Weaver
- tag: Sigourney Weaver - tag: Sigourney Weaver
- tag: Sigourney Weaver - tag: Sigourney Weaver
UltraBlurColors:
bottomLeft: 1f5066
bottomRight: "73958"
topLeft: 11333b
topRight: 0a232d
Writer: Writer:
- tag: James Cameron - tag: James Cameron
addedAt: 1680457607 addedAt: 1556281940
art: /library/metadata/58683/art/1703239236 art: /library/metadata/58683/art/1703239236
audienceRating: 9.2 audienceRating: 9.2
audienceRatingImage: rottentomatoes://image.rating.upright audienceRatingImage: rottentomatoes://image.rating.upright
banner: /library/metadata/58683/banner/1703239236
chapterSource: media chapterSource: media
childCount: 1 childCount: 1
contentRating: PG-13 contentRating: PG-13
duration: 11558112 duration: 11558112
flattenSeasons: "1"
grandparentArt: /library/metadata/66/art/1705716261 grandparentArt: /library/metadata/66/art/1705716261
grandparentGuid: plex://show/5d9c081b170e24001f2a7be4 grandparentGuid: plex://show/5d9c081b170e24001f2a7be4
grandparentKey: /library/metadata/66 grandparentKey: /library/metadata/66
grandparentRatingKey: "66" grandparentRatingKey: "66"
grandparentSlug: alice-in-borderland-2020
grandparentTheme: /library/metadata/66/theme/1705716261 grandparentTheme: /library/metadata/66/theme/1705716261
grandparentThumb: /library/metadata/66/thumb/1705716261 grandparentThumb: /library/metadata/66/thumb/1705716261
grandparentTitle: Caprica grandparentTitle: Caprica
@@ -1280,7 +1326,11 @@ examples:
rating: 7.6 rating: 7.6
ratingImage: rottentomatoes://image.rating.ripe ratingImage: rottentomatoes://image.rating.ripe
ratingKey: "58683" ratingKey: "58683"
seasonCount: 2022
showOrdering: dvd
skipChildren: false
skipCount: 1 skipCount: 1
slug: 4-for-texas
studio: 20th Century Studios studio: 20th Century Studios
summary: Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home. summary: Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.
tagline: Return to Pandora. tagline: Return to Pandora.
@@ -1289,12 +1339,15 @@ examples:
title: 'Avatar: The Way of Water' title: 'Avatar: The Way of Water'
titleSort: Whale titleSort: Whale
type: movie type: movie
updatedAt: 1703239236 updatedAt: 1556281940
viewCount: 1 viewCount: 1
viewOffset: 5222500 viewOffset: 5222500
viewedLeafCount: 0 viewedLeafCount: 0
year: 2022 year: 2022
- Country: - Collection:
- tag: Working NL Subs
- tag: Working NL Subs
Country:
- tag: United States of America - tag: United States of America
Director: Director:
- tag: James Cameron - tag: James Cameron
@@ -1303,21 +1356,30 @@ examples:
Genre: [] Genre: []
Guid: Guid:
- id: imdb://tt13015952 - id: imdb://tt13015952
Image:
- alt: Episode 1
type: background
url: /library/metadata/45521/thumb/1644710589
Media: Media:
- Part: - Part:
- container: mkv - audioProfile: dts
container: mkv
duration: 11558112 duration: 11558112
file: /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv file: /movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv
hasThumbnail: "1"
id: 119542 id: 119542
indexes: sd
key: /library/parts/119542/1680457526/file.mkv key: /library/parts/119542/1680457526/file.mkv
size: 36158371307 size: 36158371307
videoProfile: main 10 videoProfile: main 10
aspectRatio: 1.85 aspectRatio: 1.85
audioChannels: 6 audioChannels: 6
audioCodec: eac3 audioCodec: eac3
audioProfile: dts
bitrate: 25025 bitrate: 25025
container: mkv container: mkv
duration: 11558112 duration: 11558112
hasVoiceActivity: false
height: 2072 height: 2072
id: 119534 id: 119534
videoCodec: hevc videoCodec: hevc
@@ -1329,20 +1391,28 @@ examples:
- tag: Sigourney Weaver - tag: Sigourney Weaver
- tag: Sigourney Weaver - tag: Sigourney Weaver
- tag: Sigourney Weaver - tag: Sigourney Weaver
UltraBlurColors:
bottomLeft: 1f5066
bottomRight: "73958"
topLeft: 11333b
topRight: 0a232d
Writer: Writer:
- tag: James Cameron - tag: James Cameron
addedAt: 1680457607 addedAt: 1556281940
art: /library/metadata/58683/art/1703239236 art: /library/metadata/58683/art/1703239236
audienceRating: 9.2 audienceRating: 9.2
audienceRatingImage: rottentomatoes://image.rating.upright audienceRatingImage: rottentomatoes://image.rating.upright
banner: /library/metadata/58683/banner/1703239236
chapterSource: media chapterSource: media
childCount: 1 childCount: 1
contentRating: PG-13 contentRating: PG-13
duration: 11558112 duration: 11558112
flattenSeasons: "1"
grandparentArt: /library/metadata/66/art/1705716261 grandparentArt: /library/metadata/66/art/1705716261
grandparentGuid: plex://show/5d9c081b170e24001f2a7be4 grandparentGuid: plex://show/5d9c081b170e24001f2a7be4
grandparentKey: /library/metadata/66 grandparentKey: /library/metadata/66
grandparentRatingKey: "66" grandparentRatingKey: "66"
grandparentSlug: alice-in-borderland-2020
grandparentTheme: /library/metadata/66/theme/1705716261 grandparentTheme: /library/metadata/66/theme/1705716261
grandparentThumb: /library/metadata/66/thumb/1705716261 grandparentThumb: /library/metadata/66/thumb/1705716261
grandparentTitle: Caprica grandparentTitle: Caprica
@@ -1368,7 +1438,11 @@ examples:
rating: 7.6 rating: 7.6
ratingImage: rottentomatoes://image.rating.ripe ratingImage: rottentomatoes://image.rating.ripe
ratingKey: "58683" ratingKey: "58683"
seasonCount: 2022
showOrdering: dvd
skipChildren: false
skipCount: 1 skipCount: 1
slug: 4-for-texas
studio: 20th Century Studios studio: 20th Century Studios
summary: Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home. summary: Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.
tagline: Return to Pandora. tagline: Return to Pandora.
@@ -1377,13 +1451,14 @@ examples:
title: 'Avatar: The Way of Water' title: 'Avatar: The Way of Water'
titleSort: Whale titleSort: Whale
type: movie type: movie
updatedAt: 1703239236 updatedAt: 1556281940
viewCount: 1 viewCount: 1
viewOffset: 5222500 viewOffset: 5222500
viewedLeafCount: 0 viewedLeafCount: 0
year: 2022 year: 2022
allowSync: true allowSync: true
art: /:/resources/movie-fanart.jpg art: /:/resources/movie-fanart.jpg
content: secondary
identifier: com.plexapp.plugins.library identifier: com.plexapp.plugins.library
librarySectionID: <value> librarySectionID: <value>
librarySectionTitle: Movies librarySectionTitle: Movies
@@ -1391,10 +1466,13 @@ examples:
mediaTagPrefix: /system/bundle/media/flags/ mediaTagPrefix: /system/bundle/media/flags/
mediaTagVersion: 1701731894 mediaTagVersion: 1701731894
mixedParents: true mixedParents: true
nocache: true
offset: 0
size: 70 size: 70
thumb: /:/resources/movie.png thumb: /:/resources/movie.png
title1: Movies title1: Movies
title2: Recently Released title2: Recently Released
totalSize: 170
viewGroup: movie viewGroup: movie
viewMode: 65592 viewMode: 65592
"400": "400":
@@ -1415,7 +1493,34 @@ examples:
query: query:
X-Plex-Token: CV5xoxjTpFKUzBTShsaf X-Plex-Token: CV5xoxjTpFKUzBTShsaf
responses: responses:
"200": {} "200":
application/json:
MediaContainer:
MediaProvider:
- Feature:
- Action: []
flavor: global
scrobbleKey: /:/scrobble/new
type: <value>
unscrobbleKey: /:/unscrobble/new
- Action:
- id: addToContinueWatching
key: /actions/addToContinueWatching
- id: addToContinueWatching
key: /actions/addToContinueWatching
flavor: global
scrobbleKey: /:/scrobble/new
type: <value>
unscrobbleKey: /:/unscrobble/new
- Action:
- id: addToContinueWatching
key: /actions/addToContinueWatching
- id: addToContinueWatching
key: /actions/addToContinueWatching
flavor: global
scrobbleKey: /:/scrobble/new
type: <value>
unscrobbleKey: /:/unscrobble/new
"400": "400":
application/json: application/json:
errors: [] errors: []
@@ -2330,6 +2435,7 @@ examples:
adsConsentReminderAt: "2019-08-24T14:15:22Z" adsConsentReminderAt: "2019-08-24T14:15:22Z"
adsConsentSetAt: "2019-08-24T14:15:22Z" adsConsentSetAt: "2019-08-24T14:15:22Z"
anonymous: false anonymous: false
attributionPartner: null
authToken: CxoUzBTSV5hsxjTpFKaf authToken: CxoUzBTSV5hsxjTpFKaf
backupCodesCreated: false backupCodesCreated: false
confirmed: false confirmed: false
@@ -2633,6 +2739,7 @@ examples:
adsConsentReminderAt: "2019-08-24T14:15:22Z" adsConsentReminderAt: "2019-08-24T14:15:22Z"
adsConsentSetAt: "2019-08-24T14:15:22Z" adsConsentSetAt: "2019-08-24T14:15:22Z"
anonymous: false anonymous: false
attributionPartner: null
authToken: CxoUzBTSV5hsxjTpFKaf authToken: CxoUzBTSV5hsxjTpFKaf
backupCodesCreated: false backupCodesCreated: false
confirmed: false confirmed: false

View File

@@ -12,7 +12,7 @@ generation:
auth: auth:
oAuth2ClientCredentialsEnabled: true oAuth2ClientCredentialsEnabled: true
swift: swift:
version: 0.7.0 version: 0.7.1
author: LukeHagar author: LukeHagar
description: Swift Client SDK Generated by Speakeasy description: Swift Client SDK Generated by Speakeasy
imports: imports:

View File

@@ -11,7 +11,7 @@ targets:
plexswift: plexswift:
source: plexapi source: plexapi
codeSamplesNamespace: code-samples-swift-plexswift codeSamplesNamespace: code-samples-swift-plexswift
codeSamplesRevisionDigest: sha256:ae889ea6513310dba019f6f3b58474bf9316e90eeeb12b21d36a878aee527f44 codeSamplesRevisionDigest: sha256:081dbbfcbb03dd8d8e2b445350d208744d66cdc36fdb53150bd80caee4ae12ad
outLocation: /github/workspace/repo outLocation: /github/workspace/repo
workflow: workflow:
workflowVersion: 1.0.0 workflowVersion: 1.0.0

View File

@@ -38,7 +38,7 @@ You can add `plexswift` to your project directly in Xcode `(File > Add Packages.
```bash ```bash
dependencies: [ dependencies: [
.package(url: "https://github.com/LukeHagar/plexswift.git", .upToNextMajor(from: "0.7.0")) .package(url: "https://github.com/LukeHagar/plexswift.git", .upToNextMajor(from: "0.7.1"))
] ]
``` ```
<!-- End SDK Installation [installation] --> <!-- End SDK Installation [installation] -->

View File

@@ -633,3 +633,13 @@ Based on:
- [swift v0.7.0] . - [swift v0.7.0] .
### Releases ### Releases
- [Swift Package Manager v0.7.0] https://github.com/LukeHagar/plexswift/releases/tag/v0.7.0 - . - [Swift Package Manager v0.7.0] https://github.com/LukeHagar/plexswift/releases/tag/v0.7.0 - .
## 2024-09-22 00:08:38
### Changes
Based on:
- OpenAPI Doc
- Speakeasy CLI 1.401.2 (2.421.3) https://github.com/speakeasy-api/speakeasy
### Generated
- [swift v0.7.1] .
### Releases
- [Swift Package Manager v0.7.1] https://github.com/LukeHagar/plexswift/releases/tag/v0.7.1 - .

View File

@@ -237,6 +237,8 @@ case .empty:
### Other models ### Other models
- ``Operations/Account`` - ``Operations/Account``
- ``Operations/Action``
- ``Operations/ActiveDirection``
- ``Operations/Activity`` - ``Operations/Activity``
- ``Operations/AddPlaylistContentsErrors`` - ``Operations/AddPlaylistContentsErrors``
- ``Operations/AddPlaylistContentsMediaContainer`` - ``Operations/AddPlaylistContentsMediaContainer``
@@ -265,6 +267,7 @@ case .empty:
- ``Operations/ClearPlaylistContentsPlaylistsErrors`` - ``Operations/ClearPlaylistContentsPlaylistsErrors``
- ``Operations/ClearPlaylistContentsRequest`` - ``Operations/ClearPlaylistContentsRequest``
- ``Operations/ClearPlaylistContentsUnauthorized`` - ``Operations/ClearPlaylistContentsUnauthorized``
- ``Operations/Collection``
- ``Operations/Connections`` - ``Operations/Connections``
- ``Operations/Context`` - ``Operations/Context``
- ``Operations/Country`` - ``Operations/Country``
@@ -276,6 +279,7 @@ case .empty:
- ``Operations/CreatePlaylistRequest`` - ``Operations/CreatePlaylistRequest``
- ``Operations/CreatePlaylistResponseBody`` - ``Operations/CreatePlaylistResponseBody``
- ``Operations/CreatePlaylistUnauthorized`` - ``Operations/CreatePlaylistUnauthorized``
- ``Operations/DefaultDirection``
- ``Operations/DefaultSubtitleAccessibility`` - ``Operations/DefaultSubtitleAccessibility``
- ``Operations/DefaultSubtitleForced`` - ``Operations/DefaultSubtitleForced``
- ``Operations/DeleteLibraryErrors`` - ``Operations/DeleteLibraryErrors``
@@ -299,6 +303,7 @@ case .empty:
- ``Operations/Field`` - ``Operations/Field``
- ``Operations/FieldType`` - ``Operations/FieldType``
- ``Operations/Filter`` - ``Operations/Filter``
- ``Operations/FlattenSeasons``
- ``Operations/Force`` - ``Operations/Force``
- ``Operations/Friend`` - ``Operations/Friend``
- ``Operations/Genre`` - ``Operations/Genre``
@@ -329,7 +334,10 @@ case .empty:
- ``Operations/GetLibraryItemsFieldType`` - ``Operations/GetLibraryItemsFieldType``
- ``Operations/GetLibraryItemsFilter`` - ``Operations/GetLibraryItemsFilter``
- ``Operations/GetLibraryItemsGenre`` - ``Operations/GetLibraryItemsGenre``
- ``Operations/GetLibraryItemsImage``
- ``Operations/GetLibraryItemsLibraryErrors`` - ``Operations/GetLibraryItemsLibraryErrors``
- ``Operations/GetLibraryItemsLibraryResponseType``
- ``Operations/GetLibraryItemsLibraryType``
- ``Operations/GetLibraryItemsMedia`` - ``Operations/GetLibraryItemsMedia``
- ``Operations/GetLibraryItemsMediaContainer`` - ``Operations/GetLibraryItemsMediaContainer``
- ``Operations/GetLibraryItemsMetadata`` - ``Operations/GetLibraryItemsMetadata``
@@ -631,6 +639,7 @@ case .empty:
- ``Operations/GetUserFriendsPlexErrors`` - ``Operations/GetUserFriendsPlexErrors``
- ``Operations/GetUserFriendsUnauthorized`` - ``Operations/GetUserFriendsUnauthorized``
- ``Operations/Guids`` - ``Operations/Guids``
- ``Operations/HasThumbnail``
- ``Operations/Hub`` - ``Operations/Hub``
- ``Operations/Image`` - ``Operations/Image``
- ``Operations/IncludeCollections`` - ``Operations/IncludeCollections``
@@ -728,6 +737,7 @@ case .empty:
- ``Operations/Setting`` - ``Operations/Setting``
- ``Operations/SharedServers`` - ``Operations/SharedServers``
- ``Operations/SharedSources`` - ``Operations/SharedSources``
- ``Operations/ShowOrdering``
- ``Operations/Skip`` - ``Operations/Skip``
- ``Operations/Smart`` - ``Operations/Smart``
- ``Operations/Sort`` - ``Operations/Sort``
@@ -766,6 +776,7 @@ case .empty:
- ``Operations/TranscodeSession`` - ``Operations/TranscodeSession``
- ``Operations/Trials`` - ``Operations/Trials``
- ``Operations/TypeModel`` - ``Operations/TypeModel``
- ``Operations/UltraBlurColors``
- ``Operations/UpdatePlaylistErrors`` - ``Operations/UpdatePlaylistErrors``
- ``Operations/UpdatePlaylistPlaylistsErrors`` - ``Operations/UpdatePlaylistPlaylistsErrors``
- ``Operations/UpdatePlaylistRequest`` - ``Operations/UpdatePlaylistRequest``

View File

@@ -0,0 +1,14 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations.ActiveDirection: Serializable {
func serialize(with format: SerializableFormat) throws -> String {
return try rawValue.serialize(with: format)
}
func serializeQueryParameters(with format: SerializableFormat) throws -> [QueryParameter] {
return [QueryParameter(key: [], serialized: try serialize(with: format))]
}
}

View File

@@ -0,0 +1,14 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations.DefaultDirection: Serializable {
func serialize(with format: SerializableFormat) throws -> String {
return try rawValue.serialize(with: format)
}
func serializeQueryParameters(with format: SerializableFormat) throws -> [QueryParameter] {
return [QueryParameter(key: [], serialized: try serialize(with: format))]
}
}

View File

@@ -0,0 +1,14 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations.FlattenSeasons: Serializable {
func serialize(with format: SerializableFormat) throws -> String {
return try rawValue.serialize(with: format)
}
func serializeQueryParameters(with format: SerializableFormat) throws -> [QueryParameter] {
return [QueryParameter(key: [], serialized: try serialize(with: format))]
}
}

View File

@@ -0,0 +1,14 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations.GetLibraryItemsLibraryResponseType: Serializable {
func serialize(with format: SerializableFormat) throws -> String {
return try rawValue.serialize(with: format)
}
func serializeQueryParameters(with format: SerializableFormat) throws -> [QueryParameter] {
return [QueryParameter(key: [], serialized: try serialize(with: format))]
}
}

View File

@@ -32,9 +32,9 @@ extension Operations.GetLibraryItemsRequest: PathParameterSerializable {
extension Operations.GetLibraryItemsRequest: QueryParameterSerializable { extension Operations.GetLibraryItemsRequest: QueryParameterSerializable {
func serializedQueryParameters(with parameterDefaults: ParameterDefaults?, formatOverride: SerializableFormat?) throws -> [QueryParameter] { func serializedQueryParameters(with parameterDefaults: ParameterDefaults?, formatOverride: SerializableFormat?) throws -> [QueryParameter] {
let builder = QueryParameterBuilder() let builder = QueryParameterBuilder()
try builder.addQueryParameters(from: type, named: "type", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults)
try builder.addQueryParameters(from: includeGuids, named: "includeGuids", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults) try builder.addQueryParameters(from: includeGuids, named: "includeGuids", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults)
try builder.addQueryParameters(from: includeMeta, named: "includeMeta", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults) try builder.addQueryParameters(from: includeMeta, named: "includeMeta", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults)
try builder.addQueryParameters(from: type, named: "type", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults)
try builder.addQueryParameters(from: xPlexContainerSize, named: "X-Plex-Container-Size", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults) try builder.addQueryParameters(from: xPlexContainerSize, named: "X-Plex-Container-Size", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults)
try builder.addQueryParameters(from: xPlexContainerStart, named: "X-Plex-Container-Start", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults) try builder.addQueryParameters(from: xPlexContainerStart, named: "X-Plex-Container-Start", format: formatOverride ?? .query(style: .form, explode: true), parameterDefaults: parameterDefaults)
return builder.build() return builder.build()

View File

@@ -0,0 +1,14 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations.GetLibraryItemsType: Serializable {
func serialize(with format: SerializableFormat) throws -> String {
return try rawValue.serialize(with: format)
}
func serializeQueryParameters(with format: SerializableFormat) throws -> [QueryParameter] {
return [QueryParameter(key: [], serialized: try serialize(with: format))]
}
}

View File

@@ -0,0 +1,14 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations.HasThumbnail: Serializable {
func serialize(with format: SerializableFormat) throws -> String {
return try rawValue.serialize(with: format)
}
func serializeQueryParameters(with format: SerializableFormat) throws -> [QueryParameter] {
return [QueryParameter(key: [], serialized: try serialize(with: format))]
}
}

View File

@@ -0,0 +1,14 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations.ShowOrdering: Serializable {
func serialize(with format: SerializableFormat) throws -> String {
return try rawValue.serialize(with: format)
}
func serializeQueryParameters(with format: SerializableFormat) throws -> [QueryParameter] {
return [QueryParameter(key: [], serialized: try serialize(with: format))]
}
}

View File

@@ -0,0 +1,26 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// A model object
public struct Action {
public let id: String
public let key: String
/// Creates an object with the specified parameters
///
///
public init(id: String, key: String) {
self.id = id
self.key = key
}
}}
extension Operations.Action: Codable {
enum CodingKeys: String, CodingKey {
case id
case key
}
}

View File

@@ -0,0 +1,11 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// The direction of the sort. Can be either `asc` or `desc`.
///
public enum ActiveDirection: String, Codable, APIValue {
case ascending = "asc"
case descending = "desc"
}}

View File

@@ -0,0 +1,23 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// A model object
public struct Collection {
public let tag: String?
/// Creates an object with the specified parameters
///
///
public init(tag: String? = nil) {
self.tag = tag
}
}}
extension Operations.Collection: Codable {
enum CodingKeys: String, CodingKey {
case tag
}
}

View File

@@ -0,0 +1,11 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// The direction of the sort. Can be either `asc` or `desc`.
///
public enum DefaultDirection: String, Codable, APIValue {
case ascending = "asc"
case descending = "desc"
}}

View File

@@ -5,25 +5,37 @@ import Foundation
extension Operations { extension Operations {
/// A model object /// A model object
public struct Feature { public struct Feature {
public let type: String
public let action: [Operations.Action]?
public let directory: [Operations.GetMediaProvidersDirectory]? public let directory: [Operations.GetMediaProvidersDirectory]?
public let flavor: String?
public let key: String? public let key: String?
public let type: String? public let scrobbleKey: String?
public let unscrobbleKey: String?
/// Creates an object with the specified parameters /// Creates an object with the specified parameters
/// ///
/// ///
public init(directory: [Operations.GetMediaProvidersDirectory]? = nil, key: String? = nil, type: String? = nil) { public init(type: String, action: [Operations.Action]? = nil, directory: [Operations.GetMediaProvidersDirectory]? = nil, flavor: String? = nil, key: String? = nil, scrobbleKey: String? = nil, unscrobbleKey: String? = nil) {
self.directory = directory
self.key = key
self.type = type self.type = type
self.action = action
self.directory = directory
self.flavor = flavor
self.key = key
self.scrobbleKey = scrobbleKey
self.unscrobbleKey = unscrobbleKey
} }
}} }}
extension Operations.Feature: Codable { extension Operations.Feature: Codable {
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case directory = "Directory"
case key
case type case type
case action = "Action"
case directory = "Directory"
case flavor
case key
case scrobbleKey
case unscrobbleKey
} }
} }

View File

@@ -0,0 +1,9 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
public enum FlattenSeasons: String, Codable, APIValue {
case `false` = "0"
case `true` = "1"
}}

View File

@@ -0,0 +1,29 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// A model object
public struct GetLibraryItemsImage {
public let alt: String
public let type: Operations.GetLibraryItemsLibraryResponseType
public let url: String
/// Creates an object with the specified parameters
///
///
public init(alt: String, type: Operations.GetLibraryItemsLibraryResponseType, url: String) {
self.alt = alt
self.type = type
self.url = url
}
}}
extension Operations.GetLibraryItemsImage: Codable {
enum CodingKeys: String, CodingKey {
case alt
case type
case url
}
}

View File

@@ -0,0 +1,11 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
public enum GetLibraryItemsLibraryResponseType: String, Codable, APIValue {
case coverPoster = "coverPoster"
case background = "background"
case snapshot = "snapshot"
case clearLogo = "clearLogo"
}}

View File

@@ -0,0 +1,41 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// A model object
public struct GetLibraryItemsLibraryType {
public let active: Bool
public let key: String
public let title: String
public let type: String
public let field: [Operations.GetLibraryItemsField]?
public let filter: [Operations.GetLibraryItemsFilter]?
public let sort: [Operations.GetLibraryItemsSort]?
/// Creates an object with the specified parameters
///
///
public init(active: Bool, key: String, title: String, type: String, field: [Operations.GetLibraryItemsField]? = nil, filter: [Operations.GetLibraryItemsFilter]? = nil, sort: [Operations.GetLibraryItemsSort]? = nil) {
self.active = active
self.key = key
self.title = title
self.type = type
self.field = field
self.filter = filter
self.sort = sort
}
}}
extension Operations.GetLibraryItemsLibraryType: Codable {
enum CodingKeys: String, CodingKey {
case active
case key
case title
case type
case field = "Field"
case filter = "Filter"
case sort = "Sort"
}
}

View File

@@ -6,26 +6,28 @@ extension Operations {
/// A model object /// A model object
public struct GetLibraryItemsMedia { public struct GetLibraryItemsMedia {
@DecimalSerialized @DecimalSerialized
public private(set) var aspectRatio: Double? public private(set) var aspectRatio: Double
public let audioChannels: Int? public let audioChannels: Int
public let audioCodec: String? public let audioCodec: String
public let bitrate: Int? public let bitrate: Int
public let container: String? public let container: String
public let duration: Int? public let duration: Int
public let height: Int? public let height: Int
public let id: Int? public let id: Int
public let part: [Operations.GetLibraryItemsPart]? public let part: [Operations.GetLibraryItemsPart]
public let videoCodec: String? public let videoCodec: String
public let videoFrameRate: String? public let videoFrameRate: String
public let videoProfile: String? public let videoProfile: String
public let videoResolution: String? public let videoResolution: String
public let width: Int? public let width: Int
public let audioProfile: String?
public let hasVoiceActivity: Bool?
/// Creates an object with the specified parameters /// Creates an object with the specified parameters
/// ///
/// ///
public init(aspectRatio: Double? = nil, audioChannels: Int? = nil, audioCodec: String? = nil, bitrate: Int? = nil, container: String? = nil, duration: Int? = nil, height: Int? = nil, id: Int? = nil, part: [Operations.GetLibraryItemsPart]? = nil, videoCodec: String? = nil, videoFrameRate: String? = nil, videoProfile: String? = nil, videoResolution: String? = nil, width: Int? = nil) { public init(aspectRatio: Double, audioChannels: Int, audioCodec: String, bitrate: Int, container: String, duration: Int, height: Int, id: Int, part: [Operations.GetLibraryItemsPart], videoCodec: String, videoFrameRate: String, videoProfile: String, videoResolution: String, width: Int, audioProfile: String? = nil, hasVoiceActivity: Bool? = nil) {
self._aspectRatio = DecimalSerialized<Double?>(wrappedValue: aspectRatio) self._aspectRatio = DecimalSerialized<Double>(wrappedValue: aspectRatio)
self.audioChannels = audioChannels self.audioChannels = audioChannels
self.audioCodec = audioCodec self.audioCodec = audioCodec
self.bitrate = bitrate self.bitrate = bitrate
@@ -39,6 +41,8 @@ extension Operations {
self.videoProfile = videoProfile self.videoProfile = videoProfile
self.videoResolution = videoResolution self.videoResolution = videoResolution
self.width = width self.width = width
self.audioProfile = audioProfile
self.hasVoiceActivity = hasVoiceActivity
} }
}} }}
@@ -58,49 +62,53 @@ extension Operations.GetLibraryItemsMedia: Codable {
case videoProfile case videoProfile
case videoResolution case videoResolution
case width case width
case audioProfile
case hasVoiceActivity
} }
public init(from decoder: Decoder) throws { public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self) let container = try decoder.container(keyedBy: CodingKeys.self)
self._aspectRatio = try container.decodeIfPresent(DecimalSerialized<Double?>.self, forKey: .aspectRatio) ?? DecimalSerialized<Double?>(wrappedValue: nil) self._aspectRatio = try container.decode(DecimalSerialized<Double>.self, forKey: .aspectRatio)
self.audioChannels = try container.decodeIfPresent(Int.self, forKey: .audioChannels) self.audioChannels = try container.decode(Int.self, forKey: .audioChannels)
self.audioCodec = try container.decodeIfPresent(String.self, forKey: .audioCodec) self.audioCodec = try container.decode(String.self, forKey: .audioCodec)
self.bitrate = try container.decodeIfPresent(Int.self, forKey: .bitrate) self.bitrate = try container.decode(Int.self, forKey: .bitrate)
self.container = try container.decodeIfPresent(String.self, forKey: .container) self.container = try container.decode(String.self, forKey: .container)
self.duration = try container.decodeIfPresent(Int.self, forKey: .duration) self.duration = try container.decode(Int.self, forKey: .duration)
self.height = try container.decodeIfPresent(Int.self, forKey: .height) self.height = try container.decode(Int.self, forKey: .height)
self.id = try container.decodeIfPresent(Int.self, forKey: .id) self.id = try container.decode(Int.self, forKey: .id)
self.part = try container.decodeIfPresent([Operations.GetLibraryItemsPart].self, forKey: .part) self.part = try container.decode([Operations.GetLibraryItemsPart].self, forKey: .part)
self.videoCodec = try container.decodeIfPresent(String.self, forKey: .videoCodec) self.videoCodec = try container.decode(String.self, forKey: .videoCodec)
self.videoFrameRate = try container.decodeIfPresent(String.self, forKey: .videoFrameRate) self.videoFrameRate = try container.decode(String.self, forKey: .videoFrameRate)
self.videoProfile = try container.decodeIfPresent(String.self, forKey: .videoProfile) self.videoProfile = try container.decode(String.self, forKey: .videoProfile)
self.videoResolution = try container.decodeIfPresent(String.self, forKey: .videoResolution) self.videoResolution = try container.decode(String.self, forKey: .videoResolution)
self.width = try container.decodeIfPresent(Int.self, forKey: .width) self.width = try container.decode(Int.self, forKey: .width)
self.audioProfile = try container.decodeIfPresent(String.self, forKey: .audioProfile)
self.hasVoiceActivity = try container.decodeIfPresent(Bool.self, forKey: .hasVoiceActivity)
} }
public func encode(to encoder: Encoder) throws { public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self) var container = encoder.container(keyedBy: CodingKeys.self)
if self.aspectRatio != nil {
try container.encode(self._aspectRatio, forKey: .aspectRatio) try container.encode(self._aspectRatio, forKey: .aspectRatio)
} try container.encode(self.audioChannels, forKey: .audioChannels)
try container.encodeIfPresent(self.audioChannels, forKey: .audioChannels) try container.encode(self.audioCodec, forKey: .audioCodec)
try container.encodeIfPresent(self.audioCodec, forKey: .audioCodec) try container.encode(self.bitrate, forKey: .bitrate)
try container.encodeIfPresent(self.bitrate, forKey: .bitrate) try container.encode(self.container, forKey: .container)
try container.encodeIfPresent(self.container, forKey: .container) try container.encode(self.duration, forKey: .duration)
try container.encodeIfPresent(self.duration, forKey: .duration) try container.encode(self.height, forKey: .height)
try container.encodeIfPresent(self.height, forKey: .height) try container.encode(self.id, forKey: .id)
try container.encodeIfPresent(self.id, forKey: .id) try container.encode(self.part, forKey: .part)
try container.encodeIfPresent(self.part, forKey: .part) try container.encode(self.videoCodec, forKey: .videoCodec)
try container.encodeIfPresent(self.videoCodec, forKey: .videoCodec) try container.encode(self.videoFrameRate, forKey: .videoFrameRate)
try container.encodeIfPresent(self.videoFrameRate, forKey: .videoFrameRate) try container.encode(self.videoProfile, forKey: .videoProfile)
try container.encodeIfPresent(self.videoProfile, forKey: .videoProfile) try container.encode(self.videoResolution, forKey: .videoResolution)
try container.encodeIfPresent(self.videoResolution, forKey: .videoResolution) try container.encode(self.width, forKey: .width)
try container.encodeIfPresent(self.width, forKey: .width) try container.encodeIfPresent(self.audioProfile, forKey: .audioProfile)
try container.encodeIfPresent(self.hasVoiceActivity, forKey: .hasVoiceActivity)
} }
} }
extension Operations.GetLibraryItemsMedia { extension Operations.GetLibraryItemsMedia {
var aspectRatioWrapper: DecimalSerialized<Double?> { var aspectRatioWrapper: DecimalSerialized<Double> {
return _aspectRatio return _aspectRatio
} }
} }

View File

@@ -7,22 +7,26 @@ extension Operations {
public struct GetLibraryItemsMediaContainer { public struct GetLibraryItemsMediaContainer {
public let allowSync: Bool public let allowSync: Bool
public let art: String public let art: String
public let content: String
public let identifier: String public let identifier: String
public let librarySectionID: Operations.LibrarySectionID public let librarySectionID: Operations.LibrarySectionID
public let librarySectionTitle: String public let librarySectionTitle: String
public let librarySectionUUID: String public let librarySectionUUID: String
public let mediaTagPrefix: String public let mediaTagPrefix: String
public let mediaTagVersion: Int public let mediaTagVersion: Int
public let metadata: [Operations.GetLibraryItemsMetadata]
public let offset: Int
public let size: Int public let size: Int
public let thumb: String public let thumb: String
public let title1: String public let title1: String
public let title2: String public let title2: String
public let totalSize: Int
public let viewGroup: String public let viewGroup: String
/// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
/// ///
public let meta: Operations.Meta? public let meta: Operations.Meta?
public let metadata: [Operations.GetLibraryItemsMetadata]?
public let mixedParents: Bool? public let mixedParents: Bool?
public let nocache: Bool?
public let viewMode: Int? public let viewMode: Int?
/// Creates an object with the specified parameters /// Creates an object with the specified parameters
@@ -30,23 +34,27 @@ extension Operations {
/// - Parameter meta: The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. /// - Parameter meta: The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
/// ///
/// ///
public init(allowSync: Bool, art: String, identifier: String, librarySectionID: Operations.LibrarySectionID, librarySectionTitle: String, librarySectionUUID: String, mediaTagPrefix: String, mediaTagVersion: Int, size: Int, thumb: String, title1: String, title2: String, viewGroup: String, meta: Operations.Meta? = nil, metadata: [Operations.GetLibraryItemsMetadata]? = nil, mixedParents: Bool? = nil, viewMode: Int? = nil) { public init(allowSync: Bool, art: String, content: String, identifier: String, librarySectionID: Operations.LibrarySectionID, librarySectionTitle: String, librarySectionUUID: String, mediaTagPrefix: String, mediaTagVersion: Int, metadata: [Operations.GetLibraryItemsMetadata], offset: Int, size: Int, thumb: String, title1: String, title2: String, totalSize: Int, viewGroup: String, meta: Operations.Meta? = nil, mixedParents: Bool? = nil, nocache: Bool? = nil, viewMode: Int? = nil) {
self.allowSync = allowSync self.allowSync = allowSync
self.art = art self.art = art
self.content = content
self.identifier = identifier self.identifier = identifier
self.librarySectionID = librarySectionID self.librarySectionID = librarySectionID
self.librarySectionTitle = librarySectionTitle self.librarySectionTitle = librarySectionTitle
self.librarySectionUUID = librarySectionUUID self.librarySectionUUID = librarySectionUUID
self.mediaTagPrefix = mediaTagPrefix self.mediaTagPrefix = mediaTagPrefix
self.mediaTagVersion = mediaTagVersion self.mediaTagVersion = mediaTagVersion
self.metadata = metadata
self.offset = offset
self.size = size self.size = size
self.thumb = thumb self.thumb = thumb
self.title1 = title1 self.title1 = title1
self.title2 = title2 self.title2 = title2
self.totalSize = totalSize
self.viewGroup = viewGroup self.viewGroup = viewGroup
self.meta = meta self.meta = meta
self.metadata = metadata
self.mixedParents = mixedParents self.mixedParents = mixedParents
self.nocache = nocache
self.viewMode = viewMode self.viewMode = viewMode
} }
}} }}
@@ -55,20 +63,24 @@ extension Operations.GetLibraryItemsMediaContainer: Codable {
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case allowSync case allowSync
case art case art
case content
case identifier case identifier
case librarySectionID case librarySectionID
case librarySectionTitle case librarySectionTitle
case librarySectionUUID case librarySectionUUID
case mediaTagPrefix case mediaTagPrefix
case mediaTagVersion case mediaTagVersion
case metadata = "Metadata"
case offset
case size case size
case thumb case thumb
case title1 case title1
case title2 case title2
case totalSize
case viewGroup case viewGroup
case meta = "Meta" case meta = "Meta"
case metadata = "Metadata"
case mixedParents case mixedParents
case nocache
case viewMode case viewMode
} }
} }

View File

@@ -5,37 +5,50 @@ import Foundation
extension Operations { extension Operations {
/// A model object /// A model object
public struct GetLibraryItemsMetadata { public struct GetLibraryItemsMetadata {
public let duration: Int /// Unix epoch datetime in seconds
public let addedAt: Int
public let guid: String public let guid: String
public let key: String public let key: String
public let media: [Operations.GetLibraryItemsMedia] /// The rating key (Media ID) of this media item.
/// Note: This is always an integer, but is represented as a string in the API.
///
public let ratingKey: String public let ratingKey: String
public let summary: String
public let title: String public let title: String
public let type: String /// The type of media content
public let year: Int ///
public let addedAt: Int? public let type: Operations.GetLibraryItemsType
public let art: String? public let art: String?
@DecimalSerialized @DecimalSerialized
public private(set) var audienceRating: Double? public private(set) var audienceRating: Double?
public let audienceRatingImage: String? public let audienceRatingImage: String?
public let banner: String?
public let chapterSource: String? public let chapterSource: String?
public let childCount: Int? public let childCount: Int?
public let collection: [Operations.Collection]?
public let contentRating: String? public let contentRating: String?
public let country: [Operations.GetLibraryItemsCountry]? public let country: [Operations.GetLibraryItemsCountry]?
public let director: [Operations.GetLibraryItemsDirector]? public let director: [Operations.GetLibraryItemsDirector]?
public let duration: Int?
public let flattenSeasons: Operations.FlattenSeasons?
public let genre: [Operations.GetLibraryItemsGenre]? public let genre: [Operations.GetLibraryItemsGenre]?
public let grandparentArt: String? public let grandparentArt: String?
public let grandparentGuid: String? public let grandparentGuid: String?
public let grandparentKey: String? public let grandparentKey: String?
public let grandparentRatingKey: String? public let grandparentRatingKey: String?
public let grandparentSlug: String?
public let grandparentTheme: String? public let grandparentTheme: String?
public let grandparentThumb: String? public let grandparentThumb: String?
public let grandparentTitle: String? public let grandparentTitle: String?
public let hasPremiumExtras: String? public let hasPremiumExtras: String?
public let hasPremiumPrimaryExtra: String? public let hasPremiumPrimaryExtra: String?
public let image: [Operations.GetLibraryItemsImage]?
public let index: Int? public let index: Int?
public let lastViewedAt: Int? public let lastViewedAt: Int?
public let leafCount: Int? public let leafCount: Int?
/// The Media object is only included when type query is `4` or higher.
///
public let media: [Operations.GetLibraryItemsMedia]?
/// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. /// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
/// ///
public let mediaGuid: [Operations.MediaGuid]? public let mediaGuid: [Operations.MediaGuid]?
@@ -45,6 +58,8 @@ extension Operations {
public let parentGuid: String? public let parentGuid: String?
public let parentIndex: Int? public let parentIndex: Int?
public let parentKey: String? public let parentKey: String?
/// The rating key of the parent item.
///
public let parentRatingKey: String? public let parentRatingKey: String?
public let parentStudio: String? public let parentStudio: String?
public let parentTheme: String? public let parentTheme: String?
@@ -56,55 +71,91 @@ extension Operations {
public private(set) var rating: Double? public private(set) var rating: Double?
public let ratingImage: String? public let ratingImage: String?
public let role: [Operations.GetLibraryItemsRole]? public let role: [Operations.GetLibraryItemsRole]?
public let seasonCount: Int?
/// Setting that indicates the episode ordering for the show
/// None = Library default,
/// tmdbAiring = The Movie Database (Aired),
/// aired = TheTVDB (Aired),
/// dvd = TheTVDB (DVD),
/// absolute = TheTVDB (Absolute)).
///
public let showOrdering: Operations.ShowOrdering?
public let skipChildren: Bool?
public let skipCount: Int? public let skipCount: Int?
public let slug: String?
public let studio: String? public let studio: String?
public let summary: String?
public let tagline: String? public let tagline: String?
public let theme: String? public let theme: String?
public let thumb: String? public let thumb: String?
public let titleSort: String? public let titleSort: String?
public let ultraBlurColors: Operations.UltraBlurColors?
/// Unix epoch datetime in seconds
public let updatedAt: Int? public let updatedAt: Int?
public let viewCount: Int? public let viewCount: Int?
public let viewedLeafCount: Int? public let viewedLeafCount: Int?
public let viewOffset: Int? public let viewOffset: Int?
public let writer: [Operations.GetLibraryItemsWriter]? public let writer: [Operations.GetLibraryItemsWriter]?
public let year: Int?
/// Creates an object with the specified parameters /// Creates an object with the specified parameters
/// ///
/// - Parameter addedAt: Unix epoch datetime in seconds
/// - Parameter ratingKey: The rating key (Media ID) of this media item.
/// Note: This is always an integer, but is represented as a string in the API.
///
/// - Parameter type: The type of media content
///
/// - Parameter media: The Media object is only included when type query is `4` or higher.
///
/// - Parameter mediaGuid: The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. /// - Parameter mediaGuid: The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
/// ///
/// - Parameter parentRatingKey: The rating key of the parent item.
/// ///
public init(duration: Int, guid: String, key: String, media: [Operations.GetLibraryItemsMedia], ratingKey: String, title: String, type: String, year: Int, addedAt: Int? = nil, art: String? = nil, audienceRating: Double? = nil, audienceRatingImage: String? = nil, chapterSource: String? = nil, childCount: Int? = nil, contentRating: String? = nil, country: [Operations.GetLibraryItemsCountry]? = nil, director: [Operations.GetLibraryItemsDirector]? = nil, genre: [Operations.GetLibraryItemsGenre]? = nil, grandparentArt: String? = nil, grandparentGuid: String? = nil, grandparentKey: String? = nil, grandparentRatingKey: String? = nil, grandparentTheme: String? = nil, grandparentThumb: String? = nil, grandparentTitle: String? = nil, hasPremiumExtras: String? = nil, hasPremiumPrimaryExtra: String? = nil, index: Int? = nil, lastViewedAt: Int? = nil, leafCount: Int? = nil, mediaGuid: [Operations.MediaGuid]? = nil, originallyAvailableAt: Date? = nil, originalTitle: String? = nil, parentGuid: String? = nil, parentIndex: Int? = nil, parentKey: String? = nil, parentRatingKey: String? = nil, parentStudio: String? = nil, parentTheme: String? = nil, parentThumb: String? = nil, parentTitle: String? = nil, parentYear: Int? = nil, primaryExtraKey: String? = nil, rating: Double? = nil, ratingImage: String? = nil, role: [Operations.GetLibraryItemsRole]? = nil, skipCount: Int? = nil, studio: String? = nil, summary: String? = nil, tagline: String? = nil, theme: String? = nil, thumb: String? = nil, titleSort: String? = nil, updatedAt: Int? = nil, viewCount: Int? = nil, viewedLeafCount: Int? = nil, viewOffset: Int? = nil, writer: [Operations.GetLibraryItemsWriter]? = nil) { /// - Parameter showOrdering: Setting that indicates the episode ordering for the show
self.duration = duration /// None = Library default,
/// tmdbAiring = The Movie Database (Aired),
/// aired = TheTVDB (Aired),
/// dvd = TheTVDB (DVD),
/// absolute = TheTVDB (Absolute)).
///
/// - Parameter updatedAt: Unix epoch datetime in seconds
///
public init(addedAt: Int, guid: String, key: String, ratingKey: String, summary: String, title: String, type: Operations.GetLibraryItemsType, art: String? = nil, audienceRating: Double? = nil, audienceRatingImage: String? = nil, banner: String? = nil, chapterSource: String? = nil, childCount: Int? = nil, collection: [Operations.Collection]? = nil, contentRating: String? = nil, country: [Operations.GetLibraryItemsCountry]? = nil, director: [Operations.GetLibraryItemsDirector]? = nil, duration: Int? = nil, flattenSeasons: Operations.FlattenSeasons? = nil, genre: [Operations.GetLibraryItemsGenre]? = nil, grandparentArt: String? = nil, grandparentGuid: String? = nil, grandparentKey: String? = nil, grandparentRatingKey: String? = nil, grandparentSlug: String? = nil, grandparentTheme: String? = nil, grandparentThumb: String? = nil, grandparentTitle: String? = nil, hasPremiumExtras: String? = nil, hasPremiumPrimaryExtra: String? = nil, image: [Operations.GetLibraryItemsImage]? = nil, index: Int? = nil, lastViewedAt: Int? = nil, leafCount: Int? = nil, media: [Operations.GetLibraryItemsMedia]? = nil, mediaGuid: [Operations.MediaGuid]? = nil, originallyAvailableAt: Date? = nil, originalTitle: String? = nil, parentGuid: String? = nil, parentIndex: Int? = nil, parentKey: String? = nil, parentRatingKey: String? = nil, parentStudio: String? = nil, parentTheme: String? = nil, parentThumb: String? = nil, parentTitle: String? = nil, parentYear: Int? = nil, primaryExtraKey: String? = nil, rating: Double? = nil, ratingImage: String? = nil, role: [Operations.GetLibraryItemsRole]? = nil, seasonCount: Int? = nil, showOrdering: Operations.ShowOrdering? = nil, skipChildren: Bool? = nil, skipCount: Int? = nil, slug: String? = nil, studio: String? = nil, tagline: String? = nil, theme: String? = nil, thumb: String? = nil, titleSort: String? = nil, ultraBlurColors: Operations.UltraBlurColors? = nil, updatedAt: Int? = nil, viewCount: Int? = nil, viewedLeafCount: Int? = nil, viewOffset: Int? = nil, writer: [Operations.GetLibraryItemsWriter]? = nil, year: Int? = nil) {
self.addedAt = addedAt
self.guid = guid self.guid = guid
self.key = key self.key = key
self.media = media
self.ratingKey = ratingKey self.ratingKey = ratingKey
self.summary = summary
self.title = title self.title = title
self.type = type self.type = type
self.year = year
self.addedAt = addedAt
self.art = art self.art = art
self._audienceRating = DecimalSerialized<Double?>(wrappedValue: audienceRating) self._audienceRating = DecimalSerialized<Double?>(wrappedValue: audienceRating)
self.audienceRatingImage = audienceRatingImage self.audienceRatingImage = audienceRatingImage
self.banner = banner
self.chapterSource = chapterSource self.chapterSource = chapterSource
self.childCount = childCount self.childCount = childCount
self.collection = collection
self.contentRating = contentRating self.contentRating = contentRating
self.country = country self.country = country
self.director = director self.director = director
self.duration = duration
self.flattenSeasons = flattenSeasons
self.genre = genre self.genre = genre
self.grandparentArt = grandparentArt self.grandparentArt = grandparentArt
self.grandparentGuid = grandparentGuid self.grandparentGuid = grandparentGuid
self.grandparentKey = grandparentKey self.grandparentKey = grandparentKey
self.grandparentRatingKey = grandparentRatingKey self.grandparentRatingKey = grandparentRatingKey
self.grandparentSlug = grandparentSlug
self.grandparentTheme = grandparentTheme self.grandparentTheme = grandparentTheme
self.grandparentThumb = grandparentThumb self.grandparentThumb = grandparentThumb
self.grandparentTitle = grandparentTitle self.grandparentTitle = grandparentTitle
self.hasPremiumExtras = hasPremiumExtras self.hasPremiumExtras = hasPremiumExtras
self.hasPremiumPrimaryExtra = hasPremiumPrimaryExtra self.hasPremiumPrimaryExtra = hasPremiumPrimaryExtra
self.image = image
self.index = index self.index = index
self.lastViewedAt = lastViewedAt self.lastViewedAt = lastViewedAt
self.leafCount = leafCount self.leafCount = leafCount
self.media = media
self.mediaGuid = mediaGuid self.mediaGuid = mediaGuid
self._originallyAvailableAt = DateOnly<Date?>(wrappedValue: originallyAvailableAt) self._originallyAvailableAt = DateOnly<Date?>(wrappedValue: originallyAvailableAt)
self.originalTitle = originalTitle self.originalTitle = originalTitle
@@ -121,53 +172,63 @@ extension Operations {
self._rating = DecimalSerialized<Double?>(wrappedValue: rating) self._rating = DecimalSerialized<Double?>(wrappedValue: rating)
self.ratingImage = ratingImage self.ratingImage = ratingImage
self.role = role self.role = role
self.seasonCount = seasonCount
self.showOrdering = showOrdering
self.skipChildren = skipChildren
self.skipCount = skipCount self.skipCount = skipCount
self.slug = slug
self.studio = studio self.studio = studio
self.summary = summary
self.tagline = tagline self.tagline = tagline
self.theme = theme self.theme = theme
self.thumb = thumb self.thumb = thumb
self.titleSort = titleSort self.titleSort = titleSort
self.ultraBlurColors = ultraBlurColors
self.updatedAt = updatedAt self.updatedAt = updatedAt
self.viewCount = viewCount self.viewCount = viewCount
self.viewedLeafCount = viewedLeafCount self.viewedLeafCount = viewedLeafCount
self.viewOffset = viewOffset self.viewOffset = viewOffset
self.writer = writer self.writer = writer
self.year = year
} }
}} }}
extension Operations.GetLibraryItemsMetadata: Codable { extension Operations.GetLibraryItemsMetadata: Codable {
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case duration case addedAt
case guid case guid
case key case key
case media = "Media"
case ratingKey case ratingKey
case summary
case title case title
case type case type
case year
case addedAt
case art case art
case audienceRating case audienceRating
case audienceRatingImage case audienceRatingImage
case banner
case chapterSource case chapterSource
case childCount case childCount
case collection = "Collection"
case contentRating case contentRating
case country = "Country" case country = "Country"
case director = "Director" case director = "Director"
case duration
case flattenSeasons
case genre = "Genre" case genre = "Genre"
case grandparentArt case grandparentArt
case grandparentGuid case grandparentGuid
case grandparentKey case grandparentKey
case grandparentRatingKey case grandparentRatingKey
case grandparentSlug
case grandparentTheme case grandparentTheme
case grandparentThumb case grandparentThumb
case grandparentTitle case grandparentTitle
case hasPremiumExtras case hasPremiumExtras
case hasPremiumPrimaryExtra case hasPremiumPrimaryExtra
case image = "Image"
case index case index
case lastViewedAt case lastViewedAt
case leafCount case leafCount
case media = "Media"
case mediaGuid = "Guid" case mediaGuid = "Guid"
case originallyAvailableAt case originallyAvailableAt
case originalTitle case originalTitle
@@ -184,52 +245,62 @@ extension Operations.GetLibraryItemsMetadata: Codable {
case rating case rating
case ratingImage case ratingImage
case role = "Role" case role = "Role"
case seasonCount
case showOrdering
case skipChildren
case skipCount case skipCount
case slug
case studio case studio
case summary
case tagline case tagline
case theme case theme
case thumb case thumb
case titleSort case titleSort
case ultraBlurColors = "UltraBlurColors"
case updatedAt case updatedAt
case viewCount case viewCount
case viewedLeafCount case viewedLeafCount
case viewOffset case viewOffset
case writer = "Writer" case writer = "Writer"
case year
} }
public init(from decoder: Decoder) throws { public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self) let container = try decoder.container(keyedBy: CodingKeys.self)
self.duration = try container.decode(Int.self, forKey: .duration) self.addedAt = try container.decode(Int.self, forKey: .addedAt)
self.guid = try container.decode(String.self, forKey: .guid) self.guid = try container.decode(String.self, forKey: .guid)
self.key = try container.decode(String.self, forKey: .key) self.key = try container.decode(String.self, forKey: .key)
self.media = try container.decode([Operations.GetLibraryItemsMedia].self, forKey: .media)
self.ratingKey = try container.decode(String.self, forKey: .ratingKey) self.ratingKey = try container.decode(String.self, forKey: .ratingKey)
self.summary = try container.decode(String.self, forKey: .summary)
self.title = try container.decode(String.self, forKey: .title) self.title = try container.decode(String.self, forKey: .title)
self.type = try container.decode(String.self, forKey: .type) self.type = try container.decode(Operations.GetLibraryItemsType.self, forKey: .type)
self.year = try container.decode(Int.self, forKey: .year)
self.addedAt = try container.decodeIfPresent(Int.self, forKey: .addedAt)
self.art = try container.decodeIfPresent(String.self, forKey: .art) self.art = try container.decodeIfPresent(String.self, forKey: .art)
self._audienceRating = try container.decodeIfPresent(DecimalSerialized<Double?>.self, forKey: .audienceRating) ?? DecimalSerialized<Double?>(wrappedValue: nil) self._audienceRating = try container.decodeIfPresent(DecimalSerialized<Double?>.self, forKey: .audienceRating) ?? DecimalSerialized<Double?>(wrappedValue: nil)
self.audienceRatingImage = try container.decodeIfPresent(String.self, forKey: .audienceRatingImage) self.audienceRatingImage = try container.decodeIfPresent(String.self, forKey: .audienceRatingImage)
self.banner = try container.decodeIfPresent(String.self, forKey: .banner)
self.chapterSource = try container.decodeIfPresent(String.self, forKey: .chapterSource) self.chapterSource = try container.decodeIfPresent(String.self, forKey: .chapterSource)
self.childCount = try container.decodeIfPresent(Int.self, forKey: .childCount) self.childCount = try container.decodeIfPresent(Int.self, forKey: .childCount)
self.collection = try container.decodeIfPresent([Operations.Collection].self, forKey: .collection)
self.contentRating = try container.decodeIfPresent(String.self, forKey: .contentRating) self.contentRating = try container.decodeIfPresent(String.self, forKey: .contentRating)
self.country = try container.decodeIfPresent([Operations.GetLibraryItemsCountry].self, forKey: .country) self.country = try container.decodeIfPresent([Operations.GetLibraryItemsCountry].self, forKey: .country)
self.director = try container.decodeIfPresent([Operations.GetLibraryItemsDirector].self, forKey: .director) self.director = try container.decodeIfPresent([Operations.GetLibraryItemsDirector].self, forKey: .director)
self.duration = try container.decodeIfPresent(Int.self, forKey: .duration)
self.flattenSeasons = try container.decodeIfPresent(Operations.FlattenSeasons.self, forKey: .flattenSeasons)
self.genre = try container.decodeIfPresent([Operations.GetLibraryItemsGenre].self, forKey: .genre) self.genre = try container.decodeIfPresent([Operations.GetLibraryItemsGenre].self, forKey: .genre)
self.grandparentArt = try container.decodeIfPresent(String.self, forKey: .grandparentArt) self.grandparentArt = try container.decodeIfPresent(String.self, forKey: .grandparentArt)
self.grandparentGuid = try container.decodeIfPresent(String.self, forKey: .grandparentGuid) self.grandparentGuid = try container.decodeIfPresent(String.self, forKey: .grandparentGuid)
self.grandparentKey = try container.decodeIfPresent(String.self, forKey: .grandparentKey) self.grandparentKey = try container.decodeIfPresent(String.self, forKey: .grandparentKey)
self.grandparentRatingKey = try container.decodeIfPresent(String.self, forKey: .grandparentRatingKey) self.grandparentRatingKey = try container.decodeIfPresent(String.self, forKey: .grandparentRatingKey)
self.grandparentSlug = try container.decodeIfPresent(String.self, forKey: .grandparentSlug)
self.grandparentTheme = try container.decodeIfPresent(String.self, forKey: .grandparentTheme) self.grandparentTheme = try container.decodeIfPresent(String.self, forKey: .grandparentTheme)
self.grandparentThumb = try container.decodeIfPresent(String.self, forKey: .grandparentThumb) self.grandparentThumb = try container.decodeIfPresent(String.self, forKey: .grandparentThumb)
self.grandparentTitle = try container.decodeIfPresent(String.self, forKey: .grandparentTitle) self.grandparentTitle = try container.decodeIfPresent(String.self, forKey: .grandparentTitle)
self.hasPremiumExtras = try container.decodeIfPresent(String.self, forKey: .hasPremiumExtras) self.hasPremiumExtras = try container.decodeIfPresent(String.self, forKey: .hasPremiumExtras)
self.hasPremiumPrimaryExtra = try container.decodeIfPresent(String.self, forKey: .hasPremiumPrimaryExtra) self.hasPremiumPrimaryExtra = try container.decodeIfPresent(String.self, forKey: .hasPremiumPrimaryExtra)
self.image = try container.decodeIfPresent([Operations.GetLibraryItemsImage].self, forKey: .image)
self.index = try container.decodeIfPresent(Int.self, forKey: .index) self.index = try container.decodeIfPresent(Int.self, forKey: .index)
self.lastViewedAt = try container.decodeIfPresent(Int.self, forKey: .lastViewedAt) self.lastViewedAt = try container.decodeIfPresent(Int.self, forKey: .lastViewedAt)
self.leafCount = try container.decodeIfPresent(Int.self, forKey: .leafCount) self.leafCount = try container.decodeIfPresent(Int.self, forKey: .leafCount)
self.media = try container.decodeIfPresent([Operations.GetLibraryItemsMedia].self, forKey: .media)
self.mediaGuid = try container.decodeIfPresent([Operations.MediaGuid].self, forKey: .mediaGuid) self.mediaGuid = try container.decodeIfPresent([Operations.MediaGuid].self, forKey: .mediaGuid)
self._originallyAvailableAt = try container.decodeIfPresent(DateOnly<Date?>.self, forKey: .originallyAvailableAt) ?? DateOnly<Date?>(wrappedValue: nil) self._originallyAvailableAt = try container.decodeIfPresent(DateOnly<Date?>.self, forKey: .originallyAvailableAt) ?? DateOnly<Date?>(wrappedValue: nil)
self.originalTitle = try container.decodeIfPresent(String.self, forKey: .originalTitle) self.originalTitle = try container.decodeIfPresent(String.self, forKey: .originalTitle)
@@ -246,54 +317,64 @@ extension Operations.GetLibraryItemsMetadata: Codable {
self._rating = try container.decodeIfPresent(DecimalSerialized<Double?>.self, forKey: .rating) ?? DecimalSerialized<Double?>(wrappedValue: nil) self._rating = try container.decodeIfPresent(DecimalSerialized<Double?>.self, forKey: .rating) ?? DecimalSerialized<Double?>(wrappedValue: nil)
self.ratingImage = try container.decodeIfPresent(String.self, forKey: .ratingImage) self.ratingImage = try container.decodeIfPresent(String.self, forKey: .ratingImage)
self.role = try container.decodeIfPresent([Operations.GetLibraryItemsRole].self, forKey: .role) self.role = try container.decodeIfPresent([Operations.GetLibraryItemsRole].self, forKey: .role)
self.seasonCount = try container.decodeIfPresent(Int.self, forKey: .seasonCount)
self.showOrdering = try container.decodeIfPresent(Operations.ShowOrdering.self, forKey: .showOrdering)
self.skipChildren = try container.decodeIfPresent(Bool.self, forKey: .skipChildren)
self.skipCount = try container.decodeIfPresent(Int.self, forKey: .skipCount) self.skipCount = try container.decodeIfPresent(Int.self, forKey: .skipCount)
self.slug = try container.decodeIfPresent(String.self, forKey: .slug)
self.studio = try container.decodeIfPresent(String.self, forKey: .studio) self.studio = try container.decodeIfPresent(String.self, forKey: .studio)
self.summary = try container.decodeIfPresent(String.self, forKey: .summary)
self.tagline = try container.decodeIfPresent(String.self, forKey: .tagline) self.tagline = try container.decodeIfPresent(String.self, forKey: .tagline)
self.theme = try container.decodeIfPresent(String.self, forKey: .theme) self.theme = try container.decodeIfPresent(String.self, forKey: .theme)
self.thumb = try container.decodeIfPresent(String.self, forKey: .thumb) self.thumb = try container.decodeIfPresent(String.self, forKey: .thumb)
self.titleSort = try container.decodeIfPresent(String.self, forKey: .titleSort) self.titleSort = try container.decodeIfPresent(String.self, forKey: .titleSort)
self.ultraBlurColors = try container.decodeIfPresent(Operations.UltraBlurColors.self, forKey: .ultraBlurColors)
self.updatedAt = try container.decodeIfPresent(Int.self, forKey: .updatedAt) self.updatedAt = try container.decodeIfPresent(Int.self, forKey: .updatedAt)
self.viewCount = try container.decodeIfPresent(Int.self, forKey: .viewCount) self.viewCount = try container.decodeIfPresent(Int.self, forKey: .viewCount)
self.viewedLeafCount = try container.decodeIfPresent(Int.self, forKey: .viewedLeafCount) self.viewedLeafCount = try container.decodeIfPresent(Int.self, forKey: .viewedLeafCount)
self.viewOffset = try container.decodeIfPresent(Int.self, forKey: .viewOffset) self.viewOffset = try container.decodeIfPresent(Int.self, forKey: .viewOffset)
self.writer = try container.decodeIfPresent([Operations.GetLibraryItemsWriter].self, forKey: .writer) self.writer = try container.decodeIfPresent([Operations.GetLibraryItemsWriter].self, forKey: .writer)
self.year = try container.decodeIfPresent(Int.self, forKey: .year)
} }
public func encode(to encoder: Encoder) throws { public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self) var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(self.duration, forKey: .duration) try container.encode(self.addedAt, forKey: .addedAt)
try container.encode(self.guid, forKey: .guid) try container.encode(self.guid, forKey: .guid)
try container.encode(self.key, forKey: .key) try container.encode(self.key, forKey: .key)
try container.encode(self.media, forKey: .media)
try container.encode(self.ratingKey, forKey: .ratingKey) try container.encode(self.ratingKey, forKey: .ratingKey)
try container.encode(self.summary, forKey: .summary)
try container.encode(self.title, forKey: .title) try container.encode(self.title, forKey: .title)
try container.encode(self.type, forKey: .type) try container.encode(self.type, forKey: .type)
try container.encode(self.year, forKey: .year)
try container.encodeIfPresent(self.addedAt, forKey: .addedAt)
try container.encodeIfPresent(self.art, forKey: .art) try container.encodeIfPresent(self.art, forKey: .art)
if self.audienceRating != nil { if self.audienceRating != nil {
try container.encode(self._audienceRating, forKey: .audienceRating) try container.encode(self._audienceRating, forKey: .audienceRating)
} }
try container.encodeIfPresent(self.audienceRatingImage, forKey: .audienceRatingImage) try container.encodeIfPresent(self.audienceRatingImage, forKey: .audienceRatingImage)
try container.encodeIfPresent(self.banner, forKey: .banner)
try container.encodeIfPresent(self.chapterSource, forKey: .chapterSource) try container.encodeIfPresent(self.chapterSource, forKey: .chapterSource)
try container.encodeIfPresent(self.childCount, forKey: .childCount) try container.encodeIfPresent(self.childCount, forKey: .childCount)
try container.encodeIfPresent(self.collection, forKey: .collection)
try container.encodeIfPresent(self.contentRating, forKey: .contentRating) try container.encodeIfPresent(self.contentRating, forKey: .contentRating)
try container.encodeIfPresent(self.country, forKey: .country) try container.encodeIfPresent(self.country, forKey: .country)
try container.encodeIfPresent(self.director, forKey: .director) try container.encodeIfPresent(self.director, forKey: .director)
try container.encodeIfPresent(self.duration, forKey: .duration)
try container.encodeIfPresent(self.flattenSeasons, forKey: .flattenSeasons)
try container.encodeIfPresent(self.genre, forKey: .genre) try container.encodeIfPresent(self.genre, forKey: .genre)
try container.encodeIfPresent(self.grandparentArt, forKey: .grandparentArt) try container.encodeIfPresent(self.grandparentArt, forKey: .grandparentArt)
try container.encodeIfPresent(self.grandparentGuid, forKey: .grandparentGuid) try container.encodeIfPresent(self.grandparentGuid, forKey: .grandparentGuid)
try container.encodeIfPresent(self.grandparentKey, forKey: .grandparentKey) try container.encodeIfPresent(self.grandparentKey, forKey: .grandparentKey)
try container.encodeIfPresent(self.grandparentRatingKey, forKey: .grandparentRatingKey) try container.encodeIfPresent(self.grandparentRatingKey, forKey: .grandparentRatingKey)
try container.encodeIfPresent(self.grandparentSlug, forKey: .grandparentSlug)
try container.encodeIfPresent(self.grandparentTheme, forKey: .grandparentTheme) try container.encodeIfPresent(self.grandparentTheme, forKey: .grandparentTheme)
try container.encodeIfPresent(self.grandparentThumb, forKey: .grandparentThumb) try container.encodeIfPresent(self.grandparentThumb, forKey: .grandparentThumb)
try container.encodeIfPresent(self.grandparentTitle, forKey: .grandparentTitle) try container.encodeIfPresent(self.grandparentTitle, forKey: .grandparentTitle)
try container.encodeIfPresent(self.hasPremiumExtras, forKey: .hasPremiumExtras) try container.encodeIfPresent(self.hasPremiumExtras, forKey: .hasPremiumExtras)
try container.encodeIfPresent(self.hasPremiumPrimaryExtra, forKey: .hasPremiumPrimaryExtra) try container.encodeIfPresent(self.hasPremiumPrimaryExtra, forKey: .hasPremiumPrimaryExtra)
try container.encodeIfPresent(self.image, forKey: .image)
try container.encodeIfPresent(self.index, forKey: .index) try container.encodeIfPresent(self.index, forKey: .index)
try container.encodeIfPresent(self.lastViewedAt, forKey: .lastViewedAt) try container.encodeIfPresent(self.lastViewedAt, forKey: .lastViewedAt)
try container.encodeIfPresent(self.leafCount, forKey: .leafCount) try container.encodeIfPresent(self.leafCount, forKey: .leafCount)
try container.encodeIfPresent(self.media, forKey: .media)
try container.encodeIfPresent(self.mediaGuid, forKey: .mediaGuid) try container.encodeIfPresent(self.mediaGuid, forKey: .mediaGuid)
if self.originallyAvailableAt != nil { if self.originallyAvailableAt != nil {
try container.encode(self._originallyAvailableAt, forKey: .originallyAvailableAt) try container.encode(self._originallyAvailableAt, forKey: .originallyAvailableAt)
@@ -314,18 +395,23 @@ extension Operations.GetLibraryItemsMetadata: Codable {
} }
try container.encodeIfPresent(self.ratingImage, forKey: .ratingImage) try container.encodeIfPresent(self.ratingImage, forKey: .ratingImage)
try container.encodeIfPresent(self.role, forKey: .role) try container.encodeIfPresent(self.role, forKey: .role)
try container.encodeIfPresent(self.seasonCount, forKey: .seasonCount)
try container.encodeIfPresent(self.showOrdering, forKey: .showOrdering)
try container.encodeIfPresent(self.skipChildren, forKey: .skipChildren)
try container.encodeIfPresent(self.skipCount, forKey: .skipCount) try container.encodeIfPresent(self.skipCount, forKey: .skipCount)
try container.encodeIfPresent(self.slug, forKey: .slug)
try container.encodeIfPresent(self.studio, forKey: .studio) try container.encodeIfPresent(self.studio, forKey: .studio)
try container.encodeIfPresent(self.summary, forKey: .summary)
try container.encodeIfPresent(self.tagline, forKey: .tagline) try container.encodeIfPresent(self.tagline, forKey: .tagline)
try container.encodeIfPresent(self.theme, forKey: .theme) try container.encodeIfPresent(self.theme, forKey: .theme)
try container.encodeIfPresent(self.thumb, forKey: .thumb) try container.encodeIfPresent(self.thumb, forKey: .thumb)
try container.encodeIfPresent(self.titleSort, forKey: .titleSort) try container.encodeIfPresent(self.titleSort, forKey: .titleSort)
try container.encodeIfPresent(self.ultraBlurColors, forKey: .ultraBlurColors)
try container.encodeIfPresent(self.updatedAt, forKey: .updatedAt) try container.encodeIfPresent(self.updatedAt, forKey: .updatedAt)
try container.encodeIfPresent(self.viewCount, forKey: .viewCount) try container.encodeIfPresent(self.viewCount, forKey: .viewCount)
try container.encodeIfPresent(self.viewedLeafCount, forKey: .viewedLeafCount) try container.encodeIfPresent(self.viewedLeafCount, forKey: .viewedLeafCount)
try container.encodeIfPresent(self.viewOffset, forKey: .viewOffset) try container.encodeIfPresent(self.viewOffset, forKey: .viewOffset)
try container.encodeIfPresent(self.writer, forKey: .writer) try container.encodeIfPresent(self.writer, forKey: .writer)
try container.encodeIfPresent(self.year, forKey: .year)
} }
} }

View File

@@ -5,18 +5,25 @@ import Foundation
extension Operations { extension Operations {
/// A model object /// A model object
public struct GetLibraryItemsPart { public struct GetLibraryItemsPart {
public let container: String? /// The container format of the media file.
public let duration: Int? ///
public let file: String? public let container: String
public let id: Int? public let duration: Int
public let key: String? public let file: String
public let size: Int? public let id: Int
public let videoProfile: String? public let key: String
public let size: Int
public let videoProfile: String
public let audioProfile: String?
public let hasThumbnail: Operations.HasThumbnail?
public let indexes: String?
/// Creates an object with the specified parameters /// Creates an object with the specified parameters
/// ///
/// - Parameter container: The container format of the media file.
/// ///
public init(container: String? = nil, duration: Int? = nil, file: String? = nil, id: Int? = nil, key: String? = nil, size: Int? = nil, videoProfile: String? = nil) { ///
public init(container: String, duration: Int, file: String, id: Int, key: String, size: Int, videoProfile: String, audioProfile: String? = nil, hasThumbnail: Operations.HasThumbnail? = nil, indexes: String? = nil) {
self.container = container self.container = container
self.duration = duration self.duration = duration
self.file = file self.file = file
@@ -24,6 +31,9 @@ extension Operations {
self.key = key self.key = key
self.size = size self.size = size
self.videoProfile = videoProfile self.videoProfile = videoProfile
self.audioProfile = audioProfile
self.hasThumbnail = hasThumbnail
self.indexes = indexes
} }
}} }}
@@ -36,6 +46,9 @@ extension Operations.GetLibraryItemsPart: Codable {
case key case key
case size case size
case videoProfile case videoProfile
case audioProfile
case hasThumbnail
case indexes
} }
} }

View File

@@ -11,6 +11,12 @@ extension Operations {
public let sectionKey: Int public let sectionKey: Int
/// A key representing a specific tag within the section. /// A key representing a specific tag within the section.
public let tag: Operations.Tag public let tag: Operations.Tag
/// Adds the Guids object to the response
///
public let includeGuids: Operations.IncludeGuids?
/// Adds the Meta object to the response
///
public let includeMeta: Operations.IncludeMeta?
/// The type of media to retrieve. /// The type of media to retrieve.
/// 1 = movie /// 1 = movie
/// 2 = show /// 2 = show
@@ -18,13 +24,7 @@ extension Operations {
/// 4 = episode /// 4 = episode
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
/// ///
public let type: Operations.TypeModel public let type: Operations.TypeModel?
/// Adds the Guids object to the response
///
public let includeGuids: Operations.IncludeGuids?
/// Adds the Meta object to the response
///
public let includeMeta: Operations.IncludeMeta?
/// The number of items to return. If not specified, all items will be returned. /// The number of items to return. If not specified, all items will be returned.
/// If the number of items exceeds the limit, the response will be paginated. /// If the number of items exceeds the limit, the response will be paginated.
/// By default this is 50 /// By default this is 50
@@ -42,6 +42,10 @@ extension Operations {
/// Note: This is unique in the context of the Plex server. /// Note: This is unique in the context of the Plex server.
/// ///
/// - Parameter tag: A key representing a specific tag within the section. /// - Parameter tag: A key representing a specific tag within the section.
/// - Parameter includeGuids: Adds the Guids object to the response
///
/// - Parameter includeMeta: Adds the Meta object to the response
///
/// - Parameter type: The type of media to retrieve. /// - Parameter type: The type of media to retrieve.
/// 1 = movie /// 1 = movie
/// 2 = show /// 2 = show
@@ -49,10 +53,6 @@ extension Operations {
/// 4 = episode /// 4 = episode
/// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries /// E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
/// ///
/// - Parameter includeGuids: Adds the Guids object to the response
///
/// - Parameter includeMeta: Adds the Meta object to the response
///
/// - Parameter xPlexContainerSize: The number of items to return. If not specified, all items will be returned. /// - Parameter xPlexContainerSize: The number of items to return. If not specified, all items will be returned.
/// If the number of items exceeds the limit, the response will be paginated. /// If the number of items exceeds the limit, the response will be paginated.
/// By default this is 50 /// By default this is 50
@@ -62,12 +62,12 @@ extension Operations {
/// By default this is 0 /// By default this is 0
/// ///
/// ///
public init(sectionKey: Int, tag: Operations.Tag, type: Operations.TypeModel, includeGuids: Operations.IncludeGuids? = nil, includeMeta: Operations.IncludeMeta? = nil, xPlexContainerSize: Int? = nil, xPlexContainerStart: Int? = nil) { public init(sectionKey: Int, tag: Operations.Tag, includeGuids: Operations.IncludeGuids? = nil, includeMeta: Operations.IncludeMeta? = nil, type: Operations.TypeModel? = nil, xPlexContainerSize: Int? = nil, xPlexContainerStart: Int? = nil) {
self.sectionKey = sectionKey self.sectionKey = sectionKey
self.tag = tag self.tag = tag
self.type = type
self.includeGuids = includeGuids self.includeGuids = includeGuids
self.includeMeta = includeMeta self.includeMeta = includeMeta
self.type = type
self.xPlexContainerSize = xPlexContainerSize self.xPlexContainerSize = xPlexContainerSize
self.xPlexContainerStart = xPlexContainerStart self.xPlexContainerStart = xPlexContainerStart
} }

View File

@@ -5,20 +5,32 @@ import Foundation
extension Operations { extension Operations {
/// A model object /// A model object
public struct GetLibraryItemsSort { public struct GetLibraryItemsSort {
public let defaultDirection: String /// The direction of the sort. Can be either `asc` or `desc`.
///
public let defaultDirection: Operations.DefaultDirection
public let key: String public let key: String
public let title: String public let title: String
public let active: Bool?
/// The direction of the sort. Can be either `asc` or `desc`.
///
public let activeDirection: Operations.ActiveDirection?
public let `default`: String? public let `default`: String?
public let descKey: String? public let descKey: String?
public let firstCharacterKey: String? public let firstCharacterKey: String?
/// Creates an object with the specified parameters /// Creates an object with the specified parameters
/// ///
/// - Parameter defaultDirection: The direction of the sort. Can be either `asc` or `desc`.
/// ///
public init(defaultDirection: String, key: String, title: String, `default`: String? = nil, descKey: String? = nil, firstCharacterKey: String? = nil) { /// - Parameter activeDirection: The direction of the sort. Can be either `asc` or `desc`.
///
///
public init(defaultDirection: Operations.DefaultDirection, key: String, title: String, active: Bool? = nil, activeDirection: Operations.ActiveDirection? = nil, `default`: String? = nil, descKey: String? = nil, firstCharacterKey: String? = nil) {
self.defaultDirection = defaultDirection self.defaultDirection = defaultDirection
self.key = key self.key = key
self.title = title self.title = title
self.active = active
self.activeDirection = activeDirection
self.`default` = `default` self.`default` = `default`
self.descKey = descKey self.descKey = descKey
self.firstCharacterKey = firstCharacterKey self.firstCharacterKey = firstCharacterKey
@@ -30,6 +42,8 @@ extension Operations.GetLibraryItemsSort: Codable {
case defaultDirection case defaultDirection
case key case key
case title case title
case active
case activeDirection
case `default` = "default" case `default` = "default"
case descKey case descKey
case firstCharacterKey case firstCharacterKey

View File

@@ -3,39 +3,11 @@
import Foundation import Foundation
extension Operations { extension Operations {
/// A model object /// The type of media content
public struct GetLibraryItemsType {
public let active: Bool
public let key: String
public let title: String
public let type: String
public let field: [Operations.GetLibraryItemsField]?
public let filter: [Operations.GetLibraryItemsFilter]?
public let sort: [Operations.GetLibraryItemsSort]?
/// Creates an object with the specified parameters
/// ///
/// public enum GetLibraryItemsType: String, Codable, APIValue {
public init(active: Bool, key: String, title: String, type: String, field: [Operations.GetLibraryItemsField]? = nil, filter: [Operations.GetLibraryItemsFilter]? = nil, sort: [Operations.GetLibraryItemsSort]? = nil) { case movie = "movie"
self.active = active case tvShow = "show"
self.key = key case season = "season"
self.title = title case episode = "episode"
self.type = type
self.field = field
self.filter = filter
self.sort = sort
}
}} }}
extension Operations.GetLibraryItemsType: Codable {
enum CodingKeys: String, CodingKey {
case active
case key
case title
case type
case field = "Field"
case filter = "Filter"
case sort = "Sort"
}
}

View File

@@ -12,7 +12,7 @@ extension Operations {
/// ///
public enum GetPlaylistContentsQueryParamType: Int, Codable, APIValue { public enum GetPlaylistContentsQueryParamType: Int, Codable, APIValue {
case movie = 1 case movie = 1
case show = 2 case tvShow = 2
case season = 3 case season = 3
case episode = 4 case episode = 4
}} }}

View File

@@ -15,6 +15,7 @@ extension Operations {
public private(set) var adsConsentSetAt: Date public private(set) var adsConsentSetAt: Date
/// Unknown /// Unknown
public let anonymous: Bool public let anonymous: Bool
public let attributionPartner: String
/// The account token /// The account token
public let authToken: String public let authToken: String
/// If the two-factor authentication backup codes have been created /// If the two-factor authentication backup codes have been created
@@ -127,11 +128,12 @@ extension Operations {
/// - Parameter roles: [Might be removed] List of account roles. Plexpass membership listed here /// - Parameter roles: [Might be removed] List of account roles. Plexpass membership listed here
/// ///
@available(*, deprecated, message: "This initializer uses deprecated fields and will be removed in a future version.") @available(*, deprecated, message: "This initializer uses deprecated fields and will be removed in a future version.")
public init(adsConsent: Bool, adsConsentReminderAt: Date, adsConsentSetAt: Date, anonymous: Bool, authToken: String, backupCodesCreated: Bool, confirmed: Bool, country: String, email: String, emailOnlyAuth: Bool, entitlements: [String], experimentalFeatures: Bool, friendlyName: String, guest: Bool, hasPassword: Bool, home: Bool, homeAdmin: Bool, homeSize: Int, id: Int, joinedAt: Int, locale: String, mailingListActive: Bool, mailingListStatus: Operations.MailingListStatus, maxHomeSize: Int, profile: Operations.UserProfile, protected: Bool, rememberExpiresAt: Int, restricted: Bool, scrobbleTypes: String, services: [Operations.Services], subscription: Operations.Subscription, subscriptionDescription: String, subscriptions: [Operations.GetTokenDetailsSubscription], thumb: String, title: String, twoFactorEnabled: Bool, username: String, uuid: String, pin: String? = nil, roles: [String]? = nil) { public init(adsConsent: Bool, adsConsentReminderAt: Date, adsConsentSetAt: Date, anonymous: Bool, attributionPartner: String, authToken: String, backupCodesCreated: Bool, confirmed: Bool, country: String, email: String, emailOnlyAuth: Bool, entitlements: [String], experimentalFeatures: Bool, friendlyName: String, guest: Bool, hasPassword: Bool, home: Bool, homeAdmin: Bool, homeSize: Int, id: Int, joinedAt: Int, locale: String, mailingListActive: Bool, mailingListStatus: Operations.MailingListStatus, maxHomeSize: Int, profile: Operations.UserProfile, protected: Bool, rememberExpiresAt: Int, restricted: Bool, scrobbleTypes: String, services: [Operations.Services], subscription: Operations.Subscription, subscriptionDescription: String, subscriptions: [Operations.GetTokenDetailsSubscription], thumb: String, title: String, twoFactorEnabled: Bool, username: String, uuid: String, pin: String? = nil, roles: [String]? = nil) {
self.adsConsent = adsConsent self.adsConsent = adsConsent
self._adsConsentReminderAt = DateTime<Date>(wrappedValue: adsConsentReminderAt) self._adsConsentReminderAt = DateTime<Date>(wrappedValue: adsConsentReminderAt)
self._adsConsentSetAt = DateTime<Date>(wrappedValue: adsConsentSetAt) self._adsConsentSetAt = DateTime<Date>(wrappedValue: adsConsentSetAt)
self.anonymous = anonymous self.anonymous = anonymous
self.attributionPartner = attributionPartner
self.authToken = authToken self.authToken = authToken
self.backupCodesCreated = backupCodesCreated self.backupCodesCreated = backupCodesCreated
self.confirmed = confirmed self.confirmed = confirmed
@@ -177,6 +179,7 @@ extension Operations.GetTokenDetailsUserPlexAccount: Codable {
case adsConsentReminderAt case adsConsentReminderAt
case adsConsentSetAt case adsConsentSetAt
case anonymous case anonymous
case attributionPartner
case authToken case authToken
case backupCodesCreated case backupCodesCreated
case confirmed case confirmed
@@ -221,6 +224,7 @@ extension Operations.GetTokenDetailsUserPlexAccount: Codable {
self._adsConsentReminderAt = try container.decode(DateTime<Date>.self, forKey: .adsConsentReminderAt) self._adsConsentReminderAt = try container.decode(DateTime<Date>.self, forKey: .adsConsentReminderAt)
self._adsConsentSetAt = try container.decode(DateTime<Date>.self, forKey: .adsConsentSetAt) self._adsConsentSetAt = try container.decode(DateTime<Date>.self, forKey: .adsConsentSetAt)
self.anonymous = try container.decode(Bool.self, forKey: .anonymous) self.anonymous = try container.decode(Bool.self, forKey: .anonymous)
self.attributionPartner = try container.decode(String.self, forKey: .attributionPartner)
self.authToken = try container.decode(String.self, forKey: .authToken) self.authToken = try container.decode(String.self, forKey: .authToken)
self.backupCodesCreated = try container.decode(Bool.self, forKey: .backupCodesCreated) self.backupCodesCreated = try container.decode(Bool.self, forKey: .backupCodesCreated)
self.confirmed = try container.decode(Bool.self, forKey: .confirmed) self.confirmed = try container.decode(Bool.self, forKey: .confirmed)
@@ -265,6 +269,7 @@ extension Operations.GetTokenDetailsUserPlexAccount: Codable {
try container.encode(self._adsConsentReminderAt, forKey: .adsConsentReminderAt) try container.encode(self._adsConsentReminderAt, forKey: .adsConsentReminderAt)
try container.encode(self._adsConsentSetAt, forKey: .adsConsentSetAt) try container.encode(self._adsConsentSetAt, forKey: .adsConsentSetAt)
try container.encode(self.anonymous, forKey: .anonymous) try container.encode(self.anonymous, forKey: .anonymous)
try container.encode(self.attributionPartner, forKey: .attributionPartner)
try container.encode(self.authToken, forKey: .authToken) try container.encode(self.authToken, forKey: .authToken)
try container.encode(self.backupCodesCreated, forKey: .backupCodesCreated) try container.encode(self.backupCodesCreated, forKey: .backupCodesCreated)
try container.encode(self.confirmed, forKey: .confirmed) try container.encode(self.confirmed, forKey: .confirmed)

View File

@@ -12,7 +12,7 @@ extension Operations {
/// ///
public enum GetTopWatchedContentQueryParamType: Int, Codable, APIValue { public enum GetTopWatchedContentQueryParamType: Int, Codable, APIValue {
case movie = 1 case movie = 1
case show = 2 case tvShow = 2
case season = 3 case season = 3
case episode = 4 case episode = 4
}} }}

View File

@@ -0,0 +1,9 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
public enum HasThumbnail: String, Codable, APIValue {
case `false` = "0"
case `true` = "1"
}}

View File

@@ -7,12 +7,12 @@ extension Operations {
/// ///
public struct Meta { public struct Meta {
public let fieldType: [Operations.GetLibraryItemsFieldType]? public let fieldType: [Operations.GetLibraryItemsFieldType]?
public let type: [Operations.GetLibraryItemsType]? public let type: [Operations.GetLibraryItemsLibraryType]?
/// Creates an object with the specified parameters /// Creates an object with the specified parameters
/// ///
/// ///
public init(fieldType: [Operations.GetLibraryItemsFieldType]? = nil, type: [Operations.GetLibraryItemsType]? = nil) { public init(fieldType: [Operations.GetLibraryItemsFieldType]? = nil, type: [Operations.GetLibraryItemsLibraryType]? = nil) {
self.fieldType = fieldType self.fieldType = fieldType
self.type = type self.type = type
} }

View File

@@ -15,6 +15,7 @@ extension Operations {
public private(set) var adsConsentSetAt: Date public private(set) var adsConsentSetAt: Date
/// Unknown /// Unknown
public let anonymous: Bool public let anonymous: Bool
public let attributionPartner: String
/// The account token /// The account token
public let authToken: String public let authToken: String
/// If the two-factor authentication backup codes have been created /// If the two-factor authentication backup codes have been created
@@ -129,11 +130,12 @@ extension Operations {
/// - Parameter roles: [Might be removed] List of account roles. Plexpass membership listed here /// - Parameter roles: [Might be removed] List of account roles. Plexpass membership listed here
/// ///
@available(*, deprecated, message: "This initializer uses deprecated fields and will be removed in a future version.") @available(*, deprecated, message: "This initializer uses deprecated fields and will be removed in a future version.")
public init(adsConsent: Bool, adsConsentReminderAt: Date, adsConsentSetAt: Date, anonymous: Bool, authToken: String, backupCodesCreated: Bool, confirmed: Bool, country: String, email: String, emailOnlyAuth: Bool, entitlements: [String], experimentalFeatures: Bool, friendlyName: String, guest: Bool, hasPassword: Bool, home: Bool, homeAdmin: Bool, homeSize: Int, id: Int, joinedAt: Int, locale: String, mailingListActive: Bool, mailingListStatus: Operations.PostUsersSignInDataMailingListStatus, maxHomeSize: Int, pastSubscriptions: [Operations.PastSubscription], profile: Operations.PostUsersSignInDataUserProfile, protected: Bool, rememberExpiresAt: Int, restricted: Bool, scrobbleTypes: String, services: [Operations.PostUsersSignInDataServices], subscription: Operations.PostUsersSignInDataSubscription, subscriptionDescription: String, subscriptions: [Operations.PostUsersSignInDataAuthenticationSubscription], thumb: String, title: String, trials: [Operations.Trials], twoFactorEnabled: Bool, username: String, uuid: String, pin: String? = nil, roles: [String]? = nil) { public init(adsConsent: Bool, adsConsentReminderAt: Date, adsConsentSetAt: Date, anonymous: Bool, attributionPartner: String, authToken: String, backupCodesCreated: Bool, confirmed: Bool, country: String, email: String, emailOnlyAuth: Bool, entitlements: [String], experimentalFeatures: Bool, friendlyName: String, guest: Bool, hasPassword: Bool, home: Bool, homeAdmin: Bool, homeSize: Int, id: Int, joinedAt: Int, locale: String, mailingListActive: Bool, mailingListStatus: Operations.PostUsersSignInDataMailingListStatus, maxHomeSize: Int, pastSubscriptions: [Operations.PastSubscription], profile: Operations.PostUsersSignInDataUserProfile, protected: Bool, rememberExpiresAt: Int, restricted: Bool, scrobbleTypes: String, services: [Operations.PostUsersSignInDataServices], subscription: Operations.PostUsersSignInDataSubscription, subscriptionDescription: String, subscriptions: [Operations.PostUsersSignInDataAuthenticationSubscription], thumb: String, title: String, trials: [Operations.Trials], twoFactorEnabled: Bool, username: String, uuid: String, pin: String? = nil, roles: [String]? = nil) {
self.adsConsent = adsConsent self.adsConsent = adsConsent
self._adsConsentReminderAt = DateTime<Date>(wrappedValue: adsConsentReminderAt) self._adsConsentReminderAt = DateTime<Date>(wrappedValue: adsConsentReminderAt)
self._adsConsentSetAt = DateTime<Date>(wrappedValue: adsConsentSetAt) self._adsConsentSetAt = DateTime<Date>(wrappedValue: adsConsentSetAt)
self.anonymous = anonymous self.anonymous = anonymous
self.attributionPartner = attributionPartner
self.authToken = authToken self.authToken = authToken
self.backupCodesCreated = backupCodesCreated self.backupCodesCreated = backupCodesCreated
self.confirmed = confirmed self.confirmed = confirmed
@@ -181,6 +183,7 @@ extension Operations.PostUsersSignInDataUserPlexAccount: Codable {
case adsConsentReminderAt case adsConsentReminderAt
case adsConsentSetAt case adsConsentSetAt
case anonymous case anonymous
case attributionPartner
case authToken case authToken
case backupCodesCreated case backupCodesCreated
case confirmed case confirmed
@@ -227,6 +230,7 @@ extension Operations.PostUsersSignInDataUserPlexAccount: Codable {
self._adsConsentReminderAt = try container.decode(DateTime<Date>.self, forKey: .adsConsentReminderAt) self._adsConsentReminderAt = try container.decode(DateTime<Date>.self, forKey: .adsConsentReminderAt)
self._adsConsentSetAt = try container.decode(DateTime<Date>.self, forKey: .adsConsentSetAt) self._adsConsentSetAt = try container.decode(DateTime<Date>.self, forKey: .adsConsentSetAt)
self.anonymous = try container.decode(Bool.self, forKey: .anonymous) self.anonymous = try container.decode(Bool.self, forKey: .anonymous)
self.attributionPartner = try container.decode(String.self, forKey: .attributionPartner)
self.authToken = try container.decode(String.self, forKey: .authToken) self.authToken = try container.decode(String.self, forKey: .authToken)
self.backupCodesCreated = try container.decode(Bool.self, forKey: .backupCodesCreated) self.backupCodesCreated = try container.decode(Bool.self, forKey: .backupCodesCreated)
self.confirmed = try container.decode(Bool.self, forKey: .confirmed) self.confirmed = try container.decode(Bool.self, forKey: .confirmed)
@@ -273,6 +277,7 @@ extension Operations.PostUsersSignInDataUserPlexAccount: Codable {
try container.encode(self._adsConsentReminderAt, forKey: .adsConsentReminderAt) try container.encode(self._adsConsentReminderAt, forKey: .adsConsentReminderAt)
try container.encode(self._adsConsentSetAt, forKey: .adsConsentSetAt) try container.encode(self._adsConsentSetAt, forKey: .adsConsentSetAt)
try container.encode(self.anonymous, forKey: .anonymous) try container.encode(self.anonymous, forKey: .anonymous)
try container.encode(self.attributionPartner, forKey: .attributionPartner)
try container.encode(self.authToken, forKey: .authToken) try container.encode(self.authToken, forKey: .authToken)
try container.encode(self.backupCodesCreated, forKey: .backupCodesCreated) try container.encode(self.backupCodesCreated, forKey: .backupCodesCreated)
try container.encode(self.confirmed, forKey: .confirmed) try container.encode(self.confirmed, forKey: .confirmed)

View File

@@ -12,7 +12,7 @@ extension Operations {
/// ///
public enum QueryParamType: Int, Codable, APIValue { public enum QueryParamType: Int, Codable, APIValue {
case movie = 1 case movie = 1
case show = 2 case tvShow = 2
case season = 3 case season = 3
case episode = 4 case episode = 4
}} }}

View File

@@ -0,0 +1,19 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// Setting that indicates the episode ordering for the show
/// None = Library default,
/// tmdbAiring = The Movie Database (Aired),
/// aired = TheTVDB (Aired),
/// dvd = TheTVDB (DVD),
/// absolute = TheTVDB (Absolute)).
///
public enum ShowOrdering: String, Codable, APIValue {
case `none` = "None"
case tmdbAiring = "tmdbAiring"
case aired = "aired"
case dvd = "dvd"
case absolute = "absolute"
}}

View File

@@ -12,7 +12,7 @@ extension Operations {
/// ///
public enum TypeModel: Int, Codable, APIValue { public enum TypeModel: Int, Codable, APIValue {
case movie = 1 case movie = 1
case show = 2 case tvShow = 2
case season = 3 case season = 3
case episode = 4 case episode = 4
}} }}

View File

@@ -0,0 +1,32 @@
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// A model object
public struct UltraBlurColors {
public let bottomLeft: String
public let bottomRight: String
public let topLeft: String
public let topRight: String
/// Creates an object with the specified parameters
///
///
public init(bottomLeft: String, bottomRight: String, topLeft: String, topRight: String) {
self.bottomLeft = bottomLeft
self.bottomRight = bottomRight
self.topLeft = topLeft
self.topRight = topRight
}
}}
extension Operations.UltraBlurColors: Codable {
enum CodingKeys: String, CodingKey {
case bottomLeft
case bottomRight
case topLeft
case topRight
}
}

View File

@@ -62,7 +62,7 @@ final class URLRequestBuilder: URLRequestConfiguration {
urlRequest.setValue(contentType, forHTTPHeaderField: "Content-Type") urlRequest.setValue(contentType, forHTTPHeaderField: "Content-Type")
} }
urlRequest.setValue("speakeasy-sdk/swift 0.7.0 2.421.3 0.0.3 plexswift", forHTTPHeaderField: telemetryHeader.headerName) urlRequest.setValue("speakeasy-sdk/swift 0.7.1 2.421.3 0.0.3 plexswift", forHTTPHeaderField: telemetryHeader.headerName)
addSecurityParameters(to: &urlRequest) addSecurityParameters(to: &urlRequest)

File diff suppressed because it is too large Load Diff