diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
new file mode 100644
index 0000000..67e1fd7
--- /dev/null
+++ b/.config/dotnet-tools.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "microsoft.openapi.kiota": {
+ "version": "1.11.1",
+ "commands": [
+ "kiota"
+ ]
+ },
+ "nuke.globaltool": {
+ "version": "8.0.0",
+ "commands": [
+ "nuke"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 7e045ca..0000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-version: 2
-updates:
- # Maintain dependencies for GitHub Actions
- - package-ecosystem: "github-actions"
- directory: "/"
- schedule:
- interval: "daily"
-
- - package-ecosystem: npm
- directory: '/stable'
- schedule:
- interval: daily
- time: '00:00'
- open-pull-requests-limit: 10
-
- - package-ecosystem: npm
- directory: '/unstable'
- schedule:
- interval: daily
- time: '00:00'
- open-pull-requests-limit: 10
diff --git a/renovate.json b/.github/renovate.json
similarity index 100%
rename from renovate.json
rename to .github/renovate.json
diff --git a/.github/workflows/sdk-publish-unstable.yaml b/.github/workflows/sdk-publish-unstable.yaml
index 7305c3b..665002b 100644
--- a/.github/workflows/sdk-publish-unstable.yaml
+++ b/.github/workflows/sdk-publish-unstable.yaml
@@ -26,29 +26,38 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4
with:
- dotnet-version: 7.0.x
+ dotnet-version: |
+ 8.0.x
- name: Install dotnet-setversion
- run: dotnet tool install -g dotnet-setversion
+ run: |
+ dotnet tool install -g dotnet-setversion
- name: Restore packages
- run: dotnet restore
+ run: |
+ dotnet restore
+ dotnet tool restore
- name: Create new version string
id: version
- run: echo "number=$(echo $(date +'%Y.%m.%d')-unstable.$(date +'%Y%m%d%H%M'))" >> $GITHUB_OUTPUT
+ run: |
+ echo "number=$(echo $(date +'%Y.%m.%d')-unstable.$(date +'%Y%m%d%H%M'))" >> $GITHUB_OUTPUT
- name: Set project version
- run: setversion ${{ steps.version.outputs.number }}
+ run: |
+ setversion ${{ steps.version.outputs.number }}
- name: Generate sdk
- run: dotnet msbuild -target:GenerateSdk-Unstable
+ run: |
+ dotnet nuke --configuration unstable
- name: Build packages
- run: dotnet build -c Release
+ run: |
+ dotnet build -c Release
- name: Publish to nuget
- run: dotnet nuget push bin/Release/*.nupkg --api-key ${{ secrets.NUGET_APIKEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
+ run: |
+ dotnet nuget push bin/Release/*.nupkg --api-key ${{ secrets.NUGET_APIKEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
- name: Commit new changes to the repo
run: |
diff --git a/.github/workflows/sdk-publish.yaml b/.github/workflows/sdk-publish.yaml
index 39e14e4..7b39e11 100644
--- a/.github/workflows/sdk-publish.yaml
+++ b/.github/workflows/sdk-publish.yaml
@@ -23,29 +23,38 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4
with:
- dotnet-version: 7.0.x
+ dotnet-version: |
+ 8.0.x
- name: Install dotnet-setversion
- run: dotnet tool install -g dotnet-setversion
+ run: |
+ dotnet tool install -g dotnet-setversion
- name: Restore packages
- run: dotnet restore
+ run: |
+ dotnet restore
+ dotnet tool restore
- name: Get Version
id: version
- run: echo "number=$( echo ${{ github.event.release.tag_name }} | tr -d v )" >> $GITHUB_OUTPUT
+ run: |
+ echo "number=$( echo ${{ github.event.release.tag_name }} | tr -d v )" >> $GITHUB_OUTPUT
- name: Set project version
- run: setversion ${{steps.version.outputs.number}}
+ run: |
+ setversion ${{steps.version.outputs.number}}
- name: Generate sdk
- run: dotnet msbuild -target:GenerateSdk
+ run: |
+ dotnet nuke --configuration stable
- name: Build packages
- run: dotnet build -c Release
+ run: |
+ dotnet build -c Release Jellyfin.Sdk
- name: Publish to nuget
- run: dotnet nuget push bin/Release/*.nupkg --api-key ${{ secrets.NUGET_APIKEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
+ run: |
+ dotnet nuget push bin/Release/*.nupkg --api-key ${{ secrets.NUGET_APIKEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
- name: Commit new changes to the repo
run: |
diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
new file mode 100644
index 0000000..cd3664f
--- /dev/null
+++ b/.nuke/build.schema.json
@@ -0,0 +1,110 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "$ref": "#/definitions/build",
+ "title": "Build Schema",
+ "definitions": {
+ "build": {
+ "type": "object",
+ "properties": {
+ "Configuration": {
+ "type": "string",
+ "description": "Configuration to build - 'Stable' (default) or 'Unstable'",
+ "enum": [
+ "Stable",
+ "Unstable"
+ ]
+ },
+ "Continue": {
+ "type": "boolean",
+ "description": "Indicates to continue a previously failed build attempt"
+ },
+ "Help": {
+ "type": "boolean",
+ "description": "Shows the help text for this build assembly"
+ },
+ "Host": {
+ "type": "string",
+ "description": "Host for execution. Default is 'automatic'",
+ "enum": [
+ "AppVeyor",
+ "AzurePipelines",
+ "Bamboo",
+ "Bitbucket",
+ "Bitrise",
+ "GitHubActions",
+ "GitLab",
+ "Jenkins",
+ "Rider",
+ "SpaceAutomation",
+ "TeamCity",
+ "Terminal",
+ "TravisCI",
+ "VisualStudio",
+ "VSCode"
+ ]
+ },
+ "NoLogo": {
+ "type": "boolean",
+ "description": "Disables displaying the NUKE logo"
+ },
+ "Partition": {
+ "type": "string",
+ "description": "Partition to use on CI"
+ },
+ "Plan": {
+ "type": "boolean",
+ "description": "Shows the execution plan (HTML)"
+ },
+ "Profile": {
+ "type": "array",
+ "description": "Defines the profiles to load",
+ "items": {
+ "type": "string"
+ }
+ },
+ "Root": {
+ "type": "string",
+ "description": "Root directory during build execution"
+ },
+ "Skip": {
+ "type": "array",
+ "description": "List of targets to be skipped. Empty list skips all dependencies",
+ "items": {
+ "type": "string",
+ "enum": [
+ "CopyConfig",
+ "RestoreTools",
+ "Run"
+ ]
+ }
+ },
+ "Solution": {
+ "type": "string",
+ "description": "Path to a solution file that is automatically loaded"
+ },
+ "Target": {
+ "type": "array",
+ "description": "List of targets to be invoked. Default is '{default_target}'",
+ "items": {
+ "type": "string",
+ "enum": [
+ "CopyConfig",
+ "RestoreTools",
+ "Run"
+ ]
+ }
+ },
+ "Verbosity": {
+ "type": "string",
+ "description": "Logging verbosity during build execution. Default is 'Normal'",
+ "enum": [
+ "Minimal",
+ "Normal",
+ "Quiet",
+ "Verbose"
+ ]
+ }
+ }
+ }
+ }
+}
diff --git a/.nuke/parameters.json b/.nuke/parameters.json
new file mode 100644
index 0000000..18aef14
--- /dev/null
+++ b/.nuke/parameters.json
@@ -0,0 +1,4 @@
+{
+ "$schema": "./build.schema.json",
+ "Solution": "src/Jellyfin.Sdk.sln"
+}
diff --git a/.nuke/temp/execution-plan.html b/.nuke/temp/execution-plan.html
new file mode 100644
index 0000000..e14b23d
--- /dev/null
+++ b/.nuke/temp/execution-plan.html
@@ -0,0 +1,303 @@
+
+
+
+
+ NUKE Execution Plan
+
+
+
+
+
+
+
+
+
+
+
Execution Plan
+
+
X
+
+
+ Hovering a target highlights its associated execution plan.
+
+
+
+ -
+ Target
+
Not Executing
+
+ -
+ Target
+
Executing
+
+
+
+
+
+
+ Target edges denote how they are related to each other.
+
+
+
+ - Ordering
+ - Execution
+ - Triggers
+
+
+
+
+
+
+
+graph LR
+RestoreTools --> CopyConfig
+CopyConfig --> Generate
+Generate
+
+
+linkStyle default interpolate basis
+
+
+
+
+
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index 3473b30..0000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- // Use IntelliSense to find out which attributes exist for C# debugging
- // Use hover for the description of the existing attributes
- // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
- "name": ".NET Core Launch (console)",
- "type": "coreclr",
- "request": "launch",
- "preLaunchTask": "build",
- // If you have changed target frameworks, make sure to update the program path.
- "program": "${workspaceFolder}/samples/Simple/bin/Debug/net5.0/Simple.dll",
- "args": [],
- "cwd": "${workspaceFolder}/samples/Simple",
- // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
- "console": "internalConsole",
- "stopAtEntry": false
- },
- {
- "name": ".NET Core Attach",
- "type": "coreclr",
- "request": "attach"
- }
- ]
-}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
deleted file mode 100644
index 293acd9..0000000
--- a/.vscode/tasks.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "build",
- "command": "dotnet",
- "type": "process",
- "args": [
- "build",
- "${workspaceFolder}/samples/Simple/Simple.csproj",
- "/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile"
- },
- {
- "label": "publish",
- "command": "dotnet",
- "type": "process",
- "args": [
- "publish",
- "${workspaceFolder}/samples/Simple/Simple.csproj",
- "/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile"
- },
- {
- "label": "watch",
- "command": "dotnet",
- "type": "process",
- "args": [
- "watch",
- "run",
- "${workspaceFolder}/samples/Simple/Simple.csproj",
- "/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile"
- }
- ]
-}
\ No newline at end of file
diff --git a/Jellyfin.Sdk.CSharp.sln b/Jellyfin.Sdk.CSharp.sln
deleted file mode 100644
index 8564db6..0000000
--- a/Jellyfin.Sdk.CSharp.sln
+++ /dev/null
@@ -1,27 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Simple", "samples\Simple\Simple.csproj", "{4E19B614-3073-4DA3-961B-37F86247C2B1}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{9D00A7A3-03CE-4723-8B55-18549C02F1ED}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Sdk", "src\Jellyfin.Sdk.csproj", "{573621BF-B374-49C2-81F5-B735801DE38E}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {4E19B614-3073-4DA3-961B-37F86247C2B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4E19B614-3073-4DA3-961B-37F86247C2B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4E19B614-3073-4DA3-961B-37F86247C2B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4E19B614-3073-4DA3-961B-37F86247C2B1}.Release|Any CPU.Build.0 = Release|Any CPU
- {573621BF-B374-49C2-81F5-B735801DE38E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {573621BF-B374-49C2-81F5-B735801DE38E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {573621BF-B374-49C2-81F5-B735801DE38E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {573621BF-B374-49C2-81F5-B735801DE38E}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {4E19B614-3073-4DA3-961B-37F86247C2B1} = {9D00A7A3-03CE-4723-8B55-18549C02F1ED}
- EndGlobalSection
-EndGlobal
diff --git a/README.md b/README.md
index 583e512..d4e90c9 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,6 @@
-- Uses https://github.com/RicoSuter/NSwag for generation.
-- Default templates with [patch](nswag.patch) to also generate url functions.
+- Uses [Kiota](https://github.com/microsoft/kiota) for generation.
Documentation WIP.
diff --git a/build.cmd b/build.cmd
new file mode 100644
index 0000000..b08cc59
--- /dev/null
+++ b/build.cmd
@@ -0,0 +1,7 @@
+:; set -eo pipefail
+:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
+:; ${SCRIPT_DIR}/build.sh "$@"
+:; exit $?
+
+@ECHO OFF
+powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %*
diff --git a/build.ps1 b/build.ps1
new file mode 100644
index 0000000..1ed2121
--- /dev/null
+++ b/build.ps1
@@ -0,0 +1,74 @@
+[CmdletBinding()]
+Param(
+ [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
+ [string[]]$BuildArguments
+)
+
+Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)"
+
+Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 }
+$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
+
+###########################################################################
+# CONFIGURATION
+###########################################################################
+
+$BuildProjectFile = "$PSScriptRoot\nuke\_nuke.csproj"
+$TempDirectory = "$PSScriptRoot\\.nuke\temp"
+
+$DotNetGlobalFile = "$PSScriptRoot\\global.json"
+$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
+$DotNetChannel = "STS"
+
+$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
+$env:DOTNET_NOLOGO = 1
+
+###########################################################################
+# EXECUTION
+###########################################################################
+
+function ExecSafe([scriptblock] $cmd) {
+ & $cmd
+ if ($LASTEXITCODE) { exit $LASTEXITCODE }
+}
+
+# If dotnet CLI is installed globally and it matches requested version, use for execution
+if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and `
+ $(dotnet --version) -and $LASTEXITCODE -eq 0) {
+ $env:DOTNET_EXE = (Get-Command "dotnet").Path
+}
+else {
+ # Download install script
+ $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
+ New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+ (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
+
+ # If global.json exists, load expected version
+ if (Test-Path $DotNetGlobalFile) {
+ $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
+ if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
+ $DotNetVersion = $DotNetGlobal.sdk.version
+ }
+ }
+
+ # Install by channel or version
+ $DotNetDirectory = "$TempDirectory\dotnet-win"
+ if (!(Test-Path variable:DotNetVersion)) {
+ ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
+ } else {
+ ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
+ }
+ $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
+ $env:PATH = "$DotNetDirectory;$env:PATH"
+}
+
+Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)"
+
+if (Test-Path env:NUKE_ENTERPRISE_TOKEN) {
+ & $env:DOTNET_EXE nuget remove source "nuke-enterprise" > $null
+ & $env:DOTNET_EXE nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password $env:NUKE_ENTERPRISE_TOKEN > $null
+}
+
+ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet }
+ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments }
diff --git a/build.sh b/build.sh
new file mode 100644
index 0000000..76535c0
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+
+bash --version 2>&1 | head -n 1
+
+set -eo pipefail
+SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
+
+###########################################################################
+# CONFIGURATION
+###########################################################################
+
+BUILD_PROJECT_FILE="$SCRIPT_DIR/nuke/_nuke.csproj"
+TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp"
+
+DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
+DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh"
+DOTNET_CHANNEL="STS"
+
+export DOTNET_CLI_TELEMETRY_OPTOUT=1
+export DOTNET_NOLOGO=1
+
+###########################################################################
+# EXECUTION
+###########################################################################
+
+function FirstJsonValue {
+ perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}"
+}
+
+# If dotnet CLI is installed globally and it matches requested version, use for execution
+if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then
+ export DOTNET_EXE="$(command -v dotnet)"
+else
+ # Download install script
+ DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
+ mkdir -p "$TEMP_DIRECTORY"
+ curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
+ chmod +x "$DOTNET_INSTALL_FILE"
+
+ # If global.json exists, load expected version
+ if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then
+ DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")")
+ if [[ "$DOTNET_VERSION" == "" ]]; then
+ unset DOTNET_VERSION
+ fi
+ fi
+
+ # Install by channel or version
+ DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
+ if [[ -z ${DOTNET_VERSION+x} ]]; then
+ "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path
+ else
+ "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path
+ fi
+ export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet"
+ export PATH="$DOTNET_DIRECTORY:$PATH"
+fi
+
+echo "Microsoft (R) .NET SDK version $("$DOTNET_EXE" --version)"
+
+if [[ ! -z ${NUKE_ENTERPRISE_TOKEN+x} && "$NUKE_ENTERPRISE_TOKEN" != "" ]]; then
+ "$DOTNET_EXE" nuget remove source "nuke-enterprise" &>/dev/null || true
+ "$DOTNET_EXE" nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password "$NUKE_ENTERPRISE_TOKEN" --store-password-in-clear-text &>/dev/null || true
+fi
+
+"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet
+"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"
diff --git a/jellyfin.ruleset b/jellyfin.ruleset
deleted file mode 100644
index a1a75e9..0000000
--- a/jellyfin.ruleset
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/nswag.patch b/nswag.patch
deleted file mode 100644
index 32c95b2..0000000
--- a/nswag.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-Index: src/templates/Client.Interface.liquid
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/src/templates/Client.Interface.liquid b/src/templates/Client.Interface.liquid
---- a/src/templates/Client.Interface.liquid (revision 7102fdde0c974045ad7e8039c96bd2be6bbc2ead)
-+++ b/src/templates/Client.Interface.liquid (date 1708475638619)
-@@ -4,6 +4,7 @@
- {
- {% template Client.Interface.Body %}
- {% for operation in InterfaceOperations -%}
-+{%- assign http_method = operation.HttpMethodUpper | upcase -%}
- {% if GenerateOptionalParameters == false -%}
- {% template Client.Method.Documentation %}
- {% template Client.Method.Annotations %}
-@@ -15,6 +16,12 @@
- {% template Client.Method.Annotations %}
- {{ operation.SyncResultType }} {{ operation.ActualOperationName }}({% for parameter in operation.Parameters %}{{ parameter.Type }} {{ parameter.VariableName }}{% if GenerateOptionalParameters and parameter.IsOptional %} = null{% endif %}{% if parameter.IsLast == false %}, {% endif %}{% endfor %});
-
-+{%- endif %}
-+{% if http_method == 'GET' and operation.SyncResultType == 'FileResponse' -%}
-+ {% template Client.Method.Documentation %}
-+ {% template Client.Method.Annotations %}
-+ string {{ operation.ActualOperationName }}Url({% for parameter in operation.Parameters %}{{ parameter.Type }} {{ parameter.VariableName }}{% if GenerateOptionalParameters and parameter.IsOptional %} = null{% endif %}, {% endfor %}System.Threading.CancellationToken cancellationToken{% if GenerateOptionalParameters %} = default(System.Threading.CancellationToken){% endif %});
-+
- {%- endif %}
- /// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
- {% template Client.Method.Documentation %}
-Index: src/templates/Client.Class.liquid
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/src/templates/Client.Class.liquid b/src/templates/Client.Class.liquid
---- a/src/templates/Client.Class.liquid (revision 7102fdde0c974045ad7e8039c96bd2be6bbc2ead)
-+++ b/src/templates/Client.Class.liquid (date 1708475624916)
-@@ -122,6 +122,7 @@
- partial void ProcessResponse({{ HttpClientType }} client, System.Net.Http.HttpResponseMessage response);
- {% endif -%}
- {% for operation in Operations %}
-+{% assign http_method = operation.HttpMethodUpper | upcase %}
- {% if GenerateOptionalParameters == false -%}
- {% template Client.Method.Documentation %}
- {% template Client.Method.Annotations %}
-@@ -140,6 +141,101 @@
- }
-
- {% endif -%}
-+{%- if http_method == 'GET' and operation.SyncResultType == 'FileResponse' -%}
-+ {% template Client.Method.Documentation %}
-+ {% template Client.Method.Annotations %}
-+ {{ operation.MethodAccessModifier }} virtual string {{ operation.ActualOperationName }}Url({% for parameter in operation.Parameters %}{{ parameter.Type }} {{ parameter.VariableName }}{% if GenerateOptionalParameters and parameter.IsOptional %} = null{% endif %}, {% endfor %}System.Threading.CancellationToken cancellationToken{% if GenerateOptionalParameters %} = default(System.Threading.CancellationToken){% endif %})
-+ {
-+{% for parameter in operation.PathParameters -%}
-+{% if parameter.IsNullable == false and parameter.IsRequired -%}
-+ if ({{ parameter.VariableName }} == null)
-+ throw new System.ArgumentNullException("{{ parameter.VariableName }}");
-+
-+{% endif -%}
-+{% endfor -%}
-+{% for parameter in operation.QueryParameters -%}
-+{% if parameter.IsNullable == false and parameter.IsRequired -%}
-+ if ({{ parameter.VariableName }} == null)
-+ throw new System.ArgumentNullException("{{ parameter.VariableName }}");
-+
-+{% endif -%}
-+{% endfor -%}
-+{% for parameter in operation.HeaderParameters %}
-+{% if parameter.IsRequired -%}
-+ if ({{ parameter.VariableName }} == null)
-+ throw new System.ArgumentNullException("{{ parameter.VariableName }}");
-+ {% template Client.Class.HeaderParameter %}
-+
-+{% else -%}
-+ if ({{ parameter.VariableName }} != null)
-+ {% template Client.Class.HeaderParameter %}
-+
-+{% endif -%}
-+{% endfor -%}
-+ var urlBuilder_ = new System.Text.StringBuilder();
-+ {% if UseBaseUrl %}if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);{% endif %}
-+ // Operation Path: "{{ operation.Path }}"
-+{% if operation.Path contains "{" -%}
-+{% assign pathParts = operation.Path | split: "{" -%}
-+{% for pathPart in pathParts -%}
-+{% if pathPart contains "}" -%}
-+{% assign pathParameterParts = pathPart | split: "}" -%}
-+{% assign pathParameterFound = true -%}
-+{% for parameter in operation.PathParameters -%}
-+{% if parameter.Name == pathParameterParts[0] -%}
-+{% if parameter.IsOptional -%}
-+{% assign pathParameterFound = false -%}
-+ if ({{ parameter.VariableName }} != null)
-+ {
-+ {% template Client.Class.PathParameter %}
-+ }
-+ else
-+ if (urlBuilder_.Length > 0) urlBuilder_.Length--;
-+{% else -%}
-+ {% template Client.Class.PathParameter %}
-+{% endif -%}
-+{% endif -%}
-+{% endfor -%}
-+{% comment -%} >>> just in case {% endcomment -%}
-+{% unless pathParameterFound -%}
-+ urlBuilder_.Append("{{ '{' }}{{ pathParameterParts[0] }}{{ '}' }}");
-+{% endunless -%}
-+{% comment -%} <<< just in case {% endcomment -%}
-+{% assign nonParameterPartLengh = pathParameterParts[1] | size -%}
-+{% if nonParameterPartLengh == 1 -%}
-+ urlBuilder_.Append('{{ pathParameterParts[1] }}');
-+{% elsif nonParameterPartLengh > 0 -%}
-+ urlBuilder_.Append("{{ pathParameterParts[1] }}");
-+{% endif -%}
-+{% else -%}
-+{% unless pathPart == "" -%}
-+ urlBuilder_.Append("{{ pathPart }}");
-+{% endunless -%}
-+{% endif -%}
-+{% endfor -%}
-+{% else -%}
-+{% unless operation.Path == "" -%}
-+ urlBuilder_.Append("{{ operation.Path }}");
-+{% endunless -%}
-+{% endif -%}
-+{% if operation.HasQueryParameters -%}
-+ urlBuilder_.Append('?');
-+{% for parameter in operation.QueryParameters -%}
-+{% if parameter.IsOptional -%}
-+ if ({{ parameter.VariableName }} != null)
-+ {
-+ {% template Client.Class.QueryParameter %}
-+ }
-+{% else -%}
-+ {% template Client.Class.QueryParameter %}
-+{% endif -%}
-+{% endfor -%}
-+ urlBuilder_.Length--;
-+{% endif -%}
-+ return urlBuilder_.ToString();
-+ }
-+
-+{% endif -%}
- /// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
- {% template Client.Method.Documentation %}
- {% template Client.Method.Annotations %}
diff --git a/nuke/.editorconfig b/nuke/.editorconfig
new file mode 100644
index 0000000..31e43dc
--- /dev/null
+++ b/nuke/.editorconfig
@@ -0,0 +1,11 @@
+[*.cs]
+dotnet_style_qualification_for_field = false:warning
+dotnet_style_qualification_for_property = false:warning
+dotnet_style_qualification_for_method = false:warning
+dotnet_style_qualification_for_event = false:warning
+dotnet_style_require_accessibility_modifiers = never:warning
+
+csharp_style_expression_bodied_methods = true:silent
+csharp_style_expression_bodied_properties = true:warning
+csharp_style_expression_bodied_indexers = true:warning
+csharp_style_expression_bodied_accessors = true:warning
diff --git a/nuke/Configuration.cs b/nuke/Configuration.cs
new file mode 100644
index 0000000..8145d9d
--- /dev/null
+++ b/nuke/Configuration.cs
@@ -0,0 +1,14 @@
+using System.ComponentModel;
+using Nuke.Common.Tooling;
+
+[TypeConverter(typeof(TypeConverter))]
+public class Configuration : Enumeration
+{
+ public static Configuration Stable = new() { Value = nameof(Stable) };
+ public static Configuration Unstable = new() { Value = nameof(Unstable) };
+
+ public static implicit operator string(Configuration configuration)
+ {
+ return configuration.Value;
+ }
+}
diff --git a/nuke/Directory.Build.props b/nuke/Directory.Build.props
new file mode 100644
index 0000000..e147d63
--- /dev/null
+++ b/nuke/Directory.Build.props
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/nuke/Directory.Build.targets b/nuke/Directory.Build.targets
new file mode 100644
index 0000000..2532609
--- /dev/null
+++ b/nuke/Directory.Build.targets
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/nuke/Generate.cs b/nuke/Generate.cs
new file mode 100644
index 0000000..16bb80d
--- /dev/null
+++ b/nuke/Generate.cs
@@ -0,0 +1,57 @@
+using System.IO;
+using Nuke.Common;
+using Nuke.Common.ProjectModel;
+using Nuke.Common.Tools.DotNet;
+using Serilog;
+
+public class Generate : NukeBuild
+{
+ public static int Main () => Execute(x => x.Run);
+
+ [Parameter("Configuration to build - 'Stable' (default) or 'Unstable'")]
+ readonly Configuration Configuration = Configuration.Stable;
+
+ [Solution(GenerateProjects = true)]
+ readonly Solution Solution;
+
+ Target RestoreTools => g => g.Executes(() => DotNetTasks.DotNetToolRestore());
+
+ Target CopyConfig => g => g
+ .DependsOn(RestoreTools)
+ .Executes(() =>
+ {
+ var sourceFile = Configuration == Configuration.Stable
+ ? "kiota-lock-stable.json"
+ : "kiota-lock-unstable.json";
+ var sourcePath = Path.Combine(Solution.Jellyfin_Sdk.Directory, "Generated", sourceFile);
+ var destinationPath = Path.Combine(Solution.Jellyfin_Sdk.Directory, "Generated", "kiota-lock.json");
+
+ Log.Debug("Copying {0} to {1}", sourcePath, destinationPath);
+ File.Copy(sourcePath, destinationPath, overwrite: true);
+ });
+
+ Target Run => g => g
+ .DependsOn(CopyConfig)
+ .Executes(() =>
+ {
+ DotNetTasks.DotNet(
+ arguments: "kiota update --output Generated",
+ workingDirectory: Solution.Jellyfin_Sdk.Directory);
+
+ // TODO remove when Kiota 1.1.2 is released.
+ var outputPath = Path.Combine(Solution.Jellyfin_Sdk.Directory, "Generated");
+ foreach (var file in Directory.EnumerateFiles(outputPath, "*.cs", SearchOption.AllDirectories))
+ {
+ var contents = File.ReadAllText(file);
+ contents = contents
+ .Replace(
+ "application/json;profile=\"CamelCase\"",
+ "application/json;profile=\\\"CamelCase\\\"")
+ .Replace(
+ "application/json;profile=\"PascalCase\"",
+ "application/json;profile=\\\"PascalCase\\\"");
+
+ File.WriteAllText(file, contents);
+ }
+ });
+}
diff --git a/nuke/_nuke.csproj b/nuke/_nuke.csproj
new file mode 100644
index 0000000..b1965fa
--- /dev/null
+++ b/nuke/_nuke.csproj
@@ -0,0 +1,18 @@
+
+
+
+ Exe
+ net8.0
+
+ CS0649;CS0169;CA1050;CA1822;CA2211;IDE1006
+ ..
+ ..
+ 1
+ false
+
+
+
+
+
+
+
diff --git a/nuke/_nuke.csproj.DotSettings b/nuke/_nuke.csproj.DotSettings
new file mode 100644
index 0000000..eb3f4c2
--- /dev/null
+++ b/nuke/_nuke.csproj.DotSettings
@@ -0,0 +1,28 @@
+
+ DO_NOT_SHOW
+ DO_NOT_SHOW
+ DO_NOT_SHOW
+ DO_NOT_SHOW
+ DO_NOT_SHOW
+ Implicit
+ Implicit
+ ExpressionBody
+ 0
+ NEXT_LINE
+ True
+ False
+ 120
+ IF_OWNER_IS_SINGLE_LINE
+ WRAP_IF_LONG
+ False
+ <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+ <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
+ True
diff --git a/samples/Simple/Program.cs b/samples/Simple/Program.cs
index bef95ac..de1ada4 100644
--- a/samples/Simple/Program.cs
+++ b/samples/Simple/Program.cs
@@ -1,12 +1,11 @@
-using System;
-using System.Net;
-using System.Net.Http;
+using System.Net;
using System.Net.Http.Headers;
using System.Net.Mime;
using System.Text;
-using System.Threading.Tasks;
using Jellyfin.Sdk;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Kiota.Abstractions;
+using Microsoft.Kiota.Abstractions.Authentication;
namespace Simple;
@@ -17,31 +16,24 @@ internal static class Program
var serviceProvider = ConfigureServices();
// Initialize the sdk client settings. This only needs to happen once on startup.
- var sdkClientSettings = serviceProvider.GetRequiredService();
- sdkClientSettings.InitializeClientSettings(
+ var sdkClientSettings = serviceProvider.GetRequiredService();
+ sdkClientSettings.Initialize(
"My-Jellyfin-Client",
"0.0.1",
"Sample Device",
$"this-is-my-device-id-{Guid.NewGuid():N}");
- var sampleService = serviceProvider.GetRequiredService();
+ var sampleService = serviceProvider.GetRequiredService();
await sampleService.RunAsync()
.ConfigureAwait(false);
- Console.WriteLine("Sample complete");
+ Console.WriteLine("Simple sample complete");
}
private static ServiceProvider ConfigureServices()
{
var serviceCollection = new ServiceCollection();
- static HttpMessageHandler DefaultHttpClientHandlerDelegate(IServiceProvider service)
- => new SocketsHttpHandler
- {
- AutomaticDecompression = DecompressionMethods.All,
- RequestHeaderEncodingSelector = (_, _) => Encoding.UTF8
- };
-
// Add Http Client
serviceCollection.AddHttpClient("Default", c =>
{
@@ -55,26 +47,23 @@ internal static class Program
c.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("*/*", 0.8));
})
- .ConfigurePrimaryHttpMessageHandler(DefaultHttpClientHandlerDelegate);
+ .ConfigurePrimaryHttpMessageHandler(_ => new SocketsHttpHandler
+ {
+ AutomaticDecompression = DecompressionMethods.All,
+ RequestHeaderEncodingSelector = (_, _) => Encoding.UTF8
+ });
// Add Jellyfin SDK services.
- serviceCollection
- .AddSingleton();
- serviceCollection
- .AddHttpClient()
- .ConfigurePrimaryHttpMessageHandler(DefaultHttpClientHandlerDelegate);
- serviceCollection
- .AddHttpClient()
- .ConfigurePrimaryHttpMessageHandler(DefaultHttpClientHandlerDelegate);
- serviceCollection
- .AddHttpClient()
- .ConfigurePrimaryHttpMessageHandler(DefaultHttpClientHandlerDelegate);
- serviceCollection
- .AddHttpClient()
- .ConfigurePrimaryHttpMessageHandler(DefaultHttpClientHandlerDelegate);
+ serviceCollection.AddSingleton();
+ serviceCollection.AddSingleton();
+ serviceCollection.AddScoped(s => new JellyfinRequestAdapter(
+ s.GetRequiredService(),
+ s.GetRequiredService(),
+ s.GetRequiredService().CreateClient("Default")));
+ serviceCollection.AddScoped();
// Add sample service
- serviceCollection.AddSingleton();
+ serviceCollection.AddSingleton();
return serviceCollection.BuildServiceProvider();
}
diff --git a/samples/Simple/Simple.csproj b/samples/Simple/Simple.csproj
index 54a30bc..d9f29be 100644
--- a/samples/Simple/Simple.csproj
+++ b/samples/Simple/Simple.csproj
@@ -1,29 +1,19 @@
-
+
Exe
net8.0
- true
- true
+ enable
enable
- AllEnabledByDefault
- ..\..\jellyfin.ruleset
- latest
-
+
-
-
-
-
-
-
-
+
diff --git a/samples/Simple/SampleService.cs b/samples/Simple/SimpleService.cs
similarity index 66%
rename from samples/Simple/SampleService.cs
rename to samples/Simple/SimpleService.cs
index 4966f6a..1140521 100644
--- a/samples/Simple/SampleService.cs
+++ b/samples/Simple/SimpleService.cs
@@ -1,37 +1,27 @@
-using System;
-using System.Threading.Tasks;
using Jellyfin.Sdk;
-using SystemException = Jellyfin.Sdk.SystemException;
+using Jellyfin.Sdk.Generated.Models;
namespace Simple;
///
/// Sample Jellyfin service.
///
-public class SampleService
+public class SimpleService
{
- private readonly SdkClientSettings _sdkClientSettings;
- private readonly ISystemClient _systemClient;
- private readonly IUserClient _userClient;
- private readonly IUserViewsClient _userViewsClient;
+ private readonly JellyfinSdkSettings _sdkClientSettings;
+ private readonly JellyfinApiClient _jellyfinApiClient;
///
- /// Initializes a new instance of the class.
+ ///
///
- /// Instance of the .
- /// Instance of the interface.
- /// Instance of the interface.
- /// Instance of the interface.
- public SampleService(
- SdkClientSettings sdkClientSettings,
- ISystemClient systemClient,
- IUserClient userClient,
- IUserViewsClient userViewsClient)
+ ///
+ ///
+ public SimpleService(
+ JellyfinSdkSettings sdkClientSettings,
+ JellyfinApiClient jellyfinApiClient)
{
_sdkClientSettings = sdkClientSettings;
- _systemClient = systemClient;
- _userClient = userClient;
- _userViewsClient = userViewsClient;
+ _jellyfinApiClient = jellyfinApiClient;
}
///
@@ -49,11 +39,13 @@ public class SampleService
Console.Write("Server Url: ");
var host = Console.ReadLine();
- _sdkClientSettings.BaseUrl = host;
+ _sdkClientSettings.SetServerUrl(host);
+ _jellyfinApiClient.Update();
+
try
{
// Get public system info to verify that the url points to a Jellyfin server.
- var systemInfo = await _systemClient.GetPublicSystemInfoAsync()
+ var systemInfo = await _jellyfinApiClient.System.Info.Public.GetAsync()
.ConfigureAwait(false);
validServer = true;
Console.WriteLine($"Connected to {host}");
@@ -86,23 +78,23 @@ public class SampleService
Console.Write("Password: ");
var password = Console.ReadLine();
- Console.WriteLine($"Logging into {_sdkClientSettings.BaseUrl}");
+ Console.WriteLine($"Logging into {_sdkClientSettings.ServerUrl}");
// Authenticate user.
- var authenticationResult = await _userClient.AuthenticateUserByNameAsync(new AuthenticateUserByName
+ var authenticationResult = await _jellyfinApiClient.Users.AuthenticateByName.PostAsync(new AuthenticateUserByName
{
Username = username,
Pw = password
})
.ConfigureAwait(false);
- _sdkClientSettings.AccessToken = authenticationResult.AccessToken;
+ _sdkClientSettings.SetAccessToken(authenticationResult.AccessToken);
userDto = authenticationResult.User;
Console.WriteLine("Authentication success.");
Console.WriteLine($"Welcome to Jellyfin - {userDto.Name}");
validUser = true;
}
- catch (UserException ex)
+ catch (Exception ex)
{
await Console.Error.WriteLineAsync("Error authenticating.").ConfigureAwait(false);
await Console.Error.WriteLineAsync(ex.Message).ConfigureAwait(false);
@@ -110,7 +102,7 @@ public class SampleService
}
while (!validUser);
- await PrintViews(userDto.Id)
+ await PrintViews(userDto.Id.Value)
.ConfigureAwait(false);
}
@@ -118,7 +110,7 @@ public class SampleService
{
try
{
- var views = await _userViewsClient.GetUserViewsAsync(userId)
+ var views = await _jellyfinApiClient.Users[userId].Views.GetAsync()
.ConfigureAwait(false);
Console.WriteLine("Printing Views:");
foreach (var view in views.Items)
@@ -126,7 +118,7 @@ public class SampleService
Console.WriteLine($"{view.Id} - {view.Name}");
}
}
- catch (UserViewsException ex)
+ catch (Exception ex)
{
await Console.Error.WriteLineAsync("Error getting user views").ConfigureAwait(false);
await Console.Error.WriteLineAsync(ex.Message).ConfigureAwait(false);
diff --git a/src/.editorconfig b/src/.editorconfig
new file mode 100644
index 0000000..b84e563
--- /dev/null
+++ b/src/.editorconfig
@@ -0,0 +1,194 @@
+# With more recent updates Visual Studio 2017 supports EditorConfig files out of the box
+# Visual Studio Code needs an extension: https://github.com/editorconfig/editorconfig-vscode
+# For emacs, vim, np++ and other editors, see here: https://github.com/editorconfig
+###############################
+# Core EditorConfig Options #
+###############################
+root = true
+# All files
+[*]
+indent_style = space
+indent_size = 4
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+end_of_line = lf
+max_line_length = off
+
+# YAML indentation
+[*.{yml,yaml}]
+indent_size = 2
+
+# XML indentation
+[*.{csproj,xml}]
+indent_size = 2
+
+###############################
+# .NET Coding Conventions #
+###############################
+[*.{cs,vb}]
+# Organize usings
+dotnet_sort_system_directives_first = true
+# this. preferences
+dotnet_style_qualification_for_field = false:silent
+dotnet_style_qualification_for_property = false:silent
+dotnet_style_qualification_for_method = false:silent
+dotnet_style_qualification_for_event = false:silent
+# Language keywords vs BCL types preferences
+dotnet_style_predefined_type_for_locals_parameters_members = true:silent
+dotnet_style_predefined_type_for_member_access = true:silent
+# Parentheses preferences
+dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
+dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
+dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
+# Modifier preferences
+dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
+dotnet_style_readonly_field = true:suggestion
+# Expression-level preferences
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_explicit_tuple_names = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
+dotnet_style_prefer_inferred_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
+dotnet_style_prefer_auto_properties = true:silent
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent
+dotnet_style_prefer_conditional_expression_over_return = true:silent
+
+###############################
+# Naming Conventions #
+###############################
+# Style Definitions (From Roslyn)
+
+# Non-private static fields are PascalCase
+dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.symbols = non_private_static_fields
+dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.style = non_private_static_field_style
+
+dotnet_naming_symbols.non_private_static_fields.applicable_kinds = field
+dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected
+dotnet_naming_symbols.non_private_static_fields.required_modifiers = static
+
+dotnet_naming_style.non_private_static_field_style.capitalization = pascal_case
+
+# Constants are PascalCase
+dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.constants_should_be_pascal_case.symbols = constants
+dotnet_naming_rule.constants_should_be_pascal_case.style = constant_style
+
+dotnet_naming_symbols.constants.applicable_kinds = field, local
+dotnet_naming_symbols.constants.required_modifiers = const
+
+dotnet_naming_style.constant_style.capitalization = pascal_case
+
+# Static fields are camelCase and start with s_
+dotnet_naming_rule.static_fields_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.static_fields_should_be_camel_case.symbols = static_fields
+dotnet_naming_rule.static_fields_should_be_camel_case.style = static_field_style
+
+dotnet_naming_symbols.static_fields.applicable_kinds = field
+dotnet_naming_symbols.static_fields.required_modifiers = static
+
+dotnet_naming_style.static_field_style.capitalization = camel_case
+dotnet_naming_style.static_field_style.required_prefix = _
+
+# Instance fields are camelCase and start with _
+dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields
+dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style
+
+dotnet_naming_symbols.instance_fields.applicable_kinds = field
+
+dotnet_naming_style.instance_field_style.capitalization = camel_case
+dotnet_naming_style.instance_field_style.required_prefix = _
+
+# Locals and parameters are camelCase
+dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters
+dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style
+
+dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local
+
+dotnet_naming_style.camel_case_style.capitalization = camel_case
+
+# Local functions are PascalCase
+dotnet_naming_rule.local_functions_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.local_functions_should_be_pascal_case.symbols = local_functions
+dotnet_naming_rule.local_functions_should_be_pascal_case.style = local_function_style
+
+dotnet_naming_symbols.local_functions.applicable_kinds = local_function
+
+dotnet_naming_style.local_function_style.capitalization = pascal_case
+
+# By default, name items with PascalCase
+dotnet_naming_rule.members_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.members_should_be_pascal_case.symbols = all_members
+dotnet_naming_rule.members_should_be_pascal_case.style = pascal_case_style
+
+dotnet_naming_symbols.all_members.applicable_kinds = *
+
+dotnet_naming_style.pascal_case_style.capitalization = pascal_case
+
+###############################
+# C# Coding Conventions #
+###############################
+[*.cs]
+# var preferences
+csharp_style_var_for_built_in_types = true:silent
+csharp_style_var_when_type_is_apparent = true:silent
+csharp_style_var_elsewhere = true:silent
+# Expression-bodied members
+csharp_style_expression_bodied_methods = false:silent
+csharp_style_expression_bodied_constructors = false:silent
+csharp_style_expression_bodied_operators = false:silent
+csharp_style_expression_bodied_properties = true:silent
+csharp_style_expression_bodied_indexers = true:silent
+csharp_style_expression_bodied_accessors = true:silent
+# Pattern matching preferences
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+# Null-checking preferences
+csharp_style_throw_expression = true:suggestion
+csharp_style_conditional_delegate_call = true:suggestion
+# Modifier preferences
+csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
+# Expression-level preferences
+csharp_prefer_braces = true:silent
+csharp_style_deconstructed_variable_declaration = true:suggestion
+csharp_prefer_simple_default_expression = true:suggestion
+csharp_style_pattern_local_over_anonymous_function = true:suggestion
+csharp_style_inlined_variable_declaration = true:suggestion
+
+###############################
+# C# Formatting Rules #
+###############################
+# New line preferences
+csharp_new_line_before_open_brace = all
+csharp_new_line_before_else = true
+csharp_new_line_before_catch = true
+csharp_new_line_before_finally = true
+csharp_new_line_before_members_in_object_initializers = true
+csharp_new_line_before_members_in_anonymous_types = true
+csharp_new_line_between_query_expression_clauses = true
+# Indentation preferences
+csharp_indent_case_contents = true
+csharp_indent_switch_labels = true
+csharp_indent_labels = flush_left
+# Space preferences
+csharp_space_after_cast = false
+csharp_space_after_keywords_in_control_flow_statements = true
+csharp_space_between_method_call_parameter_list_parentheses = false
+csharp_space_between_method_declaration_parameter_list_parentheses = false
+csharp_space_between_parentheses = false
+csharp_space_before_colon_in_inheritance_clause = true
+csharp_space_after_colon_in_inheritance_clause = true
+csharp_space_around_binary_operators = before_and_after
+csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
+csharp_space_between_method_call_name_and_opening_parenthesis = false
+csharp_space_between_method_call_empty_parameter_list_parentheses = false
+# Wrapping preferences
+csharp_preserve_single_line_statements = true
+csharp_preserve_single_line_blocks = true
diff --git a/src/BaseClient.cs b/src/BaseClient.cs
deleted file mode 100644
index c83401e..0000000
--- a/src/BaseClient.cs
+++ /dev/null
@@ -1,104 +0,0 @@
-using System.Diagnostics.CodeAnalysis;
-using System.Net.Http;
-using System.Net.Http.Headers;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace Jellyfin.Sdk;
-
-///
-/// The base client.
-///
-public class BaseClient
-{
- private readonly SdkClientSettings _clientState;
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The sdk client state.
- public BaseClient(SdkClientSettings clientState)
- {
- _clientState = clientState;
- }
-
- ///
- /// Prepare the request.
- ///
- ///
- /// Required for generated clients.
- ///
- /// The http client.
- /// The http request message.
- /// The request url.
- /// The cancellation token.
- /// The Task.
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "client")]
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "cancellationToken")]
- protected Task PrepareRequestAsync(HttpClient client, HttpRequestMessage request, StringBuilder url, CancellationToken cancellationToken)
- {
- // Insert baseurl into full url.
- if (!string.IsNullOrEmpty(_clientState.BaseUrl))
- {
- url.Insert(0, _clientState.BaseUrl.TrimEnd('/') + '/');
- }
-
- request.Headers.Authorization = new AuthenticationHeaderValue("MediaBrowser", _clientState.GetAuthorizationHeader());
-
- return Task.CompletedTask;
- }
-
- ///
- /// Prepare the request.
- ///
- ///
- /// Required for generated clients.
- ///
- /// The http client.
- /// The http request message.
- /// The request url.
- /// The cancellation token.
- /// The Task.
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "client")]
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "request")]
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "url")]
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "cancellationToken")]
- protected Task PrepareRequestAsync(HttpClient client, HttpRequestMessage request, string url, CancellationToken cancellationToken)
- {
- // Required for generated api.
- return Task.CompletedTask;
- }
-
- ///
- /// Process response message.
- ///
- ///
- /// Required for generated clients.
- ///
- /// The http client.
- /// The http response message.
- /// The cancellation token.
- /// The Task.
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "client")]
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "response")]
- [SuppressMessage("Usage", "CA1801", Justification = "Required for generated code", Scope = "cancellationToken")]
- protected Task ProcessResponseAsync(HttpClient client, HttpResponseMessage response, CancellationToken cancellationToken)
- {
- // Required for generated api.
- return Task.CompletedTask;
- }
-
- ///
- /// Prepare the request url by inserting the base url.
- ///
- /// The url path.
- protected void PrepareRequestUrl(StringBuilder url)
- {
- // Insert baseurl into full url.
- if (!string.IsNullOrEmpty(_clientState.BaseUrl))
- {
- url.Insert(0, _clientState.BaseUrl.TrimEnd('/') + '/');
- }
- }
-}
diff --git a/src/Jellyfin.Sdk.sln b/src/Jellyfin.Sdk.sln
new file mode 100644
index 0000000..289447a
--- /dev/null
+++ b/src/Jellyfin.Sdk.sln
@@ -0,0 +1,27 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Sdk", "Jellyfin.Sdk\Jellyfin.Sdk.csproj", "{E7A14136-D713-4C16-B457-9D34F0BD538A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{78BAA928-CCBC-41B2-A404-143B1C8376A9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Simple", "..\samples\Simple\Simple.csproj", "{7BBC005F-06BE-4CDB-9E64-C4AA54CAE667}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {E7A14136-D713-4C16-B457-9D34F0BD538A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E7A14136-D713-4C16-B457-9D34F0BD538A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E7A14136-D713-4C16-B457-9D34F0BD538A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E7A14136-D713-4C16-B457-9D34F0BD538A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7BBC005F-06BE-4CDB-9E64-C4AA54CAE667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7BBC005F-06BE-4CDB-9E64-C4AA54CAE667}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7BBC005F-06BE-4CDB-9E64-C4AA54CAE667}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7BBC005F-06BE-4CDB-9E64-C4AA54CAE667}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {7BBC005F-06BE-4CDB-9E64-C4AA54CAE667} = {78BAA928-CCBC-41B2-A404-143B1C8376A9}
+ EndGlobalSection
+EndGlobal
diff --git a/src/Jellyfin.Sdk/Generated/.editorconfig b/src/Jellyfin.Sdk/Generated/.editorconfig
new file mode 100644
index 0000000..948715b
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/.editorconfig
@@ -0,0 +1,2 @@
+[*.cs]
+dotnet_diagnostic.CS1591.severity = none
\ No newline at end of file
diff --git a/src/Jellyfin.Sdk/Generated/Albums/AlbumsRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Albums/AlbumsRequestBuilder.cs
new file mode 100644
index 0000000..bb32d09
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Albums/AlbumsRequestBuilder.cs
@@ -0,0 +1,44 @@
+//
+using Jellyfin.Sdk.Generated.Albums.Item;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Albums {
+ ///
+ /// Builds and executes requests for operations under \Albums
+ ///
+ public class AlbumsRequestBuilder : BaseRequestBuilder {
+ /// Gets an item from the Jellyfin.Sdk.Generated.Albums.item collection
+ /// The item id.
+ public AlbumsItemRequestBuilder this[Guid position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("Albums%2Did", position);
+ return new AlbumsItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ /// Gets an item from the Jellyfin.Sdk.Generated.Albums.item collection
+ /// The item id.
+ [Obsolete("This indexer is deprecated and will be removed in the next major version. Use the one with the typed parameter instead.")]
+ public AlbumsItemRequestBuilder this[string position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ if (!string.IsNullOrWhiteSpace(position)) urlTplParams.Add("Albums%2Did", position);
+ return new AlbumsItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ ///
+ /// Instantiates a new AlbumsRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AlbumsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Albums", pathParameters) {
+ }
+ ///
+ /// Instantiates a new AlbumsRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AlbumsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Albums", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Albums/Item/AlbumsItemRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Albums/Item/AlbumsItemRequestBuilder.cs
new file mode 100644
index 0000000..51e13b5
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Albums/Item/AlbumsItemRequestBuilder.cs
@@ -0,0 +1,38 @@
+//
+using Jellyfin.Sdk.Generated.Albums.Item.InstantMix;
+using Jellyfin.Sdk.Generated.Albums.Item.Similar;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Albums.Item {
+ ///
+ /// Builds and executes requests for operations under \Albums\{Albums-id}
+ ///
+ public class AlbumsItemRequestBuilder : BaseRequestBuilder {
+ /// The InstantMix property
+ public InstantMixRequestBuilder InstantMix { get =>
+ new InstantMixRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The Similar property
+ public SimilarRequestBuilder Similar { get =>
+ new SimilarRequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new AlbumsItemRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AlbumsItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Albums/{Albums%2Did}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new AlbumsItemRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AlbumsItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Albums/{Albums%2Did}", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Albums/Item/InstantMix/InstantMixRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Albums/Item/InstantMix/InstantMixRequestBuilder.cs
new file mode 100644
index 0000000..8a60d56
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Albums/Item/InstantMix/InstantMixRequestBuilder.cs
@@ -0,0 +1,115 @@
+//
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Albums.Item.InstantMix {
+ ///
+ /// Builds and executes requests for operations under \Albums\{Albums-id}\InstantMix
+ ///
+ public class InstantMixRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new InstantMixRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public InstantMixRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Albums/{Albums%2Did}/InstantMix{?enableImages*,enableImageTypes*,enableUserData*,fields*,imageTypeLimit*,limit*,userId*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new InstantMixRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public InstantMixRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Albums/{Albums%2Did}/InstantMix{?enableImages*,enableImageTypes*,enableUserData*,fields*,imageTypeLimit*,limit*,userId*}", rawUrl) {
+ }
+ ///
+ /// Creates an instant playlist based on a given album.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, BaseItemDtoQueryResult.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Creates an instant playlist based on a given album.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public InstantMixRequestBuilder WithUrl(string rawUrl) {
+ return new InstantMixRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Creates an instant playlist based on a given album.
+ ///
+ public class InstantMixRequestBuilderGetQueryParameters {
+ /// Optional. Include image information in output.
+ [QueryParameter("enableImages")]
+ public bool? EnableImages { get; set; }
+ /// Optional. The image types to include in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("enableImageTypes")]
+ public string[]? EnableImageTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("enableImageTypes")]
+ public string[] EnableImageTypes { get; set; }
+#endif
+ /// Optional. Include user data.
+ [QueryParameter("enableUserData")]
+ public bool? EnableUserData { get; set; }
+ /// Optional. Specify additional fields of information to return in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("fields")]
+ public string[]? Fields { get; set; }
+#nullable restore
+#else
+ [QueryParameter("fields")]
+ public string[] Fields { get; set; }
+#endif
+ /// Optional. The max number of images to return, per image type.
+ [QueryParameter("imageTypeLimit")]
+ public int? ImageTypeLimit { get; set; }
+ /// Optional. The maximum number of records to return.
+ [QueryParameter("limit")]
+ public int? Limit { get; set; }
+ /// Optional. Filter by user id, and attach user data.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class InstantMixRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Albums/Item/Similar/SimilarRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Albums/Item/Similar/SimilarRequestBuilder.cs
new file mode 100644
index 0000000..6dad675
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Albums/Item/Similar/SimilarRequestBuilder.cs
@@ -0,0 +1,106 @@
+//
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Albums.Item.Similar {
+ ///
+ /// Builds and executes requests for operations under \Albums\{Albums-id}\Similar
+ ///
+ public class SimilarRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new SimilarRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public SimilarRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Albums/{Albums%2Did}/Similar{?excludeArtistIds*,fields*,limit*,userId*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new SimilarRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public SimilarRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Albums/{Albums%2Did}/Similar{?excludeArtistIds*,fields*,limit*,userId*}", rawUrl) {
+ }
+ ///
+ /// Gets similar items.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, BaseItemDtoQueryResult.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets similar items.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public SimilarRequestBuilder WithUrl(string rawUrl) {
+ return new SimilarRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets similar items.
+ ///
+ public class SimilarRequestBuilderGetQueryParameters {
+ /// Exclude artist ids.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("excludeArtistIds")]
+ public Guid?[]? ExcludeArtistIds { get; set; }
+#nullable restore
+#else
+ [QueryParameter("excludeArtistIds")]
+ public Guid?[] ExcludeArtistIds { get; set; }
+#endif
+ /// Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("fields")]
+ public string[]? Fields { get; set; }
+#nullable restore
+#else
+ [QueryParameter("fields")]
+ public string[] Fields { get; set; }
+#endif
+ /// Optional. The maximum number of records to return.
+ [QueryParameter("limit")]
+ public int? Limit { get; set; }
+ /// Optional. Filter by user id, and attach user data.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class SimilarRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/AlbumArtists/AlbumArtistsRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/AlbumArtists/AlbumArtistsRequestBuilder.cs
new file mode 100644
index 0000000..a52b63b
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/AlbumArtists/AlbumArtistsRequestBuilder.cs
@@ -0,0 +1,330 @@
+//
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists.AlbumArtists {
+ ///
+ /// Builds and executes requests for operations under \Artists\AlbumArtists
+ ///
+ public class AlbumArtistsRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new AlbumArtistsRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AlbumArtistsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/AlbumArtists{?enableImages*,enableImageTypes*,enableTotalRecordCount*,enableUserData*,excludeItemTypes*,fields*,filters*,genreIds*,genres*,imageTypeLimit*,includeItemTypes*,isFavorite*,limit*,mediaTypes*,minCommunityRating*,nameLessThan*,nameStartsWith*,nameStartsWithOrGreater*,officialRatings*,parentId*,person*,personIds*,personTypes*,searchTerm*,sortBy*,sortOrder*,startIndex*,studioIds*,studios*,tags*,userId*,years*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new AlbumArtistsRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AlbumArtistsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/AlbumArtists{?enableImages*,enableImageTypes*,enableTotalRecordCount*,enableUserData*,excludeItemTypes*,fields*,filters*,genreIds*,genres*,imageTypeLimit*,includeItemTypes*,isFavorite*,limit*,mediaTypes*,minCommunityRating*,nameLessThan*,nameStartsWith*,nameStartsWithOrGreater*,officialRatings*,parentId*,person*,personIds*,personTypes*,searchTerm*,sortBy*,sortOrder*,startIndex*,studioIds*,studios*,tags*,userId*,years*}", rawUrl) {
+ }
+ ///
+ /// Gets all album artists from a given item, folder, or the entire library.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, BaseItemDtoQueryResult.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets all album artists from a given item, folder, or the entire library.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public AlbumArtistsRequestBuilder WithUrl(string rawUrl) {
+ return new AlbumArtistsRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets all album artists from a given item, folder, or the entire library.
+ ///
+ public class AlbumArtistsRequestBuilderGetQueryParameters {
+ /// Optional, include image information in output.
+ [QueryParameter("enableImages")]
+ public bool? EnableImages { get; set; }
+ /// Optional. The image types to include in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("enableImageTypes")]
+ public string[]? EnableImageTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("enableImageTypes")]
+ public string[] EnableImageTypes { get; set; }
+#endif
+ /// Total record count.
+ [QueryParameter("enableTotalRecordCount")]
+ public bool? EnableTotalRecordCount { get; set; }
+ /// Optional, include user data.
+ [QueryParameter("enableUserData")]
+ public bool? EnableUserData { get; set; }
+ /// Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("excludeItemTypes")]
+ public string[]? ExcludeItemTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("excludeItemTypes")]
+ public string[] ExcludeItemTypes { get; set; }
+#endif
+ /// Optional. Specify additional fields of information to return in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("fields")]
+ public string[]? Fields { get; set; }
+#nullable restore
+#else
+ [QueryParameter("fields")]
+ public string[] Fields { get; set; }
+#endif
+ /// Optional. Specify additional filters to apply.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("filters")]
+ public string[]? Filters { get; set; }
+#nullable restore
+#else
+ [QueryParameter("filters")]
+ public string[] Filters { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("genreIds")]
+ public Guid?[]? GenreIds { get; set; }
+#nullable restore
+#else
+ [QueryParameter("genreIds")]
+ public Guid?[] GenreIds { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("genres")]
+ public string[]? Genres { get; set; }
+#nullable restore
+#else
+ [QueryParameter("genres")]
+ public string[] Genres { get; set; }
+#endif
+ /// Optional, the max number of images to return, per image type.
+ [QueryParameter("imageTypeLimit")]
+ public int? ImageTypeLimit { get; set; }
+ /// Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("includeItemTypes")]
+ public string[]? IncludeItemTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("includeItemTypes")]
+ public string[] IncludeItemTypes { get; set; }
+#endif
+ /// Optional filter by items that are marked as favorite, or not.
+ [QueryParameter("isFavorite")]
+ public bool? IsFavorite { get; set; }
+ /// Optional. The maximum number of records to return.
+ [QueryParameter("limit")]
+ public int? Limit { get; set; }
+ /// Optional filter by MediaType. Allows multiple, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaTypes")]
+ public string[]? MediaTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaTypes")]
+ public string[] MediaTypes { get; set; }
+#endif
+ /// Optional filter by minimum community rating.
+ [QueryParameter("minCommunityRating")]
+ public double? MinCommunityRating { get; set; }
+ /// Optional filter by items whose name is equally or lesser than a given input string.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("nameLessThan")]
+ public string? NameLessThan { get; set; }
+#nullable restore
+#else
+ [QueryParameter("nameLessThan")]
+ public string NameLessThan { get; set; }
+#endif
+ /// Optional filter by items whose name is sorted equally than a given input string.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("nameStartsWith")]
+ public string? NameStartsWith { get; set; }
+#nullable restore
+#else
+ [QueryParameter("nameStartsWith")]
+ public string NameStartsWith { get; set; }
+#endif
+ /// Optional filter by items whose name is sorted equally or greater than a given input string.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("nameStartsWithOrGreater")]
+ public string? NameStartsWithOrGreater { get; set; }
+#nullable restore
+#else
+ [QueryParameter("nameStartsWithOrGreater")]
+ public string NameStartsWithOrGreater { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("officialRatings")]
+ public string[]? OfficialRatings { get; set; }
+#nullable restore
+#else
+ [QueryParameter("officialRatings")]
+ public string[] OfficialRatings { get; set; }
+#endif
+ /// Specify this to localize the search to a specific item or folder. Omit to use the root.
+ [QueryParameter("parentId")]
+ public Guid? ParentId { get; set; }
+ /// Optional. If specified, results will be filtered to include only those containing the specified person.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("person")]
+ public string? Person { get; set; }
+#nullable restore
+#else
+ [QueryParameter("person")]
+ public string Person { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered to include only those containing the specified person ids.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("personIds")]
+ public Guid?[]? PersonIds { get; set; }
+#nullable restore
+#else
+ [QueryParameter("personIds")]
+ public Guid?[] PersonIds { get; set; }
+#endif
+ /// Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("personTypes")]
+ public string[]? PersonTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("personTypes")]
+ public string[] PersonTypes { get; set; }
+#endif
+ /// Optional. Search term.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("searchTerm")]
+ public string? SearchTerm { get; set; }
+#nullable restore
+#else
+ [QueryParameter("searchTerm")]
+ public string SearchTerm { get; set; }
+#endif
+ /// Optional. Specify one or more sort orders, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("sortBy")]
+ public string[]? SortBy { get; set; }
+#nullable restore
+#else
+ [QueryParameter("sortBy")]
+ public string[] SortBy { get; set; }
+#endif
+ /// Sort Order - Ascending,Descending.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("sortOrder")]
+ public string[]? SortOrder { get; set; }
+#nullable restore
+#else
+ [QueryParameter("sortOrder")]
+ public string[] SortOrder { get; set; }
+#endif
+ /// Optional. The record index to start at. All items with a lower index will be dropped from the results.
+ [QueryParameter("startIndex")]
+ public int? StartIndex { get; set; }
+ /// Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("studioIds")]
+ public Guid?[]? StudioIds { get; set; }
+#nullable restore
+#else
+ [QueryParameter("studioIds")]
+ public Guid?[] StudioIds { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("studios")]
+ public string[]? Studios { get; set; }
+#nullable restore
+#else
+ [QueryParameter("studios")]
+ public string[] Studios { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tags")]
+ public string[]? Tags { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tags")]
+ public string[] Tags { get; set; }
+#endif
+ /// User id.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ /// Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("years")]
+ public int?[]? Years { get; set; }
+#nullable restore
+#else
+ [QueryParameter("years")]
+ public int?[] Years { get; set; }
+#endif
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class AlbumArtistsRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/ArtistsRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/ArtistsRequestBuilder.cs
new file mode 100644
index 0000000..0b4e66e
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/ArtistsRequestBuilder.cs
@@ -0,0 +1,348 @@
+//
+using Jellyfin.Sdk.Generated.Artists.AlbumArtists;
+using Jellyfin.Sdk.Generated.Artists.InstantMix;
+using Jellyfin.Sdk.Generated.Artists.Item;
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists {
+ ///
+ /// Builds and executes requests for operations under \Artists
+ ///
+ public class ArtistsRequestBuilder : BaseRequestBuilder {
+ /// The AlbumArtists property
+ public AlbumArtistsRequestBuilder AlbumArtists { get =>
+ new AlbumArtistsRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The InstantMix property
+ public InstantMixRequestBuilder InstantMix { get =>
+ new InstantMixRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// Gets an item from the Jellyfin.Sdk.Generated.Artists.item collection
+ /// Studio name.
+ public ArtistsItemRequestBuilder this[string position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("Artists%2Did", position);
+ return new ArtistsItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ ///
+ /// Instantiates a new ArtistsRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public ArtistsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists{?enableImages*,enableImageTypes*,enableTotalRecordCount*,enableUserData*,excludeItemTypes*,fields*,filters*,genreIds*,genres*,imageTypeLimit*,includeItemTypes*,isFavorite*,limit*,mediaTypes*,minCommunityRating*,nameLessThan*,nameStartsWith*,nameStartsWithOrGreater*,officialRatings*,parentId*,person*,personIds*,personTypes*,searchTerm*,sortBy*,sortOrder*,startIndex*,studioIds*,studios*,tags*,userId*,years*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new ArtistsRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public ArtistsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists{?enableImages*,enableImageTypes*,enableTotalRecordCount*,enableUserData*,excludeItemTypes*,fields*,filters*,genreIds*,genres*,imageTypeLimit*,includeItemTypes*,isFavorite*,limit*,mediaTypes*,minCommunityRating*,nameLessThan*,nameStartsWith*,nameStartsWithOrGreater*,officialRatings*,parentId*,person*,personIds*,personTypes*,searchTerm*,sortBy*,sortOrder*,startIndex*,studioIds*,studios*,tags*,userId*,years*}", rawUrl) {
+ }
+ ///
+ /// Gets all artists from a given item, folder, or the entire library.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, BaseItemDtoQueryResult.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets all artists from a given item, folder, or the entire library.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public ArtistsRequestBuilder WithUrl(string rawUrl) {
+ return new ArtistsRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets all artists from a given item, folder, or the entire library.
+ ///
+ public class ArtistsRequestBuilderGetQueryParameters {
+ /// Optional, include image information in output.
+ [QueryParameter("enableImages")]
+ public bool? EnableImages { get; set; }
+ /// Optional. The image types to include in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("enableImageTypes")]
+ public string[]? EnableImageTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("enableImageTypes")]
+ public string[] EnableImageTypes { get; set; }
+#endif
+ /// Total record count.
+ [QueryParameter("enableTotalRecordCount")]
+ public bool? EnableTotalRecordCount { get; set; }
+ /// Optional, include user data.
+ [QueryParameter("enableUserData")]
+ public bool? EnableUserData { get; set; }
+ /// Optional. If specified, results will be filtered out based on item type. This allows multiple, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("excludeItemTypes")]
+ public string[]? ExcludeItemTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("excludeItemTypes")]
+ public string[] ExcludeItemTypes { get; set; }
+#endif
+ /// Optional. Specify additional fields of information to return in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("fields")]
+ public string[]? Fields { get; set; }
+#nullable restore
+#else
+ [QueryParameter("fields")]
+ public string[] Fields { get; set; }
+#endif
+ /// Optional. Specify additional filters to apply.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("filters")]
+ public string[]? Filters { get; set; }
+#nullable restore
+#else
+ [QueryParameter("filters")]
+ public string[] Filters { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on genre id. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("genreIds")]
+ public Guid?[]? GenreIds { get; set; }
+#nullable restore
+#else
+ [QueryParameter("genreIds")]
+ public Guid?[] GenreIds { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("genres")]
+ public string[]? Genres { get; set; }
+#nullable restore
+#else
+ [QueryParameter("genres")]
+ public string[] Genres { get; set; }
+#endif
+ /// Optional, the max number of images to return, per image type.
+ [QueryParameter("imageTypeLimit")]
+ public int? ImageTypeLimit { get; set; }
+ /// Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("includeItemTypes")]
+ public string[]? IncludeItemTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("includeItemTypes")]
+ public string[] IncludeItemTypes { get; set; }
+#endif
+ /// Optional filter by items that are marked as favorite, or not.
+ [QueryParameter("isFavorite")]
+ public bool? IsFavorite { get; set; }
+ /// Optional. The maximum number of records to return.
+ [QueryParameter("limit")]
+ public int? Limit { get; set; }
+ /// Optional filter by MediaType. Allows multiple, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaTypes")]
+ public string[]? MediaTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaTypes")]
+ public string[] MediaTypes { get; set; }
+#endif
+ /// Optional filter by minimum community rating.
+ [QueryParameter("minCommunityRating")]
+ public double? MinCommunityRating { get; set; }
+ /// Optional filter by items whose name is equally or lesser than a given input string.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("nameLessThan")]
+ public string? NameLessThan { get; set; }
+#nullable restore
+#else
+ [QueryParameter("nameLessThan")]
+ public string NameLessThan { get; set; }
+#endif
+ /// Optional filter by items whose name is sorted equally than a given input string.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("nameStartsWith")]
+ public string? NameStartsWith { get; set; }
+#nullable restore
+#else
+ [QueryParameter("nameStartsWith")]
+ public string NameStartsWith { get; set; }
+#endif
+ /// Optional filter by items whose name is sorted equally or greater than a given input string.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("nameStartsWithOrGreater")]
+ public string? NameStartsWithOrGreater { get; set; }
+#nullable restore
+#else
+ [QueryParameter("nameStartsWithOrGreater")]
+ public string NameStartsWithOrGreater { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("officialRatings")]
+ public string[]? OfficialRatings { get; set; }
+#nullable restore
+#else
+ [QueryParameter("officialRatings")]
+ public string[] OfficialRatings { get; set; }
+#endif
+ /// Specify this to localize the search to a specific item or folder. Omit to use the root.
+ [QueryParameter("parentId")]
+ public Guid? ParentId { get; set; }
+ /// Optional. If specified, results will be filtered to include only those containing the specified person.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("person")]
+ public string? Person { get; set; }
+#nullable restore
+#else
+ [QueryParameter("person")]
+ public string Person { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered to include only those containing the specified person ids.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("personIds")]
+ public Guid?[]? PersonIds { get; set; }
+#nullable restore
+#else
+ [QueryParameter("personIds")]
+ public Guid?[] PersonIds { get; set; }
+#endif
+ /// Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("personTypes")]
+ public string[]? PersonTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("personTypes")]
+ public string[] PersonTypes { get; set; }
+#endif
+ /// Optional. Search term.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("searchTerm")]
+ public string? SearchTerm { get; set; }
+#nullable restore
+#else
+ [QueryParameter("searchTerm")]
+ public string SearchTerm { get; set; }
+#endif
+ /// Optional. Specify one or more sort orders, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("sortBy")]
+ public string[]? SortBy { get; set; }
+#nullable restore
+#else
+ [QueryParameter("sortBy")]
+ public string[] SortBy { get; set; }
+#endif
+ /// Sort Order - Ascending,Descending.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("sortOrder")]
+ public string[]? SortOrder { get; set; }
+#nullable restore
+#else
+ [QueryParameter("sortOrder")]
+ public string[] SortOrder { get; set; }
+#endif
+ /// Optional. The record index to start at. All items with a lower index will be dropped from the results.
+ [QueryParameter("startIndex")]
+ public int? StartIndex { get; set; }
+ /// Optional. If specified, results will be filtered based on studio id. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("studioIds")]
+ public Guid?[]? StudioIds { get; set; }
+#nullable restore
+#else
+ [QueryParameter("studioIds")]
+ public Guid?[] StudioIds { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("studios")]
+ public string[]? Studios { get; set; }
+#nullable restore
+#else
+ [QueryParameter("studios")]
+ public string[] Studios { get; set; }
+#endif
+ /// Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tags")]
+ public string[]? Tags { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tags")]
+ public string[] Tags { get; set; }
+#endif
+ /// User id.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ /// Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimited.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("years")]
+ public int?[]? Years { get; set; }
+#nullable restore
+#else
+ [QueryParameter("years")]
+ public int?[] Years { get; set; }
+#endif
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class ArtistsRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/InstantMix/InstantMixRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/InstantMix/InstantMixRequestBuilder.cs
new file mode 100644
index 0000000..31d0625
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/InstantMix/InstantMixRequestBuilder.cs
@@ -0,0 +1,121 @@
+//
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists.InstantMix {
+ ///
+ /// Builds and executes requests for operations under \Artists\InstantMix
+ ///
+ public class InstantMixRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new InstantMixRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public InstantMixRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/InstantMix?id={id}{&enableImages*,enableImageTypes*,enableUserData*,fields*,imageTypeLimit*,limit*,userId*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new InstantMixRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public InstantMixRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/InstantMix?id={id}{&enableImages*,enableImageTypes*,enableUserData*,fields*,imageTypeLimit*,limit*,userId*}", rawUrl) {
+ }
+ ///
+ /// Creates an instant playlist based on a given artist.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ [Obsolete("")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, BaseItemDtoQueryResult.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Creates an instant playlist based on a given artist.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ [Obsolete("")]
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ [Obsolete("")]
+ public InstantMixRequestBuilder WithUrl(string rawUrl) {
+ return new InstantMixRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Creates an instant playlist based on a given artist.
+ ///
+ public class InstantMixRequestBuilderGetQueryParameters {
+ /// Optional. Include image information in output.
+ [QueryParameter("enableImages")]
+ public bool? EnableImages { get; set; }
+ /// Optional. The image types to include in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("enableImageTypes")]
+ public string[]? EnableImageTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("enableImageTypes")]
+ public string[] EnableImageTypes { get; set; }
+#endif
+ /// Optional. Include user data.
+ [QueryParameter("enableUserData")]
+ public bool? EnableUserData { get; set; }
+ /// Optional. Specify additional fields of information to return in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("fields")]
+ public string[]? Fields { get; set; }
+#nullable restore
+#else
+ [QueryParameter("fields")]
+ public string[] Fields { get; set; }
+#endif
+ /// The item id.
+ [QueryParameter("id")]
+ public Guid? Id { get; set; }
+ /// Optional. The max number of images to return, per image type.
+ [QueryParameter("imageTypeLimit")]
+ public int? ImageTypeLimit { get; set; }
+ /// Optional. The maximum number of records to return.
+ [QueryParameter("limit")]
+ public int? Limit { get; set; }
+ /// Optional. Filter by user id, and attach user data.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class InstantMixRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/Item/ArtistsItemRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/Item/ArtistsItemRequestBuilder.cs
new file mode 100644
index 0000000..bbf9ccd
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/Item/ArtistsItemRequestBuilder.cs
@@ -0,0 +1,98 @@
+//
+using Jellyfin.Sdk.Generated.Artists.Item.Images;
+using Jellyfin.Sdk.Generated.Artists.Item.InstantMix;
+using Jellyfin.Sdk.Generated.Artists.Item.Similar;
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists.Item {
+ ///
+ /// Builds and executes requests for operations under \Artists\{Artists-id}
+ ///
+ public class ArtistsItemRequestBuilder : BaseRequestBuilder {
+ /// The Images property
+ public ImagesRequestBuilder Images { get =>
+ new ImagesRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The InstantMix property
+ public InstantMixRequestBuilder InstantMix { get =>
+ new InstantMixRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The Similar property
+ public SimilarRequestBuilder Similar { get =>
+ new SimilarRequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new ArtistsItemRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public ArtistsItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{Artists%2Did}{?userId*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new ArtistsItemRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public ArtistsItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{Artists%2Did}{?userId*}", rawUrl) {
+ }
+ ///
+ /// Gets an artist by name.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, BaseItemDto.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an artist by name.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public ArtistsItemRequestBuilder WithUrl(string rawUrl) {
+ return new ArtistsItemRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets an artist by name.
+ ///
+ public class ArtistsItemRequestBuilderGetQueryParameters {
+ /// Optional. Filter by user id, and attach user data.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class ArtistsItemRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/Item/Images/ImagesRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/Item/Images/ImagesRequestBuilder.cs
new file mode 100644
index 0000000..f24a154
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/Item/Images/ImagesRequestBuilder.cs
@@ -0,0 +1,36 @@
+//
+using Jellyfin.Sdk.Generated.Artists.Item.Images.Item;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists.Item.Images {
+ ///
+ /// Builds and executes requests for operations under \Artists\{Artists-id}\Images
+ ///
+ public class ImagesRequestBuilder : BaseRequestBuilder {
+ /// Gets an item from the Jellyfin.Sdk.Generated.Artists.item.Images.item collection
+ /// Image type.
+ public WithImageTypeItemRequestBuilder this[string position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("imageType", position);
+ return new WithImageTypeItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ ///
+ /// Instantiates a new ImagesRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public ImagesRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{Artists%2Did}/Images", pathParameters) {
+ }
+ ///
+ /// Instantiates a new ImagesRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public ImagesRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{Artists%2Did}/Images", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/Item/Images/Item/Item/WithImageIndexItemRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/Item/Images/Item/Item/WithImageIndexItemRequestBuilder.cs
new file mode 100644
index 0000000..77d8505
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/Item/Images/Item/Item/WithImageIndexItemRequestBuilder.cs
@@ -0,0 +1,282 @@
+//
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists.Item.Images.Item.Item {
+ ///
+ /// Builds and executes requests for operations under \Artists\{name}\Images\{imageType}\{imageIndex}
+ ///
+ public class WithImageIndexItemRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new WithImageIndexItemRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithImageIndexItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{name}/Images/{imageType}/{imageIndex}{?addPlayedIndicator*,backgroundColor*,blur*,cropWhitespace*,fillHeight*,fillWidth*,foregroundLayer*,format*,height*,maxHeight*,maxWidth*,percentPlayed*,quality*,tag*,unplayedCount*,width*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new WithImageIndexItemRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithImageIndexItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{name}/Images/{imageType}/{imageIndex}{?addPlayedIndicator*,backgroundColor*,blur*,cropWhitespace*,fillHeight*,fillWidth*,foregroundLayer*,format*,height*,maxHeight*,maxWidth*,percentPlayed*,quality*,tag*,unplayedCount*,width*}", rawUrl) {
+ }
+ ///
+ /// Get artist image by name.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary> {
+ {"404", ProblemDetails.CreateFromDiscriminatorValue},
+ };
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Get artist image by name.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToHeadRequestInformation(requestConfiguration);
+ var errorMapping = new Dictionary> {
+ {"404", ProblemDetails.CreateFromDiscriminatorValue},
+ };
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Get artist image by name.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "image/*, application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Get artist image by name.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "image/*, application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public WithImageIndexItemRequestBuilder WithUrl(string rawUrl) {
+ return new WithImageIndexItemRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Get artist image by name.
+ ///
+ public class WithImageIndexItemRequestBuilderGetQueryParameters {
+ /// Optional. Add a played indicator.
+ [QueryParameter("addPlayedIndicator")]
+ public bool? AddPlayedIndicator { get; set; }
+ /// Optional. Apply a background color for transparent images.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("backgroundColor")]
+ public string? BackgroundColor { get; set; }
+#nullable restore
+#else
+ [QueryParameter("backgroundColor")]
+ public string BackgroundColor { get; set; }
+#endif
+ /// Optional. Blur image.
+ [QueryParameter("blur")]
+ public int? Blur { get; set; }
+ /// Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.
+ [Obsolete("")]
+ [QueryParameter("cropWhitespace")]
+ public bool? CropWhitespace { get; set; }
+ /// Height of box to fill.
+ [QueryParameter("fillHeight")]
+ public int? FillHeight { get; set; }
+ /// Width of box to fill.
+ [QueryParameter("fillWidth")]
+ public int? FillWidth { get; set; }
+ /// Optional. Apply a foreground layer on top of the image.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("foregroundLayer")]
+ public string? ForegroundLayer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("foregroundLayer")]
+ public string ForegroundLayer { get; set; }
+#endif
+ /// Determines the output format of the image - original,gif,jpg,png.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("format")]
+ public string? Format { get; set; }
+#nullable restore
+#else
+ [QueryParameter("format")]
+ public string Format { get; set; }
+#endif
+ /// The fixed image height to return.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// The maximum image height to return.
+ [QueryParameter("maxHeight")]
+ public int? MaxHeight { get; set; }
+ /// The maximum image width to return.
+ [QueryParameter("maxWidth")]
+ public int? MaxWidth { get; set; }
+ /// Optional. Percent to render for the percent played overlay.
+ [QueryParameter("percentPlayed")]
+ public double? PercentPlayed { get; set; }
+ /// Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.
+ [QueryParameter("quality")]
+ public int? Quality { get; set; }
+ /// Optional. Supply the cache tag from the item object to receive strong caching headers.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. Unplayed count overlay to render.
+ [QueryParameter("unplayedCount")]
+ public int? UnplayedCount { get; set; }
+ /// The fixed image width to return.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class WithImageIndexItemRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ ///
+ /// Get artist image by name.
+ ///
+ public class WithImageIndexItemRequestBuilderHeadQueryParameters {
+ /// Optional. Add a played indicator.
+ [QueryParameter("addPlayedIndicator")]
+ public bool? AddPlayedIndicator { get; set; }
+ /// Optional. Apply a background color for transparent images.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("backgroundColor")]
+ public string? BackgroundColor { get; set; }
+#nullable restore
+#else
+ [QueryParameter("backgroundColor")]
+ public string BackgroundColor { get; set; }
+#endif
+ /// Optional. Blur image.
+ [QueryParameter("blur")]
+ public int? Blur { get; set; }
+ /// Optional. Specify if whitespace should be cropped out of the image. True/False. If unspecified, whitespace will be cropped from logos and clear art.
+ [Obsolete("")]
+ [QueryParameter("cropWhitespace")]
+ public bool? CropWhitespace { get; set; }
+ /// Height of box to fill.
+ [QueryParameter("fillHeight")]
+ public int? FillHeight { get; set; }
+ /// Width of box to fill.
+ [QueryParameter("fillWidth")]
+ public int? FillWidth { get; set; }
+ /// Optional. Apply a foreground layer on top of the image.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("foregroundLayer")]
+ public string? ForegroundLayer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("foregroundLayer")]
+ public string ForegroundLayer { get; set; }
+#endif
+ /// Determines the output format of the image - original,gif,jpg,png.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("format")]
+ public string? Format { get; set; }
+#nullable restore
+#else
+ [QueryParameter("format")]
+ public string Format { get; set; }
+#endif
+ /// The fixed image height to return.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// The maximum image height to return.
+ [QueryParameter("maxHeight")]
+ public int? MaxHeight { get; set; }
+ /// The maximum image width to return.
+ [QueryParameter("maxWidth")]
+ public int? MaxWidth { get; set; }
+ /// Optional. Percent to render for the percent played overlay.
+ [QueryParameter("percentPlayed")]
+ public double? PercentPlayed { get; set; }
+ /// Optional. Quality setting, from 0-100. Defaults to 90 and should suffice in most cases.
+ [QueryParameter("quality")]
+ public int? Quality { get; set; }
+ /// Optional. Supply the cache tag from the item object to receive strong caching headers.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. Unplayed count overlay to render.
+ [QueryParameter("unplayedCount")]
+ public int? UnplayedCount { get; set; }
+ /// The fixed image width to return.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class WithImageIndexItemRequestBuilderHeadRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/Item/Images/Item/WithImageTypeItemRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/Item/Images/Item/WithImageTypeItemRequestBuilder.cs
new file mode 100644
index 0000000..a8f0bad
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/Item/Images/Item/WithImageTypeItemRequestBuilder.cs
@@ -0,0 +1,44 @@
+//
+using Jellyfin.Sdk.Generated.Artists.Item.Images.Item.Item;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists.Item.Images.Item {
+ ///
+ /// Builds and executes requests for operations under \Artists\{name}\Images\{imageType}
+ ///
+ public class WithImageTypeItemRequestBuilder : BaseRequestBuilder {
+ /// Gets an item from the Jellyfin.Sdk.Generated.Artists.item.Images.item.item collection
+ /// Image index.
+ public WithImageIndexItemRequestBuilder this[int position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("imageIndex", position);
+ return new WithImageIndexItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ /// Gets an item from the Jellyfin.Sdk.Generated.Artists.item.Images.item.item collection
+ /// Image index.
+ [Obsolete("This indexer is deprecated and will be removed in the next major version. Use the one with the typed parameter instead.")]
+ public WithImageIndexItemRequestBuilder this[string position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ if (!string.IsNullOrWhiteSpace(position)) urlTplParams.Add("imageIndex", position);
+ return new WithImageIndexItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ ///
+ /// Instantiates a new WithImageTypeItemRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithImageTypeItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{name}/Images/{imageType}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new WithImageTypeItemRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithImageTypeItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{name}/Images/{imageType}", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/Item/InstantMix/InstantMixRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/Item/InstantMix/InstantMixRequestBuilder.cs
new file mode 100644
index 0000000..214e315
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/Item/InstantMix/InstantMixRequestBuilder.cs
@@ -0,0 +1,115 @@
+//
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists.Item.InstantMix {
+ ///
+ /// Builds and executes requests for operations under \Artists\{Artists-id}\InstantMix
+ ///
+ public class InstantMixRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new InstantMixRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public InstantMixRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{Artists%2Did}/InstantMix{?enableImages*,enableImageTypes*,enableUserData*,fields*,imageTypeLimit*,limit*,userId*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new InstantMixRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public InstantMixRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{Artists%2Did}/InstantMix{?enableImages*,enableImageTypes*,enableUserData*,fields*,imageTypeLimit*,limit*,userId*}", rawUrl) {
+ }
+ ///
+ /// Creates an instant playlist based on a given artist.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, BaseItemDtoQueryResult.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Creates an instant playlist based on a given artist.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public InstantMixRequestBuilder WithUrl(string rawUrl) {
+ return new InstantMixRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Creates an instant playlist based on a given artist.
+ ///
+ public class InstantMixRequestBuilderGetQueryParameters {
+ /// Optional. Include image information in output.
+ [QueryParameter("enableImages")]
+ public bool? EnableImages { get; set; }
+ /// Optional. The image types to include in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("enableImageTypes")]
+ public string[]? EnableImageTypes { get; set; }
+#nullable restore
+#else
+ [QueryParameter("enableImageTypes")]
+ public string[] EnableImageTypes { get; set; }
+#endif
+ /// Optional. Include user data.
+ [QueryParameter("enableUserData")]
+ public bool? EnableUserData { get; set; }
+ /// Optional. Specify additional fields of information to return in the output.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("fields")]
+ public string[]? Fields { get; set; }
+#nullable restore
+#else
+ [QueryParameter("fields")]
+ public string[] Fields { get; set; }
+#endif
+ /// Optional. The max number of images to return, per image type.
+ [QueryParameter("imageTypeLimit")]
+ public int? ImageTypeLimit { get; set; }
+ /// Optional. The maximum number of records to return.
+ [QueryParameter("limit")]
+ public int? Limit { get; set; }
+ /// Optional. Filter by user id, and attach user data.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class InstantMixRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Artists/Item/Similar/SimilarRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Artists/Item/Similar/SimilarRequestBuilder.cs
new file mode 100644
index 0000000..dba68a4
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Artists/Item/Similar/SimilarRequestBuilder.cs
@@ -0,0 +1,106 @@
+//
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Artists.Item.Similar {
+ ///
+ /// Builds and executes requests for operations under \Artists\{Artists-id}\Similar
+ ///
+ public class SimilarRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new SimilarRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public SimilarRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{Artists%2Did}/Similar{?excludeArtistIds*,fields*,limit*,userId*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new SimilarRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public SimilarRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Artists/{Artists%2Did}/Similar{?excludeArtistIds*,fields*,limit*,userId*}", rawUrl) {
+ }
+ ///
+ /// Gets similar items.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, BaseItemDtoQueryResult.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets similar items.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/json, application/json;profile=\"CamelCase\", application/json;profile=\"PascalCase\"");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public SimilarRequestBuilder WithUrl(string rawUrl) {
+ return new SimilarRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets similar items.
+ ///
+ public class SimilarRequestBuilderGetQueryParameters {
+ /// Exclude artist ids.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("excludeArtistIds")]
+ public Guid?[]? ExcludeArtistIds { get; set; }
+#nullable restore
+#else
+ [QueryParameter("excludeArtistIds")]
+ public Guid?[] ExcludeArtistIds { get; set; }
+#endif
+ /// Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("fields")]
+ public string[]? Fields { get; set; }
+#nullable restore
+#else
+ [QueryParameter("fields")]
+ public string[] Fields { get; set; }
+#endif
+ /// Optional. The maximum number of records to return.
+ [QueryParameter("limit")]
+ public int? Limit { get; set; }
+ /// Optional. Filter by user id, and attach user data.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class SimilarRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/AudioRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/AudioRequestBuilder.cs
new file mode 100644
index 0000000..15f3e2e
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/AudioRequestBuilder.cs
@@ -0,0 +1,44 @@
+//
+using Jellyfin.Sdk.Generated.Audio.Item;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio {
+ ///
+ /// Builds and executes requests for operations under \Audio
+ ///
+ public class AudioRequestBuilder : BaseRequestBuilder {
+ /// Gets an item from the Jellyfin.Sdk.Generated.Audio.item collection
+ /// The item id.
+ public WithItemItemRequestBuilder this[Guid position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("itemId", position);
+ return new WithItemItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ /// Gets an item from the Jellyfin.Sdk.Generated.Audio.item collection
+ /// The item id.
+ [Obsolete("This indexer is deprecated and will be removed in the next major version. Use the one with the typed parameter instead.")]
+ public WithItemItemRequestBuilder this[string position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ if (!string.IsNullOrWhiteSpace(position)) urlTplParams.Add("itemId", position);
+ return new WithItemItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ ///
+ /// Instantiates a new AudioRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AudioRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio", pathParameters) {
+ }
+ ///
+ /// Instantiates a new AudioRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AudioRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/HlsRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/HlsRequestBuilder.cs
new file mode 100644
index 0000000..a8f67a9
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/HlsRequestBuilder.cs
@@ -0,0 +1,36 @@
+//
+using Jellyfin.Sdk.Generated.Audio.Item.Hls.Item;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.Hls {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\hls
+ ///
+ public class HlsRequestBuilder : BaseRequestBuilder {
+ /// Gets an item from the Jellyfin.Sdk.Generated.Audio.item.hls.item collection
+ /// The segment id.
+ public WithSegmentItemRequestBuilder this[string position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("segmentId", position);
+ return new WithSegmentItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ ///
+ /// Instantiates a new HlsRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public HlsRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls", pathParameters) {
+ }
+ ///
+ /// Instantiates a new HlsRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public HlsRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/StreamAac/StreamAacRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/StreamAac/StreamAacRequestBuilder.cs
new file mode 100644
index 0000000..72939fe
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/StreamAac/StreamAacRequestBuilder.cs
@@ -0,0 +1,74 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.Hls.Item.StreamAac {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\hls\{segmentId}\stream.aac
+ ///
+ public class StreamAacRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new StreamAacRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public StreamAacRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls/{segmentId}/stream.aac", pathParameters) {
+ }
+ ///
+ /// Instantiates a new StreamAacRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public StreamAacRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls/{segmentId}/stream.aac", rawUrl) {
+ }
+ ///
+ /// Gets the specified audio segment for an audio item.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets the specified audio segment for an audio item.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public StreamAacRequestBuilder WithUrl(string rawUrl) {
+ return new StreamAacRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class StreamAacRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/StreamMp3/StreamMp3RequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/StreamMp3/StreamMp3RequestBuilder.cs
new file mode 100644
index 0000000..313f151
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/StreamMp3/StreamMp3RequestBuilder.cs
@@ -0,0 +1,74 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.Hls.Item.StreamMp3 {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\hls\{segmentId}\stream.mp3
+ ///
+ public class StreamMp3RequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new StreamMp3RequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public StreamMp3RequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls/{segmentId}/stream.mp3", pathParameters) {
+ }
+ ///
+ /// Instantiates a new StreamMp3RequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public StreamMp3RequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls/{segmentId}/stream.mp3", rawUrl) {
+ }
+ ///
+ /// Gets the specified audio segment for an audio item.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets the specified audio segment for an audio item.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public StreamMp3RequestBuilder WithUrl(string rawUrl) {
+ return new StreamMp3RequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class StreamMp3RequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/WithSegmentItemRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/WithSegmentItemRequestBuilder.cs
new file mode 100644
index 0000000..90d7640
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls/Item/WithSegmentItemRequestBuilder.cs
@@ -0,0 +1,38 @@
+//
+using Jellyfin.Sdk.Generated.Audio.Item.Hls.Item.StreamAac;
+using Jellyfin.Sdk.Generated.Audio.Item.Hls.Item.StreamMp3;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.Hls.Item {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\hls\{segmentId}
+ ///
+ public class WithSegmentItemRequestBuilder : BaseRequestBuilder {
+ /// The streamAac property
+ public StreamAacRequestBuilder StreamAac { get =>
+ new StreamAacRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The streamMp3 property
+ public StreamMp3RequestBuilder StreamMp3 { get =>
+ new StreamMp3RequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new WithSegmentItemRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithSegmentItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls/{segmentId}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new WithSegmentItemRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithSegmentItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls/{segmentId}", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Hls1RequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Hls1RequestBuilder.cs
new file mode 100644
index 0000000..db472fb
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Hls1RequestBuilder.cs
@@ -0,0 +1,36 @@
+//
+using Jellyfin.Sdk.Generated.Audio.Item.Hls1.Item;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.Hls1 {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\hls1
+ ///
+ public class Hls1RequestBuilder : BaseRequestBuilder {
+ /// Gets an item from the Jellyfin.Sdk.Generated.Audio.item.hls1.item collection
+ /// The playlist id.
+ public WithPlaylistItemRequestBuilder this[string position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("playlistId", position);
+ return new WithPlaylistItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ ///
+ /// Instantiates a new Hls1RequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public Hls1RequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls1", pathParameters) {
+ }
+ ///
+ /// Instantiates a new Hls1RequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public Hls1RequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls1", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Item/WithPlaylistItemRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Item/WithPlaylistItemRequestBuilder.cs
new file mode 100644
index 0000000..8b6f956
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Item/WithPlaylistItemRequestBuilder.cs
@@ -0,0 +1,39 @@
+//
+using Jellyfin.Sdk.Generated.Audio.Item.Hls1.Item.WithSegmentIdWithContainer;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.Hls1.Item {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\hls1\{playlistId}
+ ///
+ public class WithPlaylistItemRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new WithPlaylistItemRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithPlaylistItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls1/{playlistId}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new WithPlaylistItemRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithPlaylistItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls1/{playlistId}", rawUrl) {
+ }
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\hls1\{playlistId}\{segmentId}.{container}
+ ///
+ /// The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.
+ /// The segment id.
+ public WithSegmentIdWithContainerRequestBuilder WithSegmentIdWithContainer(string container, int? segmentId) {
+ if(string.IsNullOrEmpty(container)) throw new ArgumentNullException(nameof(container));
+ _ = segmentId ?? throw new ArgumentNullException(nameof(segmentId));
+ return new WithSegmentIdWithContainerRequestBuilder(PathParameters, RequestAdapter, container, segmentId);
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Item/WithSegmentIdWithContainer/WithSegmentIdWithContainerRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Item/WithSegmentIdWithContainer/WithSegmentIdWithContainerRequestBuilder.cs
new file mode 100644
index 0000000..c714231
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/Hls1/Item/WithSegmentIdWithContainer/WithSegmentIdWithContainerRequestBuilder.cs
@@ -0,0 +1,352 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.Hls1.Item.WithSegmentIdWithContainer {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\hls1\{playlistId}\{segmentId}.{container}
+ ///
+ public class WithSegmentIdWithContainerRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new WithSegmentIdWithContainerRequestBuilder and sets the default values.
+ ///
+ /// The video container. Possible values are: ts, webm, asf, wmv, ogv, mp4, m4v, mkv, mpeg, mpg, avi, 3gp, wmv, wtv, m2ts, mov, iso, flv.
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ /// The segment id.
+ public WithSegmentIdWithContainerRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter, string container = "", int? segmentId = default) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls1/{playlistId}/{segmentId}.{container}?actualSegmentLengthTicks={actualSegmentLengthTicks}&runtimeTicks={runtimeTicks}{&allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxStreamingBitrate*,maxVideoBitDepth*,mediaSourceId*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", pathParameters) {
+ if (!string.IsNullOrWhiteSpace(container)) PathParameters.Add("container", container);
+ if (segmentId != null) PathParameters.Add("segmentId", segmentId);
+ }
+ ///
+ /// Instantiates a new WithSegmentIdWithContainerRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithSegmentIdWithContainerRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/hls1/{playlistId}/{segmentId}.{container}?actualSegmentLengthTicks={actualSegmentLengthTicks}&runtimeTicks={runtimeTicks}{&allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxStreamingBitrate*,maxVideoBitDepth*,mediaSourceId*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", rawUrl) {
+ }
+ ///
+ /// Gets a video stream using HTTP live streaming.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets a video stream using HTTP live streaming.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public WithSegmentIdWithContainerRequestBuilder WithUrl(string rawUrl) {
+ return new WithSegmentIdWithContainerRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets a video stream using HTTP live streaming.
+ ///
+ public class WithSegmentIdWithContainerRequestBuilderGetQueryParameters {
+ /// The length of the requested segment in ticks.
+ [QueryParameter("actualSegmentLengthTicks")]
+ public long? ActualSegmentLengthTicks { get; set; }
+ /// Whether or not to allow copying of the audio stream url.
+ [QueryParameter("allowAudioStreamCopy")]
+ public bool? AllowAudioStreamCopy { get; set; }
+ /// Whether or not to allow copying of the video stream url.
+ [QueryParameter("allowVideoStreamCopy")]
+ public bool? AllowVideoStreamCopy { get; set; }
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. Specify a specific number of audio channels to encode to, e.g. 2.
+ [QueryParameter("audioChannels")]
+ public int? AudioChannels { get; set; }
+ /// Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Specify a specific audio sample rate, e.g. 44100.
+ [QueryParameter("audioSampleRate")]
+ public int? AudioSampleRate { get; set; }
+ /// Optional. The index of the audio stream to use. If omitted the first audio stream will be used.
+ [QueryParameter("audioStreamIndex")]
+ public int? AudioStreamIndex { get; set; }
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// Optional. The MediaBrowser.Model.Dlna.EncodingContext.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("context")]
+ public string? Context { get; set; }
+#nullable restore
+#else
+ [QueryParameter("context")]
+ public string Context { get; set; }
+#endif
+ /// Whether or not to copy timestamps when transcoding with an offset. Defaults to false.
+ [QueryParameter("copyTimestamps")]
+ public bool? CopyTimestamps { get; set; }
+ /// Optional. The limit of how many cpu cores to use.
+ [QueryParameter("cpuCoreLimit")]
+ public int? CpuCoreLimit { get; set; }
+ /// Optional. Whether to deinterlace the video.
+ [QueryParameter("deInterlace")]
+ public bool? DeInterlace { get; set; }
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Optional. The dlna device profile id to utilize.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceProfileId")]
+ public string? DeviceProfileId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceProfileId")]
+ public string DeviceProfileId { get; set; }
+#endif
+ /// Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.
+ [QueryParameter("enableAutoStreamCopy")]
+ public bool? EnableAutoStreamCopy { get; set; }
+ /// Optional. Whether to enable the MpegtsM2Ts mode.
+ [QueryParameter("enableMpegtsM2TsMode")]
+ public bool? EnableMpegtsM2TsMode { get; set; }
+ /// Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("framerate")]
+ public float? Framerate { get; set; }
+ /// Optional. The fixed vertical resolution of the encoded video.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("level")]
+ public string? Level { get; set; }
+#nullable restore
+#else
+ [QueryParameter("level")]
+ public string Level { get; set; }
+#endif
+ /// The live stream id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("liveStreamId")]
+ public string? LiveStreamId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("liveStreamId")]
+ public string LiveStreamId { get; set; }
+#endif
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. Specify a maximum number of audio channels to encode to, e.g. 2.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("maxFramerate")]
+ public float? MaxFramerate { get; set; }
+ /// Optional.
+ [QueryParameter("maxRefFrames")]
+ public int? MaxRefFrames { get; set; }
+ /// Optional. The maximum streaming bitrate.
+ [QueryParameter("maxStreamingBitrate")]
+ public int? MaxStreamingBitrate { get; set; }
+ /// Optional. The maximum video bit depth.
+ [QueryParameter("maxVideoBitDepth")]
+ public int? MaxVideoBitDepth { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// The minimum number of segments.
+ [QueryParameter("minSegments")]
+ public int? MinSegments { get; set; }
+ /// The streaming parameters.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("params")]
+ public string? Params { get; set; }
+#nullable restore
+#else
+ [QueryParameter("params")]
+ public string Params { get; set; }
+#endif
+ /// The play session id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("playSessionId")]
+ public string? PlaySessionId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("playSessionId")]
+ public string PlaySessionId { get; set; }
+#endif
+ /// Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("profile")]
+ public string? Profile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("profile")]
+ public string Profile { get; set; }
+#endif
+ /// Optional. Whether to require avc.
+ [QueryParameter("requireAvc")]
+ public bool? RequireAvc { get; set; }
+ /// Optional. Whether to require a non anamorphic stream.
+ [QueryParameter("requireNonAnamorphic")]
+ public bool? RequireNonAnamorphic { get; set; }
+ /// The position of the requested segment in ticks.
+ [QueryParameter("runtimeTicks")]
+ public long? RuntimeTicks { get; set; }
+ /// The segment container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("segmentContainer")]
+ public string? SegmentContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("segmentContainer")]
+ public string SegmentContainer { get; set; }
+#endif
+ /// The segment length.
+ [QueryParameter("segmentLength")]
+ public int? SegmentLength { get; set; }
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.
+ [QueryParameter("static")]
+ public bool? Static { get; set; }
+ /// Optional. The streaming options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("streamOptions")]
+ public string? StreamOptions { get; set; }
+#nullable restore
+#else
+ [QueryParameter("streamOptions")]
+ public string StreamOptions { get; set; }
+#endif
+ /// Optional. Specify a subtitle codec to encode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleCodec")]
+ public string? SubtitleCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleCodec")]
+ public string SubtitleCodec { get; set; }
+#endif
+ /// Optional. Specify the subtitle delivery method.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleMethod")]
+ public string? SubtitleMethod { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleMethod")]
+ public string SubtitleMethod { get; set; }
+#endif
+ /// Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.
+ [QueryParameter("subtitleStreamIndex")]
+ public int? SubtitleStreamIndex { get; set; }
+ /// The tag.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. The transcoding reason.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodeReasons")]
+ public string? TranscodeReasons { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodeReasons")]
+ public string TranscodeReasons { get; set; }
+#endif
+ /// Optional. The maximum number of audio channels to transcode.
+ [QueryParameter("transcodingMaxAudioChannels")]
+ public int? TranscodingMaxAudioChannels { get; set; }
+ /// Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.
+ [QueryParameter("videoBitRate")]
+ public int? VideoBitRate { get; set; }
+ /// Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("videoCodec")]
+ public string? VideoCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("videoCodec")]
+ public string VideoCodec { get; set; }
+#endif
+ /// Optional. The index of the video stream to use. If omitted the first video stream will be used.
+ [QueryParameter("videoStreamIndex")]
+ public int? VideoStreamIndex { get; set; }
+ /// Optional. The fixed horizontal resolution of the encoded video.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class WithSegmentIdWithContainerRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/MainM3u8/MainM3u8RequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/MainM3u8/MainM3u8RequestBuilder.cs
new file mode 100644
index 0000000..2db0095
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/MainM3u8/MainM3u8RequestBuilder.cs
@@ -0,0 +1,342 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.MainM3u8 {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\main.m3u8
+ ///
+ public class MainM3u8RequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new MainM3u8RequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public MainM3u8RequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/main.m3u8{?allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxStreamingBitrate*,maxVideoBitDepth*,mediaSourceId*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new MainM3u8RequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public MainM3u8RequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/main.m3u8{?allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxStreamingBitrate*,maxVideoBitDepth*,mediaSourceId*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", rawUrl) {
+ }
+ ///
+ /// Gets an audio stream using HTTP live streaming.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio stream using HTTP live streaming.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/x-mpegURL");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public MainM3u8RequestBuilder WithUrl(string rawUrl) {
+ return new MainM3u8RequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets an audio stream using HTTP live streaming.
+ ///
+ public class MainM3u8RequestBuilderGetQueryParameters {
+ /// Whether or not to allow copying of the audio stream url.
+ [QueryParameter("allowAudioStreamCopy")]
+ public bool? AllowAudioStreamCopy { get; set; }
+ /// Whether or not to allow copying of the video stream url.
+ [QueryParameter("allowVideoStreamCopy")]
+ public bool? AllowVideoStreamCopy { get; set; }
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. Specify a specific number of audio channels to encode to, e.g. 2.
+ [QueryParameter("audioChannels")]
+ public int? AudioChannels { get; set; }
+ /// Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Specify a specific audio sample rate, e.g. 44100.
+ [QueryParameter("audioSampleRate")]
+ public int? AudioSampleRate { get; set; }
+ /// Optional. The index of the audio stream to use. If omitted the first audio stream will be used.
+ [QueryParameter("audioStreamIndex")]
+ public int? AudioStreamIndex { get; set; }
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// Optional. The MediaBrowser.Model.Dlna.EncodingContext.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("context")]
+ public string? Context { get; set; }
+#nullable restore
+#else
+ [QueryParameter("context")]
+ public string Context { get; set; }
+#endif
+ /// Whether or not to copy timestamps when transcoding with an offset. Defaults to false.
+ [QueryParameter("copyTimestamps")]
+ public bool? CopyTimestamps { get; set; }
+ /// Optional. The limit of how many cpu cores to use.
+ [QueryParameter("cpuCoreLimit")]
+ public int? CpuCoreLimit { get; set; }
+ /// Optional. Whether to deinterlace the video.
+ [QueryParameter("deInterlace")]
+ public bool? DeInterlace { get; set; }
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Optional. The dlna device profile id to utilize.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceProfileId")]
+ public string? DeviceProfileId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceProfileId")]
+ public string DeviceProfileId { get; set; }
+#endif
+ /// Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.
+ [QueryParameter("enableAutoStreamCopy")]
+ public bool? EnableAutoStreamCopy { get; set; }
+ /// Optional. Whether to enable the MpegtsM2Ts mode.
+ [QueryParameter("enableMpegtsM2TsMode")]
+ public bool? EnableMpegtsM2TsMode { get; set; }
+ /// Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("framerate")]
+ public float? Framerate { get; set; }
+ /// Optional. The fixed vertical resolution of the encoded video.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("level")]
+ public string? Level { get; set; }
+#nullable restore
+#else
+ [QueryParameter("level")]
+ public string Level { get; set; }
+#endif
+ /// The live stream id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("liveStreamId")]
+ public string? LiveStreamId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("liveStreamId")]
+ public string LiveStreamId { get; set; }
+#endif
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. Specify a maximum number of audio channels to encode to, e.g. 2.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("maxFramerate")]
+ public float? MaxFramerate { get; set; }
+ /// Optional.
+ [QueryParameter("maxRefFrames")]
+ public int? MaxRefFrames { get; set; }
+ /// Optional. The maximum streaming bitrate.
+ [QueryParameter("maxStreamingBitrate")]
+ public int? MaxStreamingBitrate { get; set; }
+ /// Optional. The maximum video bit depth.
+ [QueryParameter("maxVideoBitDepth")]
+ public int? MaxVideoBitDepth { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// The minimum number of segments.
+ [QueryParameter("minSegments")]
+ public int? MinSegments { get; set; }
+ /// The streaming parameters.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("params")]
+ public string? Params { get; set; }
+#nullable restore
+#else
+ [QueryParameter("params")]
+ public string Params { get; set; }
+#endif
+ /// The play session id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("playSessionId")]
+ public string? PlaySessionId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("playSessionId")]
+ public string PlaySessionId { get; set; }
+#endif
+ /// Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("profile")]
+ public string? Profile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("profile")]
+ public string Profile { get; set; }
+#endif
+ /// Optional. Whether to require avc.
+ [QueryParameter("requireAvc")]
+ public bool? RequireAvc { get; set; }
+ /// Optional. Whether to require a non anamorphic stream.
+ [QueryParameter("requireNonAnamorphic")]
+ public bool? RequireNonAnamorphic { get; set; }
+ /// The segment container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("segmentContainer")]
+ public string? SegmentContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("segmentContainer")]
+ public string SegmentContainer { get; set; }
+#endif
+ /// The segment length.
+ [QueryParameter("segmentLength")]
+ public int? SegmentLength { get; set; }
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.
+ [QueryParameter("static")]
+ public bool? Static { get; set; }
+ /// Optional. The streaming options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("streamOptions")]
+ public string? StreamOptions { get; set; }
+#nullable restore
+#else
+ [QueryParameter("streamOptions")]
+ public string StreamOptions { get; set; }
+#endif
+ /// Optional. Specify a subtitle codec to encode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleCodec")]
+ public string? SubtitleCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleCodec")]
+ public string SubtitleCodec { get; set; }
+#endif
+ /// Optional. Specify the subtitle delivery method.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleMethod")]
+ public string? SubtitleMethod { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleMethod")]
+ public string SubtitleMethod { get; set; }
+#endif
+ /// Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.
+ [QueryParameter("subtitleStreamIndex")]
+ public int? SubtitleStreamIndex { get; set; }
+ /// The tag.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. The transcoding reason.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodeReasons")]
+ public string? TranscodeReasons { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodeReasons")]
+ public string TranscodeReasons { get; set; }
+#endif
+ /// Optional. The maximum number of audio channels to transcode.
+ [QueryParameter("transcodingMaxAudioChannels")]
+ public int? TranscodingMaxAudioChannels { get; set; }
+ /// Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.
+ [QueryParameter("videoBitRate")]
+ public int? VideoBitRate { get; set; }
+ /// Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vpx, wmv.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("videoCodec")]
+ public string? VideoCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("videoCodec")]
+ public string VideoCodec { get; set; }
+#endif
+ /// Optional. The index of the video stream to use. If omitted the first video stream will be used.
+ [QueryParameter("videoStreamIndex")]
+ public int? VideoStreamIndex { get; set; }
+ /// Optional. The fixed horizontal resolution of the encoded video.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class MainM3u8RequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/MasterM3u8/MasterM3u8RequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/MasterM3u8/MasterM3u8RequestBuilder.cs
new file mode 100644
index 0000000..6c5313c
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/MasterM3u8/MasterM3u8RequestBuilder.cs
@@ -0,0 +1,653 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.MasterM3u8 {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\master.m3u8
+ ///
+ public class MasterM3u8RequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new MasterM3u8RequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public MasterM3u8RequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/master.m3u8?mediaSourceId={mediaSourceId}{&allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAdaptiveBitrateStreaming*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxStreamingBitrate*,maxVideoBitDepth*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new MasterM3u8RequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public MasterM3u8RequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/master.m3u8?mediaSourceId={mediaSourceId}{&allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAdaptiveBitrateStreaming*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxStreamingBitrate*,maxVideoBitDepth*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", rawUrl) {
+ }
+ ///
+ /// Gets an audio hls playlist stream.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio hls playlist stream.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToHeadRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio hls playlist stream.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/x-mpegURL");
+ return requestInfo;
+ }
+ ///
+ /// Gets an audio hls playlist stream.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "application/x-mpegURL");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public MasterM3u8RequestBuilder WithUrl(string rawUrl) {
+ return new MasterM3u8RequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets an audio hls playlist stream.
+ ///
+ public class MasterM3u8RequestBuilderGetQueryParameters {
+ /// Whether or not to allow copying of the audio stream url.
+ [QueryParameter("allowAudioStreamCopy")]
+ public bool? AllowAudioStreamCopy { get; set; }
+ /// Whether or not to allow copying of the video stream url.
+ [QueryParameter("allowVideoStreamCopy")]
+ public bool? AllowVideoStreamCopy { get; set; }
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. Specify a specific number of audio channels to encode to, e.g. 2.
+ [QueryParameter("audioChannels")]
+ public int? AudioChannels { get; set; }
+ /// Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Specify a specific audio sample rate, e.g. 44100.
+ [QueryParameter("audioSampleRate")]
+ public int? AudioSampleRate { get; set; }
+ /// Optional. The index of the audio stream to use. If omitted the first audio stream will be used.
+ [QueryParameter("audioStreamIndex")]
+ public int? AudioStreamIndex { get; set; }
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// Optional. The MediaBrowser.Model.Dlna.EncodingContext.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("context")]
+ public string? Context { get; set; }
+#nullable restore
+#else
+ [QueryParameter("context")]
+ public string Context { get; set; }
+#endif
+ /// Whether or not to copy timestamps when transcoding with an offset. Defaults to false.
+ [QueryParameter("copyTimestamps")]
+ public bool? CopyTimestamps { get; set; }
+ /// Optional. The limit of how many cpu cores to use.
+ [QueryParameter("cpuCoreLimit")]
+ public int? CpuCoreLimit { get; set; }
+ /// Optional. Whether to deinterlace the video.
+ [QueryParameter("deInterlace")]
+ public bool? DeInterlace { get; set; }
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Optional. The dlna device profile id to utilize.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceProfileId")]
+ public string? DeviceProfileId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceProfileId")]
+ public string DeviceProfileId { get; set; }
+#endif
+ /// Enable adaptive bitrate streaming.
+ [QueryParameter("enableAdaptiveBitrateStreaming")]
+ public bool? EnableAdaptiveBitrateStreaming { get; set; }
+ /// Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.
+ [QueryParameter("enableAutoStreamCopy")]
+ public bool? EnableAutoStreamCopy { get; set; }
+ /// Optional. Whether to enable the MpegtsM2Ts mode.
+ [QueryParameter("enableMpegtsM2TsMode")]
+ public bool? EnableMpegtsM2TsMode { get; set; }
+ /// Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("framerate")]
+ public float? Framerate { get; set; }
+ /// Optional. The fixed vertical resolution of the encoded video.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("level")]
+ public string? Level { get; set; }
+#nullable restore
+#else
+ [QueryParameter("level")]
+ public string Level { get; set; }
+#endif
+ /// The live stream id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("liveStreamId")]
+ public string? LiveStreamId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("liveStreamId")]
+ public string LiveStreamId { get; set; }
+#endif
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. Specify a maximum number of audio channels to encode to, e.g. 2.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("maxFramerate")]
+ public float? MaxFramerate { get; set; }
+ /// Optional.
+ [QueryParameter("maxRefFrames")]
+ public int? MaxRefFrames { get; set; }
+ /// Optional. The maximum streaming bitrate.
+ [QueryParameter("maxStreamingBitrate")]
+ public int? MaxStreamingBitrate { get; set; }
+ /// Optional. The maximum video bit depth.
+ [QueryParameter("maxVideoBitDepth")]
+ public int? MaxVideoBitDepth { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// The minimum number of segments.
+ [QueryParameter("minSegments")]
+ public int? MinSegments { get; set; }
+ /// The streaming parameters.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("params")]
+ public string? Params { get; set; }
+#nullable restore
+#else
+ [QueryParameter("params")]
+ public string Params { get; set; }
+#endif
+ /// The play session id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("playSessionId")]
+ public string? PlaySessionId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("playSessionId")]
+ public string PlaySessionId { get; set; }
+#endif
+ /// Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("profile")]
+ public string? Profile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("profile")]
+ public string Profile { get; set; }
+#endif
+ /// Optional. Whether to require avc.
+ [QueryParameter("requireAvc")]
+ public bool? RequireAvc { get; set; }
+ /// Optional. Whether to require a non anamorphic stream.
+ [QueryParameter("requireNonAnamorphic")]
+ public bool? RequireNonAnamorphic { get; set; }
+ /// The segment container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("segmentContainer")]
+ public string? SegmentContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("segmentContainer")]
+ public string SegmentContainer { get; set; }
+#endif
+ /// The segment length.
+ [QueryParameter("segmentLength")]
+ public int? SegmentLength { get; set; }
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.
+ [QueryParameter("static")]
+ public bool? Static { get; set; }
+ /// Optional. The streaming options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("streamOptions")]
+ public string? StreamOptions { get; set; }
+#nullable restore
+#else
+ [QueryParameter("streamOptions")]
+ public string StreamOptions { get; set; }
+#endif
+ /// Optional. Specify a subtitle codec to encode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleCodec")]
+ public string? SubtitleCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleCodec")]
+ public string SubtitleCodec { get; set; }
+#endif
+ /// Optional. Specify the subtitle delivery method.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleMethod")]
+ public string? SubtitleMethod { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleMethod")]
+ public string SubtitleMethod { get; set; }
+#endif
+ /// Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.
+ [QueryParameter("subtitleStreamIndex")]
+ public int? SubtitleStreamIndex { get; set; }
+ /// The tag.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. The transcoding reason.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodeReasons")]
+ public string? TranscodeReasons { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodeReasons")]
+ public string TranscodeReasons { get; set; }
+#endif
+ /// Optional. The maximum number of audio channels to transcode.
+ [QueryParameter("transcodingMaxAudioChannels")]
+ public int? TranscodingMaxAudioChannels { get; set; }
+ /// Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.
+ [QueryParameter("videoBitRate")]
+ public int? VideoBitRate { get; set; }
+ /// Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vp8, vp9, vpx (deprecated), wmv.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("videoCodec")]
+ public string? VideoCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("videoCodec")]
+ public string VideoCodec { get; set; }
+#endif
+ /// Optional. The index of the video stream to use. If omitted the first video stream will be used.
+ [QueryParameter("videoStreamIndex")]
+ public int? VideoStreamIndex { get; set; }
+ /// Optional. The fixed horizontal resolution of the encoded video.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class MasterM3u8RequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ ///
+ /// Gets an audio hls playlist stream.
+ ///
+ public class MasterM3u8RequestBuilderHeadQueryParameters {
+ /// Whether or not to allow copying of the audio stream url.
+ [QueryParameter("allowAudioStreamCopy")]
+ public bool? AllowAudioStreamCopy { get; set; }
+ /// Whether or not to allow copying of the video stream url.
+ [QueryParameter("allowVideoStreamCopy")]
+ public bool? AllowVideoStreamCopy { get; set; }
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. Specify a specific number of audio channels to encode to, e.g. 2.
+ [QueryParameter("audioChannels")]
+ public int? AudioChannels { get; set; }
+ /// Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Specify a specific audio sample rate, e.g. 44100.
+ [QueryParameter("audioSampleRate")]
+ public int? AudioSampleRate { get; set; }
+ /// Optional. The index of the audio stream to use. If omitted the first audio stream will be used.
+ [QueryParameter("audioStreamIndex")]
+ public int? AudioStreamIndex { get; set; }
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// Optional. The MediaBrowser.Model.Dlna.EncodingContext.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("context")]
+ public string? Context { get; set; }
+#nullable restore
+#else
+ [QueryParameter("context")]
+ public string Context { get; set; }
+#endif
+ /// Whether or not to copy timestamps when transcoding with an offset. Defaults to false.
+ [QueryParameter("copyTimestamps")]
+ public bool? CopyTimestamps { get; set; }
+ /// Optional. The limit of how many cpu cores to use.
+ [QueryParameter("cpuCoreLimit")]
+ public int? CpuCoreLimit { get; set; }
+ /// Optional. Whether to deinterlace the video.
+ [QueryParameter("deInterlace")]
+ public bool? DeInterlace { get; set; }
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Optional. The dlna device profile id to utilize.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceProfileId")]
+ public string? DeviceProfileId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceProfileId")]
+ public string DeviceProfileId { get; set; }
+#endif
+ /// Enable adaptive bitrate streaming.
+ [QueryParameter("enableAdaptiveBitrateStreaming")]
+ public bool? EnableAdaptiveBitrateStreaming { get; set; }
+ /// Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.
+ [QueryParameter("enableAutoStreamCopy")]
+ public bool? EnableAutoStreamCopy { get; set; }
+ /// Optional. Whether to enable the MpegtsM2Ts mode.
+ [QueryParameter("enableMpegtsM2TsMode")]
+ public bool? EnableMpegtsM2TsMode { get; set; }
+ /// Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("framerate")]
+ public float? Framerate { get; set; }
+ /// Optional. The fixed vertical resolution of the encoded video.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("level")]
+ public string? Level { get; set; }
+#nullable restore
+#else
+ [QueryParameter("level")]
+ public string Level { get; set; }
+#endif
+ /// The live stream id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("liveStreamId")]
+ public string? LiveStreamId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("liveStreamId")]
+ public string LiveStreamId { get; set; }
+#endif
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. Specify a maximum number of audio channels to encode to, e.g. 2.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("maxFramerate")]
+ public float? MaxFramerate { get; set; }
+ /// Optional.
+ [QueryParameter("maxRefFrames")]
+ public int? MaxRefFrames { get; set; }
+ /// Optional. The maximum streaming bitrate.
+ [QueryParameter("maxStreamingBitrate")]
+ public int? MaxStreamingBitrate { get; set; }
+ /// Optional. The maximum video bit depth.
+ [QueryParameter("maxVideoBitDepth")]
+ public int? MaxVideoBitDepth { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// The minimum number of segments.
+ [QueryParameter("minSegments")]
+ public int? MinSegments { get; set; }
+ /// The streaming parameters.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("params")]
+ public string? Params { get; set; }
+#nullable restore
+#else
+ [QueryParameter("params")]
+ public string Params { get; set; }
+#endif
+ /// The play session id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("playSessionId")]
+ public string? PlaySessionId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("playSessionId")]
+ public string PlaySessionId { get; set; }
+#endif
+ /// Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("profile")]
+ public string? Profile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("profile")]
+ public string Profile { get; set; }
+#endif
+ /// Optional. Whether to require avc.
+ [QueryParameter("requireAvc")]
+ public bool? RequireAvc { get; set; }
+ /// Optional. Whether to require a non anamorphic stream.
+ [QueryParameter("requireNonAnamorphic")]
+ public bool? RequireNonAnamorphic { get; set; }
+ /// The segment container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("segmentContainer")]
+ public string? SegmentContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("segmentContainer")]
+ public string SegmentContainer { get; set; }
+#endif
+ /// The segment length.
+ [QueryParameter("segmentLength")]
+ public int? SegmentLength { get; set; }
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.
+ [QueryParameter("static")]
+ public bool? Static { get; set; }
+ /// Optional. The streaming options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("streamOptions")]
+ public string? StreamOptions { get; set; }
+#nullable restore
+#else
+ [QueryParameter("streamOptions")]
+ public string StreamOptions { get; set; }
+#endif
+ /// Optional. Specify a subtitle codec to encode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleCodec")]
+ public string? SubtitleCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleCodec")]
+ public string SubtitleCodec { get; set; }
+#endif
+ /// Optional. Specify the subtitle delivery method.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleMethod")]
+ public string? SubtitleMethod { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleMethod")]
+ public string SubtitleMethod { get; set; }
+#endif
+ /// Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.
+ [QueryParameter("subtitleStreamIndex")]
+ public int? SubtitleStreamIndex { get; set; }
+ /// The tag.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. The transcoding reason.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodeReasons")]
+ public string? TranscodeReasons { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodeReasons")]
+ public string TranscodeReasons { get; set; }
+#endif
+ /// Optional. The maximum number of audio channels to transcode.
+ [QueryParameter("transcodingMaxAudioChannels")]
+ public int? TranscodingMaxAudioChannels { get; set; }
+ /// Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.
+ [QueryParameter("videoBitRate")]
+ public int? VideoBitRate { get; set; }
+ /// Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vp8, vp9, vpx (deprecated), wmv.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("videoCodec")]
+ public string? VideoCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("videoCodec")]
+ public string VideoCodec { get; set; }
+#endif
+ /// Optional. The index of the video stream to use. If omitted the first video stream will be used.
+ [QueryParameter("videoStreamIndex")]
+ public int? VideoStreamIndex { get; set; }
+ /// Optional. The fixed horizontal resolution of the encoded video.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class MasterM3u8RequestBuilderHeadRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/StreamNamespace/StreamRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/StreamNamespace/StreamRequestBuilder.cs
new file mode 100644
index 0000000..775dc25
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/StreamNamespace/StreamRequestBuilder.cs
@@ -0,0 +1,661 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.StreamNamespace {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\stream
+ ///
+ public class StreamRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new StreamRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public StreamRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/stream{?allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,container*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxVideoBitDepth*,mediaSourceId*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new StreamRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public StreamRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/stream{?allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,container*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxVideoBitDepth*,mediaSourceId*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", rawUrl) {
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToHeadRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public StreamRequestBuilder WithUrl(string rawUrl) {
+ return new StreamRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ public class StreamRequestBuilderGetQueryParameters {
+ /// Whether or not to allow copying of the audio stream url.
+ [QueryParameter("allowAudioStreamCopy")]
+ public bool? AllowAudioStreamCopy { get; set; }
+ /// Whether or not to allow copying of the video stream url.
+ [QueryParameter("allowVideoStreamCopy")]
+ public bool? AllowVideoStreamCopy { get; set; }
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. Specify a specific number of audio channels to encode to, e.g. 2.
+ [QueryParameter("audioChannels")]
+ public int? AudioChannels { get; set; }
+ /// Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Specify a specific audio sample rate, e.g. 44100.
+ [QueryParameter("audioSampleRate")]
+ public int? AudioSampleRate { get; set; }
+ /// Optional. The index of the audio stream to use. If omitted the first audio stream will be used.
+ [QueryParameter("audioStreamIndex")]
+ public int? AudioStreamIndex { get; set; }
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// The audio container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("container")]
+ public string? Container { get; set; }
+#nullable restore
+#else
+ [QueryParameter("container")]
+ public string Container { get; set; }
+#endif
+ /// Optional. The MediaBrowser.Model.Dlna.EncodingContext.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("context")]
+ public string? Context { get; set; }
+#nullable restore
+#else
+ [QueryParameter("context")]
+ public string Context { get; set; }
+#endif
+ /// Whether or not to copy timestamps when transcoding with an offset. Defaults to false.
+ [QueryParameter("copyTimestamps")]
+ public bool? CopyTimestamps { get; set; }
+ /// Optional. The limit of how many cpu cores to use.
+ [QueryParameter("cpuCoreLimit")]
+ public int? CpuCoreLimit { get; set; }
+ /// Optional. Whether to deinterlace the video.
+ [QueryParameter("deInterlace")]
+ public bool? DeInterlace { get; set; }
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Optional. The dlna device profile id to utilize.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceProfileId")]
+ public string? DeviceProfileId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceProfileId")]
+ public string DeviceProfileId { get; set; }
+#endif
+ /// Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.
+ [QueryParameter("enableAutoStreamCopy")]
+ public bool? EnableAutoStreamCopy { get; set; }
+ /// Optional. Whether to enable the MpegtsM2Ts mode.
+ [QueryParameter("enableMpegtsM2TsMode")]
+ public bool? EnableMpegtsM2TsMode { get; set; }
+ /// Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("framerate")]
+ public float? Framerate { get; set; }
+ /// Optional. The fixed vertical resolution of the encoded video.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("level")]
+ public string? Level { get; set; }
+#nullable restore
+#else
+ [QueryParameter("level")]
+ public string Level { get; set; }
+#endif
+ /// The live stream id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("liveStreamId")]
+ public string? LiveStreamId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("liveStreamId")]
+ public string LiveStreamId { get; set; }
+#endif
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. Specify a maximum number of audio channels to encode to, e.g. 2.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("maxFramerate")]
+ public float? MaxFramerate { get; set; }
+ /// Optional.
+ [QueryParameter("maxRefFrames")]
+ public int? MaxRefFrames { get; set; }
+ /// Optional. The maximum video bit depth.
+ [QueryParameter("maxVideoBitDepth")]
+ public int? MaxVideoBitDepth { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// The minimum number of segments.
+ [QueryParameter("minSegments")]
+ public int? MinSegments { get; set; }
+ /// The streaming parameters.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("params")]
+ public string? Params { get; set; }
+#nullable restore
+#else
+ [QueryParameter("params")]
+ public string Params { get; set; }
+#endif
+ /// The play session id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("playSessionId")]
+ public string? PlaySessionId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("playSessionId")]
+ public string PlaySessionId { get; set; }
+#endif
+ /// Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("profile")]
+ public string? Profile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("profile")]
+ public string Profile { get; set; }
+#endif
+ /// Optional. Whether to require avc.
+ [QueryParameter("requireAvc")]
+ public bool? RequireAvc { get; set; }
+ /// Optional. Whether to require a non anamorphic stream.
+ [QueryParameter("requireNonAnamorphic")]
+ public bool? RequireNonAnamorphic { get; set; }
+ /// The segment container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("segmentContainer")]
+ public string? SegmentContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("segmentContainer")]
+ public string SegmentContainer { get; set; }
+#endif
+ /// The segment length.
+ [QueryParameter("segmentLength")]
+ public int? SegmentLength { get; set; }
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.
+ [QueryParameter("static")]
+ public bool? Static { get; set; }
+ /// Optional. The streaming options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("streamOptions")]
+ public string? StreamOptions { get; set; }
+#nullable restore
+#else
+ [QueryParameter("streamOptions")]
+ public string StreamOptions { get; set; }
+#endif
+ /// Optional. Specify a subtitle codec to encode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleCodec")]
+ public string? SubtitleCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleCodec")]
+ public string SubtitleCodec { get; set; }
+#endif
+ /// Optional. Specify the subtitle delivery method.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleMethod")]
+ public string? SubtitleMethod { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleMethod")]
+ public string SubtitleMethod { get; set; }
+#endif
+ /// Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.
+ [QueryParameter("subtitleStreamIndex")]
+ public int? SubtitleStreamIndex { get; set; }
+ /// The tag.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. The transcoding reason.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodeReasons")]
+ public string? TranscodeReasons { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodeReasons")]
+ public string TranscodeReasons { get; set; }
+#endif
+ /// Optional. The maximum number of audio channels to transcode.
+ [QueryParameter("transcodingMaxAudioChannels")]
+ public int? TranscodingMaxAudioChannels { get; set; }
+ /// Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.
+ [QueryParameter("videoBitRate")]
+ public int? VideoBitRate { get; set; }
+ /// Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vp8, vp9, vpx (deprecated), wmv.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("videoCodec")]
+ public string? VideoCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("videoCodec")]
+ public string VideoCodec { get; set; }
+#endif
+ /// Optional. The index of the video stream to use. If omitted the first video stream will be used.
+ [QueryParameter("videoStreamIndex")]
+ public int? VideoStreamIndex { get; set; }
+ /// Optional. The fixed horizontal resolution of the encoded video.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class StreamRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ public class StreamRequestBuilderHeadQueryParameters {
+ /// Whether or not to allow copying of the audio stream url.
+ [QueryParameter("allowAudioStreamCopy")]
+ public bool? AllowAudioStreamCopy { get; set; }
+ /// Whether or not to allow copying of the video stream url.
+ [QueryParameter("allowVideoStreamCopy")]
+ public bool? AllowVideoStreamCopy { get; set; }
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. Specify a specific number of audio channels to encode to, e.g. 2.
+ [QueryParameter("audioChannels")]
+ public int? AudioChannels { get; set; }
+ /// Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Specify a specific audio sample rate, e.g. 44100.
+ [QueryParameter("audioSampleRate")]
+ public int? AudioSampleRate { get; set; }
+ /// Optional. The index of the audio stream to use. If omitted the first audio stream will be used.
+ [QueryParameter("audioStreamIndex")]
+ public int? AudioStreamIndex { get; set; }
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// The audio container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("container")]
+ public string? Container { get; set; }
+#nullable restore
+#else
+ [QueryParameter("container")]
+ public string Container { get; set; }
+#endif
+ /// Optional. The MediaBrowser.Model.Dlna.EncodingContext.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("context")]
+ public string? Context { get; set; }
+#nullable restore
+#else
+ [QueryParameter("context")]
+ public string Context { get; set; }
+#endif
+ /// Whether or not to copy timestamps when transcoding with an offset. Defaults to false.
+ [QueryParameter("copyTimestamps")]
+ public bool? CopyTimestamps { get; set; }
+ /// Optional. The limit of how many cpu cores to use.
+ [QueryParameter("cpuCoreLimit")]
+ public int? CpuCoreLimit { get; set; }
+ /// Optional. Whether to deinterlace the video.
+ [QueryParameter("deInterlace")]
+ public bool? DeInterlace { get; set; }
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Optional. The dlna device profile id to utilize.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceProfileId")]
+ public string? DeviceProfileId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceProfileId")]
+ public string DeviceProfileId { get; set; }
+#endif
+ /// Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.
+ [QueryParameter("enableAutoStreamCopy")]
+ public bool? EnableAutoStreamCopy { get; set; }
+ /// Optional. Whether to enable the MpegtsM2Ts mode.
+ [QueryParameter("enableMpegtsM2TsMode")]
+ public bool? EnableMpegtsM2TsMode { get; set; }
+ /// Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("framerate")]
+ public float? Framerate { get; set; }
+ /// Optional. The fixed vertical resolution of the encoded video.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("level")]
+ public string? Level { get; set; }
+#nullable restore
+#else
+ [QueryParameter("level")]
+ public string Level { get; set; }
+#endif
+ /// The live stream id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("liveStreamId")]
+ public string? LiveStreamId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("liveStreamId")]
+ public string LiveStreamId { get; set; }
+#endif
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. Specify a maximum number of audio channels to encode to, e.g. 2.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("maxFramerate")]
+ public float? MaxFramerate { get; set; }
+ /// Optional.
+ [QueryParameter("maxRefFrames")]
+ public int? MaxRefFrames { get; set; }
+ /// Optional. The maximum video bit depth.
+ [QueryParameter("maxVideoBitDepth")]
+ public int? MaxVideoBitDepth { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// The minimum number of segments.
+ [QueryParameter("minSegments")]
+ public int? MinSegments { get; set; }
+ /// The streaming parameters.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("params")]
+ public string? Params { get; set; }
+#nullable restore
+#else
+ [QueryParameter("params")]
+ public string Params { get; set; }
+#endif
+ /// The play session id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("playSessionId")]
+ public string? PlaySessionId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("playSessionId")]
+ public string PlaySessionId { get; set; }
+#endif
+ /// Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("profile")]
+ public string? Profile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("profile")]
+ public string Profile { get; set; }
+#endif
+ /// Optional. Whether to require avc.
+ [QueryParameter("requireAvc")]
+ public bool? RequireAvc { get; set; }
+ /// Optional. Whether to require a non anamorphic stream.
+ [QueryParameter("requireNonAnamorphic")]
+ public bool? RequireNonAnamorphic { get; set; }
+ /// The segment container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("segmentContainer")]
+ public string? SegmentContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("segmentContainer")]
+ public string SegmentContainer { get; set; }
+#endif
+ /// The segment length.
+ [QueryParameter("segmentLength")]
+ public int? SegmentLength { get; set; }
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.
+ [QueryParameter("static")]
+ public bool? Static { get; set; }
+ /// Optional. The streaming options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("streamOptions")]
+ public string? StreamOptions { get; set; }
+#nullable restore
+#else
+ [QueryParameter("streamOptions")]
+ public string StreamOptions { get; set; }
+#endif
+ /// Optional. Specify a subtitle codec to encode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleCodec")]
+ public string? SubtitleCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleCodec")]
+ public string SubtitleCodec { get; set; }
+#endif
+ /// Optional. Specify the subtitle delivery method.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleMethod")]
+ public string? SubtitleMethod { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleMethod")]
+ public string SubtitleMethod { get; set; }
+#endif
+ /// Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.
+ [QueryParameter("subtitleStreamIndex")]
+ public int? SubtitleStreamIndex { get; set; }
+ /// The tag.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. The transcoding reason.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodeReasons")]
+ public string? TranscodeReasons { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodeReasons")]
+ public string TranscodeReasons { get; set; }
+#endif
+ /// Optional. The maximum number of audio channels to transcode.
+ [QueryParameter("transcodingMaxAudioChannels")]
+ public int? TranscodingMaxAudioChannels { get; set; }
+ /// Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.
+ [QueryParameter("videoBitRate")]
+ public int? VideoBitRate { get; set; }
+ /// Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vp8, vp9, vpx (deprecated), wmv.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("videoCodec")]
+ public string? VideoCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("videoCodec")]
+ public string VideoCodec { get; set; }
+#endif
+ /// Optional. The index of the video stream to use. If omitted the first video stream will be used.
+ [QueryParameter("videoStreamIndex")]
+ public int? VideoStreamIndex { get; set; }
+ /// Optional. The fixed horizontal resolution of the encoded video.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class StreamRequestBuilderHeadRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/StreamWithContainer/StreamWithContainerRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/StreamWithContainer/StreamWithContainerRequestBuilder.cs
new file mode 100644
index 0000000..1d1fe12
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/StreamWithContainer/StreamWithContainerRequestBuilder.cs
@@ -0,0 +1,643 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.StreamWithContainer {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\stream.{container}
+ ///
+ public class StreamWithContainerRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new StreamWithContainerRequestBuilder and sets the default values.
+ ///
+ /// The audio container.
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public StreamWithContainerRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter, string container = "") : base(requestAdapter, "{+baseurl}/Audio/{itemId}/stream.{container}{?allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxVideoBitDepth*,mediaSourceId*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", pathParameters) {
+ if (!string.IsNullOrWhiteSpace(container)) PathParameters.Add("container", container);
+ }
+ ///
+ /// Instantiates a new StreamWithContainerRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public StreamWithContainerRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/stream.{container}{?allowAudioStreamCopy*,allowVideoStreamCopy*,audioBitRate*,audioChannels*,audioCodec*,audioSampleRate*,audioStreamIndex*,breakOnNonKeyFrames*,context*,copyTimestamps*,cpuCoreLimit*,deInterlace*,deviceId*,deviceProfileId*,enableAutoStreamCopy*,enableMpegtsM2TsMode*,framerate*,height*,level*,liveStreamId*,maxAudioBitDepth*,maxAudioChannels*,maxFramerate*,maxRefFrames*,maxVideoBitDepth*,mediaSourceId*,minSegments*,params*,playSessionId*,profile*,requireAvc*,requireNonAnamorphic*,segmentContainer*,segmentLength*,startTimeTicks*,static*,streamOptions*,subtitleCodec*,subtitleMethod*,subtitleStreamIndex*,tag*,transcodeReasons*,transcodingMaxAudioChannels*,videoBitRate*,videoCodec*,videoStreamIndex*,width*}", rawUrl) {
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToHeadRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public StreamWithContainerRequestBuilder WithUrl(string rawUrl) {
+ return new StreamWithContainerRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ public class StreamWithContainerRequestBuilderGetQueryParameters {
+ /// Whether or not to allow copying of the audio stream url.
+ [QueryParameter("allowAudioStreamCopy")]
+ public bool? AllowAudioStreamCopy { get; set; }
+ /// Whether or not to allow copying of the video stream url.
+ [QueryParameter("allowVideoStreamCopy")]
+ public bool? AllowVideoStreamCopy { get; set; }
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. Specify a specific number of audio channels to encode to, e.g. 2.
+ [QueryParameter("audioChannels")]
+ public int? AudioChannels { get; set; }
+ /// Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Specify a specific audio sample rate, e.g. 44100.
+ [QueryParameter("audioSampleRate")]
+ public int? AudioSampleRate { get; set; }
+ /// Optional. The index of the audio stream to use. If omitted the first audio stream will be used.
+ [QueryParameter("audioStreamIndex")]
+ public int? AudioStreamIndex { get; set; }
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// Optional. The MediaBrowser.Model.Dlna.EncodingContext.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("context")]
+ public string? Context { get; set; }
+#nullable restore
+#else
+ [QueryParameter("context")]
+ public string Context { get; set; }
+#endif
+ /// Whether or not to copy timestamps when transcoding with an offset. Defaults to false.
+ [QueryParameter("copyTimestamps")]
+ public bool? CopyTimestamps { get; set; }
+ /// Optional. The limit of how many cpu cores to use.
+ [QueryParameter("cpuCoreLimit")]
+ public int? CpuCoreLimit { get; set; }
+ /// Optional. Whether to deinterlace the video.
+ [QueryParameter("deInterlace")]
+ public bool? DeInterlace { get; set; }
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Optional. The dlna device profile id to utilize.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceProfileId")]
+ public string? DeviceProfileId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceProfileId")]
+ public string DeviceProfileId { get; set; }
+#endif
+ /// Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.
+ [QueryParameter("enableAutoStreamCopy")]
+ public bool? EnableAutoStreamCopy { get; set; }
+ /// Optional. Whether to enable the MpegtsM2Ts mode.
+ [QueryParameter("enableMpegtsM2TsMode")]
+ public bool? EnableMpegtsM2TsMode { get; set; }
+ /// Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("framerate")]
+ public float? Framerate { get; set; }
+ /// Optional. The fixed vertical resolution of the encoded video.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("level")]
+ public string? Level { get; set; }
+#nullable restore
+#else
+ [QueryParameter("level")]
+ public string Level { get; set; }
+#endif
+ /// The live stream id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("liveStreamId")]
+ public string? LiveStreamId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("liveStreamId")]
+ public string LiveStreamId { get; set; }
+#endif
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. Specify a maximum number of audio channels to encode to, e.g. 2.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("maxFramerate")]
+ public float? MaxFramerate { get; set; }
+ /// Optional.
+ [QueryParameter("maxRefFrames")]
+ public int? MaxRefFrames { get; set; }
+ /// Optional. The maximum video bit depth.
+ [QueryParameter("maxVideoBitDepth")]
+ public int? MaxVideoBitDepth { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// The minimum number of segments.
+ [QueryParameter("minSegments")]
+ public int? MinSegments { get; set; }
+ /// The streaming parameters.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("params")]
+ public string? Params { get; set; }
+#nullable restore
+#else
+ [QueryParameter("params")]
+ public string Params { get; set; }
+#endif
+ /// The play session id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("playSessionId")]
+ public string? PlaySessionId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("playSessionId")]
+ public string PlaySessionId { get; set; }
+#endif
+ /// Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("profile")]
+ public string? Profile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("profile")]
+ public string Profile { get; set; }
+#endif
+ /// Optional. Whether to require avc.
+ [QueryParameter("requireAvc")]
+ public bool? RequireAvc { get; set; }
+ /// Optional. Whether to require a non anamporphic stream.
+ [QueryParameter("requireNonAnamorphic")]
+ public bool? RequireNonAnamorphic { get; set; }
+ /// The segment container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("segmentContainer")]
+ public string? SegmentContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("segmentContainer")]
+ public string SegmentContainer { get; set; }
+#endif
+ /// The segment lenght.
+ [QueryParameter("segmentLength")]
+ public int? SegmentLength { get; set; }
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.
+ [QueryParameter("static")]
+ public bool? Static { get; set; }
+ /// Optional. The streaming options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("streamOptions")]
+ public string? StreamOptions { get; set; }
+#nullable restore
+#else
+ [QueryParameter("streamOptions")]
+ public string StreamOptions { get; set; }
+#endif
+ /// Optional. Specify a subtitle codec to encode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleCodec")]
+ public string? SubtitleCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleCodec")]
+ public string SubtitleCodec { get; set; }
+#endif
+ /// Optional. Specify the subtitle delivery method.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleMethod")]
+ public string? SubtitleMethod { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleMethod")]
+ public string SubtitleMethod { get; set; }
+#endif
+ /// Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.
+ [QueryParameter("subtitleStreamIndex")]
+ public int? SubtitleStreamIndex { get; set; }
+ /// The tag.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. The transcoding reason.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodeReasons")]
+ public string? TranscodeReasons { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodeReasons")]
+ public string TranscodeReasons { get; set; }
+#endif
+ /// Optional. The maximum number of audio channels to transcode.
+ [QueryParameter("transcodingMaxAudioChannels")]
+ public int? TranscodingMaxAudioChannels { get; set; }
+ /// Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.
+ [QueryParameter("videoBitRate")]
+ public int? VideoBitRate { get; set; }
+ /// Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vp8, vp9, vpx (deprecated), wmv.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("videoCodec")]
+ public string? VideoCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("videoCodec")]
+ public string VideoCodec { get; set; }
+#endif
+ /// Optional. The index of the video stream to use. If omitted the first video stream will be used.
+ [QueryParameter("videoStreamIndex")]
+ public int? VideoStreamIndex { get; set; }
+ /// Optional. The fixed horizontal resolution of the encoded video.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class StreamWithContainerRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ public class StreamWithContainerRequestBuilderHeadQueryParameters {
+ /// Whether or not to allow copying of the audio stream url.
+ [QueryParameter("allowAudioStreamCopy")]
+ public bool? AllowAudioStreamCopy { get; set; }
+ /// Whether or not to allow copying of the video stream url.
+ [QueryParameter("allowVideoStreamCopy")]
+ public bool? AllowVideoStreamCopy { get; set; }
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. Specify a specific number of audio channels to encode to, e.g. 2.
+ [QueryParameter("audioChannels")]
+ public int? AudioChannels { get; set; }
+ /// Optional. Specify a audio codec to encode to, e.g. mp3. If omitted the server will auto-select using the url's extension. Options: aac, mp3, vorbis, wma.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Specify a specific audio sample rate, e.g. 44100.
+ [QueryParameter("audioSampleRate")]
+ public int? AudioSampleRate { get; set; }
+ /// Optional. The index of the audio stream to use. If omitted the first audio stream will be used.
+ [QueryParameter("audioStreamIndex")]
+ public int? AudioStreamIndex { get; set; }
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// Optional. The MediaBrowser.Model.Dlna.EncodingContext.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("context")]
+ public string? Context { get; set; }
+#nullable restore
+#else
+ [QueryParameter("context")]
+ public string Context { get; set; }
+#endif
+ /// Whether or not to copy timestamps when transcoding with an offset. Defaults to false.
+ [QueryParameter("copyTimestamps")]
+ public bool? CopyTimestamps { get; set; }
+ /// Optional. The limit of how many cpu cores to use.
+ [QueryParameter("cpuCoreLimit")]
+ public int? CpuCoreLimit { get; set; }
+ /// Optional. Whether to deinterlace the video.
+ [QueryParameter("deInterlace")]
+ public bool? DeInterlace { get; set; }
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Optional. The dlna device profile id to utilize.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceProfileId")]
+ public string? DeviceProfileId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceProfileId")]
+ public string DeviceProfileId { get; set; }
+#endif
+ /// Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.
+ [QueryParameter("enableAutoStreamCopy")]
+ public bool? EnableAutoStreamCopy { get; set; }
+ /// Optional. Whether to enable the MpegtsM2Ts mode.
+ [QueryParameter("enableMpegtsM2TsMode")]
+ public bool? EnableMpegtsM2TsMode { get; set; }
+ /// Optional. A specific video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("framerate")]
+ public float? Framerate { get; set; }
+ /// Optional. The fixed vertical resolution of the encoded video.
+ [QueryParameter("height")]
+ public int? Height { get; set; }
+ /// Optional. Specify a level for the encoder profile (varies by encoder), e.g. 3, 3.1.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("level")]
+ public string? Level { get; set; }
+#nullable restore
+#else
+ [QueryParameter("level")]
+ public string Level { get; set; }
+#endif
+ /// The live stream id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("liveStreamId")]
+ public string? LiveStreamId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("liveStreamId")]
+ public string LiveStreamId { get; set; }
+#endif
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. Specify a maximum number of audio channels to encode to, e.g. 2.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. A specific maximum video framerate to encode to, e.g. 23.976. Generally this should be omitted unless the device has specific requirements.
+ [QueryParameter("maxFramerate")]
+ public float? MaxFramerate { get; set; }
+ /// Optional.
+ [QueryParameter("maxRefFrames")]
+ public int? MaxRefFrames { get; set; }
+ /// Optional. The maximum video bit depth.
+ [QueryParameter("maxVideoBitDepth")]
+ public int? MaxVideoBitDepth { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// The minimum number of segments.
+ [QueryParameter("minSegments")]
+ public int? MinSegments { get; set; }
+ /// The streaming parameters.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("params")]
+ public string? Params { get; set; }
+#nullable restore
+#else
+ [QueryParameter("params")]
+ public string Params { get; set; }
+#endif
+ /// The play session id.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("playSessionId")]
+ public string? PlaySessionId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("playSessionId")]
+ public string PlaySessionId { get; set; }
+#endif
+ /// Optional. Specify a specific an encoder profile (varies by encoder), e.g. main, baseline, high.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("profile")]
+ public string? Profile { get; set; }
+#nullable restore
+#else
+ [QueryParameter("profile")]
+ public string Profile { get; set; }
+#endif
+ /// Optional. Whether to require avc.
+ [QueryParameter("requireAvc")]
+ public bool? RequireAvc { get; set; }
+ /// Optional. Whether to require a non anamporphic stream.
+ [QueryParameter("requireNonAnamorphic")]
+ public bool? RequireNonAnamorphic { get; set; }
+ /// The segment container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("segmentContainer")]
+ public string? SegmentContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("segmentContainer")]
+ public string SegmentContainer { get; set; }
+#endif
+ /// The segment lenght.
+ [QueryParameter("segmentLength")]
+ public int? SegmentLength { get; set; }
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. If true, the original file will be streamed statically without any encoding. Use either no url extension or the original file extension. true/false.
+ [QueryParameter("static")]
+ public bool? Static { get; set; }
+ /// Optional. The streaming options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("streamOptions")]
+ public string? StreamOptions { get; set; }
+#nullable restore
+#else
+ [QueryParameter("streamOptions")]
+ public string StreamOptions { get; set; }
+#endif
+ /// Optional. Specify a subtitle codec to encode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleCodec")]
+ public string? SubtitleCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleCodec")]
+ public string SubtitleCodec { get; set; }
+#endif
+ /// Optional. Specify the subtitle delivery method.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("subtitleMethod")]
+ public string? SubtitleMethod { get; set; }
+#nullable restore
+#else
+ [QueryParameter("subtitleMethod")]
+ public string SubtitleMethod { get; set; }
+#endif
+ /// Optional. The index of the subtitle stream to use. If omitted no subtitles will be used.
+ [QueryParameter("subtitleStreamIndex")]
+ public int? SubtitleStreamIndex { get; set; }
+ /// The tag.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("tag")]
+ public string? Tag { get; set; }
+#nullable restore
+#else
+ [QueryParameter("tag")]
+ public string Tag { get; set; }
+#endif
+ /// Optional. The transcoding reason.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodeReasons")]
+ public string? TranscodeReasons { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodeReasons")]
+ public string TranscodeReasons { get; set; }
+#endif
+ /// Optional. The maximum number of audio channels to transcode.
+ [QueryParameter("transcodingMaxAudioChannels")]
+ public int? TranscodingMaxAudioChannels { get; set; }
+ /// Optional. Specify a video bitrate to encode to, e.g. 500000. If omitted this will be left to encoder defaults.
+ [QueryParameter("videoBitRate")]
+ public int? VideoBitRate { get; set; }
+ /// Optional. Specify a video codec to encode to, e.g. h264. If omitted the server will auto-select using the url's extension. Options: h265, h264, mpeg4, theora, vp8, vp9, vpx (deprecated), wmv.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("videoCodec")]
+ public string? VideoCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("videoCodec")]
+ public string VideoCodec { get; set; }
+#endif
+ /// Optional. The index of the video stream to use. If omitted the first video stream will be used.
+ [QueryParameter("videoStreamIndex")]
+ public int? VideoStreamIndex { get; set; }
+ /// Optional. The fixed horizontal resolution of the encoded video.
+ [QueryParameter("width")]
+ public int? Width { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class StreamWithContainerRequestBuilderHeadRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/Universal/UniversalRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/Universal/UniversalRequestBuilder.cs
new file mode 100644
index 0000000..dba33a2
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/Universal/UniversalRequestBuilder.cs
@@ -0,0 +1,307 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item.Universal {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\universal
+ ///
+ public class UniversalRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new UniversalRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public UniversalRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/universal{?audioBitRate*,audioCodec*,breakOnNonKeyFrames*,container*,deviceId*,enableRedirection*,enableRemoteMedia*,maxAudioBitDepth*,maxAudioChannels*,maxAudioSampleRate*,maxStreamingBitrate*,mediaSourceId*,startTimeTicks*,transcodingAudioChannels*,transcodingContainer*,transcodingProtocol*,userId*}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new UniversalRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public UniversalRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}/universal{?audioBitRate*,audioCodec*,breakOnNonKeyFrames*,container*,deviceId*,enableRedirection*,enableRemoteMedia*,maxAudioBitDepth*,maxAudioChannels*,maxAudioSampleRate*,maxStreamingBitrate*,mediaSourceId*,startTimeTicks*,transcodingAudioChannels*,transcodingContainer*,transcodingProtocol*,userId*}", rawUrl) {
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task HeadAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task HeadAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToHeadRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendPrimitiveAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToGetRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToGetRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.GET, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToHeadRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToHeadRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.HEAD, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ requestInfo.Headers.TryAdd("Accept", "audio/*");
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public UniversalRequestBuilder WithUrl(string rawUrl) {
+ return new UniversalRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ public class UniversalRequestBuilderGetQueryParameters {
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. The audio codec to transcode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// Optional. The audio container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("container")]
+ public string[]? Container { get; set; }
+#nullable restore
+#else
+ [QueryParameter("container")]
+ public string[] Container { get; set; }
+#endif
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Whether to enable redirection. Defaults to true.
+ [QueryParameter("enableRedirection")]
+ public bool? EnableRedirection { get; set; }
+ /// Optional. Whether to enable remote media.
+ [QueryParameter("enableRemoteMedia")]
+ public bool? EnableRemoteMedia { get; set; }
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. The maximum number of audio channels.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. The maximum audio sample rate.
+ [QueryParameter("maxAudioSampleRate")]
+ public int? MaxAudioSampleRate { get; set; }
+ /// Optional. The maximum streaming bitrate.
+ [QueryParameter("maxStreamingBitrate")]
+ public int? MaxStreamingBitrate { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. The number of how many audio channels to transcode to.
+ [QueryParameter("transcodingAudioChannels")]
+ public int? TranscodingAudioChannels { get; set; }
+ /// Optional. The container to transcode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodingContainer")]
+ public string? TranscodingContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodingContainer")]
+ public string TranscodingContainer { get; set; }
+#endif
+ /// Optional. The transcoding protocol.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodingProtocol")]
+ public string? TranscodingProtocol { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodingProtocol")]
+ public string TranscodingProtocol { get; set; }
+#endif
+ /// Optional. The user id.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class UniversalRequestBuilderGetRequestConfiguration : RequestConfiguration {
+ }
+ ///
+ /// Gets an audio stream.
+ ///
+ public class UniversalRequestBuilderHeadQueryParameters {
+ /// Optional. Specify an audio bitrate to encode to, e.g. 128000. If omitted this will be left to encoder defaults.
+ [QueryParameter("audioBitRate")]
+ public int? AudioBitRate { get; set; }
+ /// Optional. The audio codec to transcode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("audioCodec")]
+ public string? AudioCodec { get; set; }
+#nullable restore
+#else
+ [QueryParameter("audioCodec")]
+ public string AudioCodec { get; set; }
+#endif
+ /// Optional. Whether to break on non key frames.
+ [QueryParameter("breakOnNonKeyFrames")]
+ public bool? BreakOnNonKeyFrames { get; set; }
+ /// Optional. The audio container.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("container")]
+ public string[]? Container { get; set; }
+#nullable restore
+#else
+ [QueryParameter("container")]
+ public string[] Container { get; set; }
+#endif
+ /// The device id of the client requesting. Used to stop encoding processes when needed.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("deviceId")]
+ public string? DeviceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("deviceId")]
+ public string DeviceId { get; set; }
+#endif
+ /// Whether to enable redirection. Defaults to true.
+ [QueryParameter("enableRedirection")]
+ public bool? EnableRedirection { get; set; }
+ /// Optional. Whether to enable remote media.
+ [QueryParameter("enableRemoteMedia")]
+ public bool? EnableRemoteMedia { get; set; }
+ /// Optional. The maximum audio bit depth.
+ [QueryParameter("maxAudioBitDepth")]
+ public int? MaxAudioBitDepth { get; set; }
+ /// Optional. The maximum number of audio channels.
+ [QueryParameter("maxAudioChannels")]
+ public int? MaxAudioChannels { get; set; }
+ /// Optional. The maximum audio sample rate.
+ [QueryParameter("maxAudioSampleRate")]
+ public int? MaxAudioSampleRate { get; set; }
+ /// Optional. The maximum streaming bitrate.
+ [QueryParameter("maxStreamingBitrate")]
+ public int? MaxStreamingBitrate { get; set; }
+ /// The media version id, if playing an alternate version.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("mediaSourceId")]
+ public string? MediaSourceId { get; set; }
+#nullable restore
+#else
+ [QueryParameter("mediaSourceId")]
+ public string MediaSourceId { get; set; }
+#endif
+ /// Optional. Specify a starting offset, in ticks. 1 tick = 10000 ms.
+ [QueryParameter("startTimeTicks")]
+ public long? StartTimeTicks { get; set; }
+ /// Optional. The number of how many audio channels to transcode to.
+ [QueryParameter("transcodingAudioChannels")]
+ public int? TranscodingAudioChannels { get; set; }
+ /// Optional. The container to transcode to.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodingContainer")]
+ public string? TranscodingContainer { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodingContainer")]
+ public string TranscodingContainer { get; set; }
+#endif
+ /// Optional. The transcoding protocol.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ [QueryParameter("transcodingProtocol")]
+ public string? TranscodingProtocol { get; set; }
+#nullable restore
+#else
+ [QueryParameter("transcodingProtocol")]
+ public string TranscodingProtocol { get; set; }
+#endif
+ /// Optional. The user id.
+ [QueryParameter("userId")]
+ public Guid? UserId { get; set; }
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class UniversalRequestBuilderHeadRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Audio/Item/WithItemItemRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Audio/Item/WithItemItemRequestBuilder.cs
new file mode 100644
index 0000000..1424f3f
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Audio/Item/WithItemItemRequestBuilder.cs
@@ -0,0 +1,67 @@
+//
+using Jellyfin.Sdk.Generated.Audio.Item.Hls1;
+using Jellyfin.Sdk.Generated.Audio.Item.Hls;
+using Jellyfin.Sdk.Generated.Audio.Item.MainM3u8;
+using Jellyfin.Sdk.Generated.Audio.Item.MasterM3u8;
+using Jellyfin.Sdk.Generated.Audio.Item.StreamNamespace;
+using Jellyfin.Sdk.Generated.Audio.Item.StreamWithContainer;
+using Jellyfin.Sdk.Generated.Audio.Item.Universal;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Audio.Item {
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}
+ ///
+ public class WithItemItemRequestBuilder : BaseRequestBuilder {
+ /// The hls property
+ public HlsRequestBuilder Hls { get =>
+ new HlsRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The hls1 property
+ public Hls1RequestBuilder Hls1 { get =>
+ new Hls1RequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The mainM3u8 property
+ public MainM3u8RequestBuilder MainM3u8 { get =>
+ new MainM3u8RequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The masterM3u8 property
+ public MasterM3u8RequestBuilder MasterM3u8 { get =>
+ new MasterM3u8RequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The stream property
+ public StreamRequestBuilder Stream { get =>
+ new StreamRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The universal property
+ public UniversalRequestBuilder Universal { get =>
+ new UniversalRequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new WithItemItemRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithItemItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new WithItemItemRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithItemItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Audio/{itemId}", rawUrl) {
+ }
+ ///
+ /// Builds and executes requests for operations under \Audio\{itemId}\stream.{container}
+ ///
+ /// The audio container.
+ public StreamWithContainerRequestBuilder StreamWithContainer(string container) {
+ if(string.IsNullOrEmpty(container)) throw new ArgumentNullException(nameof(container));
+ return new StreamWithContainerRequestBuilder(PathParameters, RequestAdapter, container);
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Auth/AuthRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Auth/AuthRequestBuilder.cs
new file mode 100644
index 0000000..f2bd79d
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Auth/AuthRequestBuilder.cs
@@ -0,0 +1,43 @@
+//
+using Jellyfin.Sdk.Generated.Auth.Keys;
+using Jellyfin.Sdk.Generated.Auth.PasswordResetProviders;
+using Jellyfin.Sdk.Generated.Auth.Providers;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System;
+namespace Jellyfin.Sdk.Generated.Auth {
+ ///
+ /// Builds and executes requests for operations under \Auth
+ ///
+ public class AuthRequestBuilder : BaseRequestBuilder {
+ /// The Keys property
+ public KeysRequestBuilder Keys { get =>
+ new KeysRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The PasswordResetProviders property
+ public PasswordResetProvidersRequestBuilder PasswordResetProviders { get =>
+ new PasswordResetProvidersRequestBuilder(PathParameters, RequestAdapter);
+ }
+ /// The Providers property
+ public ProvidersRequestBuilder Providers { get =>
+ new ProvidersRequestBuilder(PathParameters, RequestAdapter);
+ }
+ ///
+ /// Instantiates a new AuthRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public AuthRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Auth", pathParameters) {
+ }
+ ///
+ /// Instantiates a new AuthRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public AuthRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Auth", rawUrl) {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Auth/Keys/Item/WithKeyItemRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Auth/Keys/Item/WithKeyItemRequestBuilder.cs
new file mode 100644
index 0000000..f19026a
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Auth/Keys/Item/WithKeyItemRequestBuilder.cs
@@ -0,0 +1,73 @@
+//
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Auth.Keys.Item {
+ ///
+ /// Builds and executes requests for operations under \Auth\Keys\{key}
+ ///
+ public class WithKeyItemRequestBuilder : BaseRequestBuilder {
+ ///
+ /// Instantiates a new WithKeyItemRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public WithKeyItemRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Auth/Keys/{key}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new WithKeyItemRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public WithKeyItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Auth/Keys/{key}", rawUrl) {
+ }
+ ///
+ /// Remove an api key.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task DeleteAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task DeleteAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToDeleteRequestInformation(requestConfiguration);
+ await RequestAdapter.SendNoContentAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Remove an api key.
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public RequestInformation ToDeleteRequestInformation(Action>? requestConfiguration = default) {
+#nullable restore
+#else
+ public RequestInformation ToDeleteRequestInformation(Action> requestConfiguration = default) {
+#endif
+ var requestInfo = new RequestInformation(Method.DELETE, UrlTemplate, PathParameters);
+ requestInfo.Configure(requestConfiguration);
+ return requestInfo;
+ }
+ ///
+ /// Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
+ ///
+ /// The raw URL to use for the request builder.
+ public WithKeyItemRequestBuilder WithUrl(string rawUrl) {
+ return new WithKeyItemRequestBuilder(rawUrl, RequestAdapter);
+ }
+ ///
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+ ///
+ [Obsolete("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.")]
+ public class WithKeyItemRequestBuilderDeleteRequestConfiguration : RequestConfiguration {
+ }
+ }
+}
diff --git a/src/Jellyfin.Sdk/Generated/Auth/Keys/KeysRequestBuilder.cs b/src/Jellyfin.Sdk/Generated/Auth/Keys/KeysRequestBuilder.cs
new file mode 100644
index 0000000..dd38609
--- /dev/null
+++ b/src/Jellyfin.Sdk/Generated/Auth/Keys/KeysRequestBuilder.cs
@@ -0,0 +1,134 @@
+//
+using Jellyfin.Sdk.Generated.Auth.Keys.Item;
+using Jellyfin.Sdk.Generated.Models;
+using Microsoft.Kiota.Abstractions.Serialization;
+using Microsoft.Kiota.Abstractions;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+using System;
+namespace Jellyfin.Sdk.Generated.Auth.Keys {
+ ///
+ /// Builds and executes requests for operations under \Auth\Keys
+ ///
+ public class KeysRequestBuilder : BaseRequestBuilder {
+ /// Gets an item from the Jellyfin.Sdk.Generated.Auth.Keys.item collection
+ /// The access token to delete.
+ public WithKeyItemRequestBuilder this[string position] { get {
+ var urlTplParams = new Dictionary(PathParameters);
+ urlTplParams.Add("key", position);
+ return new WithKeyItemRequestBuilder(urlTplParams, RequestAdapter);
+ } }
+ ///
+ /// Instantiates a new KeysRequestBuilder and sets the default values.
+ ///
+ /// Path parameters for the request
+ /// The request adapter to use to execute the requests.
+ public KeysRequestBuilder(Dictionary pathParameters, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Auth/Keys?app={app}", pathParameters) {
+ }
+ ///
+ /// Instantiates a new KeysRequestBuilder and sets the default values.
+ ///
+ /// The raw URL to use for the request builder.
+ /// The request adapter to use to execute the requests.
+ public KeysRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : base(requestAdapter, "{+baseurl}/Auth/Keys?app={app}", rawUrl) {
+ }
+ ///
+ /// Get all keys.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task GetAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task GetAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToGetRequestInformation(requestConfiguration);
+ return await RequestAdapter.SendAsync(requestInfo, AuthenticationInfoQueryResult.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///
+ /// Create a new api key.
+ ///
+ /// Cancellation token to use when cancelling requests
+ /// Configuration for the request such as headers, query parameters, and middleware options.
+#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
+#nullable enable
+ public async Task PostAsync(Action>? requestConfiguration = default, CancellationToken cancellationToken = default) {
+#nullable restore
+#else
+ public async Task PostAsync(Action> requestConfiguration = default, CancellationToken cancellationToken = default) {
+#endif
+ var requestInfo = ToPostRequestInformation(requestConfiguration);
+ await RequestAdapter.SendNoContentAsync(requestInfo, default, cancellationToken).ConfigureAwait(false);
+ }
+ ///